From 1b205f04ccecb4fcd4cf8798c73803170180ded8 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 5 Dec 2025 17:03:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(qc):=20=E6=96=B0=E5=A2=9E=E5=BE=85?= =?UTF-8?q?=E6=A3=80=E9=A1=B9=E6=A8=A1=E6=9D=BF=E5=8A=9F=E8=83=BD=E5=8F=8A?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增待检项模板实体类、VO、BO及Mapper接口 - 实现待检项模板的增删改查及分页查询功能 - 新增根据待检项ID批量查询检查项信息服务接口 - 实现检查项Mapper中根据ID列表查询的方法 - 添加对应XML SQL语句支持批量查询检查项 - 控制器中增加导出及通过待检项查询详情接口 - 完善相关服务层逻辑处理及参数校验 --- .../WmsInspectionItemTemplateController.java | 109 ++++++++++++ .../qc/domain/WmsInspectionItemTemplate.java | 49 ++++++ .../bo/WmsInspectionItemTemplateBo.java | 46 +++++ .../vo/WmsInspectionItemTemplateVo.java | 61 +++++++ .../klp/mes/qc/mapper/WmsCheckItemMapper.java | 4 + .../WmsInspectionItemTemplateMapper.java | 15 ++ .../mes/qc/service/IWmsCheckItemService.java | 2 + .../IWmsInspectionItemTemplateService.java | 52 ++++++ .../service/impl/WmsCheckItemServiceImpl.java | 8 + .../WmsInspectionItemTemplateServiceImpl.java | 161 ++++++++++++++++++ .../mapper/qc/WmsCheckItemMapper.xml | 20 +++ .../qc/WmsInspectionItemTemplateMapper.xml | 21 +++ 12 files changed, 548 insertions(+) create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/controller/WmsInspectionItemTemplateController.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/domain/WmsInspectionItemTemplate.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/domain/bo/WmsInspectionItemTemplateBo.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/domain/vo/WmsInspectionItemTemplateVo.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsInspectionItemTemplateMapper.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/service/IWmsInspectionItemTemplateService.java create mode 100644 klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsInspectionItemTemplateServiceImpl.java create mode 100644 klp-mes/src/main/resources/mapper/qc/WmsInspectionItemTemplateMapper.xml diff --git a/klp-mes/src/main/java/com/klp/mes/qc/controller/WmsInspectionItemTemplateController.java b/klp-mes/src/main/java/com/klp/mes/qc/controller/WmsInspectionItemTemplateController.java new file mode 100644 index 00000000..518adc10 --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/controller/WmsInspectionItemTemplateController.java @@ -0,0 +1,109 @@ +package com.klp.mes.qc.controller; + +import java.util.List; +import java.util.Arrays; + +import com.klp.mes.qc.domain.vo.WmsCheckItemVo; +import liquibase.pro.packaged.W; +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.WmsInspectionItemTemplateVo; +import com.klp.mes.qc.domain.bo.WmsInspectionItemTemplateBo; +import com.klp.mes.qc.service.IWmsInspectionItemTemplateService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 待检项模板 + * + * @author klp + * @date 2025-12-05 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/qc/inspectionItemTemplate") +public class WmsInspectionItemTemplateController extends BaseController { + + private final IWmsInspectionItemTemplateService iWmsInspectionItemTemplateService; + + /** + * 查询待检项模板列表 + */ + @GetMapping("/list") + public TableDataInfo list(WmsInspectionItemTemplateBo bo, PageQuery pageQuery) { + return iWmsInspectionItemTemplateService.queryPageList(bo, pageQuery); + } + + /** + * 导出待检项模板列表 + */ + @Log(title = "待检项模板", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(WmsInspectionItemTemplateBo bo, HttpServletResponse response) { + List list = iWmsInspectionItemTemplateService.queryList(bo); + ExcelUtil.exportExcel(list, "待检项模板", WmsInspectionItemTemplateVo.class, response); + } + + /** + * 获取待检项模板详细信息 + * + * @param templateId 主键 + */ + @GetMapping("/{templateId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long templateId) { + return R.ok(iWmsInspectionItemTemplateService.queryById(templateId)); + } + + /** + * 新增待检项模板 + */ + @Log(title = "待检项模板", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody WmsInspectionItemTemplateBo bo) { + return toAjax(iWmsInspectionItemTemplateService.insertByBo(bo)); + } + + /** + * 修改待检项模板 + */ + @Log(title = "待检项模板", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody WmsInspectionItemTemplateBo bo) { + return toAjax(iWmsInspectionItemTemplateService.updateByBo(bo)); + } + + /** + * 删除待检项模板 + * + * @param templateIds 主键串 + */ + @Log(title = "待检项模板", businessType = BusinessType.DELETE) + @DeleteMapping("/{templateIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] templateIds) { + return toAjax(iWmsInspectionItemTemplateService.deleteWithValidByIds(Arrays.asList(templateIds), true)); + } + + // 根据待检项查询详细信息 + @PostMapping("/getInfoByInspectionItem") + public R> getInfoByInspectionItem(@RequestParam String inspectionItemIds) { + return R.ok(iWmsInspectionItemTemplateService.getInfoByInspectionItem(inspectionItemIds)); + } + + +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/WmsInspectionItemTemplate.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/WmsInspectionItemTemplate.java new file mode 100644 index 00000000..ec932c02 --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/WmsInspectionItemTemplate.java @@ -0,0 +1,49 @@ +package com.klp.mes.qc.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 待检项模板对象 wms_inspection_item_template + * + * @author klp + * @date 2025-12-05 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("wms_inspection_item_template") +public class WmsInspectionItemTemplate extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "template_id") + private Long templateId; + /** + * 模板名称 + */ + private String templateName; + /** + * 模板描述 + */ + private String templateDesc; + /** + * 待检项(可存储单个待检项或待检项编码,多个可拆分或用JSON) + */ + private String inspectionItem; + /** + * 逻辑删除标识:0=正常,1=已删 + */ + @TableLogic + private Integer delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/WmsInspectionItemTemplateBo.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/WmsInspectionItemTemplateBo.java new file mode 100644 index 00000000..8f5e324b --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/WmsInspectionItemTemplateBo.java @@ -0,0 +1,46 @@ +package com.klp.mes.qc.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 待检项模板业务对象 wms_inspection_item_template + * + * @author klp + * @date 2025-12-05 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class WmsInspectionItemTemplateBo extends BaseEntity { + + /** + * 主键ID + */ + private Long templateId; + + /** + * 模板名称 + */ + private String templateName; + + /** + * 模板描述 + */ + private String templateDesc; + + /** + * 待检项(可存储单个待检项或待检项编码,多个可拆分或用JSON) + */ + private String inspectionItem; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/WmsInspectionItemTemplateVo.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/WmsInspectionItemTemplateVo.java new file mode 100644 index 00000000..2a6a3abd --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/WmsInspectionItemTemplateVo.java @@ -0,0 +1,61 @@ +package com.klp.mes.qc.domain.vo; + +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; + +import java.util.List; + + +/** + * 待检项模板视图对象 wms_inspection_item_template + * + * @author klp + * @date 2025-12-05 + */ +@Data +@ExcelIgnoreUnannotated +public class WmsInspectionItemTemplateVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long templateId; + + /** + * 模板名称 + */ + @ExcelProperty(value = "模板名称") + private String templateName; + + /** + * 模板描述 + */ + @ExcelProperty(value = "模板描述") + private String templateDesc; + + /** + * 待检项(可存储单个待检项或待检项编码,多个可拆分或用JSON) + */ + @ExcelProperty(value = "待检项", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "可=存储单个待检项或待检项编码,多个可拆分或用JSON") + private String inspectionItem; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + + private List checkItemList; + + + + +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsCheckItemMapper.java b/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsCheckItemMapper.java index de8bc9a4..c013b617 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsCheckItemMapper.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsCheckItemMapper.java @@ -3,6 +3,9 @@ package com.klp.mes.qc.mapper; import com.klp.mes.qc.domain.WmsCheckItem; import com.klp.mes.qc.domain.vo.WmsCheckItemVo; import com.klp.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 检查项Mapper接口 @@ -12,4 +15,5 @@ import com.klp.common.core.mapper.BaseMapperPlus; */ public interface WmsCheckItemMapper extends BaseMapperPlus { + List selectVoListByIds(@Param("ids") List ids); } diff --git a/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsInspectionItemTemplateMapper.java b/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsInspectionItemTemplateMapper.java new file mode 100644 index 00000000..0ce8c371 --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/mapper/WmsInspectionItemTemplateMapper.java @@ -0,0 +1,15 @@ +package com.klp.mes.qc.mapper; + +import com.klp.mes.qc.domain.WmsInspectionItemTemplate; +import com.klp.mes.qc.domain.vo.WmsInspectionItemTemplateVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 待检项模板Mapper接口 + * + * @author klp + * @date 2025-12-05 + */ +public interface WmsInspectionItemTemplateMapper extends BaseMapperPlus { + +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsCheckItemService.java b/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsCheckItemService.java index fde82ca2..79d249b0 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsCheckItemService.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsCheckItemService.java @@ -46,4 +46,6 @@ public interface IWmsCheckItemService { * 校验并批量删除检查项信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List getInfoByInspectionItems(List ids); } diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsInspectionItemTemplateService.java b/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsInspectionItemTemplateService.java new file mode 100644 index 00000000..afe0fe60 --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/IWmsInspectionItemTemplateService.java @@ -0,0 +1,52 @@ +package com.klp.mes.qc.service; + +import com.klp.mes.qc.domain.WmsInspectionItemTemplate; +import com.klp.mes.qc.domain.vo.WmsCheckItemVo; +import com.klp.mes.qc.domain.vo.WmsInspectionItemTemplateVo; +import com.klp.mes.qc.domain.bo.WmsInspectionItemTemplateBo; +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 2025-12-05 + */ +public interface IWmsInspectionItemTemplateService { + + /** + * 查询待检项模板 + */ + WmsInspectionItemTemplateVo queryById(Long templateId); + + /** + * 查询待检项模板列表 + */ + TableDataInfo queryPageList(WmsInspectionItemTemplateBo bo, PageQuery pageQuery); + + /** + * 查询待检项模板列表 + */ + List queryList(WmsInspectionItemTemplateBo bo); + + /** + * 新增待检项模板 + */ + Boolean insertByBo(WmsInspectionItemTemplateBo bo); + + /** + * 修改待检项模板 + */ + Boolean updateByBo(WmsInspectionItemTemplateBo bo); + + /** + * 校验并批量删除待检项模板信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List getInfoByInspectionItem(String inspectionItemIds); +} diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckItemServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckItemServiceImpl.java index c9fabd9a..16332e33 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckItemServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsCheckItemServiceImpl.java @@ -15,6 +15,7 @@ import com.klp.mes.qc.domain.WmsCheckItem; import com.klp.mes.qc.mapper.WmsCheckItemMapper; import com.klp.mes.qc.service.IWmsCheckItemService; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Collection; @@ -112,4 +113,11 @@ public class WmsCheckItemServiceImpl implements IWmsCheckItemService { } return baseMapper.deleteBatchIds(ids) > 0; } + + @Override + public List getInfoByInspectionItems(List ids) { + //根据id批量查询 + List list = baseMapper.selectVoListByIds(ids); + return list != null ? list : Collections.emptyList(); + } } diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsInspectionItemTemplateServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsInspectionItemTemplateServiceImpl.java new file mode 100644 index 00000000..5b55b827 --- /dev/null +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/WmsInspectionItemTemplateServiceImpl.java @@ -0,0 +1,161 @@ +package com.klp.mes.qc.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.esotericsoftware.minlog.Log; +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 com.klp.mes.qc.controller.WmsCheckItemController; +import com.klp.mes.qc.domain.vo.WmsCheckItemVo; +import com.klp.mes.qc.service.IWmsCheckItemService; +import liquibase.pro.packaged.W; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.mes.qc.domain.bo.WmsInspectionItemTemplateBo; +import com.klp.mes.qc.domain.vo.WmsInspectionItemTemplateVo; +import com.klp.mes.qc.domain.WmsInspectionItemTemplate; +import com.klp.mes.qc.mapper.WmsInspectionItemTemplateMapper; +import com.klp.mes.qc.service.IWmsInspectionItemTemplateService; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 待检项模板Service业务层处理 + * + * @author klp + * @date 2025-12-05 + */ +@RequiredArgsConstructor +@Service +public class WmsInspectionItemTemplateServiceImpl implements IWmsInspectionItemTemplateService { + + private final WmsInspectionItemTemplateMapper baseMapper; + + private final IWmsCheckItemService wmsCheckItemService; + + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(WmsInspectionItemTemplateServiceImpl.class); + + + /** + * 查询待检项模板 + */ + @Override + public WmsInspectionItemTemplateVo queryById(Long templateId){ + return baseMapper.selectVoById(templateId); + } + + /** + * 查询待检项模板列表 + */ + @Override + public TableDataInfo queryPageList(WmsInspectionItemTemplateBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询待检项模板列表 + */ + @Override + public List queryList(WmsInspectionItemTemplateBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WmsInspectionItemTemplateBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getTemplateName()), WmsInspectionItemTemplate::getTemplateName, bo.getTemplateName()); + lqw.eq(StringUtils.isNotBlank(bo.getTemplateDesc()), WmsInspectionItemTemplate::getTemplateDesc, bo.getTemplateDesc()); + lqw.eq(StringUtils.isNotBlank(bo.getInspectionItem()), WmsInspectionItemTemplate::getInspectionItem, bo.getInspectionItem()); + return lqw; + } + + /** + * 新增待检项模板 + */ + @Override + public Boolean insertByBo(WmsInspectionItemTemplateBo bo) { + WmsInspectionItemTemplate add = BeanUtil.toBean(bo, WmsInspectionItemTemplate.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTemplateId(add.getTemplateId()); + } + return flag; + } + + /** + * 修改待检项模板 + */ + @Override + public Boolean updateByBo(WmsInspectionItemTemplateBo bo) { + WmsInspectionItemTemplate update = BeanUtil.toBean(bo, WmsInspectionItemTemplate.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(WmsInspectionItemTemplate entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除待检项模板 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public List getInfoByInspectionItem(String inspectionItemIds) { + // 1. 获取待检项ID字符串并进行基本校验 + + if (inspectionItemIds == null || inspectionItemIds.trim().isEmpty()) { + log.warn("待检项ID不能为空"); + return null; + } + // 2. 拆分ID并转换为Long类型 + String[] inspectionItemIdArray = inspectionItemIds.split(","); + List ids = new ArrayList<>(); + for (String id : inspectionItemIdArray) { + if (StringUtils.isNotBlank(id)) { + try { + ids.add(Long.valueOf(id)); + } catch (NumberFormatException e) { + log.warn("无效的待检项ID: {}", id); + } + } + } + // 3. 如果没有有效的ID,直接返回null + if (ids.isEmpty()) { + return null; + } + + // 4. 批量查询所有待检项信息(避免多次查询) + List result = wmsCheckItemService.getInfoByInspectionItems(ids); + + // 处理待检项信息 + if (result != null && !result.isEmpty()) { + return result; + } + + // 5. 如果没有找到数据,返回空对象而不是null + return new ArrayList<>(); + } + + +} diff --git a/klp-mes/src/main/resources/mapper/qc/WmsCheckItemMapper.xml b/klp-mes/src/main/resources/mapper/qc/WmsCheckItemMapper.xml index 54ae22d4..4264d16b 100644 --- a/klp-mes/src/main/resources/mapper/qc/WmsCheckItemMapper.xml +++ b/klp-mes/src/main/resources/mapper/qc/WmsCheckItemMapper.xml @@ -20,6 +20,26 @@ + diff --git a/klp-mes/src/main/resources/mapper/qc/WmsInspectionItemTemplateMapper.xml b/klp-mes/src/main/resources/mapper/qc/WmsInspectionItemTemplateMapper.xml new file mode 100644 index 00000000..9516919a --- /dev/null +++ b/klp-mes/src/main/resources/mapper/qc/WmsInspectionItemTemplateMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + +