From 4fcf96c234818e7ca67f65766705c1a6d042be2e Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Tue, 9 Jun 2026 18:25:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/common/constant/BizTypeConstant.java | 2 + .../controller/DsMoldChangeController.java | 6 +- .../service/IDsMoldChangeService.java | 4 +- .../service/impl/DsMoldChangeServiceImpl.java | 107 ++++++++++++++---- 4 files changed, 91 insertions(+), 28 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java index 3e7da4827..4ca6ebe2a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/common/constant/BizTypeConstant.java @@ -18,4 +18,6 @@ public interface BizTypeConstant { String CRAFT_TASK_REDEPLOY = "工艺任务转派"; String SET_SUITE_FLOW = "齐套流转"; + + String INVENTORY_WRITE_OFF = "库存报废"; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsMoldChangeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsMoldChangeController.java index e82cfb1a2..146fe64a7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsMoldChangeController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsMoldChangeController.java @@ -43,6 +43,8 @@ import org.springblade.desk.dashboard.service.IDsMoldChangeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 磨具变更 控制器 * @@ -77,8 +79,8 @@ public class DsMoldChangeController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入moldChange") - public R save(@Valid @RequestBody DsMoldChangeVO moldChange) { - return R.status(moldChangeService.saveMoldChange(moldChange)); + public R save(@Valid @RequestBody List moldChangeList) { + return R.status(moldChangeService.saveMoldChange(moldChangeList)); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsMoldChangeService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsMoldChangeService.java index 51bec7aa4..f20aed603 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsMoldChangeService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsMoldChangeService.java @@ -30,6 +30,8 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.dashboard.pojo.entity.DsMoldChangeEntity; import org.springblade.desk.dashboard.pojo.vo.DsMoldChangeVO; +import java.util.List; + /** * 模具变更 * @author BladeX @@ -49,5 +51,5 @@ public interface IDsMoldChangeService extends BaseService { * @param moldChange * @return */ - boolean saveMoldChange(DsMoldChangeVO moldChange); + boolean saveMoldChange(List moldChangeList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsMoldChangeServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsMoldChangeServiceImpl.java index 68ed4dfe6..fbeeefece 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsMoldChangeServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsMoldChangeServiceImpl.java @@ -32,6 +32,8 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.common.constant.BizTypeConstant; +import org.springblade.desk.common.service.IMesNotifyMessageService; import org.springblade.desk.dashboard.mapper.DsMoldChangeMapper; import org.springblade.desk.dashboard.pojo.entity.DsMoldChangeEntity; import org.springblade.desk.dashboard.pojo.enums.DsMoldChangeEnum; @@ -40,6 +42,8 @@ import org.springblade.desk.dashboard.service.IDsMoldChangeService; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.entity.UserInfo; +import org.springblade.wms.feign.WmsTaskClient; +import org.springblade.wms.pojo.entity.StUserRight; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -60,6 +64,12 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl selectDsMoldChangePage(IPage page, DsMoldChangeVO moldChange) { List moldChangeList = baseMapper.selectDsMoldChangePage(page, moldChange); @@ -101,27 +111,35 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl modeSet = Arrays.stream(modeArray) - .map(String::trim) - .filter(StringUtil::isNotBlank) - .map(Integer::parseInt) - .collect(Collectors.toSet()); - - // 根据不同的处理方式执行相应逻辑 - if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode()) && modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { - this.handleMoldRepair(moldChange); - this.handleInventoryWriteOff(moldChange); - } else if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode())) { - this.handleMoldRepair(moldChange); - } else if (modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { - this.handleInventoryWriteOff(moldChange); + public boolean saveMoldChange(List moldChangeList) { + // 批量保存 + this.saveBatch(moldChangeList); + + // 遍历每个实体,根据各自的 processMode 执行相应逻辑 + for (DsMoldChangeEntity moldChange : moldChangeList) { + String processMode = moldChange.getProcessMode(); + + if (StringUtil.isNotBlank(processMode)) { + String[] modeArray = processMode.split(","); + Set modeSet = Arrays.stream(modeArray) + .map(String::trim) + .filter(StringUtil::isNotBlank) + .map(Integer::parseInt) + .collect(Collectors.toSet()); + + // 根据不同的处理方式执行相应逻辑 + if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode()) + && modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { + // 同时包含模具补制和库存报废 + this.handleMoldRepair(moldChange); + this.handleInventoryWriteOff(moldChange); + } else if (modeSet.contains(DsMoldChangeEnum.MOLD_REPAIR.getCode())) { + // 仅模具补制 + this.handleMoldRepair(moldChange); + } else if (modeSet.contains(DsMoldChangeEnum.INVENTORY_WRITE_OFF.getCode())) { + // 仅库存报废 + this.handleInventoryWriteOff(moldChange); + } } } @@ -131,7 +149,7 @@ public class DsMoldChangeServiceImpl extends BaseServiceImpl storekeepersByGoodsCode = wmsTaskClient.getStorekeepersByGoodsCode(moldChange.getPartCode()); + + // 判断返回结果是否成功 + if (storekeepersByGoodsCode == null || !storekeepersByGoodsCode.isSuccess()) { + log.warn("获取仓管员失败,物料号:{},返回结果:{}", + moldChange.getPartCode(), + storekeepersByGoodsCode != null ? storekeepersByGoodsCode.getMsg() : "null"); + return; + } + + StUserRight data = storekeepersByGoodsCode.getData(); + if (data == null) { + log.warn("获取仓管员数据为空,物料号:{}", moldChange.getPartCode()); + return; + } + + Long userId = data.getUserId(); + if (userId == null) { + log.warn("仓管员用户ID为空,物料号:{}", moldChange.getPartCode()); + return; + } + + // 发送通知 + mesNotifyMessageService.saveMsg( + BizTypeConstant.INVENTORY_WRITE_OFF, + "库存报废", + "库存报废,请处理:" + moldChange.getPartCode(), + userId + ); + + log.info("库存报废通知发送成功,物料号:{},仓管员ID:{}", moldChange.getPartCode(), userId); + + } catch (Exception e) { + log.error("库存报废处理异常,物料号:" + moldChange.getPartCode(), e); + } } }