Browse Source

修复snm 数据重复问题

dist.1.3.0
pref_mail@163.com 6 months ago
parent
commit
4cb8ffac62
  1. 70
      blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/FactoryXxlJob.java

70
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,28 +128,17 @@ public class FactoryXxlJob {
// 获取请求日志 按照状态来识别
List<OrderLogEntity> ls = orderLogService.lambdaQuery().eq(OrderLogEntity::getType, 1).eq(OrderLogEntity::getStatus, 1).list();
// //XxlJobLogger.log("日志集合 {}", ls);
//XxlJobLogger.log("目前存在的数据 {}", newList);
// 解析数据
ls.forEach(orderLogEntity -> {
// 查询所有的数据库内容 只包含客户单号
List<StationOrderEntity> allDataList = stationOrderService.list();
XxlJobLogger.log("allDataList{}", allDataList.size());
// 解析数据
ls.forEach(orderLogEntity -> {
// List<String> 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<String, List> map = orderService.dataRelative(orderLogEntity);
List<StationOrderEntity> dataList = map.get(StationOrderEntity.class.getName());
List<StationOrderEntity> dataList = (List<StationOrderEntity>) map.get(StationOrderEntity.class.getName());
if (dataList.isEmpty()) {
//XxlJobLogger.log("本次解析操作没有数据");
// 更新数据库请求日志状态
orderLogEntity.setStatus(0);
orderLogService.updateById(orderLogEntity);
@ -156,42 +146,46 @@ public class FactoryXxlJob {
}
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<StaorderPackagesEntity> staorderPackagesEntityList = map.get(StaorderPackagesEntity.class.getName());
List<StaorderPackagesEntity> allDataStaorderPackagesEntity = staorderPackagesService.lambdaQuery().select(StaorderPackagesEntity::getPackagenum).list();
List<String> allStaorderPackagesEntityUnionId = allDataStaorderPackagesEntity.stream().map(StaorderPackagesEntity::getPackagenum).collect(Collectors.toList());
List<StaorderPackagesEntity> staorderPackagesEntityList = (List<StaorderPackagesEntity>) 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<String> existingPackageNumbers = new HashSet<>();
if (staorderPackagesEntityList != null) {
for (StaorderPackagesEntity staorderPackagesEntity : staorderPackagesEntityList) {
existingPackageNumbers.add(staorderPackagesEntity.getPackagenum());
}
}
});
/*************** SNM 存在 相同的车次 多次推送 重复的包件的操作**************/
// 需要移除 当前合同号下的已经存在的包件
List<StationOrderEntity> finalDataList = dataList;
List<StaorderPackagesEntity> filteredStaorderPackagesEntityList = staorderPackagesEntityList.stream()
.filter(staorderPackagesEntity -> {
List<StaorderPackagesEntity> list = staorderPackagesService.lambdaQuery()
.eq(StaorderPackagesEntity::getIsDeleted, 0)
.eq(StaorderPackagesEntity::getTcPoa014, staorderPackagesEntity.getTcPoa014()).list();
// 验证查询处理的包件中是否包含当前循环的包件
boolean exists = list.stream()
.anyMatch(t -> t.getPackagenum().equals(staorderPackagesEntity.getPackagenum()));
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());
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);
}
// 更新数据库请求日志状态
@ -199,6 +193,7 @@ public class FactoryXxlJob {
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();

Loading…
Cancel
Save