diff --git a/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpIssueMapper.java b/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpIssueMapper.java index 845fd511..a72047b7 100644 --- a/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpIssueMapper.java +++ b/src/main/java/com/xujie/sys/modules/erf/mapper/ErfExpIssueMapper.java @@ -31,4 +31,12 @@ public interface ErfExpIssueMapper { */ List getIssueMaterialByRawMaterialIds(@Param("rawMaterialIdList") List rawMaterialIdList); + /** + * 根据工单号查询shoporder中的成品料号(仅已下达且样品工单) + */ + String getShopOrderPartNo(@Param("site") String site, + @Param("orderNo") String orderNo, + @Param("status") String status, + @Param("orderType") String orderType); + } diff --git a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpIssueServiceImpl.java b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpIssueServiceImpl.java index 7514981b..cd687c50 100644 --- a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpIssueServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfExpIssueServiceImpl.java @@ -52,6 +52,9 @@ public class ErfExpIssueServiceImpl implements ErfExpIssueService { private static final String ERF_COMPONENT_PREFIX = "ERF-RM-"; private static final String ERF_NOTIFY_ORDER_TYPE = "样品工单"; private static final String ERF_NOTIFY_DEFAULT_REMARK = "样品工单"; + private static final String ERF_SO_ORDER_NO_SUFFIX = "#1"; + private static final String SHOP_ORDER_RELEASED_STATUS = "下达"; + private static final String DEFAULT_FG_PART_NO = "*"; @Autowired private ErfExpIssueMapper erfExpIssueMapper; @@ -279,11 +282,14 @@ public class ErfExpIssueServiceImpl implements ErfExpIssueService { orderData.setOutWorkOrderFlag("N"); // ERF来源数据映射到SOIssueNotify结构 - orderData.setSeqNo(StringUtils.hasText(materialItem.getApplyNo()) ? materialItem.getApplyNo().trim() : ""); - orderData.setsOOrderNo(StringUtils.hasText(materialItem.getApplyNo()) ? materialItem.getApplyNo().trim() : ""); + String applyNo = StringUtils.hasText(materialItem.getApplyNo()) ? materialItem.getApplyNo().trim() : ""; + orderData.setSeqNo(applyNo); + // SOIssueNotifyOrderList约定SOOrderNo需追加后缀,用于区分同源工单序号 + String soOrderNo = StringUtils.hasText(applyNo) ? applyNo + ERF_SO_ORDER_NO_SUFFIX : ""; + orderData.setsOOrderNo(soOrderNo); orderData.setOpsItemNo(0D); orderData.setOpsDesc(StringUtils.hasText(materialItem.getProcessStep()) ? materialItem.getProcessStep().trim() : ""); - orderData.setfGPartNo(resolveFgPartNo(materialItem)); + orderData.setfGPartNo(resolveFgPartNo(site, soOrderNo)); orderData.setNeedDate(resolveNeedDate(materialItem)); return orderData; } @@ -322,14 +328,16 @@ public class ErfExpIssueServiceImpl implements ErfExpIssueService { return ERF_COMPONENT_PREFIX + (item != null ? item.getRawMaterialId() : ""); } - private String resolveFgPartNo(ErfExpIssueMaterialData materialItem) { - if (materialItem != null && StringUtils.hasText(materialItem.getPartNo())) { - return materialItem.getPartNo().trim(); + private String resolveFgPartNo(String site, String soOrderNo) { + if (!StringUtils.hasText(site) || !StringUtils.hasText(soOrderNo)) { + return DEFAULT_FG_PART_NO; } - if (materialItem != null && StringUtils.hasText(materialItem.getApplyNo())) { - return materialItem.getApplyNo().trim(); + // 业务要求:FG料号以shoporder中“已下达+样品工单+匹配工单号”的partno为准,不存在时统一落"*" + String shopOrderPartNo = erfExpIssueMapper.getShopOrderPartNo(site, soOrderNo, SHOP_ORDER_RELEASED_STATUS, ERF_NOTIFY_ORDER_TYPE); + if (shopOrderPartNo != null) { + return shopOrderPartNo.trim(); } - return ""; + return DEFAULT_FG_PART_NO; } diff --git a/src/main/resources/mapper/erf/ErfExpIssueMapper.xml b/src/main/resources/mapper/erf/ErfExpIssueMapper.xml index e5c6f279..e1302449 100644 --- a/src/main/resources/mapper/erf/ErfExpIssueMapper.xml +++ b/src/main/resources/mapper/erf/ErfExpIssueMapper.xml @@ -162,4 +162,15 @@ + + +