From c3c4c5f797589bec217b2a832d9e99830fe0b8c8 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Mon, 2 Sep 2024 18:52:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E5=8C=85=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E5=A4=87=E8=B4=A7=E4=BF=A1=E6=81=AF=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=95=B0=E6=8D=AE=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/WorkNodeEnums.java | 1 - .../constant/broadcast/FanoutConstants.java | 10 ++ .../common/launch/LauncherServiceImpl.java | 22 +-- .../api/DistributionStockupAppController.java | 146 +++++++++--------- .../service/IDistributionNodeWorkService.java | 3 +- .../impl/DistributionNodeWorkServiceImpl.java | 30 ++-- 6 files changed, 115 insertions(+), 97 deletions(-) diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java b/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java index 2662ebec6..b2a871f5f 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java @@ -60,7 +60,6 @@ public enum WorkNodeEnums implements Serializable { PLANNED_RESERVATION(301010, "计划预约"), PLAN_DELIVERY(301020, "计划配送"), - DISTRIBUTION_EDIT(301025, "配送计划编辑"), CANCEL_DELIVERY(301030, "计划取消"), PLAN_BILLOFLADING(301040, "计划自提"), EDIT_BILLOFLADING(301045, "自提计划编辑"), diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java index 3be900eb3..17f6b6a08 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java @@ -170,6 +170,16 @@ public abstract class FanoutConstants { } } + // 备货节点 + interface stock { + String EXCHANGE = "fanout.distribution.stock" + ModuleNameConstant.DEVAUTH; + + // main: {"distributionCompany":"承运商", "driverName":"司机姓名", "id":"任务ID", "kind":"任务类型 1-自主 2-外协", "taskTime":"任务时间", "trainNumber":"车次号","type":"配送类型 1商配 2市配", "vehicleName":"车牌号"} + interface QUEUE { + + } + } + diff --git a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java index 283e107bd..f6aa5bef8 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java +++ b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java @@ -51,19 +51,19 @@ public class LauncherServiceImpl implements LauncherService { PropsUtil.setProperty(props, "spring.cloud.nacos.config.username","nacos"); PropsUtil.setProperty(props, "spring.cloud.nacos.config.password","Nacos123123"); // dubbo注册 -// PropsUtil.setProperty(props, "dubbo.application.name", appName); -// PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false"); -// PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo"); -// PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile)); -// PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION); -// PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES); + PropsUtil.setProperty(props, "dubbo.application.name", appName); + PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false"); + PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo"); + PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile)); + PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION); + PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES); // seata注册地址 -// PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); -// // seata注册group格式 -// PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName)); -// // seata配置服务group -// PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE); + PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); + // seata注册group格式 + PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName)); + // seata配置服务group + PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE); // seata注册模式配置 // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE); // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile)); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java index b8c93ad4e..e7827c23b 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java @@ -57,6 +57,10 @@ import org.springblade.common.constant.reservation.ReservationOrderStatusConstan import org.springblade.common.constant.reservation.ReservationPackageStatusConstant; import org.springblade.common.constant.reservation.ReservationSigningStatusConstant; import org.springblade.common.constant.stockup.StockupTypeStatusConstant; +import org.springblade.common.enums.BizOperationEnums; +import org.springblade.common.enums.PackageTypeEnums; +import org.springblade.common.model.NodeFanoutMsg; +import org.springblade.common.model.PackageData; import org.springblade.common.utils.CommonUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.exception.ServiceException; @@ -68,8 +72,6 @@ import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.system.cache.DictBizCache; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.transaction.TransactionDefinition; import org.springframework.web.bind.annotation.*; import java.lang.reflect.Field; @@ -118,6 +120,7 @@ public class DistributionStockupAppController extends BladeController { private final BladeRedis redis; private final ITrunklinePackageTrackLogClient trunklinePackageTrackLogClient; + private final IDistributionNodeWorkService distributionNodeWorkService; /** @@ -711,37 +714,6 @@ public class DistributionStockupAppController extends BladeController { case 3: return R.data(200, distributionStockListEntities.getId(), "扫描成功!"); } - - //判断是否可以继续备货 -// if (ObjectUtils.isNull(distributionStockListEntities)) { -// return R.data(60003, "", "该包件还未上架!"); -// } - - // 通过当前预约单和货物定位当前计划的库存品批次 -// List planDistributionStockListEntities = getPlanDistributionStockListEntities(stockupDTO); - - -// //是否更新计划 -// boolean isUpdate = false; -// Long updateStockListId = null; - - // 验证当前货位的货位和计划批次是否相同 - // 验证当前扫描的库存品包件是否属于该计划的库存品批次 -// List distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(stockupDTO.getReservationId()); -// distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).filter(drs->) -// for (DistributionStockListEntity planDistributionStockListEntity : planDistributionStockListEntities) { -// if (planDistributionStockListEntity.getSourceType().equals("2")) { -// if (planDistributionStockListEntity.getOrderCode().equals(distributionStockListEntities.getIncomingBatch())) { -// isUpdate = true; -// updateStockListId = distributionStockListEntities.getId(); -// break; -// } -// } -// } -// if (isUpdate) { -// return R.data(60002, updateStockListId, "当前包件批次号与入库批次号不符,是否确认修改计划批次"); -// } - } return R.data(200, "", "扫描成功!"); } @@ -757,27 +729,6 @@ public class DistributionStockupAppController extends BladeController { .eq(DistributionStockListEntity::getWarehouseId, warehouseId) .eq(DistributionStockListEntity::getCargoNumber, cargoNumber) ); - //判断该库存品包件是否属于计划库存品的物料 - //首先判断包件的物料和此计划中的物料是否一致 -// if (!stockListEntityList.getCargoNumber().equals(distributionParcelListEntity.getMaterialCode())){ -// return 1; -// } -// //查看是否和当前页的计划批次一致 -// if (!stockListEntityList.getIncomingBatch().equals(distributionParcelListEntity.getOrderCode())){ -// //查看计划下是否存在该包件对应批次的计划 -// List reservationStocklistEntityList = distributionReservationMapper.selectStockListByReservationIdAndCargoNumber(reservationId, cargoNumber, stockListId); -// if (Func.isNotEmpty(reservationStocklistEntityList)){ -// List stockListIds = reservationStocklistEntityList.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList()); -// List distributionStockListEntities = distributionStockListService.listByIds(stockListIds); -// boolean isHave = distributionStockListEntities.stream().map(DistributionStockListEntity::getIncomingBatch).allMatch(s -> s.contains(distributionParcelListEntity.getOrderCode())); -// if (isHave){ -// return 3; -// } -// }else { -// return 2; -// } -// } - boolean isHave = stockListEntityList.stream().map(DistributionStockListEntity::getCargoNumber).anyMatch(s -> s.contains(distributionParcelListEntity.getMaterialCode())); if (!isHave) { @@ -794,25 +745,7 @@ public class DistributionStockupAppController extends BladeController { return 3; } - /** - * 获取计划中库存品 - * - * @param stockupDTO - * @return - */ - private List getPlanDistributionStockListEntities(StockupDTO stockupDTO) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); - lambdaQueryWrapper.eq(DistributionReservationStocklistEntity::getReservationId, stockupDTO.getReservationId()); - lambdaQueryWrapper.eq(DistributionReservationStocklistEntity::getStockListStatus, 1); - List list1 = distributionReservationStocklistService.list(lambdaQueryWrapper); - - // 通过计划的上的库存品id 查询库存品信息 - List collect = list1.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList()); - List planDistributionStockListEntities = distributionStockListService.listByIds(collect); - - return planDistributionStockListEntities; - } //todo 这里代码没有写完 等TJJ 和CYZ 空了来写 @@ -1489,6 +1422,14 @@ public class DistributionStockupAppController extends BladeController { .set(DistributionParcelListEntity::getOrderPackageStockupStatus, OrderPackageStockupStatusConstant.yibeihu.getValue()) ); + // todo 这里需要完善 + // 备货作业节点 + NodeFanoutMsg nodeFanoutMsg = sendStockUpNodeData(distributionStockupEntity, parcelListEntity); + if(ObjectUtils.isNotNull(nodeFanoutMsg)){ + distributionNodeWorkService.planStock(nodeFanoutMsg,user); + } + + //扫码成功 return Resp.scanSuccess(PdaAudioLingoStatus.saomiaochenggong.getName(), audioValue); case 2: @@ -1687,9 +1628,14 @@ public class DistributionStockupAppController extends BladeController { parcelListEntity.setId(entity.getParcelListId()); parcelListEntity.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue()); distributionParcelListService.updateById(parcelListEntity); - if (!aaa.isEmpty()) { - trunklinePackageTrackLogClient.addPackageTrackLog(aaa); + trunklinePackageTrackLogClient.addPackageTrackLog(aaa); + parcelListEntity = distributionParcelListService.getById(entity.getParcelListId()); + // 备货作业节点 + NodeFanoutMsg nodeFanoutMsg = sendStockUpNodeData(distributionStockupEntity, parcelListEntity); + if(ObjectUtils.isNotNull(nodeFanoutMsg)){ + distributionNodeWorkService.planStock(nodeFanoutMsg,user); } + return Resp.scanSuccess(PdaAudioLingoStatus.saomiaochenggong.getName(), audioValue); case 2: //重复扫描 @@ -1714,6 +1660,58 @@ public class DistributionStockupAppController extends BladeController { } } + private NodeFanoutMsg sendStockUpNodeData(DistributionStockupEntity distributionStockupEntity, DistributionParcelListEntity parcelListEntity) { + try { + BladeUser user = AuthUtil.getUser(); + NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg(); + nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD); + nodeFanoutMsg.setNode(WorkNodeEnums.STOCKING_OPERATION); + BasicdataWarehouseEntity entityWarehouse = basicdataWarehouseClient.getEntityWarehouseId(distributionStockupEntity.getWarehouseId()); + if(entityWarehouse != null){ + nodeFanoutMsg.setWarehouse(entityWarehouse.getName()); + } + nodeFanoutMsg.setWarehouseId(distributionStockupEntity.getWarehouseId()); + nodeFanoutMsg.setOperator(user.getTenantId()); + nodeFanoutMsg.setOperatorTime(distributionStockupEntity.getCreateTime()); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", distributionStockupEntity.getId()); + jsonObject.put("stockupCode", distributionStockupEntity.getStockupCode()); + jsonObject.put("typeService", distributionStockupEntity.getTypeService()); + jsonObject.put("stockupDate", distributionStockupEntity.getStockupDate()); + + String jsonString = jsonObject.toJSONString(); + nodeFanoutMsg.setMain(jsonString); + nodeFanoutMsg.setTenantId(AuthUtil.getTenantId()); + + List packageDataList = new ArrayList<>(); + + PackageData packageData = getPackageData(parcelListEntity); + + packageDataList.add(packageData); + nodeFanoutMsg.setDetails(packageDataList); + return nodeFanoutMsg; + } catch (Exception e) { + log.error("备货扫描:发送备货节点消息失败", e); + } + return null; + + } + + @NotNull + private static PackageData getPackageData(DistributionParcelListEntity parcelListEntity) { + PackageData packageData = new PackageData(); + + packageData.setWaybillNumber(parcelListEntity.getWaybillNumber()); + packageData.setBrand(parcelListEntity.getBrandName()); + packageData.setPackageCode(parcelListEntity.getOrderPackageCode()); + packageData.setMaterialCode(parcelListEntity.getMaterialCode()); + packageData.setMaterialName(parcelListEntity.getMaterialName()); + packageData.setNumber(1); + packageData.setOrderCode(parcelListEntity.getOrderCode()); + packageData.setPackageType(PackageTypeEnums.CMP); + return packageData; + } private JSONObject handleLogJSONObject(BasicdataWarehouseEntity warehouse, BladeUser user, String orderPackageCode, String content, Integer node) { diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java index 0215848b8..d9b80042b 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionNodeWorkService.java @@ -3,6 +3,7 @@ package com.logpm.distribution.service; import com.logpm.distribution.entity.DistributionDeliveryListEntity; import com.logpm.distribution.entity.DistributionParcelListEntity; import org.springblade.common.enums.BizOperationEnums; +import org.springblade.common.model.NodeFanoutMsg; import org.springblade.core.secure.BladeUser; /** @@ -24,7 +25,7 @@ public interface IDistributionNodeWorkService { /** * 备货计划节点 */ -// void planStock(); + void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user); // 签收作业节点 diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java index 9ddc06d77..01296857f 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionNodeWorkServiceImpl.java @@ -5,14 +5,12 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.logpm.distribution.entity.DistributionDeliveryListEntity; -import com.logpm.distribution.entity.DistributionDeliverySelfEntity; -import com.logpm.distribution.entity.DistributionDeliveryTripartiteEntity; -import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.entity.*; import com.logpm.distribution.service.IDistributionDeliveryListService; import com.logpm.distribution.service.IDistributionDeliverySelfService; import com.logpm.distribution.service.IDistributionDeliveryTripartiteService; import com.logpm.distribution.service.IDistributionNodeWorkService; +import com.logpm.distribution.vo.DistributionStockupVO; import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.util.FactoryDataMessageSender; import com.logpm.factorydata.vo.NodePushMsg; @@ -48,19 +46,19 @@ import java.util.*; public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkService { @Autowired - private RabbitTemplate rabbitTemplate; + private RabbitTemplate rabbitTemplate; @Autowired - private FactoryDataMessageSender factoryDataMessageSender; + private FactoryDataMessageSender factoryDataMessageSender; @Autowired @Lazy - private IDistributionDeliveryListService distributionDeliveryListService; + private IDistributionDeliveryListService distributionDeliveryListService; @Autowired - private IDistributionDeliverySelfService distributionDeliverySelfService; + private IDistributionDeliverySelfService distributionDeliverySelfService; @Autowired - private IDistributionDeliveryTripartiteService distributionDeliveryTripartiteService; + private IDistributionDeliveryTripartiteService distributionDeliveryTripartiteService; @Override - public void planDelivery(DistributionDeliveryListEntity distributionDeliveryListEntity, BladeUser user,BizOperationEnums bizOperation) { + public void planDelivery(DistributionDeliveryListEntity distributionDeliveryListEntity, BladeUser user, BizOperationEnums bizOperation) { try { NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg(); @@ -183,6 +181,18 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer return packageDataList; } + + @Override + public void planStock(NodeFanoutMsg nodeFanoutMsg, BladeUser user) { + // 备货信息主表 + try { + rabbitTemplate.convertAndSend(FanoutConstants.distribution.stock.EXCHANGE, null, com.alibaba.fastjson.JSONObject.toJSONString(nodeFanoutMsg)); + } catch (AmqpException e) { + log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", e); + } + + } + @Override public void nodeLoad() {