diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java index 971df1726..0c8906b76 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java @@ -117,7 +117,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { handleData(code); if (ObjectUtils.isNotNull(code)) { // 暂停推送 - if(ObjectUtil.equal(sendDataProperties.getSend(), "new")){ + if (ObjectUtil.equal(sendDataProperties.getSend(), "new")) { log.info("推送新系统"); asyncDataService.handlerOuPaiDataToHt(code); } @@ -164,7 +164,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(OpOrderStatusLogEntity::getType, 3); - lambdaQueryWrapper.like(OpOrderStatusLogEntity::getArgs, code); + lambdaQueryWrapper.like(OpOrderStatusLogEntity::getArgs, code); lambdaQueryWrapper.orderByAsc(OpOrderStatusLogEntity::getCreateTime); lambdaQueryWrapper.last("limit 1"); return opOrderStatusLogService.getOne(lambdaQueryWrapper); @@ -424,22 +424,22 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { /** * 重推 - * @see #handleStatusData(OrderStatusDTO, boolean) + * * @param orderStatusDTO * @return + * @see #handleStatusData(OrderStatusDTO, boolean) */ @Override - public boolean retryHandleStatusData(OrderStatusDTO orderStatusDTO){ + public boolean retryHandleStatusData(OrderStatusDTO orderStatusDTO) { R res = handleStatusData(orderStatusDTO, true); - return res.getCode() == 200; + return res.getCode() == 200; // 测试功能时使用 // return res.getCode() == 200 || Math.random() < 0.5; - } + } /** - * * @param orderStatusDTO - * @param isRetry 是否是重推调用 + * @param isRetry 是否是重推调用 * @return */ private R handleStatusData(OrderStatusDTO orderStatusDTO, boolean isRetry) { @@ -453,6 +453,33 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { return Resp.fail(400, "当前数据的状态不推送"); } + + // 需要判断当前操作的码 是否是和包码 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(FactoryPackageEntity::getCosourcingCode, unitNo); + List list = factoryPackageService.list(queryWrapper); + if (list.isEmpty()) { + return doPackageInfo(orderStatusDTO, isRetry, unitNo, status); + } else { + try { + for (FactoryPackageEntity factoryPackageEntity : list) { + + R r = doPackageInfo(orderStatusDTO, isRetry, factoryPackageEntity.getCode(), status); + + } + } catch (Exception e) { + log.error("合包码推送出现异常", e); + } + return Resp.success("物流状态传递成功"); + + + } + + + } + + @NotNull + private R doPackageInfo(OrderStatusDTO orderStatusDTO, boolean isRetry, String unitNo, String status) { //继续判断是否到达目的仓 String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id //查询destinationWarehouse logiBillNo plantId数据 @@ -479,7 +506,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { // 不是重试的时候,记录对应数据 if (!isRetry) { - log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}", unitNo); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); } @@ -547,11 +574,11 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { if (opPackagePushLogEntity == null) { log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate")); } else { - if(opPackagePushLogEntity.getId().equals(-1L)){ + if (opPackagePushLogEntity.getId().equals(-1L)) { // 保存异常 // 不是重试的时候,记录对应数据 if (!isRetry) { - log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}", unitNo); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); } } @@ -635,14 +662,16 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { // return Resp.fail(400, "不是目的仓"); // } + + // 查询这个包件对应到新系统的订单 FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo); if (Objects.isNull(factoryOrder)) { // 不是重试的时候,记录对应数据 - log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); - opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); + log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}", unitNo); + opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); return Resp.fail(400, "未查询到该单据推送订单信息"); } @@ -705,13 +734,13 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate")); } else { - if(opPackagePushLogEntity.getId().equals(-1L)){ - log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + if (opPackagePushLogEntity.getId().equals(-1L)) { + log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}", unitNo); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); } // 需要盘点这个对象的 - String resp = opPackagePushLogEntity.getResp(); + String resp = opPackagePushLogEntity.getResp(); log.info(" >>>>>>>>>>>>>>>>>>>>>>> 推送欧派返回数据 {}", resp); // TODO: 2023/10/25 不知道返回成功的状态是多少 @@ -842,20 +871,20 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { private OpPackagePushLogEntity sendPushOuPaiDataNew(Long refId, String url, Integer pushType, JSONObject data) { - OpPackagePushLogEntity opPackagePushLogEntity = new OpPackagePushLogEntity(); - opPackagePushLogEntity.setArgs(data.toJSONString()); - opPackagePushLogEntity.setPushType(pushType); - opPackagePushLogEntity.setUrl(url); - opPackagePushLogEntity.setRefId(refId); - opPackagePushLogEntity.setPushOupaiNode(data.getString("Operate")); + OpPackagePushLogEntity opPackagePushLogEntity = new OpPackagePushLogEntity(); + opPackagePushLogEntity.setArgs(data.toJSONString()); + opPackagePushLogEntity.setPushType(pushType); + opPackagePushLogEntity.setUrl(url); + opPackagePushLogEntity.setRefId(refId); + opPackagePushLogEntity.setPushOupaiNode(data.getString("Operate")); - String token = buildToken(); - HttpResponse httpResponse = HttpRequest.post(url).header("Authorization", token).body(data.toJSONString()).execute(); - String result = httpResponse.body(); - opPackagePushLogEntity.setResp(result); - opPackagePushLogService.save(opPackagePushLogEntity); - return opPackagePushLogEntity; + String token = buildToken(); + HttpResponse httpResponse = HttpRequest.post(url).header("Authorization", token).body(data.toJSONString()).execute(); + String result = httpResponse.body(); + opPackagePushLogEntity.setResp(result); + opPackagePushLogService.save(opPackagePushLogEntity); + return opPackagePushLogEntity; } @@ -877,26 +906,26 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushOupaiNode, "收货"); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushType, pushType);// 查询包件 List list = opPackagePushLogService.list(lambdaQueryWrapper); - if(list.isEmpty()){ - data.put("Operate","收货"); + if (list.isEmpty()) { + data.put("Operate", "收货"); OpPackagePushLogEntity opPackagePushLogEntity = sendPushOuPaiDataNew(refId, url, 1, data); - log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 由于欧派数据延迟推送作业,作业上没有进行入库作业回传,在出库回传欧派 再次进行补传入库数据, 包条ID:{}",refId); + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 由于欧派数据延迟推送作业,作业上没有进行入库作业回传,在出库回传欧派 再次进行补传入库数据, 包条ID:{}", refId); // 由于现在无法进行异步任务的绑定,所以对于没有入库数据的说发,导致无法进行延迟 再加上欧派现在没有进行发货数据的考核 所以在检查到没有收货数据的发货推送的时间只传收货 // 将当前的发货的原始数据保存在定时任务 晚上再次执行该原始数据 opPackagePushLogEntity.setId(-1L); return opPackagePushLogEntity; - }else{ + } else { return sendOupaiDataAndSaveLogs(refId, url, pushType, data); } - }else { + } else { return sendOupaiDataAndSaveLogs(refId, url, pushType, data); } } @Nullable private OpPackagePushLogEntity sendOupaiDataAndSaveLogs(Long refId, String url, Integer pushType, JSONObject data) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getRefId, refId); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushOupaiNode, data.getString("Operate")); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushType, pushType);// 查询包件 @@ -1288,11 +1317,11 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { String receiveCode = receivingOrderMapper.selectReceivingOrderByOrderId(factoryPackageEntity.getOrderId()); - if(receiveCode.equals(code)){ + if (receiveCode.equals(code)) { log.error("############handleData: 包件码已存在 packageCode={} ,订单 id {} 收货单号 {}", packageCode, factoryPackageEntity.getOrderId(), code); - }else{ - log.error("############handleData: 该包件存在于其它收货单 packageCode={} 订单ID {} 收货单号 {}", packageCode,factoryPackageEntity.getOrderId(), receiveCode); + } else { + log.error("############handleData: 该包件存在于其它收货单 packageCode={} 订单ID {} 收货单号 {}", packageCode, factoryPackageEntity.getOrderId(), receiveCode); } //throw new CustomerException(403, "包件码已存在");