diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/repository/mapper/ElectronicSignatureMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/repository/mapper/ElectronicSignatureMapper.java index 555bccd2d..e7090f590 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/repository/mapper/ElectronicSignatureMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/electronicSignature/repository/mapper/ElectronicSignatureMapper.java @@ -91,6 +91,15 @@ public interface ElectronicSignatureMapper extends BaseMapper selectBySignatureIds(@Param("signatureIds") List signatureIds); + @Select("") + List selectByOrderIds(@Param("signatureIds") List signatureIds); + + @Update("UPDATE NGWL_TEST_WMS.STOCK_IN_ORDER SET SIGNATURE_STATUS = 2,SIGNATURE_TIME =now() WHERE IN_ORDER_ID = #{id}") int updateIn( @Param("id") Long id); 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 04974ef28..ff5b98e1d 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 @@ -228,4 +228,70 @@ public class ElectronicSignatureDomainService { return updated; } + + @Transactional(rollbackFor = Exception.class) + public int batchSignByWmsId(ElectronicSignatureBatchSignDTO dto) { + List signatureIds = dto.getSignatureIds(); + if (CollectionUtil.isEmpty(signatureIds)) { + return 0; + } + + // 1. 查询签名记录,获取 orderId + orderType + List signatureList = electronicSignatureMapper.selectByOrderIds(signatureIds); + if (CollectionUtil.isEmpty(signatureList)) { + log.warn("批量签名失败:未找到有效的签名记录"); + return 0; + } + + // 2. 更新OMS电子签名表 + Date now = new Date(); + String evidencePicsStr = null; + if (CollectionUtil.isNotEmpty(dto.getEvidencePics())) { + evidencePicsStr = String.join(",", dto.getEvidencePics()); + } + + int updated = electronicSignatureMapper.batchUpdateSign( + signatureIds, now, + dto.getSignaturePic(), + evidencePicsStr, + dto.getSignatureRemark(), + dto.getSignatureMode()); + log.info("批量签名:OMS电子签名表更新 {} 条", updated); + + // 3. 按订单类型分组,调用WMS更新入/出库表 + if (wmsServiceFeign != null) { + try { + // 分组:IN-入库、OUT-出库 + List inOrderIds = signatureList.stream() + .filter(s -> "IN".equals(s.getOrderType())) + .map(ElectronicSignature::getOrderId) + .distinct() + .collect(Collectors.toList()); + List outOrderIds = signatureList.stream() + .filter(s -> "OUT".equals(s.getOrderType())) + .map(ElectronicSignature::getOrderId) + .distinct() + .collect(Collectors.toList()); + + // 构建 WMS 批量签名 DTO(一次调用同时处理入库+出库) + SignatureBatchFeignDTO wmsDto = new SignatureBatchFeignDTO(); + wmsDto.setInOrderIds(inOrderIds.isEmpty() ? null : inOrderIds); + wmsDto.setOutOrderIds(outOrderIds.isEmpty() ? null : outOrderIds); + wmsDto.setSignatureStatus(2); + wmsDto.setSignatureTime(now); + wmsDto.setSignaturePic(dto.getSignaturePic()); + wmsDto.setEvidencePics(evidencePicsStr); + wmsDto.setSignatureRemark(dto.getSignatureRemark()); + + log.info("批量签名:调用WMS更新入/出库单,入库{}条,出库{}条", + inOrderIds.size(), outOrderIds.size()); + wmsServiceFeign.batchSignWms(wmsDto); + } catch (Exception e) { + log.error("批量签名:调用WMS更新入/出库表失败", e); + // WMS更新失败不影响OMS表更新结果,仅记录日志 + } + } + + 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 0db79a995..8d4a1f592 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 @@ -156,6 +156,26 @@ public class ElectronicSignatureApi extends BaseController { } } + + @ApiOperation("批量签名(勾选记录后批量更新签名状态为已签名)") + @PostMapping("/batchSignByWmsId") + public AjaxResult batchSignByWmsId(@RequestBody ElectronicSignatureBatchSignDTO dto) { + if (dto.getSignatureIds() == null || dto.getSignatureIds().isEmpty()) { + return AjaxResult.error("请选择需要签名的记录"); + } + try { + int count = electronicSignatureDomainService.batchSignByWmsId(dto); + if (count > 0) { + return AjaxResult.success("批量签名成功,共更新 " + count + " 条记录"); + } else { + return AjaxResult.error("批量签名失败:未找到有效的待签名记录"); + } + } catch (Exception e) { + log.error("批量签名失败", e); + return AjaxResult.error("批量签名失败:" + e.getMessage()); + } + } + private ElectronicSignatureDO toDO(ElectronicSignatureSaveDTO dto) { ElectronicSignatureDO signatureDO = new ElectronicSignatureDO(); BeanUtils.copyProperties(dto, signatureDO, "materialDetailList");