常熟吴彦祖 5 days ago
parent
commit
2ab4e92178
  1. 11
      src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnNotifyDataToWcs.java
  2. 14
      src/main/java/com/gaotao/modules/autoWareHourceHaian/api/service/impl/HaiAnWcsApiServiceImpl.java
  3. 3
      src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnIssueNotifyPushTransactionServiceImpl.java
  4. 3
      src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPalletMergeQueryServiceImpl.java
  5. 14
      src/main/java/com/gaotao/modules/autoWareHourceHaian/staticData/HaiAnStationStaticData.java

11
src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnNotifyDataToWcs.java

@ -21,6 +21,16 @@ public class HaiAnNotifyDataToWcs {
*/
private String notifyNo;
/**
* 必填WMS任务单号,取自已写入海安任务主表的taskNo;本报文字段不单独落库,供WCS执行及回调关联任务 - rqrq
*/
private String taskNo;
/**
* 必填WMS任务行号,取自海安任务主表itemNo的正整数值,当前领料和合托均为1;非申请单订单行号,本报文字段不单独落库,供WCS定位任务行 - rqrq
*/
private Integer itemNo;
/**
* 业务类型:1生产 2分切 3销售 4手工盘点 5循环盘点 6委外 7合托 - rqrq
*/
@ -41,4 +51,3 @@ public class HaiAnNotifyDataToWcs {
*/
private String targetArea;
}

14
src/main/java/com/gaotao/modules/autoWareHourceHaian/api/service/impl/HaiAnWcsApiServiceImpl.java

@ -153,11 +153,23 @@ public class HaiAnWcsApiServiceImpl implements HaiAnWcsApiService {
/**
* @author rqrq
* @Description 领料申请单推送,逻辑与老pushNotifyToWcsApi保持一致 - rqrq
* @Description 海安领料及合托推送,要求携带已创建任务的单号和正整数行号;校验或WCS调用失败抛异常,由调用方事务回滚 - rqrq
*/
@Override
public void pushNotifyToWcsApi(HaiAnNotifyDataToWcs inData) {
// 序列化和HTTP短路前校验必填任务标识,防止空请求或无效任务被当作推送成功;失败交由上游回滚业务事务 - rqrq
if (inData == null) {
throw new RuntimeException("海安领料申请单推送失败:请求参数不能为空");
}
// 检查taskNo是否包含有效文本,确保WCS能关联海安任务;缺失时不记录成功或发送请求 - rqrq
if (!StringUtils.hasText(inData.getTaskNo())) {
throw new RuntimeException("海安领料申请单推送失败:WMS任务单号taskNo不能为空");
}
if (inData.getItemNo() == null || inData.getItemNo() <= 0) {
throw new RuntimeException("海安领料申请单推送失败:WMS任务行号itemNo必须为正整数");
}
ObjectMapper objectMapper2 = new ObjectMapper();
// 将包含taskNo和itemNo的海安实体转为顶层请求字段,供后续日志和HTTP共用;转换失败向上抛出以回滚本地事务 - rqrq
Map<String, Object> request = objectMapper2.convertValue(inData, new TypeReference<Map<String, Object>>() {});
Long logId = null;

3
src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnIssueNotifyPushTransactionServiceImpl.java

@ -198,6 +198,9 @@ public class HaiAnIssueNotifyPushTransactionServiceImpl implements HaiAnIssueNot
HaiAnNotifyDataToWcs wcsData = new HaiAnNotifyDataToWcs();
wcsData.setSite(site);
wcsData.setNotifyNo(notifyNo);
// 传递已落库任务的单号和行号,避免误用申请单订单行号造成WCS回调无法定位;缺失时由接口层拒绝并回滚本订单 - rqrq
wcsData.setTaskNo(task.getTaskNo());
wcsData.setItemNo(task.getItemNo());
wcsData.setOrderType(1);
wcsData.setOrderNo(StringUtils.defaultString(order.getSoorderNo()).trim());
wcsData.setTargetArea(targetAreaWcsCode);

3
src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPalletMergeQueryServiceImpl.java

@ -219,6 +219,9 @@ public class HaiAnPalletMergeQueryServiceImpl implements HaiAnPalletMergeQuerySe
HaiAnNotifyDataToWcs notifyDataToWcs = new HaiAnNotifyDataToWcs();
notifyDataToWcs.setSite(site != null ? site.trim() : null);
notifyDataToWcs.setNotifyNo(taskNo != null ? taskNo.trim() : null);
// 传递已落库合托主任务的单号和行号,多个托盘共用同一任务行;缺失时由接口层拒绝并回滚合托占用和任务 - rqrq
notifyDataToWcs.setTaskNo(orderTask.getTaskNo());
notifyDataToWcs.setItemNo(orderTask.getItemNo());
notifyDataToWcs.setOrderNo(taskNo != null ? taskNo.trim() : null);
notifyDataToWcs.setOrderType(7);

14
src/main/java/com/gaotao/modules/autoWareHourceHaian/staticData/HaiAnStationStaticData.java

@ -18,17 +18,17 @@ public final class HaiAnStationStaticData {
/**
* 海安唯一入库口。空托盘通知入库、直接组盘下发 WCS assemblyPosition 固定用此值,禁止再拆入库口1/2。 - rqrq
*/
public static final String INBOUND_PORT = "入库口";
public static final String INBOUND_PORT = "ST-INO1";
/**
* 主动叫料固定站点:Call料、合托、盘点拉板下发 WCS targetPosition。已确认为整托出库口,与普通出库口不是同一点。 - rqrq
*/
public static final String DIRECT_OUTBOUND_PORT = "整托出库口";
public static final String DIRECT_OUTBOUND_PORT = "ST-FO-01";
/**
* 普通出库口站点名。主动叫料本阶段不用;WCS「到达出库口」回传点位可能是此值,按回传原样落托盘。待确认站点实际编码。 - rqrq
*/
public static final String NORMAL_OUTBOUND_PORT = "出库口";
public static final String NORMAL_OUTBOUND_PORT = "ST-OUTO1";
/**
* 立库内允许人工移出/作为地面运输端点的三个口;区域均为A01,不包含货架、输送线、异常位或分拣位。 - rqrq
@ -75,7 +75,7 @@ public final class HaiAnStationStaticData {
* 异常位白名单。到达异常位必须命中本数组才落托盘位置,禁止写死单一编码;1101 仅兼容历史托盘。待确认站点实际编码。 - rqrq
*/
public static final List<String> ERROR_STATIONS = Collections.unmodifiableList(
Arrays.asList("异常位1", "异常位2", "1101")
Arrays.asList("EXCP-01", "EXCP-02", "EXCP-03", "EXCP-04")
);
/**
@ -97,21 +97,21 @@ public final class HaiAnStationStaticData {
* 自动分拣组盘位白名单。pickingFeedback 命中记“自动分拣”。与手工分拣位、被分拣位都不是同一组。待确认站点实际编码,当前为旧暂定值 J1–J4。 - rqrq 海安自动分拣就2个位置
*/
public static final List<String> AUTO_SORT_STATIONS = Collections.unmodifiableList(
Arrays.asList("J1H", "J2H")
Arrays.asList("ST-RP-03", "ST-RP-04")
);
/**
* 手工分拣区站点白名单。原有人工分拣组盘工作盘点位,R1 属于本组,不是被分拣位。分拣页按工作盘逻辑:卡清单、扫回还原原托盘、无增量跳过、endFlag=N。 - rqrq
*/
public static final List<String> MANUAL_SORT_STATIONS = Collections.unmodifiableList(
Arrays.asList("R1H", "R2H", "R3H", "R4H")
Arrays.asList("ST-MP-05", "ST-MP-06", "ST-MP-07", "ST-MP-08")
);
/**
* 海安新增被分拣源盘站点白名单。老模块没有这个站点概念,禁止复用手工分拣 R1–R4。分拣页命中后按放回标签/通知回库处理。站点实际编码待现场确认后只改本数组。 - rqrq
*/
public static final List<String> SORTED_SOURCE_STATIONS = Collections.unmodifiableList(
Arrays.asList("R5H", "R6H", "R7H", "R8H")
Arrays.asList("ST-MP-01", "ST-MP-02", "ST-MP-03", "ST-MP-04")
);
/**

Loading…
Cancel
Save