pda签名;

This commit is contained in:
王奎兴
2026-08-07 20:25:05 +08:00
parent fedeece533
commit a66177e21b
3 changed files with 95 additions and 0 deletions
@@ -91,6 +91,15 @@ public interface ElectronicSignatureMapper extends BaseMapper<ElectronicSignatur
List<ElectronicSignature> selectBySignatureIds(@Param("signatureIds") List<Long> signatureIds);
@Select("<script>"
+ "SELECT * FROM NGWL_TEST_OMS.ELECTRONIC_SIGNATURE "
+ "WHERE ORDER_ID IN "
+ "<foreach collection='signatureIds' item='id' open='(' separator=',' close=')'>#{id}</foreach>"
+ " AND DEL_FLAG = 1"
+ "</script>")
List<ElectronicSignature> selectByOrderIds(@Param("signatureIds") List<Long> 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);
@@ -228,4 +228,70 @@ public class ElectronicSignatureDomainService {
return updated;
}
@Transactional(rollbackFor = Exception.class)
public int batchSignByWmsId(ElectronicSignatureBatchSignDTO dto) {
List<Long> signatureIds = dto.getSignatureIds();
if (CollectionUtil.isEmpty(signatureIds)) {
return 0;
}
// 1. 查询签名记录,获取 orderId + orderType
List<ElectronicSignature> 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<Long> inOrderIds = signatureList.stream()
.filter(s -> "IN".equals(s.getOrderType()))
.map(ElectronicSignature::getOrderId)
.distinct()
.collect(Collectors.toList());
List<Long> 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;
}
}
@@ -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");