diff --git a/src/main/java/com/gaotao/modules/api/entity/PushPalletDetailDto.java b/src/main/java/com/gaotao/modules/api/entity/PushPalletDetailDto.java
index c43ee67..6293f49 100644
--- a/src/main/java/com/gaotao/modules/api/entity/PushPalletDetailDto.java
+++ b/src/main/java/com/gaotao/modules/api/entity/PushPalletDetailDto.java
@@ -15,10 +15,11 @@ public class PushPalletDetailDto {
private boolean isCommonUsed; //常用料
private boolean autoSort; //自动分拣
private Integer soreType;//分拣方式 0人工 1气胀轴 2抱箱 3直接出库
- private String assemblyPosition;//托盘码
+ private String assemblyPosition;//位置码
private boolean endFlag;
private List cargoInfos;//明细数据
private PartTypeEnum partType;
private Integer count=1;//托盘数量 默认为1
+ private Integer isInventoryCompletion=0;//是否为盘点确认的组盘
}
diff --git a/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java b/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java
index daa0eb7..a537456 100644
--- a/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java
+++ b/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java
@@ -598,4 +598,14 @@ public interface PhysicalInventoryMapper extends BaseMapper {
* @author rqrq
*/
int countOrderTaskByCountNo(@Param("site") String site, @Param("countNo") String countNo);
+
+ /**
+ * @Description 根据任务号和栈板号获取任务单行号 - rqrq
+ * @param site 工厂编码
+ * @param taskNo 任务号
+ * @param palletId 栈板号
+ * @return Integer 任务单行号
+ * @author rqrq
+ */
+ Integer getItemNoByTaskAndPallet(@Param("site") String site, @Param("taskNo") String taskNo, @Param("palletId") String palletId);
}
diff --git a/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java b/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java
index 48fb5ab..2084fb1 100644
--- a/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java
+++ b/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java
@@ -1853,6 +1853,9 @@ public class PhysicalInventoryServiceImpl extends ServiceImpl业务说明:
+ *
+ * - 盘点完成后调用WCS接口,告知立库该托盘已盘点
+ * - 使用 PushPalletDetailDto 构建请求数据
+ * - isInventoryCompletion=1 表示是盘点确认的组盘
+ *
+ *
+ * @param site 工厂编码
+ * @param countNo 盘点单号
+ * @param palletId 栈板号
+ * @author rqrq
+ */
+ private void pushCountCompletionToWcs(String site, String countNo, String palletId) {
+ log.info("开始推送盘点完成数据给WCS - rqrq,site: {}, countNo: {}, palletId: {}", site, countNo, palletId);
+
+ try {
+ // 1. 查询任务单号和行号 - rqrq
+ String taskNo = baseMapper.getTaskNoByPallet(site, countNo, palletId);
+ if (!StringUtils.hasText(taskNo)) {
+ log.info("该栈板没有关联任务号,跳过WCS推送,palletId: {}", palletId);
+ return;
+ }
+
+ Integer itemNo = baseMapper.getItemNoByTaskAndPallet(site, taskNo, palletId);
+ if (itemNo == null) {
+ itemNo = 1; // 默认行号1
+ }
+
+ // 2. 查询栈板的pallet_type,获取WCS相关配置 - rqrq
+ com.gaotao.modules.base.entity.PalletType palletTypeInfo = wcsIntegrationMapper.getPalletTypeInfoByPallet(site, palletId);
+ if (palletTypeInfo == null) {
+ log.warn("未查询到栈板类型信息,跳过WCS推送,palletId: {}", palletId);
+ return;
+ }
+
+ // 3. 构建 PushPalletDetailDto 对象 - rqrq
+ com.gaotao.modules.api.entity.PushPalletDetailDto dto = new com.gaotao.modules.api.entity.PushPalletDetailDto();
+ dto.setSite(site);
+ dto.setTaskNo(taskNo);
+ dto.setItemNo(itemNo);
+ dto.setPalletBarcode(palletId);
+ dto.setPalletType(palletTypeInfo.getWcsPalletType());
+ dto.setBasePalletType(palletTypeInfo.getWcsBasePalletType());
+ dto.setCommonUsed(false); // isCommonUsed = false
+ // autoSort 根据 wcs_auto_sort 的 Y/N 来填 true/false - rqrq
+ dto.setAutoSort("Y".equals(palletTypeInfo.getWcsAutoSort()));
+ dto.setSoreType(palletTypeInfo.getWcsSoreType());
+ dto.setAssemblyPosition("R1"); // 固定R1
+ dto.setEndFlag(true);
+ dto.setCargoInfos(new java.util.ArrayList<>()); // 空集合
+ dto.setPartType(com.gaotao.modules.api.entity.PartTypeEnum.OTHER); // partType = 3 (OTHER)
+ dto.setCount(1); // 默认1
+ dto.setIsInventoryCompletion(1); // 盘点确认的组盘
+
+ log.info("构建WCS请求数据完成 - rqrq,taskNo: {}, itemNo: {}, palletType: {}, basePalletType: {}",
+ taskNo, itemNo, palletTypeInfo.getWcsPalletType(), palletTypeInfo.getWcsBasePalletType());
+
+ // 4. 调用WCS接口 - rqrq
+ wcsApiService.pushZuPanApi(dto);
+ log.info("推送盘点完成数据给WCS成功 - rqrq,palletId: {}", palletId);
+
+ } catch (Exception e) {
+ log.error("推送盘点完成数据给WCS失败 - rqrq,palletId: {}, 错误: {}", palletId, e.getMessage());
+ // 失败时抛出异常,让事务回滚 - rqrq
+ throw new RuntimeException("推送盘点完成数据给WCS失败: " + e.getMessage());
+ }
+ }
+
private void handleTaskAfterCount(String site, String countNo, String palletId, String username) {
// 1. 查询该栈板关联的任务号 - rqrq
String taskNo = baseMapper.getTaskNoByPallet(site, countNo, palletId);
diff --git a/src/main/resources/mapper/check/PhysicalInventoryMapper.xml b/src/main/resources/mapper/check/PhysicalInventoryMapper.xml
index 51a674b..1ae6cd1 100644
--- a/src/main/resources/mapper/check/PhysicalInventoryMapper.xml
+++ b/src/main/resources/mapper/check/PhysicalInventoryMapper.xml
@@ -1040,5 +1040,14 @@
WHERE site = #{site}
AND source_bill_no = #{countNo}
+
+
+