From 067d78a51ffa4c8bb10d31cba1d968f6c1c3fe12 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Thu, 11 Jun 2026 14:48:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=A8=A1=E5=85=B7?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93=E5=90=8E=E6=A8=A1=E5=85=B7=E7=BB=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=8A=E4=BF=AE=E6=94=B9=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/stock/ErpStockInController.java | 4 --- .../stock/vo/in/ErpStockInSaveReqVO.java | 2 +- .../erp/dal/mysql/stock/ErpStockInMapper.java | 3 -- .../service/mold/MoldBrandServiceImpl.java | 2 +- .../service/stock/ErpStockInServiceImpl.java | 36 +++++++++++++++---- .../service/stock/ErpStockOutServiceImpl.java | 34 ++++++++++++++---- 6 files changed, 59 insertions(+), 22 deletions(-) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java index 719914e60..6687e2898 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java @@ -10,7 +10,6 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInApproveRecordRespVO; @@ -185,9 +184,6 @@ public class ErpStockInController { } private void fillPageReqDefault(ErpStockInPageReqVO pageReqVO) { - if (Boolean.TRUE.equals(pageReqVO.getRelatedToMe())) { - pageReqVO.setCurrentUserId(SecurityFrameworkUtils.getLoginUserId()); - } if (StringUtils.isEmpty(pageReqVO.getInType())) { List list = new ArrayList<>(); list.add(StockInTypeEnum.产品入库.getValue()); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java index 4655ac624..6bd847d09 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/in/ErpStockInSaveReqVO.java @@ -60,7 +60,7 @@ public class ErpStockInSaveReqVO { private Long warehouseId; @Schema(description = "库区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") - @NotNull(message = "库区编号不能为空") +// @NotNull(message = "库区编号不能为空") private Long areaId; @Schema(description = "产品编号", example = "3113") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java index a7ce57747..5bed57af4 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockInMapper.java @@ -29,9 +29,6 @@ public interface ErpStockInMapper extends BaseMapperX { .eqIfPresent(ErpStockInDO::getCreator, reqVO.getCreator()) .eqIfPresent(ErpStockInDO::getAuditUserId, reqVO.getAuditUserId()) .orderByDesc(ErpStockInDO::getId); - query.and(Boolean.TRUE.equals(reqVO.getRelatedToMe()) && reqVO.getCurrentUserId() != null, - w -> w.eq(ErpStockInDO::getCreator, String.valueOf(reqVO.getCurrentUserId())) - .or().eq(ErpStockInDO::getAuditUserId, reqVO.getCurrentUserId())); if (reqVO.getWarehouseId() != null || reqVO.getProductId() != null) { query.leftJoin(ErpStockInItemDO.class, ErpStockInItemDO::getInId, ErpStockInDO::getId) .eq(reqVO.getWarehouseId() != null, ErpStockInItemDO::getWarehouseId, reqVO.getWarehouseId()) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java index 1be5673a9..8d636edbf 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java @@ -368,7 +368,7 @@ public class MoldBrandServiceImpl implements MoldBrandService { item.setDeviceName(null); return; } - if (Objects.equals(latestOperate.getOperateType(), "1")) { + if (Objects.equals(latestOperate.getOperateType(), "1") && item.getStatus().equals(MoldBrandStatusEnum.ON_MACHINE.getStatus())) { item.setDeviceName(latestOperate.getDeviceName()); return; } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java index 20d8707ab..1f7c9db75 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldBrandSaveReqVO; import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldBrandMapper; import cn.iocoder.yudao.module.common.enums.MoldBrandStatusEnum; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInAuditReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; @@ -78,6 +79,8 @@ public class ErpStockInServiceImpl implements ErpStockInService { @Resource private ErpStockInMapper stockInMapper; @Resource + private MoldBrandMapper moldBrandMapper; + @Resource private ErpStockInItemMapper stockInItemMapper; @Resource private ErpStockInApproveRecordMapper stockInApproveRecordMapper; @@ -118,7 +121,7 @@ public class ErpStockInServiceImpl implements ErpStockInService { } boolean needAudit = needAudit(); - Integer status = needAudit ? ErpAuditStatus.DRAFT.getStatus() : ErpAuditStatus.APPROVE.getStatus(); + Integer status = ErpAuditStatus.DRAFT.getStatus(); ErpStockInDO stockIn = BeanUtils.toBean(createReqVO, ErpStockInDO.class, in -> in .setNo(no) .setNeedAudit(needAudit) @@ -129,11 +132,16 @@ public class ErpStockInServiceImpl implements ErpStockInService { stockInItems.forEach(item -> item.setInId(stockIn.getId())); stockInItemMapper.insertBatch(stockInItems); - if (!needAudit) { - applyStockInEffect(stockIn, stockInItems, null); - createApproveRecord(stockIn.getId(), ErpStockInApproveActionEnum.AUTO_APPROVE, null, - ErpAuditStatus.APPROVE.getStatus(), null, "无需审核,系统自动入库"); + + //修改模具组状态 + for (ErpStockInSaveReqVO.Item item : createReqVO.getItems()) { + MoldBrandDO moldBrandDO = moldBrandMapper.selectById(item.getMoldSetId()); + moldBrandDO.setStatus(MoldBrandStatusEnum.IN_STOCK.getStatus()); + moldBrandMapper.updateById(moldBrandDO); + } + + return stockIn.getId(); } @@ -201,12 +209,25 @@ public class ErpStockInServiceImpl implements ErpStockInService { && !ErpAuditStatus.UN_APPROVE.getStatus().equals(stockIn.getStatus())) { throw exception(STOCK_IN_SUBMIT_FAIL_STATUS); } + Integer fromStatus = stockIn.getStatus(); + if (!Boolean.TRUE.equals(stockIn.getNeedAudit())) { + int updateCount = stockInMapper.updateByIdAndStatus(stockIn.getId(), fromStatus, + new ErpStockInDO().setStatus(ErpAuditStatus.APPROVE.getStatus())); + if (updateCount == 0) { + throw exception(STOCK_IN_SUBMIT_FAIL_STATUS); + } + List stockInItems = stockInItemMapper.selectListByInId(stockIn.getId()); + applyStockInEffect(stockIn, stockInItems, null); + createApproveRecord(stockIn.getId(), ErpStockInApproveActionEnum.AUTO_APPROVE, fromStatus, + ErpAuditStatus.APPROVE.getStatus(), null, + submitReqVO.getRemark() != null ? submitReqVO.getRemark() : "无需审核,提交后自动入库"); + return; + } Long auditUserId = submitReqVO.getAuditUserId() != null ? submitReqVO.getAuditUserId() : stockIn.getAuditUserId(); if (auditUserId == null) { throw exception(STOCK_IN_SUBMIT_FAIL_AUDIT_USER_EMPTY); } adminUserApi.validateUser(auditUserId); - Integer fromStatus = stockIn.getStatus(); ErpStockInDO updateObj = new ErpStockInDO() .setAuditUserId(auditUserId) .setNeedAudit(true) @@ -377,7 +398,6 @@ public class ErpStockInServiceImpl implements ErpStockInService { } private List validateStockInItems(List list, String inType) { - validateWarehouseAreas(list); if (Objects.equals(inType, "模具入库")) { List moldList = moldBrandService.validMoldList(convertSet(list, ErpStockInSaveReqVO.Item::getMoldSetId)); Map moldMap = convertMap(moldList, MoldBrandDO::getId); @@ -409,6 +429,8 @@ public class ErpStockInServiceImpl implements ErpStockInService { .build(); }); } + validateWarehouseAreas(list); + List productList = productService.validProductList(convertSet(list, ErpStockInSaveReqVO.Item::getProductId)); Map productMap = convertMap(productList, ErpProductDO::getId); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java index df13fec60..ce223ea83 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.common.controller.admin.mold.vo.MoldBrandSaveReqVO; import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldBrandMapper; +import cn.iocoder.yudao.module.common.enums.MoldBrandStatusEnum; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutAuditReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; @@ -62,6 +64,8 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { @Resource private ErpStockOutMapper stockOutMapper; @Resource + private MoldBrandMapper moldBrandMapper; + @Resource private ErpStockOutItemMapper stockOutItemMapper; @Resource private ErpStockOutApproveRecordMapper stockOutApproveRecordMapper; @@ -103,7 +107,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { } boolean needAudit = needAudit(); - Integer status = needAudit ? ErpAuditStatus.DRAFT.getStatus() : ErpAuditStatus.APPROVE.getStatus(); + Integer status = ErpAuditStatus.DRAFT.getStatus(); ErpStockOutDO stockOut = BeanUtils.toBean(createReqVO, ErpStockOutDO.class, out -> out .setNo(no) .setNeedAudit(needAudit) @@ -114,11 +118,16 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { stockOutItems.forEach(item -> item.setOutId(stockOut.getId())); stockOutItemMapper.insertBatch(stockOutItems); - if (!needAudit) { - applyStockOutEffect(stockOut, stockOutItems, null); - createApproveRecord(stockOut.getId(), ErpStockOutApproveActionEnum.AUTO_APPROVE, null, - ErpAuditStatus.APPROVE.getStatus(), null, "无需审核,系统自动出库"); + + //修改模具组状态 + for (ErpStockOutSaveReqVO.Item item : createReqVO.getItems()) { + MoldBrandDO moldBrandDO = moldBrandMapper.selectById(item.getMoldSetId()); + moldBrandDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus()); + moldBrandMapper.updateById(moldBrandDO); } + + + return stockOut.getId(); } @@ -189,12 +198,25 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { && !ErpAuditStatus.UN_APPROVE.getStatus().equals(stockOut.getStatus())) { throw exception(STOCK_OUT_SUBMIT_FAIL_STATUS); } + Integer fromStatus = stockOut.getStatus(); + if (!Boolean.TRUE.equals(stockOut.getNeedAudit())) { + int updateCount = stockOutMapper.updateByIdAndStatus(stockOut.getId(), fromStatus, + new ErpStockOutDO().setStatus(ErpAuditStatus.APPROVE.getStatus())); + if (updateCount == 0) { + throw exception(STOCK_OUT_SUBMIT_FAIL_STATUS); + } + List stockOutItems = stockOutItemMapper.selectListByOutId(stockOut.getId()); + applyStockOutEffect(stockOut, stockOutItems, null); + createApproveRecord(stockOut.getId(), ErpStockOutApproveActionEnum.AUTO_APPROVE, fromStatus, + ErpAuditStatus.APPROVE.getStatus(), null, + submitReqVO.getRemark() != null ? submitReqVO.getRemark() : "无需审核,提交后自动出库"); + return; + } Long auditUserId = submitReqVO.getAuditUserId() != null ? submitReqVO.getAuditUserId() : stockOut.getAuditUserId(); if (auditUserId == null) { throw exception(STOCK_OUT_SUBMIT_FAIL_AUDIT_USER_EMPTY); } adminUserApi.validateUser(auditUserId); - Integer fromStatus = stockOut.getStatus(); ErpStockOutDO updateObj = new ErpStockOutDO() .setAuditUserId(auditUserId) .setNeedAudit(true)