From 3ec5d3766fdb480902129677fc8653a5d938fe2b Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Sat, 16 Dec 2023 23:39:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=8E=A8=E9=80=81=E5=A4=B1=E8=B4=A5=E5=90=8E=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=87=8D=E6=96=B0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ModuleNameConstant.java | 2 +- .../common/constant/RedisKeyConstant.java | 5 + .../xxl/job/admin/JobAdminApplication.java | 4 +- .../impl/FactoryCommonServiceImpl.java | 168 +++++++++--------- .../jobhandler/OrderPackageStatusFallJob.java | 56 ++++++ .../factory/receiver/DealWithDataHandler.java | 28 +++ 6 files changed, 180 insertions(+), 83 deletions(-) create mode 100644 blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/OrderPackageStatusFallJob.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java index 153720380..182fc50f6 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java @@ -8,7 +8,7 @@ public interface ModuleNameConstant { /** * 如果不需要 "" */ - public static final String DEVAUTH =""; + public static final String DEVAUTH ="-pref"; /** * 工厂对接服务名称 diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/RedisKeyConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/RedisKeyConstant.java index afa7dc7b0..a54511345 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/RedisKeyConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/RedisKeyConstant.java @@ -8,5 +8,10 @@ public class RedisKeyConstant { */ public static final String cache_oupai_key ="cache:oupai-key:"; + /** + * 缓存老系统没有解析成功的数据 + */ + public static final String CACHE_OLD_SYSTEM_ORDERPACKAGE_KEY ="cache:old-system-orderpackage-key:"; + } diff --git a/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java b/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java index 6e683eb10..df183fb9e 100644 --- a/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java +++ b/blade-ops/blade-xxljob-admin/src/main/java/com/xxl/job/admin/JobAdminApplication.java @@ -11,7 +11,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class JobAdminApplication { public static void main(String[] args) { - BladeApplication.run(LauncherConstant.APPLICATION_XXLJOB_ADMIN_NAME, JobAdminApplication.class, args); + + + BladeApplication.run("blade-xxljob-pref", JobAdminApplication.class, args); } } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/FactoryCommonServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/FactoryCommonServiceImpl.java index e664870b5..889cb7b3b 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/FactoryCommonServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/FactoryCommonServiceImpl.java @@ -1,6 +1,7 @@ package com.logpm.factory.comfac.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.logpm.basicdata.entity.BasicdataTrayEntity; import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataTrayClient; @@ -18,13 +19,16 @@ import com.logpm.warehouse.feign.IWarehouseTrayTypeClient; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.OldSystemDataPushConfig; +import org.springblade.common.constant.RedisKeyConstant; import org.springblade.common.exception.CustomerException; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.sql.Wrapper; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -50,27 +54,27 @@ public class FactoryCommonServiceImpl implements IFactoryCommonService { public void syncTrayTypeData(String unitNo, Integer trayId, String oldWarehouseId) { //先判断是否两个数据已经执行完成 - String ruku = bladeRedis.get("arrive-"+unitNo); - trayId = bladeRedis.get("tray-"+unitNo); + String ruku = bladeRedis.get("arrive-" + unitNo); + trayId = bladeRedis.get("tray-" + unitNo); - if(StringUtil.isBlank(ruku) || Objects.isNull(trayId)){ - log.error("###############syncTrayTypeData: 数据不完整,暂不打托 ruku={} trayId={}",ruku,trayId); - throw new CustomerException(403,"数据不完整,暂不打托"); + if (StringUtil.isBlank(ruku) || Objects.isNull(trayId)) { + log.error("###############syncTrayTypeData: 数据不完整,暂不打托 ruku={} trayId={}", ruku, trayId); + throw new CustomerException(403, "数据不完整,暂不打托"); } - log.info("###############syncTrayTypeData: 包件打托开始 unitNo={} trayId={} oldWarehouseId={}",unitNo,trayId,oldWarehouseId); + log.info("###############syncTrayTypeData: 包件打托开始 unitNo={} trayId={} oldWarehouseId={}", unitNo, trayId, oldWarehouseId); //先判断新系统仓库信息是否存在 BasicdataWarehouseEntity warehouseEntity = basicdataWarehouseClient.getWarehouseByOldId(Integer.parseInt(oldWarehouseId)); - if(Objects.isNull(warehouseEntity)){ - log.error("###############syncTrayTypeData: 仓库信息不存在 oldWarehouseId={}",oldWarehouseId); - throw new CustomerException(403,"仓库信息不存在"); + if (Objects.isNull(warehouseEntity)) { + log.error("###############syncTrayTypeData: 仓库信息不存在 oldWarehouseId={}", oldWarehouseId); + throw new CustomerException(403, "仓库信息不存在"); } Long newWarehouseId = warehouseEntity.getId(); //判断托盘是否已经存在 BasicdataTrayEntity basicdataTrayEntity = basicdataTrayClient.getTrayByTrayCode("T" + trayId); - if(Objects.isNull(basicdataTrayEntity)){ + if (Objects.isNull(basicdataTrayEntity)) { log.info("############syncTrayTypeData: 托盘信息不存在"); //如果托盘不存在就去同步该托盘 TrayEntity trayEntity = trayClient.getTrayById(trayId); @@ -80,9 +84,9 @@ public class FactoryCommonServiceImpl implements IFactoryCommonService { basicdataTrayEntity.setUpdateUser(1714696768639311873L); basicdataTrayEntity.setCreateDept(1649331096241836033L); basicdataTrayEntity.setPalletName(trayEntity.getTrayNo()); - basicdataTrayEntity.setPalletCode("T"+trayEntity.getId()); + basicdataTrayEntity.setPalletCode("T" + trayEntity.getId()); basicdataTrayEntity.setWarehouseId(newWarehouseId); - basicdataTrayEntity.setTrayStatus(trayEntity.getStatus()+""); + basicdataTrayEntity.setTrayStatus(trayEntity.getStatus() + ""); basicdataTrayEntity.setType(1); basicdataTrayEntity.setOldId(trayId); // basicdataTrayEntity.setNowWarehouseId(nowNewWarehouseId); @@ -90,40 +94,40 @@ public class FactoryCommonServiceImpl implements IFactoryCommonService { } //把包件打托到托盘上 - TrayScanEntity trayScanEntity = trayScanClient.getEntityByTrayIdAndOldWarehouseIdAndBindStatus(trayId,oldWarehouseId,1); + TrayScanEntity trayScanEntity = trayScanClient.getEntityByTrayIdAndOldWarehouseIdAndBindStatus(trayId, oldWarehouseId, 1); String trayType = "100"; - if(!Objects.isNull(trayScanEntity)){ + if (!Objects.isNull(trayScanEntity)) { Integer type = trayScanEntity.getType(); - if(1==type){ + if (1 == type) { trayType = "60"; - }else if(2==type){ + } else if (2 == type) { trayType = "30"; - }else if(3==type){ + } else if (3 == type) { trayType = "50"; - }else if(4==type){ + } else if (4 == type) { trayType = "100"; - }else if(5==type){ + } else if (5 == type) { trayType = "10"; - }else if(6==type){ + } else if (6 == type) { trayType = "20"; } } - Map map = new HashMap<>(); - map.put("trayType",trayType); - map.put("trayCode","T"+trayId); - map.put("warehouseId",newWarehouseId); - map.put("orderPackageCode",unitNo); + Map map = new HashMap<>(); + map.put("trayType", trayType); + map.put("trayCode", "T" + trayId); + map.put("warehouseId", newWarehouseId); + map.put("orderPackageCode", unitNo); //新系统保存打托方式 boolean b = warehouseTrayTypeClient.orderScanOrderPackageCode(map); - if(!b){ - log.error("################syncTrayTypeData: 包件打托失败 unitNo={} trayCode={}",unitNo,"T"+trayId); - throw new CustomerException(403,"包件打托失败"); + if (!b) { + log.error("################syncTrayTypeData: 包件打托失败 unitNo={} trayCode={}", unitNo, "T" + trayId); + throw new CustomerException(403, "包件打托失败"); } - log.info("################syncTrayTypeData: 包件打托成功 unitNo={}",unitNo); + log.info("################syncTrayTypeData: 包件打托成功 unitNo={}", unitNo); } @@ -134,67 +138,69 @@ public class FactoryCommonServiceImpl implements IFactoryCommonService { //查询destinationWarehouse logiBillNo plantId数据 Map supplyData = advanceDetailClient.getSupplyData(unitNo); - if (supplyData == null) { + if (!supplyData.isEmpty()) { log.error("##############dealWithDataHandler: unitNo={} 没有查询到数据", unitNo); // 保存到数据库 -// orderPackageStatusPushFailLogMapper.selectList() - - OrderPackageStatusPushFailLogEntity orderPackageStatusPushFailLogEntity=new OrderPackageStatusPushFailLogEntity(); - orderPackageStatusPushFailLogEntity.setOrderPackageStatus(status); - orderPackageStatusPushFailLogEntity.setUnitNo(unitNo); - orderPackageStatusPushFailLogEntity.setWarehouseId(currentWarehouseId); - orderPackageStatusPushFailLogEntity.setOperationTime(operationTime); - orderPackageStatusPushFailLogEntity.setTrayId(trayId); - orderPackageStatusPushFailLogEntity.setDataStatus(0); - - // 插入之前判断这条数据是否存在系统中 - - orderPackageStatusPushFailLogMapper.insert(orderPackageStatusPushFailLogEntity); - - - // 执行定时任务 - return; - } - String destinationWarehouseId = supplyData.get("destinationWarehouseId");//目的仓id - if (StringUtil.isBlank(currentWarehouseId) || StringUtil.isBlank(destinationWarehouseId)) { - log.warn("##############dealWithDataHandler: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId); - throw new CustomerException(405, "仓库数据有误"); - } else { - if (!currentWarehouseId.equals(destinationWarehouseId)) { - log.info("##############dealWithDataHandler: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId); -// channel.basicAck(deliveryTag,false); + String destinationWarehouseId = supplyData.get("destinationWarehouseId");//目的仓id + if (StringUtil.isBlank(currentWarehouseId) || StringUtil.isBlank(destinationWarehouseId)) { + log.warn("##############dealWithDataHandler: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId); + throw new CustomerException(405, "仓库数据有误"); } else { - //真正的处理需要的数据 - - if(OldSystemDataPushConfig.getWarehourseIdList().contains(currentWarehouseId)){ - - try { - if ("1".equals(status)) { - - // 始发仓和目的仓入库 - panFactoryDataService.handleDataToPlatform(unitNo, operationTime); - bladeRedis.setEx("tray-" + unitNo, trayId, 30L); - - } else if ("4".equals(status)) { - panFactoryDataService.handleDataToPlatform(unitNo, operationTime); - } else if ("2".equals(status)) { - bladeRedis.setEx("tray-" + unitNo, trayId, 30L); - } else { - log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>> 错误的状态"); + if (!currentWarehouseId.equals(destinationWarehouseId)) { + log.info("##############dealWithDataHandler: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId); +// channel.basicAck(deliveryTag,false); + } else { + //真正的处理需要的数据 + if (OldSystemDataPushConfig.getWarehourseIdList().contains(currentWarehouseId)) { + try { + if ("1".equals(status)) { + + // 始发仓和目的仓入库 + panFactoryDataService.handleDataToPlatform(unitNo, operationTime); + bladeRedis.setEx("tray-" + unitNo, trayId, 30L); + + } else if ("4".equals(status)) { + panFactoryDataService.handleDataToPlatform(unitNo, operationTime); + } else if ("2".equals(status)) { + bladeRedis.setEx("tray-" + unitNo, trayId, 30L); + } else { + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>> 错误的状态"); + } + + //同步打托数据 + syncTrayTypeData(unitNo, trayId, currentWarehouseId); + + } catch (Exception e) { + log.error(e.getMessage()); } - - //同步打托数据 - syncTrayTypeData(unitNo, trayId, currentWarehouseId); - - } catch (Exception e) { - log.error(e.getMessage()); } } } + } else { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("unit_no", unitNo); + queryWrapper.eq("warehouse_id", currentWarehouseId); + + List list = orderPackageStatusPushFailLogMapper.selectList(queryWrapper); + + if (list == null || list.isEmpty()) { + OrderPackageStatusPushFailLogEntity orderPackageStatusPushFailLogEntity = new OrderPackageStatusPushFailLogEntity(); + orderPackageStatusPushFailLogEntity.setOrderPackageStatus(status); + orderPackageStatusPushFailLogEntity.setUnitNo(unitNo); + orderPackageStatusPushFailLogEntity.setWarehouseId(currentWarehouseId); + orderPackageStatusPushFailLogEntity.setOperationTime(operationTime); + orderPackageStatusPushFailLogEntity.setTrayId(trayId); + orderPackageStatusPushFailLogEntity.setDataStatus(0); + + // 插入之前判断这条数据是否存在系统中 + log.info(">>>>>>>>>>>>>>>> 保存到定时任务队列"); + orderPackageStatusPushFailLogMapper.insert(orderPackageStatusPushFailLogEntity); + }else{ + throw new CustomerException(405, "失败的包件数据状态记录已存在"); + } } - } else { - log.info("##############dealWithDataHandler: 不用处理的状态 status={}", status); } + } } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/OrderPackageStatusFallJob.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/OrderPackageStatusFallJob.java new file mode 100644 index 000000000..d6cdb032c --- /dev/null +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/jobhandler/OrderPackageStatusFallJob.java @@ -0,0 +1,56 @@ +package com.logpm.factory.jobhandler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.factory.comfac.mapper.OrderPackageStatusPushFailLogMapper; +import com.logpm.factory.comfac.service.IFactoryCommonService; +import com.logpm.factory.entity.OrderPackageStatusPushFailLogEntity; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.xxl.job.core.log.XxlJobLogger; +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +import java.util.List; + + +/** + * 处理包件老系统没有⏲入库 这边无法获取的包件信息 + */ + +@Log4j2 +@AllArgsConstructor +@Component +public class OrderPackageStatusFallJob { + + private final OrderPackageStatusPushFailLogMapper orderPackageStatusPushFailLogMapper; + + private final IFactoryCommonService factoryCommonService; + @XxlJob("getOrderPackageFromOldSystem") + public ReturnT getOrderPackageFromOldSystem(String param) { + // 加载日志列表 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("data_status", 0); + List list = orderPackageStatusPushFailLogMapper.selectList(queryWrapper); + for (OrderPackageStatusPushFailLogEntity orderPackageStatusPushFailLogEntity : list) { + + try { + // 重新获取数据 + factoryCommonService.extracted(orderPackageStatusPushFailLogEntity.getOrderPackageStatus(), + orderPackageStatusPushFailLogEntity.getUnitNo(), orderPackageStatusPushFailLogEntity.getWarehouseId(), + orderPackageStatusPushFailLogEntity.getOperationTime(), orderPackageStatusPushFailLogEntity.getTrayId() + ); + + orderPackageStatusPushFailLogEntity.setDataStatus(1); + + }catch (Exception e){ + XxlJobLogger.log(e); + + orderPackageStatusPushFailLogEntity.setDataStatus(2); + } + orderPackageStatusPushFailLogMapper.updateById(orderPackageStatusPushFailLogEntity); + } + return ReturnT.SUCCESS; + } + +} diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java index 1d469a7ed..f076231b9 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java @@ -1,7 +1,10 @@ package com.logpm.factory.receiver; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.logpm.factory.comfac.dto.OrderStatusDTO; +import com.logpm.factory.comfac.mapper.OrderPackageStatusPushFailLogMapper; import com.logpm.factory.comfac.service.IFactoryCommonService; +import com.logpm.factory.entity.OrderPackageStatusPushFailLogEntity; import com.logpm.factory.pan.service.IPanFactoryDataService; import com.logpm.oldproject.feign.IAdvanceDetailClient; import com.rabbitmq.client.Channel; @@ -18,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; +import java.util.List; import java.util.Map; @@ -35,6 +39,10 @@ public class DealWithDataHandler { @Autowired private IFactoryCommonService factoryCommonService; + @Autowired + private OrderPackageStatusPushFailLogMapper orderPackageStatusPushFailLogMapper; + + @RabbitHandler public void dealWithDataHandler(Map map, Message message, Channel channel) throws IOException { @@ -48,6 +56,26 @@ public class DealWithDataHandler { String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id factoryCommonService.extracted(status, unitNo, currentWarehouseId, operationTime, trayId); + + extracted(unitNo,currentWarehouseId); + } + + /** + * 更新包件状态 + * @param unitNo + * @param currentWarehouseId + */ + private void extracted(String unitNo, String currentWarehouseId) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("unit_no", unitNo); + queryWrapper.eq("warehouse_id", currentWarehouseId); + + List list = orderPackageStatusPushFailLogMapper.selectList(queryWrapper); + + for (OrderPackageStatusPushFailLogEntity orderPackageStatusPushFailLogEntity : list) { + orderPackageStatusPushFailLogEntity.setDataStatus(1); + orderPackageStatusPushFailLogMapper.updateById(orderPackageStatusPushFailLogEntity); + } }