Browse Source

fix: 修改欧派回传逻辑

pre-production
pref_mail@163.com 4 weeks ago
parent
commit
687fa9d1ff
  1. 103
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java

103
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<OpOrderStatusLogEntity> 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<FactoryPackageEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FactoryPackageEntity::getCosourcingCode, unitNo);
List<FactoryPackageEntity> 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<OpPackagePushLogEntity> 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<OpPackagePushLogEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<OpPackagePushLogEntity> 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, "包件码已存在");

Loading…
Cancel
Save