Browse Source

推送bug

master
常熟吴彦祖 3 months ago
parent
commit
5d4c3a1f5c
  1. 18
      src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java
  2. 10
      src/main/java/com/gaotao/modules/notify/mapper/NewIssureMapper.java
  3. 47
      src/main/java/com/gaotao/modules/notify/service/impl/NewIssureServiceImpl.java
  4. 21
      src/main/resources/mapper/notify/NewIssureMapper.xml

18
src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java

@ -148,15 +148,15 @@ public class WcsApiServiceImpl implements WcsApiService {
//调用wcs接口
ObjectMapper objectMapper = new ObjectMapper();
String jsonBody = objectMapper.writeValueAsString(request);
// int code = 200;
// String msg = "测试成功";
String ifsResponse = HttpUtils.doPost(url,jsonBody,null);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(ifsResponse);
int code = jsonNode.get("resCode").asInt();
String msg = jsonNode.get("resMsg").asText();
int code = 200;
String msg = "测试成功";
// String ifsResponse = HttpUtils.doPost(url,jsonBody,null);
//
// ObjectMapper mapper = new ObjectMapper();
// JsonNode jsonNode = mapper.readTree(ifsResponse);
//
// int code = jsonNode.get("resCode").asInt();
// String msg = jsonNode.get("resMsg").asText();
if(code!=200){
throw new RuntimeException("调用WCS接口失败,错误码:"+code+",错误信息:"+msg);
}

10
src/main/java/com/gaotao/modules/notify/mapper/NewIssureMapper.java

@ -142,16 +142,6 @@ public interface NewIssureMapper {
*/
void updateNotifyHeaderPushWcsFlag(@Param("site") String site, @Param("notifyNo") String notifyNo, @Param("pushWcsFlag") String pushWcsFlag);
/**
* 根据site和notifyNo统计满足条件的订单数 - rqrq
*/
int countSatisfiedOrders(@Param("site") String site, @Param("notifyNo") String notifyNo);
/**
* 根据site和notifyNo统计总订单数 - rqrq
*/
int countTotalOrders(@Param("site") String site, @Param("notifyNo") String notifyNo);
/**
* 根据栈板ID和序列号列表查询栈板明细信息position, layer - rqrq
*/

47
src/main/java/com/gaotao/modules/notify/service/impl/NewIssureServiceImpl.java

@ -708,13 +708,20 @@ public class NewIssureServiceImpl implements NewIssureService {
(item.getOrderSatisfactionStatus() == 1 || item.getOrderSatisfactionStatus() == 2))
.collect(Collectors.toList());
// 2. 获取传入的原始订单总数按生产订单分组统计- rqrq
int originalOrderCount = (int) data.getInventoryList().stream()
.map(InventoryCheckResult::getProductionOrderNo)
.distinct()
.count();
System.out.println("前端传入的订单总数:" + originalOrderCount + " - rqrq");
System.out.println("筛选后满足库存要求的数据:" + validList.size() + "条 - rqrq");
if (validList.isEmpty()) {
throw new RuntimeException("没有满足库存要求的订单数据");
}
// 2. 提取所有条码序列号 - rqrq
// 3. 提取所有条码序列号 - rqrq
List<String> allSerialNos = new ArrayList<>();
for (InventoryCheckResult item : validList) {
String matchedBarcodes = item.getMatchedBarcodes();
@ -729,14 +736,14 @@ public class NewIssureServiceImpl implements NewIssureService {
System.out.println("提取到条码总数:" + allSerialNos.size() + " - rqrq");
// 3. 前置校验检查reserve_flag - rqrq
// 4. 前置校验检查reserve_flag - rqrq
List<String> reservedUnits = newIssureMapper.checkReserveFlagBySerialNos(site, allSerialNos);
if (reservedUnits != null && !reservedUnits.isEmpty()) {
if (!reservedUnits.isEmpty()) {
throw new RuntimeException("已经有物料被其他任务领走,请重新打开推送界面计算库存。");
}
System.out.println("reserve_flag校验通过 - rqrq");
// 4. 前置校验查询栈板并检查calling_flag - rqrq
// 5. 前置校验查询栈板并检查calling_flag - rqrq
List<String> palletIds = newIssureMapper.getPalletIdsBySerialNos(site, allSerialNos);
if (palletIds == null || palletIds.isEmpty()) {
throw new RuntimeException("未找到条码对应的栈板信息");
@ -744,22 +751,22 @@ public class NewIssureServiceImpl implements NewIssureService {
System.out.println("找到栈板数量:" + palletIds.size() + " - rqrq");
List<String> callingPallets = newIssureMapper.checkCallingFlagByPalletIds(site, palletIds);
if (callingPallets != null && !callingPallets.isEmpty()) {
throw new RuntimeException("已经有物料被其他任务领走,请重新打开推送界面计算库存。");
if ( !callingPallets.isEmpty()) {
throw new RuntimeException("已经有栈板被其他任务领走,请重新打开推送界面计算库存。");
}
System.out.println("calling_flag校验通过 - rqrq");
// 5. 按ProductionOrderNo分组 - rqrq
// 6. 按ProductionOrderNo分组 - rqrq
Map<String, List<InventoryCheckResult>> groupedByOrder = validList.stream()
.collect(Collectors.groupingBy(InventoryCheckResult::getProductionOrderNo));
int totalOrdersToProcess = groupedByOrder.size();
System.out.println("按生产订单分组,本次要推送" + totalOrdersToProcess + "个订单 - rqrq");
int validOrderCount = groupedByOrder.size();
System.out.println("按生产订单分组,满足条件的订单数:" + validOrderCount + "个 - rqrq");
Date currentTime = new Date();
int successCount = 0; // 统计成功推送的订单数 - rqrq
// 6. 遍历每个生产订单 - rqrq
// 7. 遍历每个生产订单 - rqrq
for (Map.Entry<String, List<InventoryCheckResult>> entry : groupedByOrder.entrySet()) {
String productionOrderNo = entry.getKey();
List<InventoryCheckResult> orderItems = entry.getValue();
@ -1003,12 +1010,22 @@ public class NewIssureServiceImpl implements NewIssureService {
}
}
// 7. 判断推送状态并更新SOIssueNotifyHeader的push_wcs_flag - rqrq
String pushWcsFlag = (successCount == totalOrdersToProcess) ? "推送完成" : "部分推送";
System.out.println("推送结果统计:本次要推送" + totalOrdersToProcess + "个订单,成功推送" + successCount + "个订单 - rqrq");
// 8. 判断推送状态并更新SOIssueNotifyHeader的push_wcs_flag - rqrq
// 判断逻辑
// - 如果一条都没成功successCount == 0不改变状态
// - 如果全部推送成功successCount == originalOrderCount推送完成
// - 如果部分成功0 < successCount < originalOrderCount部分推送
if (successCount == 0) {
// 一条都没成功不改变push_wcs_flag状态 - rqrq
System.out.println("推送结果:传入" + originalOrderCount + "个订单,成功0个,不改变推送状态 - rqrq");
} else {
// 使用原始订单总数判断而不是过滤后的订单数 - rqrq
String pushWcsFlag = (successCount == originalOrderCount) ? "推送完成" : "部分推送";
System.out.println("推送结果统计:传入" + originalOrderCount + "个订单,满足条件" + validOrderCount + "个,成功推送" + successCount + "个,最终状态=" + pushWcsFlag + " - rqrq");
newIssureMapper.updateNotifyHeaderPushWcsFlag(site, notifyNo, pushWcsFlag);
System.out.println("更新申请单push_wcs_flag=" + pushWcsFlag + " - rqrq");
newIssureMapper.updateNotifyHeaderPushWcsFlag(site, notifyNo, pushWcsFlag);
System.out.println("更新申请单push_wcs_flag=" + pushWcsFlag + " - rqrq");
}
System.out.println("推送库存预览数据至WCS完成 - rqrq");
}

21
src/main/resources/mapper/notify/NewIssureMapper.xml

@ -159,7 +159,7 @@
<foreach collection="serialNos" item="serialNo" open="(" separator="," close=")">
#{serialNo}
</foreach>
AND (reserve_flag != 'N' OR reserve_flag IS NULL)
AND (reserve_flag ='Y')
</select>
<!-- rqrq - 根据条码列表查询所有栈板ID -->
@ -182,7 +182,7 @@
<foreach collection="palletIds" item="palletId" open="(" separator="," close=")">
#{palletId}
</foreach>
AND calling_flag != 'N'
AND calling_flag ='Y'
</select>
<!-- rqrq - 根据notifyNo和productionOrderNo查询itemNo -->
@ -249,23 +249,6 @@
AND notify_no = #{notifyNo}
</update>
<!-- rqrq - 根据site和notifyNo统计满足条件的订单数(已推送WMS的) -->
<select id="countSatisfiedOrders" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM SOIssueNotifyOrderList
WHERE site = #{site}
AND notify_no = #{notifyNo}
AND ISNULL(push_wms_flag, 'N') = 'Y'
</select>
<!-- rqrq - 根据site和notifyNo统计总订单数 -->
<select id="countTotalOrders" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM SOIssueNotifyOrderList
WHERE site = #{site}
AND notify_no = #{notifyNo}
</select>
<!-- rqrq - 根据栈板ID和序列号列表查询栈板明细信息 -->
<select id="getPalletDetailsByPalletAndSerials" resultType="com.gaotao.modules.automatedWarehouse.entity.PalletDetail">
SELECT position, layer, serial_no as serialNo

Loading…
Cancel
Save