From b45af55cdd89cde9b200f44068617eddd239eba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Fri, 7 Aug 2026 17:54:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=85=A5=E5=BA=93=E5=8D=95?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=94=9F=E6=88=90=E7=94=B5=E5=AD=90=E7=AD=BE?= =?UTF-8?q?=E5=90=8D;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ElectronicSignatureDomainService.java | 18 ++++- .../ElectronicSignatureApi.java | 19 +++++- .../StockInOrderApplicationService.java | 6 +- .../service/StockInOrderDomainService.java | 67 +++++++++++++++++++ .../service/StockShelfOrderDomainService.java | 2 +- 5 files changed, 106 insertions(+), 6 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/service/ElectronicSignatureDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/service/ElectronicSignatureDomainService.java index d40d338a6..40c302ea6 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/service/ElectronicSignatureDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/service/ElectronicSignatureDomainService.java @@ -84,6 +84,22 @@ public class ElectronicSignatureDomainService { return true; } + + + /** + * 保存电子签名记录(生成待签名记录) + * 业务规则: + * 1. 查询是否已有签名记录 + * 2. 若已签名(SIGNATURE_STATUS=2),跳过 + * 3. 若待签名(SIGNATURE_STATUS=1),覆盖明细(先逻辑删除旧明细,再插入新明细) + * 4. 若不存在,新增主表+明细 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateSignature(ElectronicSignatureDO electronicSignatureDO) { + Long orderId = electronicSignatureDO.getOrderId(); + return true; + } + /** * 分页查询电子签名列表 */ @@ -190,4 +206,4 @@ public class ElectronicSignatureDomainService { return updated; } -} +} \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/electronicSignature/ElectronicSignatureApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/electronicSignature/ElectronicSignatureApi.java index fde87cd6d..ca989253d 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/electronicSignature/ElectronicSignatureApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/electronicSignature/ElectronicSignatureApi.java @@ -55,6 +55,23 @@ public class ElectronicSignatureApi extends BaseController { } } + + /** + * 保存电子签名记录(WMS端Feign调用) + */ + @ApiOperation("保存电子签名记录") + @PostMapping("/updateSignature") + public AjaxResult updateSignature(@RequestBody ElectronicSignatureSaveDTO saveDTO) { + try { + ElectronicSignatureDO signatureDO = toDO(saveDTO); + electronicSignatureDomainService.updateSignature(signatureDO); + return AjaxResult.success("电子签名记录保存成功"); + } catch (Exception e) { + log.error("保存电子签名记录失败", e); + return AjaxResult.error("保存电子签名记录失败:" + e.getMessage()); + } + } + /** * 分页查询电子签名列表 */ @@ -164,4 +181,4 @@ public class ElectronicSignatureApi extends BaseController { } return vo; } -} +} \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 766b8dbaf..e854a3ad0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -302,9 +302,9 @@ public class StockInOrderApplicationService { } // 入库签名列表固定「已入库」状态过滤 - if (stockInOrderDO.getStatus() == null) { - stockInOrderDO.setStatus(5); - } +// if (stockInOrderDO.getStatus() == null) { +// stockInOrderDO.setStatus(5); +// } List stockInOrderPOS = stockInOrderDomainService.querySignatureList(stockInOrderDO); // 状态/签名字段翻译,便于 PDA 端直接展示 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 b88b1710a..0f88de5fe 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 @@ -1,5 +1,6 @@ package com.mhd.wms.domain.stockInOrder.service; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson2.JSONObject; @@ -16,7 +17,9 @@ import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.uuid.IdGenerator; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.OmsServiceFeign; import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.ElectronicSignatureSyncDTO; import com.mhd.system.api.domain.PackDetailFeignPO; import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; @@ -97,6 +100,8 @@ public class StockInOrderDomainService { private IMaterialWarehouseControlService materialWarehouseControlService; @Resource private SystemServiceFeign systemServiceFeign; + @Resource + private OmsServiceFeign omsServiceFeign; @Autowired private IReceiptMaterialDetailService receiptMaterialDetailService; @Autowired @@ -428,6 +433,8 @@ public class StockInOrderDomainService { if (StringUtils.isEmpty(inOrderNumber)) { return; } + + StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper().lambda() .eq(StockInOrder::getInOrderNumber, inOrderNumber) .eq(StockInOrder::getDelFlag, 1) @@ -435,6 +442,15 @@ public class StockInOrderDomainService { if (stockInOrder == null || AUDIT_STATUS_PASS == stockInOrder.getAuditStatus()) { return; } + + //生成电子签名 + StockInOrderPO info = getInfo(stockInOrder.getInOrderId()); + List materialDetails = materialDetailService.list(new QueryWrapper().lambda() + .eq(InMaterialDetail::getInOrderNumber, inOrderNumber) + .eq(InMaterialDetail::getDelFlag, 1)); + genElectronicSignature(info,materialDetails); + + StockInOrderDO auditDO = new StockInOrderDO(); auditDO.setInOrderIds(Collections.singletonList(stockInOrder.getInOrderId())); auditDO.setAuditStatus(AUDIT_STATUS_PASS); @@ -1252,4 +1268,55 @@ public class StockInOrderDomainService { public List queryNoticePrintDetail(StockInOrderDO stockInOrderDO) { return stockInOrderService.queryNoticePrintDetail(stockInOrderDO); } + + + /** + * 生成入库电子签名记录(上架完成触发) + */ + private void genElectronicSignature(StockInOrderPO stockShelfOrderPO, List shelfMaterialDetailList) { + try { + ElectronicSignatureSyncDTO dto = new ElectronicSignatureSyncDTO(); + dto.setOrderId(stockShelfOrderPO.getInOrderId()); + dto.setOrderNumber(stockShelfOrderPO.getInOrderNumber()); + dto.setOrderType("IN"); + dto.setOrganizationId(stockShelfOrderPO.getOrganizationId()); + dto.setOrganizationName(stockShelfOrderPO.getOrganizationName()); + dto.setTopOrganizationId(stockShelfOrderPO.getTopOrganizationId()); + dto.setWarehouseId(stockShelfOrderPO.getWarehouseId()); + dto.setWarehouseCode(stockShelfOrderPO.getWarehouseCode()); + dto.setWarehouseName(stockShelfOrderPO.getWarehouseName()); + + List items = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(shelfMaterialDetailList)) { + for (InMaterialDetail detail : shelfMaterialDetailList) { + ElectronicSignatureSyncDTO.MaterialDetailItem item = new ElectronicSignatureSyncDTO.MaterialDetailItem(); + item.setMaterialBaseInfoId(detail.getMaterialBaseInfoId()); + item.setMaterialCode(detail.getMaterialCode()); + item.setMaterialName(detail.getMaterialName()); + item.setQuantity(detail.getShelvesQuantity()); + item.setUnitCode(detail.getUnitCode()); + item.setUnitName(detail.getUnitName()); + item.setBatchNumber(detail.getBatchNumber()); + item.setLotNumber(detail.getLotNo()); + item.setWarehouseId(detail.getWarehouseId()); + item.setWarehouseCode(detail.getWarehouseCode()); + item.setWarehouseName(detail.getWarehouseName()); + item.setStorageSectionId(detail.getStorageSectionId()); + item.setStorageSectionCode(detail.getStorageCode()); + item.setStorageSectionName(detail.getStorageName()); + item.setStorageLocationId(detail.getStorageLocationId()); + item.setStorageLocationCode(detail.getStorageLocationCode()); + item.setStorageLocationName(detail.getStorageLocationName()); + item.setUniqueId(detail.getUniqueId()); + items.add(item); + } + } + dto.setMaterialDetailList(items); + + log.info("生成入库电子签名记录,订单号:{},物料条目数:{}", stockShelfOrderPO.getInOrderNumber(), items.size()); + omsServiceFeign.saveSignature(dto); + } catch (Exception e) { + log.error("生成入库电子签名记录失败,订单号:{}", stockShelfOrderPO.getInOrderNumber(), e); + } + } } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java index c865523cb..c9f97c0c7 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java @@ -879,7 +879,7 @@ public class StockShelfOrderDomainService { if (businessOrderNumber != null) stockShelfOrderService.updateOmsReserveOrder(businessOrderNumber, shelvesQuantity == null ? null : shelvesQuantity); //生成电子签名记录 - genElectronicSignature(stockShelfOrderPO, shelfMaterialDetailList); +// genElectronicSignature(stockShelfOrderPO, shelfMaterialDetailList); return true; }