diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/FactoryXxlJob.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/FactoryXxlJob.java index c7d5cfeb4..d58108693 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/FactoryXxlJob.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/FactoryXxlJob.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.logpm.factory.comfac.dto.OrderStatusDTO; @@ -127,78 +128,72 @@ public class FactoryXxlJob { // 获取请求日志 按照状态来识别 List ls = orderLogService.lambdaQuery().eq(OrderLogEntity::getType, 1).eq(OrderLogEntity::getStatus, 1).list(); -// //XxlJobLogger.log("日志集合 {}", ls); - //XxlJobLogger.log("目前存在的数据 {}", newList); + + // 查询所有的数据库内容 只包含客户单号 + List allDataList = stationOrderService.list(); + XxlJobLogger.log("allDataList{}", allDataList.size()); // 解析数据 ls.forEach(orderLogEntity -> { - // 查询所有的数据库内容 只包含客户单号 - List allDataList = stationOrderService.list(); - XxlJobLogger.log("allDataList{}", allDataList.size()); - -// List newList = new ArrayList<>(); -// if (allDataList.size() != 0) { -// newList.addAll(allDataList.stream().map(StationOrderEntity::getTcWlb008).collect(Collectors.toList())); -// XxlJobLogger.log("newList{}", newList.size()); -// -// } - - //XxlJobLogger.log("日志对象 {}", orderLogEntity); Map map = orderService.dataRelative(orderLogEntity); - List dataList = map.get(StationOrderEntity.class.getName()); + List dataList = (List) map.get(StationOrderEntity.class.getName()); if (dataList.isEmpty()) { - //XxlJobLogger.log("本次解析操作没有数据"); - //更新数据库请求日志状态 + // 更新数据库请求日志状态 orderLogEntity.setStatus(0); orderLogService.updateById(orderLogEntity); return; } dataList = checkDataExit(dataList, allDataList); - if (dataList != null && dataList.size() != 0) { - //XxlJobLogger.log("保存对象StationOrderEntity {}", dataList); + if (!dataList.isEmpty()) { stationOrderService.saveBatch(dataList); } - //XxlJobLogger.log("日志对象 {}", dataList.get(0).getId()); - - List staorderPackagesEntityList = map.get(StaorderPackagesEntity.class.getName()); - List allDataStaorderPackagesEntity = staorderPackagesService.lambdaQuery().select(StaorderPackagesEntity::getPackagenum).list(); - List allStaorderPackagesEntityUnionId = allDataStaorderPackagesEntity.stream().map(StaorderPackagesEntity::getPackagenum).collect(Collectors.toList()); + List staorderPackagesEntityList = (List) map.get(StaorderPackagesEntity.class.getName()); - allStaorderPackagesEntityUnionId.forEach(t -> { - for (int i = 0; i < staorderPackagesEntityList.size(); i++) { - if (staorderPackagesEntityList.get(i).getPackagenum().equals(t)) { - staorderPackagesEntityList.remove(i); - break; - } + Set existingPackageNumbers = new HashSet<>(); + if (staorderPackagesEntityList != null) { + for (StaorderPackagesEntity staorderPackagesEntity : staorderPackagesEntityList) { + existingPackageNumbers.add(staorderPackagesEntity.getPackagenum()); } - }); - - /*************** SNM 存在 相同的车次 多次推送 重复的包件的操作**************/ - // 需要移除 当前合同号下的已经存在的包件 - + } - dataList.forEach(v -> { - for (int i = 0; i < staorderPackagesEntityList.size(); i++) { - if (staorderPackagesEntityList.get(i).getTcPoa014().equals(v.getTcWlb008())) { - staorderPackagesEntityList.get(i).setOrderId(v.getId()); + List finalDataList = dataList; + List filteredStaorderPackagesEntityList = staorderPackagesEntityList.stream() + .filter(staorderPackagesEntity -> { + + List list = staorderPackagesService.lambdaQuery() + .eq(StaorderPackagesEntity::getIsDeleted, 0) + .eq(StaorderPackagesEntity::getTcPoa014, staorderPackagesEntity.getTcPoa014()).list(); + // 验证查询处理的包件中是否包含当前循环的包件 + boolean exists = list.stream() + .anyMatch(t -> t.getPackagenum().equals(staorderPackagesEntity.getPackagenum())); + + if (!exists) { + // 更新订单ID + for (StationOrderEntity v : finalDataList) { + if (v.getTcWlb008().equals(staorderPackagesEntity.getTcPoa014())) { + staorderPackagesEntity.setOrderId(v.getId()); + } + } } - } - }); + + return !exists && !existingPackageNumbers.contains(staorderPackagesEntity.getPackagenum()); + }) + .collect(Collectors.toList()); // 插入数据库 - if (staorderPackagesEntityList != null && !staorderPackagesEntityList.isEmpty()) { - //XxlJobLogger.log("保存对象StaorderPackagesEntity {}", staorderPackagesEntityList); - staorderPackagesService.saveBatch(staorderPackagesEntityList); + if (!filteredStaorderPackagesEntityList.isEmpty()) { + staorderPackagesService.saveBatch(filteredStaorderPackagesEntityList); } - //更新数据库请求日志状态 + // 更新数据库请求日志状态 orderLogEntity.setStatus(0); orderLogService.updateById(orderLogEntity); }); + // 调用接口写入到老系统的数据库 if (ObjectUtil.equal(sendDataProperties.getSend(), "old")) { log.info("推送到老系统"); @@ -212,6 +207,7 @@ public class FactoryXxlJob { return ReturnT.SUCCESS; } + private Timestamp initTimestamp() { Calendar calendar = Calendar.getInstance();