feat(qc): 添加质检检验任务及项目功能模块

- 创建检验任务主实体、业务对象和服务接口及实现类
- 创建检验任务项目实体、业务对象和服务接口及实现类
- 实现检验任务和项目的增删改查功能
- 添加检验任务和项目的数据访问层和映射配置
- 集成分页查询和导出功能
- 配置数据校验和权限控制
This commit is contained in:
2026-05-15 13:17:39 +08:00
parent c5c478b1e9
commit 2f974c4b6f
16 changed files with 1213 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
package com.klp.mes.qc.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.mes.qc.domain.vo.QcInspectionItemVo;
import com.klp.mes.qc.domain.bo.QcInspectionItemBo;
import com.klp.mes.qc.service.IQcInspectionItemService;
import com.klp.common.core.page.TableDataInfo;
/**
* 检验任务项目+结果
*
* @author klp
* @date 2026-05-15
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qc/inspectionItem")
public class QcInspectionItemController extends BaseController {
private final IQcInspectionItemService iQcInspectionItemService;
/**
* 查询检验任务项目+结果列表
*/
@GetMapping("/list")
public TableDataInfo<QcInspectionItemVo> list(QcInspectionItemBo bo, PageQuery pageQuery) {
return iQcInspectionItemService.queryPageList(bo, pageQuery);
}
/**
* 导出检验任务项目+结果列表
*/
@Log(title = "检验任务项目+结果", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(QcInspectionItemBo bo, HttpServletResponse response) {
List<QcInspectionItemVo> list = iQcInspectionItemService.queryList(bo);
ExcelUtil.exportExcel(list, "检验任务项目+结果", QcInspectionItemVo.class, response);
}
/**
* 获取检验任务项目+结果详细信息
*
* @param itemId 主键
*/
@GetMapping("/{itemId}")
public R<QcInspectionItemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long itemId) {
return R.ok(iQcInspectionItemService.queryById(itemId));
}
/**
* 新增检验任务项目+结果
*/
@Log(title = "检验任务项目+结果", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody QcInspectionItemBo bo) {
return toAjax(iQcInspectionItemService.insertByBo(bo));
}
/**
* 修改检验任务项目+结果
*/
@Log(title = "检验任务项目+结果", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody QcInspectionItemBo bo) {
return toAjax(iQcInspectionItemService.updateByBo(bo));
}
/**
* 删除检验任务项目+结果
*
* @param itemIds 主键串
*/
@Log(title = "检验任务项目+结果", businessType = BusinessType.DELETE)
@DeleteMapping("/{itemIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] itemIds) {
return toAjax(iQcInspectionItemService.deleteWithValidByIds(Arrays.asList(itemIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.mes.qc.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.mes.qc.domain.vo.QcInspectionTaskVo;
import com.klp.mes.qc.domain.bo.QcInspectionTaskBo;
import com.klp.mes.qc.service.IQcInspectionTaskService;
import com.klp.common.core.page.TableDataInfo;
/**
* 检验任务主
*
* @author klp
* @date 2026-05-15
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/qc/inspectionTask")
public class QcInspectionTaskController extends BaseController {
private final IQcInspectionTaskService iQcInspectionTaskService;
/**
* 查询检验任务主列表
*/
@GetMapping("/list")
public TableDataInfo<QcInspectionTaskVo> list(QcInspectionTaskBo bo, PageQuery pageQuery) {
return iQcInspectionTaskService.queryPageList(bo, pageQuery);
}
/**
* 导出检验任务主列表
*/
@Log(title = "检验任务主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(QcInspectionTaskBo bo, HttpServletResponse response) {
List<QcInspectionTaskVo> list = iQcInspectionTaskService.queryList(bo);
ExcelUtil.exportExcel(list, "检验任务主", QcInspectionTaskVo.class, response);
}
/**
* 获取检验任务主详细信息
*
* @param taskId 主键
*/
@GetMapping("/{taskId}")
public R<QcInspectionTaskVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long taskId) {
return R.ok(iQcInspectionTaskService.queryById(taskId));
}
/**
* 新增检验任务主
*/
@Log(title = "检验任务主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody QcInspectionTaskBo bo) {
return toAjax(iQcInspectionTaskService.insertByBo(bo));
}
/**
* 修改检验任务主
*/
@Log(title = "检验任务主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody QcInspectionTaskBo bo) {
return toAjax(iQcInspectionTaskService.updateByBo(bo));
}
/**
* 删除检验任务主
*
* @param taskIds 主键串
*/
@Log(title = "检验任务主", businessType = BusinessType.DELETE)
@DeleteMapping("/{taskIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] taskIds) {
return toAjax(iQcInspectionTaskService.deleteWithValidByIds(Arrays.asList(taskIds), true));
}
}

View File

@@ -0,0 +1,88 @@
package com.klp.mes.qc.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检验任务项目+结果对象 qc_inspection_item
*
* @author klp
* @date 2026-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("qc_inspection_item")
public class QcInspectionItem extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 明细ID
*/
@TableId(value = "item_id")
private Long itemId;
/**
* 任务ID
*/
private Long taskId;
/**
* 检验项目名称
*/
private String itemName;
/**
* 标准值
*/
private String standardValue;
/**
* 上限
*/
private BigDecimal upperLimit;
/**
* 下限
*/
private BigDecimal lowerLimit;
/**
* 单位
*/
private String unit;
/**
* 定性/定量
*/
private String itemType;
/**
* 检验值
*/
private String inspectValue;
/**
* 是否合格0不合格 1合格
*/
private Integer isQualified;
/**
* 判定结果
*/
private String judgeResult;
/**
* 检验人
*/
private String inspectUser;
/**
* 检验时间
*/
private Date inspectTime;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,87 @@
package com.klp.mes.qc.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检验任务主对象 qc_inspection_task
*
* @author klp
* @date 2026-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("qc_inspection_task")
public class QcInspectionTask extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 任务ID
*/
@TableId(value = "task_id")
private Long taskId;
/**
* 任务编号
*/
private String taskCode;
/**
* 任务类型(内控/产品检验)
*/
private String taskType;
/**
* 来源类型(生产/采购/库存)
*/
private String sourceType;
/**
* 来源单据ID工单/入库单等)
*/
private Long sourceId;
/**
* 检验方案ID
*/
private Long schemeId;
/**
* 检验方案名称
*/
private String schemeName;
/**
* 状态0待检验 1检验中 2待审核 3已完成 4已驳回
*/
private Integer status;
/**
* 检验人
*/
private String inspectUser;
/**
* 检验时间
*/
private Date inspectTime;
/**
* 审核人
*/
private String auditUser;
/**
* 审核时间
*/
private Date auditTime;
/**
* 最终结果(合格/不合格)
*/
private String result;
/**
* 备注
*/
private String remark;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,94 @@
package com.klp.mes.qc.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检验任务项目+结果业务对象 qc_inspection_item
*
* @author klp
* @date 2026-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QcInspectionItemBo extends BaseEntity {
/**
* 明细ID
*/
private Long itemId;
/**
* 任务ID
*/
private Long taskId;
/**
* 检验项目名称
*/
private String itemName;
/**
* 标准值
*/
private String standardValue;
/**
* 上限
*/
private BigDecimal upperLimit;
/**
* 下限
*/
private BigDecimal lowerLimit;
/**
* 单位
*/
private String unit;
/**
* 定性/定量
*/
private String itemType;
/**
* 检验值
*/
private String inspectValue;
/**
* 是否合格0不合格 1合格
*/
private Integer isQualified;
/**
* 判定结果
*/
private String judgeResult;
/**
* 检验人
*/
private String inspectUser;
/**
* 检验时间
*/
private Date inspectTime;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,93 @@
package com.klp.mes.qc.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检验任务主业务对象 qc_inspection_task
*
* @author klp
* @date 2026-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QcInspectionTaskBo extends BaseEntity {
/**
* 任务ID
*/
private Long taskId;
/**
* 任务编号
*/
private String taskCode;
/**
* 任务类型(内控/产品检验)
*/
private String taskType;
/**
* 来源类型(生产/采购/库存)
*/
private String sourceType;
/**
* 来源单据ID工单/入库单等)
*/
private Long sourceId;
/**
* 检验方案ID
*/
private Long schemeId;
/**
* 检验方案名称
*/
private String schemeName;
/**
* 状态0待检验 1检验中 2待审核 3已完成 4已驳回
*/
private Integer status;
/**
* 检验人
*/
private String inspectUser;
/**
* 检验时间
*/
private Date inspectTime;
/**
* 审核人
*/
private String auditUser;
/**
* 审核时间
*/
private Date auditTime;
/**
* 最终结果(合格/不合格)
*/
private String result;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,111 @@
package com.klp.mes.qc.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 检验任务项目+结果视图对象 qc_inspection_item
*
* @author klp
* @date 2026-05-15
*/
@Data
@ExcelIgnoreUnannotated
public class QcInspectionItemVo {
private static final long serialVersionUID = 1L;
/**
* 明细ID
*/
@ExcelProperty(value = "明细ID")
private Long itemId;
/**
* 任务ID
*/
@ExcelProperty(value = "任务ID")
private Long taskId;
/**
* 检验项目名称
*/
@ExcelProperty(value = "检验项目名称")
private String itemName;
/**
* 标准值
*/
@ExcelProperty(value = "标准值")
private String standardValue;
/**
* 上限
*/
@ExcelProperty(value = "上限")
private BigDecimal upperLimit;
/**
* 下限
*/
@ExcelProperty(value = "下限")
private BigDecimal lowerLimit;
/**
* 单位
*/
@ExcelProperty(value = "单位")
private String unit;
/**
* 定性/定量
*/
@ExcelProperty(value = "定性/定量")
private String itemType;
/**
* 检验值
*/
@ExcelProperty(value = "检验值")
private String inspectValue;
/**
* 是否合格0不合格 1合格
*/
@ExcelProperty(value = "是否合格", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=不合格,1=合格")
private Integer isQualified;
/**
* 判定结果
*/
@ExcelProperty(value = "判定结果")
private String judgeResult;
/**
* 检验人
*/
@ExcelProperty(value = "检验人")
private String inspectUser;
/**
* 检验时间
*/
@ExcelProperty(value = "检验时间")
private Date inspectTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,114 @@
package com.klp.mes.qc.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 检验任务主视图对象 qc_inspection_task
*
* @author klp
* @date 2026-05-15
*/
@Data
@ExcelIgnoreUnannotated
public class QcInspectionTaskVo {
private static final long serialVersionUID = 1L;
/**
* 任务ID
*/
@ExcelProperty(value = "任务ID")
private Long taskId;
/**
* 任务编号
*/
@ExcelProperty(value = "任务编号")
private String taskCode;
/**
* 任务类型(内控/产品检验)
*/
@ExcelProperty(value = "任务类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "内=控/产品检验")
private String taskType;
/**
* 来源类型(生产/采购/库存)
*/
@ExcelProperty(value = "来源类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "生=产/采购/库存")
private String sourceType;
/**
* 来源单据ID工单/入库单等)
*/
@ExcelProperty(value = "来源单据ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "工=单/入库单等")
private Long sourceId;
/**
* 检验方案ID
*/
@ExcelProperty(value = "检验方案ID")
private Long schemeId;
/**
* 检验方案名称
*/
@ExcelProperty(value = "检验方案名称")
private String schemeName;
/**
* 状态0待检验 1检验中 2待审核 3已完成 4已驳回
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=待检验,1=检验中,2=待审核,3=已完成,4=已驳回")
private Integer status;
/**
* 检验人
*/
@ExcelProperty(value = "检验人")
private String inspectUser;
/**
* 检验时间
*/
@ExcelProperty(value = "检验时间")
private Date inspectTime;
/**
* 审核人
*/
@ExcelProperty(value = "审核人")
private String auditUser;
/**
* 审核时间
*/
@ExcelProperty(value = "审核时间")
private Date auditTime;
/**
* 最终结果(合格/不合格)
*/
@ExcelProperty(value = "最终结果", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "合=格/不合格")
private String result;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,15 @@
package com.klp.mes.qc.mapper;
import com.klp.mes.qc.domain.QcInspectionItem;
import com.klp.mes.qc.domain.vo.QcInspectionItemVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 检验任务项目+结果Mapper接口
*
* @author klp
* @date 2026-05-15
*/
public interface QcInspectionItemMapper extends BaseMapperPlus<QcInspectionItemMapper, QcInspectionItem, QcInspectionItemVo> {
}

View File

@@ -0,0 +1,15 @@
package com.klp.mes.qc.mapper;
import com.klp.mes.qc.domain.QcInspectionTask;
import com.klp.mes.qc.domain.vo.QcInspectionTaskVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 检验任务主Mapper接口
*
* @author klp
* @date 2026-05-15
*/
public interface QcInspectionTaskMapper extends BaseMapperPlus<QcInspectionTaskMapper, QcInspectionTask, QcInspectionTaskVo> {
}

View File

@@ -0,0 +1,49 @@
package com.klp.mes.qc.service;
import com.klp.mes.qc.domain.QcInspectionItem;
import com.klp.mes.qc.domain.vo.QcInspectionItemVo;
import com.klp.mes.qc.domain.bo.QcInspectionItemBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 检验任务项目+结果Service接口
*
* @author klp
* @date 2026-05-15
*/
public interface IQcInspectionItemService {
/**
* 查询检验任务项目+结果
*/
QcInspectionItemVo queryById(Long itemId);
/**
* 查询检验任务项目+结果列表
*/
TableDataInfo<QcInspectionItemVo> queryPageList(QcInspectionItemBo bo, PageQuery pageQuery);
/**
* 查询检验任务项目+结果列表
*/
List<QcInspectionItemVo> queryList(QcInspectionItemBo bo);
/**
* 新增检验任务项目+结果
*/
Boolean insertByBo(QcInspectionItemBo bo);
/**
* 修改检验任务项目+结果
*/
Boolean updateByBo(QcInspectionItemBo bo);
/**
* 校验并批量删除检验任务项目+结果信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.mes.qc.service;
import com.klp.mes.qc.domain.QcInspectionTask;
import com.klp.mes.qc.domain.vo.QcInspectionTaskVo;
import com.klp.mes.qc.domain.bo.QcInspectionTaskBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 检验任务主Service接口
*
* @author klp
* @date 2026-05-15
*/
public interface IQcInspectionTaskService {
/**
* 查询检验任务主
*/
QcInspectionTaskVo queryById(Long taskId);
/**
* 查询检验任务主列表
*/
TableDataInfo<QcInspectionTaskVo> queryPageList(QcInspectionTaskBo bo, PageQuery pageQuery);
/**
* 查询检验任务主列表
*/
List<QcInspectionTaskVo> queryList(QcInspectionTaskBo bo);
/**
* 新增检验任务主
*/
Boolean insertByBo(QcInspectionTaskBo bo);
/**
* 修改检验任务主
*/
Boolean updateByBo(QcInspectionTaskBo bo);
/**
* 校验并批量删除检验任务主信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,120 @@
package com.klp.mes.qc.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.mes.qc.domain.bo.QcInspectionItemBo;
import com.klp.mes.qc.domain.vo.QcInspectionItemVo;
import com.klp.mes.qc.domain.QcInspectionItem;
import com.klp.mes.qc.mapper.QcInspectionItemMapper;
import com.klp.mes.qc.service.IQcInspectionItemService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 检验任务项目+结果Service业务层处理
*
* @author klp
* @date 2026-05-15
*/
@RequiredArgsConstructor
@Service
public class QcInspectionItemServiceImpl implements IQcInspectionItemService {
private final QcInspectionItemMapper baseMapper;
/**
* 查询检验任务项目+结果
*/
@Override
public QcInspectionItemVo queryById(Long itemId){
return baseMapper.selectVoById(itemId);
}
/**
* 查询检验任务项目+结果列表
*/
@Override
public TableDataInfo<QcInspectionItemVo> queryPageList(QcInspectionItemBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<QcInspectionItem> lqw = buildQueryWrapper(bo);
Page<QcInspectionItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询检验任务项目+结果列表
*/
@Override
public List<QcInspectionItemVo> queryList(QcInspectionItemBo bo) {
LambdaQueryWrapper<QcInspectionItem> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<QcInspectionItem> buildQueryWrapper(QcInspectionItemBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<QcInspectionItem> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getTaskId() != null, QcInspectionItem::getTaskId, bo.getTaskId());
lqw.like(StringUtils.isNotBlank(bo.getItemName()), QcInspectionItem::getItemName, bo.getItemName());
lqw.eq(StringUtils.isNotBlank(bo.getStandardValue()), QcInspectionItem::getStandardValue, bo.getStandardValue());
lqw.eq(bo.getUpperLimit() != null, QcInspectionItem::getUpperLimit, bo.getUpperLimit());
lqw.eq(bo.getLowerLimit() != null, QcInspectionItem::getLowerLimit, bo.getLowerLimit());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), QcInspectionItem::getUnit, bo.getUnit());
lqw.eq(StringUtils.isNotBlank(bo.getItemType()), QcInspectionItem::getItemType, bo.getItemType());
lqw.eq(StringUtils.isNotBlank(bo.getInspectValue()), QcInspectionItem::getInspectValue, bo.getInspectValue());
lqw.eq(bo.getIsQualified() != null, QcInspectionItem::getIsQualified, bo.getIsQualified());
lqw.eq(StringUtils.isNotBlank(bo.getJudgeResult()), QcInspectionItem::getJudgeResult, bo.getJudgeResult());
lqw.eq(StringUtils.isNotBlank(bo.getInspectUser()), QcInspectionItem::getInspectUser, bo.getInspectUser());
lqw.eq(bo.getInspectTime() != null, QcInspectionItem::getInspectTime, bo.getInspectTime());
return lqw;
}
/**
* 新增检验任务项目+结果
*/
@Override
public Boolean insertByBo(QcInspectionItemBo bo) {
QcInspectionItem add = BeanUtil.toBean(bo, QcInspectionItem.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setItemId(add.getItemId());
}
return flag;
}
/**
* 修改检验任务项目+结果
*/
@Override
public Boolean updateByBo(QcInspectionItemBo bo) {
QcInspectionItem update = BeanUtil.toBean(bo, QcInspectionItem.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(QcInspectionItem entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除检验任务项目+结果
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,120 @@
package com.klp.mes.qc.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.mes.qc.domain.bo.QcInspectionTaskBo;
import com.klp.mes.qc.domain.vo.QcInspectionTaskVo;
import com.klp.mes.qc.domain.QcInspectionTask;
import com.klp.mes.qc.mapper.QcInspectionTaskMapper;
import com.klp.mes.qc.service.IQcInspectionTaskService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 检验任务主Service业务层处理
*
* @author klp
* @date 2026-05-15
*/
@RequiredArgsConstructor
@Service
public class QcInspectionTaskServiceImpl implements IQcInspectionTaskService {
private final QcInspectionTaskMapper baseMapper;
/**
* 查询检验任务主
*/
@Override
public QcInspectionTaskVo queryById(Long taskId){
return baseMapper.selectVoById(taskId);
}
/**
* 查询检验任务主列表
*/
@Override
public TableDataInfo<QcInspectionTaskVo> queryPageList(QcInspectionTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<QcInspectionTask> lqw = buildQueryWrapper(bo);
Page<QcInspectionTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询检验任务主列表
*/
@Override
public List<QcInspectionTaskVo> queryList(QcInspectionTaskBo bo) {
LambdaQueryWrapper<QcInspectionTask> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<QcInspectionTask> buildQueryWrapper(QcInspectionTaskBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<QcInspectionTask> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskCode()), QcInspectionTask::getTaskCode, bo.getTaskCode());
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), QcInspectionTask::getTaskType, bo.getTaskType());
lqw.eq(StringUtils.isNotBlank(bo.getSourceType()), QcInspectionTask::getSourceType, bo.getSourceType());
lqw.eq(bo.getSourceId() != null, QcInspectionTask::getSourceId, bo.getSourceId());
lqw.eq(bo.getSchemeId() != null, QcInspectionTask::getSchemeId, bo.getSchemeId());
lqw.like(StringUtils.isNotBlank(bo.getSchemeName()), QcInspectionTask::getSchemeName, bo.getSchemeName());
lqw.eq(bo.getStatus() != null, QcInspectionTask::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getInspectUser()), QcInspectionTask::getInspectUser, bo.getInspectUser());
lqw.eq(bo.getInspectTime() != null, QcInspectionTask::getInspectTime, bo.getInspectTime());
lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), QcInspectionTask::getAuditUser, bo.getAuditUser());
lqw.eq(bo.getAuditTime() != null, QcInspectionTask::getAuditTime, bo.getAuditTime());
lqw.eq(StringUtils.isNotBlank(bo.getResult()), QcInspectionTask::getResult, bo.getResult());
return lqw;
}
/**
* 新增检验任务主
*/
@Override
public Boolean insertByBo(QcInspectionTaskBo bo) {
QcInspectionTask add = BeanUtil.toBean(bo, QcInspectionTask.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setTaskId(add.getTaskId());
}
return flag;
}
/**
* 修改检验任务主
*/
@Override
public Boolean updateByBo(QcInspectionTaskBo bo) {
QcInspectionTask update = BeanUtil.toBean(bo, QcInspectionTask.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(QcInspectionTask entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除检验任务主
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.klp.mes.qc.mapper.QcInspectionItemMapper">
<resultMap type="com.klp.mes.qc.domain.QcInspectionItem" id="QcInspectionItemResult">
<result property="itemId" column="item_id"/>
<result property="taskId" column="task_id"/>
<result property="itemName" column="item_name"/>
<result property="standardValue" column="standard_value"/>
<result property="upperLimit" column="upper_limit"/>
<result property="lowerLimit" column="lower_limit"/>
<result property="unit" column="unit"/>
<result property="itemType" column="item_type"/>
<result property="inspectValue" column="inspect_value"/>
<result property="isQualified" column="is_qualified"/>
<result property="judgeResult" column="judge_result"/>
<result property="inspectUser" column="inspect_user"/>
<result property="inspectTime" column="inspect_time"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.klp.mes.qc.mapper.QcInspectionTaskMapper">
<resultMap type="com.klp.mes.qc.domain.QcInspectionTask" id="QcInspectionTaskResult">
<result property="taskId" column="task_id"/>
<result property="taskCode" column="task_code"/>
<result property="taskType" column="task_type"/>
<result property="sourceType" column="source_type"/>
<result property="sourceId" column="source_id"/>
<result property="schemeId" column="scheme_id"/>
<result property="schemeName" column="scheme_name"/>
<result property="status" column="status"/>
<result property="inspectUser" column="inspect_user"/>
<result property="inspectTime" column="inspect_time"/>
<result property="auditUser" column="audit_user"/>
<result property="auditTime" column="audit_time"/>
<result property="result" column="result"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>