diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index 0ba442b6d..001b832b4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -359,12 +359,88 @@ public class StockInOrderDomainService { } } + private static final int AUDIT_STATUS_PASS = 3; + private static final int ORDER_STATUS_AUDITED = 2; + private static final String OMS_AUTO_AUDIT_REMARK = "OMS下发自动审核"; + public void omsOrderAdd(StockInOrder stockInOrder) { stockInOrderService.save(stockInOrder); } + @Transactional(rollbackFor = Exception.class) public void omsOrderAddDetail(List inMaterialDetails) { + if (CollectionUtils.isEmpty(inMaterialDetails)) { + return; + } materialDetailService.saveBatch(inMaterialDetails); + autoAuditOmsInOrder(inMaterialDetails.get(0).getInOrderNumber()); + } + + /** + * OMS下发入库单明细保存后自动审核通过(生成收货单并更新审核状态) + */ + private void autoAuditOmsInOrder(String inOrderNumber) { + if (StringUtils.isEmpty(inOrderNumber)) { + return; + } + StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper().lambda() + .eq(StockInOrder::getInOrderNumber, inOrderNumber) + .eq(StockInOrder::getDelFlag, 1) + .last("LIMIT 1")); + if (stockInOrder == null || AUDIT_STATUS_PASS == stockInOrder.getAuditStatus()) { + return; + } + StockInOrderDO auditDO = new StockInOrderDO(); + auditDO.setInOrderIds(Collections.singletonList(stockInOrder.getInOrderId())); + auditDO.setAuditStatus(AUDIT_STATUS_PASS); + auditDO.setAuditRemark(OMS_AUTO_AUDIT_REMARK); + auditApprove(auditDO); + Long auditBy = resolveAuditUserId(stockInOrder.getCreateBy()); + String auditByName = resolveAuditUserName(stockInOrder.getCreateByName()); + Date now = new Date(); + stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(StockInOrder::getStatus, ORDER_STATUS_AUDITED) + .set(StockInOrder::getAuditStatus, AUDIT_STATUS_PASS) + .set(StockInOrder::getAuditRemark, OMS_AUTO_AUDIT_REMARK) + .set(StockInOrder::getAuditBy, auditBy) + .set(StockInOrder::getAuditByName, auditByName) + .set(StockInOrder::getAuditTime, now) + .set(StockInOrder::getUpdateBy, auditBy) + .set(StockInOrder::getUpdateByName, auditByName) + .set(StockInOrder::getUpdateTime, now) + .eq(StockInOrder::getInOrderId, stockInOrder.getInOrderId())); + } + + private Long resolveAuditUserId(Long orderCreateBy) { + try { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserid() != null) { + return loginUser.getUserid(); + } + } catch (Exception e) { + log.debug("OMS自动审核未获取到登录用户,使用单据创建人: {}", e.getMessage()); + } + return orderCreateBy != null ? orderCreateBy : 0L; + } + + private String resolveAuditUserName(String orderCreateByName) { + try { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + return loginUser.getUserPo().getUserName(); + } + if (StringUtils.isNotEmpty(loginUser.getRealname())) { + return loginUser.getRealname(); + } + if (StringUtils.isNotEmpty(loginUser.getUsername())) { + return loginUser.getUsername(); + } + } + } catch (Exception e) { + log.debug("OMS自动审核未获取到登录用户姓名,使用单据创建人: {}", e.getMessage()); + } + return StringUtils.isNotEmpty(orderCreateByName) ? orderCreateByName : "OMS系统自动审核"; } /** diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index 9ca8f0c1b..5f0b02e04 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -1704,12 +1704,83 @@ public class StockOutOrderDomainService { } + private static final int AUDIT_STATUS_PASS = 3; + private static final int ORDER_STATUS_AUDITED = 2; + private static final String OMS_AUTO_AUDIT_REMARK = "OMS下发自动审核"; + public void omsOrderAdd(StockOutOrder stockOutOrder) { stockOutOrderService.save(stockOutOrder); } + @Transactional(rollbackFor = Exception.class) public void omsOrderAddDetail(List outMaterialDetails) { + if (CollectionUtils.isEmpty(outMaterialDetails)) { + return; + } outMaterialDetailService.saveBatch(outMaterialDetails); + autoAuditOmsOutOrder(outMaterialDetails.get(0).getOutOrderNumber()); + } + + /** + * OMS下发出库单明细保存后自动审核通过 + */ + private void autoAuditOmsOutOrder(String outOrderNumber) { + if (StringUtils.isEmpty(outOrderNumber)) { + return; + } + StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber, outOrderNumber) + .eq(StockOutOrder::getDelFlag, 1) + .last("LIMIT 1")); + if (stockOutOrder == null || AUDIT_STATUS_PASS == stockOutOrder.getAuditStatus()) { + return; + } + Long auditBy = resolveAuditUserId(stockOutOrder.getCreateBy()); + String auditByName = resolveAuditUserName(stockOutOrder.getCreateByName()); + Date now = new Date(); + stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getStatus, ORDER_STATUS_AUDITED) + .set(StockOutOrder::getAuditStatus, AUDIT_STATUS_PASS) + .set(StockOutOrder::getAuditRemark, OMS_AUTO_AUDIT_REMARK) + .set(StockOutOrder::getAuditBy, auditBy) + .set(StockOutOrder::getAuditByName, auditByName) + .set(StockOutOrder::getAuditTime, now) + .set(StockOutOrder::getUpdateBy, auditBy) + .set(StockOutOrder::getUpdateByName, auditByName) + .set(StockOutOrder::getUpdateTime, now) + .eq(StockOutOrder::getOutOrderId, stockOutOrder.getOutOrderId())); + } + + private Long resolveAuditUserId(Long orderCreateBy) { + try { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserid() != null) { + return loginUser.getUserid(); + } + } catch (Exception e) { + log.debug("OMS自动审核未获取到登录用户,使用单据创建人: {}", e.getMessage()); + } + return orderCreateBy != null ? orderCreateBy : 0L; + } + + private String resolveAuditUserName(String orderCreateByName) { + try { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + if (loginUser.getUserPo() != null && StringUtils.isNotEmpty(loginUser.getUserPo().getUserName())) { + return loginUser.getUserPo().getUserName(); + } + if (StringUtils.isNotEmpty(loginUser.getRealname())) { + return loginUser.getRealname(); + } + if (StringUtils.isNotEmpty(loginUser.getUsername())) { + return loginUser.getUsername(); + } + } + } catch (Exception e) { + log.debug("OMS自动审核未获取到登录用户姓名,使用单据创建人: {}", e.getMessage()); + } + return StringUtils.isNotEmpty(orderCreateByName) ? orderCreateByName : "OMS系统自动审核"; } public List queryOutStockNoticePrint(StockOutOrderDTO stockOutOrderDTO) {