diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AUTO_ISSUE_DOCKING_AND_PC.md b/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AUTO_ISSUE_DOCKING_AND_PC.md
index 3c70384f..4f7e5e34 100644
--- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AUTO_ISSUE_DOCKING_AND_PC.md
+++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AUTO_ISSUE_DOCKING_AND_PC.md
@@ -16,7 +16,7 @@
```
AutoIssueShopOrderDto
- site 发料任务 site(RFID 回调大 site,禁止登录态)
+ site 工单订单行 haian_SOIssueNotifyOrderList.sub_site(任务大site仅用于内部归属隔离)
shopOrderNo OrderList.soorder_no
workOrderNo 固定空串,不传工单号
releaseNo OrderList.release_no,空则海安先填 *
@@ -102,7 +102,7 @@ RFID建单和真实移库入队仍沿用原流程;发料门禁及汇总只以
1. 只处理移库汇总为S且`issue_flag`为空的任务标签;移库F保持未发料,发料`S/F`复用结果,`P/U`进入待核实,均禁止再次发送。 - rqrq
2. 按标签再查一次 **当前** `handling_unit`(移库后 `location_id` 已变,禁止用建单快照)。现查询 XML 需补 `eng_chg_level`。
3. 用任务标签 `serial_no` 查 `haian_SOIssueNotifyOrderMaterialList_detail`,再 `site + notify_no + item_no` 关联 `haian_SOIssueNotifyOrderList`,取 `soorder_no / release_no / sequence_no`。
-4. 按 `site + shopOrderNo + releaseNo + sequenceNo` 分组,每组一个 `AutoIssueShopOrderDto`,`workOrderNo=""`;`releaseNo/sequenceNo` 空则海安填 `*`(不要依赖同事默认,两边口径一致)。
+4. 按订单子工厂`sub_site + shopOrderNo + releaseNo + sequenceNo`分组,每组一个 `AutoIssueShopOrderDto`,`workOrderNo=""`;`releaseNo/sequenceNo` 空则海安填 `*`(不要依赖同事默认,两边口径一致)。 - rqrq
5. 每张标签按第 1 节映射表填写;`labelCode` 空、`issueQty=qty` 全发、`lineItemNo` 由 `BOM_item_no` 转 Integer,转失败记 0。
6. 组完后 **本地先校验** site/工单号/handlingUnitId/partNo/locationId/issueQty,缺了不要调 `autoIssue`。
7. 回参 `failCount>0` 或任一张失败:**成功的留盘标-1,失败标-2,整托走异常位 type=2**(不要因为部分成功就 type=1)。
@@ -169,7 +169,7 @@ failSet = failures 里 labelCode 或 handlingUnitId 命中的集合
## 4. 已拍板(原待确认项)
-1. `shopOrders.site`:发料任务大 site。
+1. `shopOrders.site`:对应工单订单行`haian_SOIssueNotifyOrderList.sub_site`;为空或与标签库存site不一致时该标签本地判失败,禁止兜底为任务大site。- rqrq
2. `lineItemNo`:`detail.BOM_item_no` 转 Integer,转失败为 0(不是同事的 null→1)。
3. `labelCode` 固定空,失败对账用 `handlingUnitId`(同事内部会把空 labelCode 回退成 handlingUnitId)。
4. 只要有一张失败:成功标签留盘标-1,失败标签标-2,整托type=2去异常位。- rqrq
diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueOrderSourceResult.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueOrderSourceResult.java
index b26561b5..3374a56e 100644
--- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueOrderSourceResult.java
+++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueOrderSourceResult.java
@@ -28,6 +28,11 @@ public class HaiAnAutoIssueOrderSourceResult {
*/
private BigDecimal itemNo;
+ /**
+ * 工单所属子工厂,来源haian_SOIssueNotifyOrderList.sub_site;映射同事shopOrders.site并参与工单分组。为空禁止该标签发料,不落库。- rqrq
+ */
+ private String subSite;
+
/**
* BOM行号原文,来源 detail.BOM_item_no,转 Integer 作为同事 lineItemNo;转失败由业务改 0。不落库。 - rqrq
*/
diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueShopOrderGroupKey.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueShopOrderGroupKey.java
index a1a3a5ee..ffd24c3c 100644
--- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueShopOrderGroupKey.java
+++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/entity/HaiAnAutoIssueShopOrderGroupKey.java
@@ -12,7 +12,7 @@ import lombok.EqualsAndHashCode;
public class HaiAnAutoIssueShopOrderGroupKey {
/**
- * 分组用工厂 site,来源发料任务 site。同事 shopOrders.site 与本字段一致。不落库。 - rqrq
+ * 分组用工厂site,来源haian_SOIssueNotifyOrderList.sub_site;同事shopOrders.site使用同值,隔离不同子工厂的同号工单,不落库。- rqrq
*/
private String site;
diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnAutoIssueServiceImpl.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnAutoIssueServiceImpl.java
index d9705ee3..fbb533d4 100644
--- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnAutoIssueServiceImpl.java
+++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnAutoIssueServiceImpl.java
@@ -737,6 +737,21 @@ public class HaiAnAutoIssueServiceImpl implements HaiAnAutoIssueService {
continue;
}
+ // IFS发料工厂取订单sub_site;任务site仅用于海安业务隔离,缺失或与库存工厂不符时本标签失败,其他标签仍可继续。- rqrq
+ String issueSite = normalizeText(orderSource.getSubSite());
+ if (!StringUtils.hasText(issueSite)) {
+ // 保留可定位的订单来源错误,不登记P、不调用IFS,后续按任务结果写-2并通知异常位。- rqrq
+ localResults.put(serialNo, buildLabelIssueResult(serialNo, false,
+ "工单订单行缺少子工厂sub_site,notifyNo=" + orderSource.getNotifyNo() + ",itemNo=" + orderSource.getItemNo()));
+ continue;
+ }
+ if (!issueSite.equals(normalizeText(handlingUnit.getSite()))) {
+ // 同事方法按一个工厂查询库存,工单与标签工厂不一致时不能改用大工厂或静默替换为标签工厂。- rqrq
+ localResults.put(serialNo, buildLabelIssueResult(serialNo, false,
+ "工单子工厂与标签库存工厂不一致,orderSubSite=" + issueSite + ",labelSite=" + handlingUnit.getSite()));
+ continue;
+ }
+
String releaseNo = defaultWildcard(orderSource.getReleaseNo());
String sequenceNo = defaultWildcard(orderSource.getSequenceNo());
AutoIssueHandlingUnitDto huDto = new AutoIssueHandlingUnitDto();
@@ -752,14 +767,16 @@ public class HaiAnAutoIssueServiceImpl implements HaiAnAutoIssueService {
huDto.setIssueQty(handlingUnit.getQty());
HaiAnAutoIssueShopOrderGroupKey groupKey = new HaiAnAutoIssueShopOrderGroupKey();
- groupKey.setSite(site);
+ // 子工厂也是工单分组键,避免多子工厂混托时把同号工单的标签合并后发给错误库存工厂。- rqrq
+ groupKey.setSite(issueSite);
groupKey.setShopOrderNo(shopOrderNo);
groupKey.setReleaseNo(releaseNo);
groupKey.setSequenceNo(sequenceNo);
AutoIssueShopOrderDto shopOrder = shopOrderGroups.get(groupKey);
if (shopOrder == null) {
shopOrder = new AutoIssueShopOrderDto();
- shopOrder.setSite(site);
+ // 同事autoIssue会把本字段原样传给IFS的ifsSiteID,明确使用当前订单行sub_site。- rqrq
+ shopOrder.setSite(issueSite);
shopOrder.setShopOrderNo(shopOrderNo);
shopOrder.setWorkOrderNo(HaiAnAutoIssueStaticData.EMPTY_WORK_ORDER_NO);
shopOrder.setReleaseNo(releaseNo);
diff --git a/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueMoveRefMapper.xml b/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueMoveRefMapper.xml
index c4f519f9..478673b7 100644
--- a/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueMoveRefMapper.xml
+++ b/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueMoveRefMapper.xml
@@ -26,6 +26,7 @@
+
diff --git a/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueTaskLabelMapper.xml b/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueTaskLabelMapper.xml
index 0365d4f2..b4f82db7 100644
--- a/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueTaskLabelMapper.xml
+++ b/src/main/resources/mapper/autoWareHourceHaian/HaiAnAutoIssueTaskLabelMapper.xml
@@ -129,11 +129,13 @@
+