From 5a03ed1cab566744bf154c1c266d4561cfae479b Mon Sep 17 00:00:00 2001 From: shusir <497819738@qq.com> Date: Thu, 29 Jan 2026 17:56:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=96=B0=E5=A2=9E=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E6=8F=90=E4=BA=A4=EF=BC=8C=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=A4=A7=E7=B1=BB=E5=88=A0=E9=99=A4=E6=A0=A1=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/DeviceApplyController.java | 2 +- .../admin/MaterialBatchController.java | 4 +- .../dal/mapper/MaterialProductMapper.java | 17 ++++++ .../service/MaterialBatchService.java | 8 +++ .../service/MaterialBatchServiceImpl.java | 57 +++++++++++++------ .../service/MaterialProductServiceImpl.java | 11 ++-- 6 files changed, 71 insertions(+), 28 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java index d89d476..6537b85 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java @@ -115,7 +115,7 @@ public class DeviceApplyController extends AbstractFileUploadController implemen return success(BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class)); } - @GetMapping("/list") + @GetMapping("/page") @Operation(summary = "获得设备通用流程,验收、降级、停用、报废、还原、启用分页") public CommonResult> getDeviceApplyPage(@Valid DeviceApplyPageReqVO pageReqVO) { PageResult pageResult = deviceApplyService.getDeviceApplyPage(pageReqVO); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java index 49fa23f..1d4e8d4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialBatchController.java @@ -122,8 +122,8 @@ public class MaterialBatchController implements BusinessControllerMarker { @Operation(summary = "提交物料批次") @Parameter(name = "id", required = true) public CommonResult submitMaterialBatch(@RequestParam("id") Long id) { -// return success(materialBatchService.submitMaterialBatch(id)); - return null; + + return success(materialBatchService.submitMaterialBatch(id)); } @GetMapping("gongduan-page") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java index a2f67bd..bf3a9a5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java @@ -3,11 +3,15 @@ package com.zt.plat.module.qms.resource.material.dal.mapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; import com.zt.plat.module.qms.core.constant.DataTypeConstant; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductPageReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialBatchDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 物料大类 Mapper * @@ -52,4 +56,17 @@ public interface MaterialProductMapper extends BaseMapperX { .orderByDesc(MaterialProductDO::getId)); } + default boolean checkIsExistsBatchByPdt(Long id){ + MPJLambdaWrapperX wrapperX = new MPJLambdaWrapperX() + .leftJoin(MaterialBatchDO.class, MaterialBatchDO::getProductId, MaterialProductDO::getId) + .eq(MaterialBatchDO::getProductId, id); + return this.exists(wrapperX); + } + + default boolean checkIsExistsDataByPdts(List ids){ + MPJLambdaWrapperX wrapperX = new MPJLambdaWrapperX() + .leftJoin(MaterialBatchDO.class, MaterialBatchDO::getProductId, MaterialProductDO::getId) + .in(MaterialBatchDO::getProductId, ids); + return this.exists(wrapperX); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java index d2a5725..e20abc1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java @@ -100,4 +100,12 @@ public interface MaterialBatchService { * @return 工段列表 */ List getMaterialBatchGongduanList(Long batId); + + /** + * 提交物料批次 + * + * @param id 批次id + * @return 是否 + */ + Boolean submitMaterialBatch(Long id); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java index dc70ccb..0f1f285 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java @@ -3,11 +3,12 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.protobuf.ServiceException; import com.zt.plat.framework.common.exception.ErrorCode; +import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.core.code.SequenceUtil; +import com.zt.plat.module.qms.enums.ErrorCodeConstants; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialBatchSaveReqVO; @@ -83,13 +84,11 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { @Override public void deleteMaterialBatch(Long id) { - // 校验存在 - validateMaterialBatchExists(id); - // 已经拆分的批次不可删除 - List asnDOs = materialBatchMapper.selectList(Wrappers.lambdaQuery(MaterialBatchDO.class) - .eq(MaterialBatchDO::getParentId, id)); - if (CollUtil.isNotEmpty(asnDOs)) throw exception(MATERIAL_BATCH_ASSIGN_END); + MaterialBatchDO batchDO = materialBatchMapper.selectById(id); + if (batchDO == null) throw exception(MATERIAL_BATCH_NOT_EXISTS); + if (batchDO.getSubmitStatus() == 1) + throw new ServiceException(1_032_160_000, "批次已经提交,不可删除"); // 删除 materialBatchMapper.deleteById(id); @@ -98,11 +97,15 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { @Override public void deleteMaterialBatchListByIds(List ids) { // 校验存在 - validateMaterialBatchExists(ids); - // 已经拆分的批次不可删除 - List asnDOs = materialBatchMapper.selectList(Wrappers.lambdaQuery(MaterialBatchDO.class) - .in(MaterialBatchDO::getParentId, ids)); - if (CollUtil.isNotEmpty(asnDOs)) throw exception(MATERIAL_BATCH_ASSIGN_END); + List list = materialBatchMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_BATCH_NOT_EXISTS); + } + // 存在已经提交的批次时,不可删除 + for (MaterialBatchDO batch : list) { + if (batch.getSubmitStatus() == 1) + throw new ServiceException(1_032_160_000, "存在已经提交的批次,不可删除"); + } // 删除 materialBatchMapper.deleteByIds(ids); } @@ -164,8 +167,7 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { public List assignMaterialBatchGongduan(List createReqVOs) { // 是否已经拆分过 Long batId = createReqVOs.get(0).getParentId(); - List asnDOs = materialBatchMapper.selectList(Wrappers.lambdaQuery(MaterialBatchDO.class) - .eq(MaterialBatchDO::getParentId, batId)); + // 1. 所属的批次需要是同一个 Set pIds = createReqVOs.stream().map(MaterialBatchSaveReqVO::getParentId).collect(Collectors.toSet()); if (pIds.size() > 1) throw exception(GONGDUAN_BELONG_MATERIAL_BATCH_NOT_EQUAL); @@ -181,15 +183,21 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { if (total.compareTo(mtrlBat.getInboundQuantity()) != 0) throw exception(GONGDUAN_QUANTITY_MATERIAL_BATCH_NOT_EQUAL); // 修改工段 - if (CollUtil.isNotEmpty(asnDOs)) { - // 删除之前的拆分数据,TODO 需要检查是否可以删除 + boolean exists = materialBatchMapper.exists(Wrappers.lambdaQuery(MaterialBatchDO.class) + .eq(MaterialBatchDO::getParentId, batId)); + if (exists) { + if (mtrlBat.getSubmitStatus() == 1) throw new ServiceException(1_032_160_000, "批次已经提交,禁止修改"); + // 删除之前的拆分数据 materialBatchMapper.delete(Wrappers.lambdaQuery(MaterialBatchDO.class) .eq(MaterialBatchDO::getParentId, batId)); } // 3. 保存工段 - List gongEts = createReqVOs.stream().map( - batAsn -> BeanUtils.toBean(batAsn, MaterialBatchDO.class)).toList(); + List gongEts = createReqVOs.stream().map(batAsn -> { + MaterialBatchDO bean = BeanUtils.toBean(batAsn, MaterialBatchDO.class); + bean.setProductId(mtrlBat.getProductId()); + return bean; + }).toList(); materialBatchMapper.insertBatch(gongEts); return gongEts.stream().map( @@ -224,6 +232,19 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { .ne(MaterialBatchDO::getParentId, 0)); } + @Override + public Boolean submitMaterialBatch(Long id) { + MaterialBatchDO batchDO = materialBatchMapper.selectById(id); + if (batchDO == null) throw exception(MATERIAL_BATCH_NOT_EXISTS); + if (batchDO.getSubmitStatus() == 1) throw new ServiceException(1_032_160_000, "批次已经提交过"); + boolean exists = materialBatchMapper.exists(Wrappers.lambdaQuery(MaterialBatchDO.class) + .eq(MaterialBatchDO::getParentId, id)); + if (!exists) throw new ServiceException(1_032_160_000, "批次还未拆分,不可提交"); + batchDO.setSubmitStatus(1); + materialBatchMapper.updateById(batchDO); + return true; + } + /** * 组装物料批次树 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java index aae98c0..e1a454d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java @@ -238,9 +238,6 @@ public class MaterialProductServiceImpl implements MaterialProductService { // 分类 if (DataTypeConstant.DATA_TYPE_CATEGORY.equals(pdtDo.getNodeType())) { // 分类下有子分类或大类时不可删除 -// boolean exists = materialProductMapper.exists(Wrappers.lambdaQuery(MaterialProductDO.class) -// .like(MaterialProductDO::getIdPath, id) -// .ne(MaterialProductDO::getId, id)); boolean exists = materialProductMapper.exists(Wrappers.lambdaQuery(MaterialProductDO.class) .eq(MaterialProductDO::getParentId, id)); if (exists) throw exception(MATERIAL_CATEGORY_EXISTS_CHILDREN); @@ -249,8 +246,8 @@ public class MaterialProductServiceImpl implements MaterialProductService { else { // 大类下有批次时不可删除 // TODO 以及其他不可删除的情况,如库存记录、物料实例、使用记录等 -// boolean exists = materialBatchService.checkIsExistsDataByPdt(id); -// if (exists) throw exception(MATERIAL_PRODUCT_EXISTS_BATCH); + boolean exists = materialProductMapper.checkIsExistsBatchByPdt(id); + if (exists) throw exception(MATERIAL_PRODUCT_EXISTS_BATCH); } materialProductMapper.deleteById(id); } @@ -267,8 +264,8 @@ public class MaterialProductServiceImpl implements MaterialProductService { if (CollUtil.isNotEmpty(mtCtgList)) throw exception(MATERIAL_PRODUCTS_EXISTS_CATEGORY); // 检查是否可删除 大类下有批次时不可删除 // TODO 以及其他不可删除的情况,如库存记录、物料实例、使用记录等 -// boolean exists = materialBatchService.checkIsExistsDataByPdts(ids); -// if (exists) throw exception(MATERIAL_PRODUCT_EXISTS_BATCH); + boolean exists = materialProductMapper.checkIsExistsDataByPdts(ids); + if (exists) throw exception(MATERIAL_PRODUCT_EXISTS_BATCH); // 删除 materialProductMapper.deleteByIds(ids); }