From 6be9147ab4393ba353ab5c99604b8f036322eedc Mon Sep 17 00:00:00 2001 From: zhenghaoyu Date: Fri, 7 Jun 2024 23:04:45 +0800 Subject: [PATCH 1/6] =?UTF-8?q?1.=E5=B9=B2=E7=BA=BF=E6=8F=90=E8=B4=A7?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trunkline/entity/TrunklineBillladingWaybillEntity.java | 3 +++ .../com/logpm/warehouse/entity/WarehouseWaybillEntity.java | 3 +++ .../main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java | 2 ++ .../com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml | 3 ++- .../service/impl/TrunklineBillladingServiceImpl.java | 5 +++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineBillladingWaybillEntity.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineBillladingWaybillEntity.java index 7de939d18..a887077e4 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineBillladingWaybillEntity.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineBillladingWaybillEntity.java @@ -57,6 +57,9 @@ public class TrunklineBillladingWaybillEntity extends TenantEntity { /** 提货费用 */ @ApiModelProperty(name = "提货费用",notes = "") private BigDecimal billladingFee ; + /** 计划件数 */ + @ApiModelProperty(name = "计划件数",notes = "") + private Integer planNum ; } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java index d9f93f9f6..a02f1ba66 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java @@ -489,4 +489,7 @@ public class WarehouseWaybillEntity extends TenantEntity { @ApiModelProperty(value = "冻结时间 ") private Date freezeTime; + @ApiModelProperty(value = "提货件数 ") + private Integer billladingNum; + } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java index abf5bf291..46fa7ded8 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java @@ -39,6 +39,8 @@ public class WarehouseWaybillVO extends WarehouseWaybillEntity { private Integer handleNum; + private Integer planNum; + private Long waybillId; } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml index e10f63437..76a3f0a49 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml @@ -94,6 +94,7 @@ lww.customer_train customerTrain, lww.shipper shipper, lww.total_count totalCount, + lww.total_count-lww.billlading_num planNum, lww.total_weight totalWeight, lww.total_volume totalVolume, lww.total_freight totalFreight, @@ -105,7 +106,7 @@ lww.destination_warehouse_name destinationWarehouseName, lww.remark remark from logpm_warehouse_waybill lww - where lww.stock_count != total_count + where lww.billlading_num != lww.total_count and lww.departure_warehouse_id = #{param.warehouseId} and lww.waybill_no not in diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java index ef127277d..b269b6742 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java @@ -116,9 +116,14 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl Date: Fri, 7 Jun 2024 23:09:05 +0800 Subject: [PATCH 2/6] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E8=8C=82=E5=90=8D?= =?UTF-8?q?=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit d23bfcd947f9bc9d39aa66557143071bec886950) --- .../springblade/common/constant/OldSystemDataPushConfig.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java b/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java index 602b2f48a..4826d53a1 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java @@ -90,6 +90,9 @@ public class OldSystemDataPushConfig { //双流金牌基地仓 warehourseIds.add("55"); + + //茂名仓 + warehourseIds.add("152"); } From e745feef06757b1dbdb1768529e804a3cf233fca Mon Sep 17 00:00:00 2001 From: zhaoqiaobo Date: Tue, 11 Jun 2024 15:35:03 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat(all):=20=E5=A2=9E=E5=8A=A0=E7=B4=A2?= =?UTF-8?q?=E8=8F=B2=E4=BA=9A=E5=9B=9E=E6=8E=A8=E5=B7=A5=E5=8E=82=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../factorydata/FactoryDataConstants.java | 2 + .../factorydata/util/FactoryDataUtil.java | 1 + .../com/logpm/factorydata/vo/NodePushMsg.java | 5 + .../service/IDistributionAsyncService.java | 6 +- .../impl/DistributionAsyncServiceImpl.java | 70 +++++++- .../DistributionDeliveryListServiceImpl.java | 53 +++++- .../DistributionReservationServiceImpl.java | 3 +- .../suofeiya/enums/FactoryNodeEnums.java | 34 ++++ .../suofeiya/enums/NodeMappingEnums.java | 79 +++++++++ .../suofeiya/enums/NodeNeedEnums.java | 38 +++++ .../suofeiya/mq/NodeDataPushListener.java | 155 ++++++++++++++++++ .../suofeiya/pros/OldProperties.java | 25 +++ .../impl/TrunklineCarsLoadServiceImpl.java | 64 ++++++++ 13 files changed, 521 insertions(+), 14 deletions(-) create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/FactoryNodeEnums.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java create mode 100644 blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java index c9540d3df..cdee1349d 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java @@ -68,6 +68,7 @@ public abstract class FactoryDataConstants { /** * 索菲亚工厂订单 */ + String SFY_NODE_DATA_PUSH = "factory.data.queue.sfy.nodeDataPush" + DEVAUTH; String SFY_FACTORY_ORDER = "factory.data.queue.sfy.factoryOrder" + DEVAUTH; /** * 我乐工厂订单 @@ -117,6 +118,7 @@ public abstract class FactoryDataConstants { /** * 索菲亚工厂订单 */ + String SFY_NODE_DATA_PUSH = "sfy.nodeDataPush" + DEVAUTH; String SFY_FACTORY_ORDER = "sfy.factoryOrder" + DEVAUTH; /** * 我乐工厂订单 diff --git a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java index 8e3935afb..6b3f206e9 100644 --- a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java +++ b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/util/FactoryDataUtil.java @@ -25,6 +25,7 @@ public class FactoryDataUtil { factorys.put(BrandEnums.ZB.getValue(), FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH); factorys.put(BrandEnums.LINSY.getValue(), FactoryDataConstants.Mq.RoutingKeys.LINSY_NODE_DATA_PUSH); factorys.put(BrandEnums.OLO.getValue(), FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH); + factorys.put(BrandEnums.SFY.getValue(), FactoryDataConstants.Mq.RoutingKeys.SFY_NODE_DATA_PUSH); } diff --git a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java index 5eee16854..f2f6ed2e2 100644 --- a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java +++ b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/vo/NodePushMsg.java @@ -55,6 +55,11 @@ public class NodePushMsg implements Serializable { */ private SignForStatusEnums signForStatusEnums; + /** + * 主单数据 + */ + private Object main; + /** * 内容 */ diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java index 591bef701..9f239be02 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java @@ -8,8 +8,10 @@ import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO; import com.logpm.distribution.dto.app.StockupDTO; import com.logpm.distribution.dto.app.StockupZeroDTO; import com.logpm.distribution.entity.DisStockListDetailEntity; +import com.logpm.distribution.entity.DistributionDeliveryListEntity; import com.logpm.distribution.entity.DistributionParcelListEntity; import com.logpm.distribution.entity.DistributionParcelNumberEntity; +import com.logpm.distribution.entity.DistributionReservationEntity; import com.logpm.distribution.entity.DistributionStockArticleEntity; import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; @@ -340,9 +342,9 @@ public interface IDistributionAsyncService { /** * 推送预约下包件转配送日志 - * @param reservationIds + * @param */ - void recordsReservationDeliveryLog(String reservationIds,BasicdataWarehouseEntity warehouse,BladeUser user,String trainNumber,Integer node,String content); + void recordsReservationDeliveryLog(List reservationEntityList, BasicdataWarehouseEntity warehouse, BladeUser user, DistributionDeliveryListEntity deliveryListEntity, Integer node, String content); /** * 自提推送工厂 diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java index 935bc8c32..52b90b941 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java @@ -54,6 +54,7 @@ import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.util.FactoryDataMessageSender; import com.logpm.factorydata.vo.NodePushMsg; import com.logpm.factorydata.vo.PushData; +import com.logpm.factorydata.vo.SendMsg; import com.logpm.trunkline.dto.AddWaybillTrackDTO; import com.logpm.trunkline.feign.*; import com.logpm.warehouse.entity.WarehouseWaybillEntity; @@ -1611,9 +1612,12 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { List contents = new ArrayList<>(); if (CollUtil.isNotEmpty(zb)) { for (MtReceiveContentDTO mtReceiveContentDTO : zb) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("packageCode", mtReceiveContentDTO.getUnitNo()); - contents.add(jsonObject); + PushData pushData = PushData.builder() + .packageCode(mtReceiveContentDTO.getUnitNo()) + .orderCode(mtReceiveContentDTO.getOrderCode()) + .warehouseName(warehouseName) + .waybillNumber(mtReceiveContentDTO.getWaybillNumber()).build(); + contents.add(pushData); } } NodePushMsg msg = new NodePushMsg(); @@ -2962,16 +2966,33 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { @Override @LogpmAsync("asyncExecutor") - public void recordsReservationDeliveryLog(String reservationIds,BasicdataWarehouseEntity warehouse,BladeUser user,String trainNumber,Integer node,String content) { - List list = Func.toLongList(reservationIds); + public void recordsReservationDeliveryLog(List reservationList,BasicdataWarehouseEntity warehouse,BladeUser user,DistributionDeliveryListEntity deliveryListEntity,Integer node,String content) { + List list = reservationList.stream().map(DistributionReservationEntity::getId).collect(Collectors.toList()); if (!list.isEmpty()) { List distributionReservationPackageEntities = distributionReservationPackageMapper.selectList(Wrappers.query().lambda() .in(DistributionReservationPackageEntity::getReservationId, list) .ne(DistributionReservationPackageEntity::getPacketBarStatus, ReservationPackageStatusConstant.quxiao.getValue()) ); + // reservationList根据id分组封装成map + Map> map = reservationList.stream().collect(Collectors.groupingBy(DistributionReservationEntity::getId)); List aaa = new ArrayList<>(); + List pushDatas = new ArrayList<>(); if (!distributionReservationPackageEntities.isEmpty()) { + // 通过订单id获取订单,然后根据品牌分组 + Map stockArticleEntityMap = new HashMap<>(); + List collect = distributionReservationPackageEntities.stream().map(DistributionReservationPackageEntity::getStockArticleId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(collect)){ + List stockArticleEntities = distributionStockArticleService.list(Wrappers.query().lambda() + .in(DistributionStockArticleEntity::getId, collect) + ); + if(CollUtil.isNotEmpty(stockArticleEntities)){ + stockArticleEntities.forEach(s->{ + stockArticleEntityMap.put(s.getId(),s); + }); + } + } distributionReservationPackageEntities.forEach(rp->{ + DistributionReservationEntity r = map.get(rp.getReservationId()).get(0); JSONObject trunklinePackageTrackLog= new JSONObject(); trunklinePackageTrackLog.put("tenantId",AuthUtil.getTenantId()); trunklinePackageTrackLog.put("createTime",new Date()); @@ -2988,8 +3009,47 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { trunklinePackageTrackLog.put("content",content); trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName()); aaa.add(trunklinePackageTrackLog); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber()); + jsonObject.put("brand", stockArticleEntityMap.get(rp.getStockArticleId()).getBrand()); + jsonObject.put("receiver", r.getConsignee()); + jsonObject.put("receiveAddr", r.getDeliveryAddress()); + jsonObject.put("receiveTel", r.getDeliveryPhone()); + jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime()); + jsonObject.put("packageCode", rp.getPacketBarCode()); + pushDatas.add(jsonObject); }); } + try { + if(CollUtil.isNotEmpty(pushDatas)){ + // 以trainNumber和receiver 分组 将包件封装成list + Map> collect = pushDatas.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("trainNumber") + jsonObject.getString("receiver") + jsonObject.getString("brand"))); + if(CollUtil.isNotEmpty(collect)){ + for (Map.Entry> entry : collect.entrySet()) { + List value = entry.getValue(); + if(CollUtil.isNotEmpty(value)){ + JSONObject object = value.get(0); + NodePushMsg msg = new NodePushMsg(); + msg.setNode(WorkNodeEnums.PLAN_DISTRIBUTION); + msg.setBrand(BrandEnums.getByValue(value.get(0).getString("brand"))); + msg.setOperator(AuthUtil.getNickName()); + msg.setOperatorTime(new Date()); + msg.setMain(object); + msg.setContent(value.stream().map(jsonObject -> { + PushData pushData = new PushData(); + pushData.setPackageCode(jsonObject.getString("packageCode")); + return pushData; + }).collect(Collectors.toList())); + log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg)); + factoryDataMessageSender.sendNodeDataByBrand(msg); + } + } + } + } + }catch (Exception e){ + log.error("推送工程数据失败:{}", e); + } + if (!aaa.isEmpty()) { trunklinePackageTrackLogClient.addPackageTrackLog(aaa); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index dc18abd58..2b2812b2a 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -2674,6 +2674,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl logs = new ArrayList<>(); + List pushDatas = new ArrayList<>(); //查询出原来配送信息的备货任务 DistributionStockupVO deliveryStockupInfo = distributionStockupMapper.getDeliveryStockupInfo(deliveryListEntity.getId()); //这里查询出该备货任务的执行情况,如果该任务处于已完成的状态需要创建新的备货任务,其他的备货状态则是进行备货任务的修改 @@ -2869,6 +2870,14 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl newIds = new ArrayList<>(); List oldIds = new ArrayList<>(); + List newReservationEntities = new ArrayList<>(); newReservation.forEach((k, v) -> { clientTotal.getAndIncrement(); //统计配送包件总数量 @@ -3868,7 +3910,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl oldReservationEntities = new ArrayList<>(); oldReservation.forEach((m, n) -> { //这里就是取消的预约单,进行状态回退 DistributionReservationEntity reservationEntity = n.get(0); @@ -3905,12 +3947,13 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { + + + INITIAL_WAREHOUSE_ENTRY(101020, "入库"), + UNLOAD_INCOMING_WAREHOUSE(105010,"入库"), + INITIAL_WAREHOUSE_LOADING(103020, "出库"), + PLAN_DISTRIBUTION(301060, "计划配车"), + /** + * 配送装车 + */ + DISTRIBUTION_LOADING(302010, "配送"), + /** + * 文员复核 + */ + CLERK_REVIEW(303010, "签收"), + ; + + FactoryNodeEnums(Integer code, String text) { + init(code, text); + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java new file mode 100644 index 000000000..5602a4ebf --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java @@ -0,0 +1,79 @@ +package com.logpm.factorydata.suofeiya.enums; + +import cn.hutool.core.util.ObjectUtil; +import lombok.Getter; +import org.springblade.common.constant.WorkNodeEnums; + +/** + * 系统和工厂节点映射枚举 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum NodeMappingEnums { + + /** + * 始发仓入库 + */ + INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.INITIAL_WAREHOUSE_ENTRY, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1), + /** + * 卸车入库 + */ + UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.UNLOAD_INCOMING_WAREHOUSE, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1), + /** + * 装车 + */ + INITIAL_WAREHOUSE_LOADING(FactoryNodeEnums.INITIAL_WAREHOUSE_LOADING, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING, 1), + /** + * 计划配车 + */ + PLAN_DISTRIBUTION(FactoryNodeEnums.PLAN_DISTRIBUTION, WorkNodeEnums.PLAN_DISTRIBUTION, 1), + + /** + * 已交接 + */ + DISTRIBUTION_LOADING(FactoryNodeEnums.DISTRIBUTION_LOADING, WorkNodeEnums.DISTRIBUTION_LOADING, 1), + /** + * 收货完成 + */ + CLERK_REVIEW(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.CLERK_REVIEW, 1); + + /** + * 系统作业节点 + */ + private WorkNodeEnums workNodeEnums; + /** + * 工厂作业节点 + */ + private FactoryNodeEnums factoryNodeEnums; + /** + * 状态码 + * 存在我们系统同一个作业节点对应工厂多个节点的情况,通过状态码区分 + */ + private Integer status; + + NodeMappingEnums(FactoryNodeEnums factoryNodeEnums, WorkNodeEnums workNodeEnums, Integer status) { + this.workNodeEnums = workNodeEnums; + this.factoryNodeEnums = factoryNodeEnums; + this.status = status; + } + + public static FactoryNodeEnums getFactoryByNodeAndStatus(WorkNodeEnums workNodeEnums) { + return getFactoryByNodeAndStatus(workNodeEnums, 1); + } + + public static FactoryNodeEnums getFactoryByNodeAndStatus(WorkNodeEnums workNodeEnums, Integer status) { + NodeMappingEnums[] values = values(); + for (NodeMappingEnums value : values) { + WorkNodeEnums workNodeEnums1 = value.getWorkNodeEnums(); + Integer status1 = value.getStatus(); + FactoryNodeEnums factoryNodeEnums = value.getFactoryNodeEnums(); + if (ObjectUtil.equal(workNodeEnums1, workNodeEnums) && ObjectUtil.equal(status1, status)) { + return factoryNodeEnums; + } + } + return null; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java new file mode 100644 index 000000000..0f57a2a5d --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java @@ -0,0 +1,38 @@ +package com.logpm.factorydata.suofeiya.enums; + +import lombok.Getter; + +import java.io.Serializable; + +/** + * 作业节点枚举 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum NodeNeedEnums implements Serializable { + + INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"), + UNLOAD_INCOMING_WAREHOUSE(105010,"卸车入库"), + INITIAL_WAREHOUSE_LOADING(103020, "装车"), + PLAN_DISTRIBUTION(301060, "计划配车"), + /** + * 配送装车 + */ + DISTRIBUTION_LOADING(302010, "配送装车"), + /** + * 文员复核 + */ + CLERK_REVIEW(303010, "文员复核"), + ; + + private Integer code; + private String value; + + NodeNeedEnums(Integer code, String value) { + this.code = code; + this.value = value; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java new file mode 100644 index 000000000..2c7369263 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java @@ -0,0 +1,155 @@ +package com.logpm.factorydata.suofeiya.mq; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.EnumUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.factorydata.feign.IFactoryDataClient; +import com.logpm.factorydata.suofeiya.enums.FactoryNodeEnums; +import com.logpm.factorydata.suofeiya.enums.NodeMappingEnums; +import com.logpm.factorydata.suofeiya.enums.NodeNeedEnums; +import com.logpm.factorydata.suofeiya.pros.OldProperties; +import com.logpm.factorydata.vo.PushData; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.WorkNodeEnums; +import org.springblade.common.constant.factorydata.FactoryDataConstants; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 监听业务系统推送给节点数据 + * + * @author zhaoqiaobo + * @create 2024-03-18 0:02 + */ +@Slf4j +@Component +@AllArgsConstructor +public class NodeDataPushListener { + + private final IFactoryDataClient factoryDataClient; + private final OldProperties oldProperties; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FactoryDataConstants.Mq.Queues.OLO_NODE_DATA_PUSH, durable = "true"), + exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC), + key = FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH + )) + @Transactional(rollbackFor = Exception.class) + public void nodeDataPush(String msg) { + log.info("接收到节点数据推送:{}", msg); + if (checkData(msg)) { + return; + } + JSONObject entries = JSONUtil.parseObj(msg); + // 节点 + String node = entries.getStr("node"); + String main = entries.getStr("main"); + WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); + FactoryNodeEnums factoryNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums); + // 2 获取业务数据 + List content = entries.getBeanList("content", PushData.class); + if (!ObjectUtil.equal(workNodeEnums.getCode(), NodeNeedEnums.PLAN_DISTRIBUTION.getCode())) { + // 推送入库出库数据 + // 按订单号和运单号进行分组 + if (CollUtil.isNotEmpty(content)) { + JSONObject jsons = new JSONObject(); + List packages = new ArrayList<>(); + for (PushData pushData : content) { + JSONObject js = new JSONObject(); + js.set("paNo", pushData.getPackageCode()); + js.set("subinventoryCode", ""); + js.set("locatorCode", ""); + js.set("updateDate", DateUtil.now()); + js.set("paStausNo", "正常"); + js.set("logisticsStatus", factoryNode.getText()); + packages.add(js); + } + jsons.set("packageInfo", JSONUtil.toJsonStr(packages)); + if (StrUtil.isNotEmpty(oldProperties.getPushNodeUrl())) { + try { + log.info("推送节点数据:{}", JSONUtil.toJsonStr(jsons)); + String post = HttpUtil.post(oldProperties.getPushNodeUrl(), JSONUtil.toJsonStr(jsons)); + log.info("推送结果:{}", post); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送节点数据错误:{}", e); + } + } + } + } else { + // 推送配送单计划 + if (CollUtil.isNotEmpty(content)) { + JSONObject jsons = new JSONObject(); + List packages = new ArrayList<>(); + for (PushData pushData : content) { + packages.add(pushData.getPackageCode()); + } + if(StrUtil.isNotEmpty(main)){ + JSONObject jsonObject = JSONUtil.parseObj(main); + jsons.set("shipPlanNo", jsonObject.getStr("trainNumber")); + jsons.set("receiver", jsonObject.getStr("receiver")); + jsons.set("receiveAddr", jsonObject.getStr("receiveAddr")); + jsons.set("receiveTel", jsonObject.getStr("receiveTel")); + jsons.set("planDeliveryDate", jsonObject.getStr("planDeliveryDate")); + } + jsons.set("paNo", JSONUtil.toJsonStr(packages)); + jsons.set("remark", ""); + jsons.set("orderExtendFields", new JSONArray()); + if (StrUtil.isNotEmpty(oldProperties.getPushNodePlanUrl())) { + try { + log.info("推送节点数据:{}", JSONUtil.toJsonStr(jsons)); + String post = HttpUtil.post(oldProperties.getPushNodePlanUrl(), JSONUtil.toJsonStr(jsons)); + log.info("推送结果:{}", post); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送节点数据错误:{}", e); + } + } + } + } + + } + + private boolean checkData(String msg) { + if (StrUtil.isEmpty(msg)) { + return true; + } + if (!msg.contains("brand") || !msg.contains("content") || !msg.contains("node")) { + return true; + } + JSONObject entries = JSONUtil.parseObj(msg); + String node = entries.getStr("node"); + if (StrUtil.isEmpty(node)) { + return true; + } + // 不是志邦需要的节点数据直接不处理 + if (!EnumUtil.contains(NodeNeedEnums.class, node)) { + return true; + } + WorkNodeEnums workNodeEnums = EnumUtil.fromString(WorkNodeEnums.class, node); + if (ObjectUtil.isEmpty(workNodeEnums)) { + return true; + } + List content = entries.getBeanList("content", JSONObject.class); + if (CollUtil.isEmpty(content)) { + return true; + } + return false; + } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java new file mode 100644 index 000000000..e46761742 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/OldProperties.java @@ -0,0 +1,25 @@ +package com.logpm.factorydata.suofeiya.pros; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 老系统配置 + * @author zhaoqiaobo + * @Date 2024/5/29 + **/ +@Data +@Component +@ConfigurationProperties(prefix = "old") +public class OldProperties { + /** + * 推送节点数据到来系统的 url + */ + private String pushNodeUrl; + /** + * 推送配送计划URL + */ + private String pushNodePlanUrl; + +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index 419caa9b5..d551729a9 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java @@ -2133,6 +2133,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); + NodePushMsg nodePushMsg = NodePushMsg.builder() + .operator(AuthUtil.getNickName()) + .operatorTime(new Date()) + .address("在【" + warehouseName + "】入库") + .brand(BrandEnums.getByValue(entity.getBrandName())) + .node(WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE) + .content(Arrays.asList(PushData.builder() + .packageCode(entity.getOrderPackageCode()) + .warehouseName(warehouseName) + .orderCode(entity.getOrderCode()) + .build())) + .build(); + factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); } catch (Exception e) { log.error("推送卸车失败{}", e); } @@ -4565,6 +4598,23 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); + + NodePushMsg nodePushMsg = NodePushMsg.builder() + .operator(AuthUtil.getNickName()) + .operatorTime(new Date()) + .address("在【" + warehouseName + "】入库") + .brand(BrandEnums.getByValue(distributionParcelListEntity.getBrandName())) + .node(WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE) + .content(Arrays.asList(PushData.builder() + .packageCode(orderPackageCode) + .warehouseName(warehouseName) + .orderCode(orderCode) + .build())) + .build(); + factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); } } catch (Exception e) { log.error("入库推送失败:{}", e); From 093ae8388e97a17ff81f69d920facf37310031f6 Mon Sep 17 00:00:00 2001 From: PigBaoBei <2739175034@qq.com> Date: Tue, 11 Jun 2024 16:41:23 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E8=87=AA=E6=8F=90=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/DistributionDeliveryListMapper.xml | 2 +- .../service/IDistributionAsyncService.java | 2 +- .../impl/DistributionAsyncServiceImpl.java | 263 ++++++++++++++---- .../DistrilbutionBillLadingServiceImpl.java | 2 +- .../api/WarehouseRetentionApiController.java | 1 - 5 files changed, 214 insertions(+), 56 deletions(-) diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml index 8f3370086..30ebeae06 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml @@ -2038,7 +2038,7 @@ LEFT JOIN logpm_distribution_reservation_package AS ldrp ON ldrp.stock_article_id = ldrs.stock_article_id and ldrp.reservation_id = ldr.id LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldpl.id = ldrp.parce_list_id and ldpl.stock_article_id = ldsa.id WHERE - lddl.id=#{deliveryId} AND ldrp.packet_bar_status in ('1','3') AND ldrs.is_zero = 0 AND ldpl.order_package_code = #{orderPackageCode} + lddl.id=#{deliveryId} AND ldrp.packet_bar_status in ('1','3') AND ldrs.is_zero = 0 AND ldpl.order_package_code = #{orderPackageCode} AND ldr.reservation_status != 40 @@ -82,9 +80,27 @@ update logpm_trunkline_billlading_waybill - set is_deleted = 0 + set is_deleted = 0, + plan_num = #{planNum} where billlading_id = #{billladingId} and waybill_no = #{waybillNo} + + + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineBillladingWaybillService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineBillladingWaybillService.java index c960ff80a..2251baff1 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineBillladingWaybillService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineBillladingWaybillService.java @@ -3,6 +3,7 @@ package com.logpm.trunkline.service; import com.logpm.trunkline.entity.TrunklineBillladingEntity; import com.logpm.trunkline.entity.TrunklineBillladingWaybillEntity; import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; +import com.logpm.trunkline.vo.TrunklineBillladingNumVO; import com.logpm.trunkline.vo.TrunklineBillladingWaybillVO; import org.springblade.core.mp.base.BaseService; @@ -33,5 +34,9 @@ public interface ITrunklineBillladingWaybillService extends BaseService findNoFinishWaybillByBillladingId(Long billladingId); + + TrunklineBillladingNumVO getNumVOByBillladingId(Long billladingId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java index b1bf48a77..cee666a21 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java @@ -925,6 +925,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl> parcelListEntityMap = parcelListEntityList.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getWaybillNumber)); + + List updateWaybillList = new ArrayList<>(); + parcelListEntityMap.keySet().forEach(waybillNo->{ + WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo); + + if(!Objects.isNull(waybillEntity)){ + List pl = parcelListEntityMap.get(waybillNo); + Integer size = 0; + if(!pl.isEmpty()){ + size = pl.size(); + } + waybillEntity.setStockCount(waybillEntity.getStockCount() + size); + updateWaybillList.add(waybillEntity); + } + }); + + warehouseWaybillClient.updateList(updateWaybillList); + orderCodeSet.forEach(orderCode->{ stockArticleClient.updateOrderInfo(orderCode,warehouseId); }); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java index 1a2900a1a..7eef8e040 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java @@ -264,10 +264,10 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl totalCount){ - waybillEntity.setStockCount(totalCount); +// waybillEntity.setStockCount(totalCount); diff = totalCount - stockCount; }else{ - waybillEntity.setStockCount(all); +// waybillEntity.setStockCount(all); diff = size; } Integer integer = waybillNoMNumMap.get(waybillNo); @@ -281,65 +281,69 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl billladingWaybillEntityQueryWrapper = new QueryWrapper<>(); -// billladingWaybillEntityQueryWrapper.in("waybill_no",waybillNoSet) -// .eq("billlading_id",billladingId) -// .eq("is_deleted",0); -// -// List billladingWaybillEntityList = trunklineBillladingWaybillService.list(billladingWaybillEntityQueryWrapper); -// -// //把billladingWaybillEntityList转化成waybillNo为key的Map -// Map billladingWaybillEntityMap = billladingWaybillEntityList.stream().collect(Collectors.toMap(TrunklineBillladingWaybillEntity::getWaybillNo, Function.identity())); -// -// List addList = new ArrayList<>(); -// List updateList = new ArrayList<>(); -// -// final TrunklineBillladingWaybillEntity[] noWaybillData = {trunklineBillladingWaybillService.findNoWaybillNoData(billladingId)}; -// -// -// waybillNoSet.forEach(waybillNo -> { -// Integer integer = waybillNoMNumMap.get(waybillNo); -// TrunklineBillladingWaybillEntity billladingWaybillEntity = billladingWaybillEntityMap.get(waybillNo); -// if(Objects.isNull(billladingWaybillEntity)){ -// //查询是否有一条无运单的数据 -// if(Objects.isNull(noWaybillData[0])){ -// noWaybillData[0] = new TrunklineBillladingWaybillEntity(); -// noWaybillData[0].setWarehouseId(warehouseId); -// noWaybillData[0].setWarehouseName(warehouseEntity.getName()); -// noWaybillData[0].setBillladingId(billladingId); -// noWaybillData[0].setBilladingCode(trunklineBillladingEntity.getBillladingCode()); -// noWaybillData[0].setWaybillNo("————"); -// noWaybillData[0].setRealNum(integer); -// noWaybillData[0].setRealWeight(BigDecimal.ZERO); -// noWaybillData[0].setRealVolume(BigDecimal.ZERO); -// }else{ -// Integer realNum = noWaybillData[0].getRealNum(); -// noWaybillData[0].setRealNum(realNum+integer); -// } -// }else{ -// Integer realNum = billladingWaybillEntity.getRealNum(); -// billladingWaybillEntity.setRealNum(realNum + integer); -// updateList.add(billladingWaybillEntity); -// } -// }); -// -// addList.add(noWaybillData[0]); -// -// trunklineBillladingWaybillService.saveBatch(addList); -// trunklineBillladingWaybillService.updateBatchById(updateList); -// -// TrunklineBillladingEntity billladingEntity = trunklineBillladingService.getById(billladingId); -// if(!Objects.isNull(billladingEntity)){ -// int realNum = billladingEntity.getRealNum(); -// Integer all = waybillNoMNumMap.values().stream().reduce(Integer::sum).get(); -// billladingEntity.setRealNum(realNum+all); -// trunklineBillladingService.updateById(billladingEntity); -// } + QueryWrapper billladingWaybillEntityQueryWrapper = new QueryWrapper<>(); + billladingWaybillEntityQueryWrapper.in("waybill_no",waybillNoSet) + .eq("billlading_id",billladingId) + .eq("is_deleted",0); + + List billladingWaybillEntityList = trunklineBillladingWaybillService.list(billladingWaybillEntityQueryWrapper); + + //把billladingWaybillEntityList转化成waybillNo为key的Map + Map billladingWaybillEntityMap = billladingWaybillEntityList.stream().collect(Collectors.toMap(TrunklineBillladingWaybillEntity::getWaybillNo, Function.identity())); + List addList = new ArrayList<>(); + List updateList = new ArrayList<>(); + TrunklineBillladingWaybillEntity noWaybillNoData = trunklineBillladingWaybillService.findNoWaybillNoData(billladingId); + + + for (String waybillNo : waybillNoSet) { + Integer integer = waybillNoMNumMap.get(waybillNo); + TrunklineBillladingWaybillEntity billladingWaybillEntity = billladingWaybillEntityMap.get(waybillNo); + if(Objects.isNull(billladingWaybillEntity)){ + //查询是否有一条无运单的数据 + if(Objects.isNull(noWaybillNoData)){ + noWaybillNoData = new TrunklineBillladingWaybillEntity(); + noWaybillNoData.setWarehouseId(warehouseId); + noWaybillNoData.setWarehouseName(warehouseEntity.getName()); + noWaybillNoData.setBillladingId(billladingId); + noWaybillNoData.setBilladingCode(trunklineBillladingEntity.getBillladingCode()); + noWaybillNoData.setWaybillNo("————"); + noWaybillNoData.setRealNum(integer); + noWaybillNoData.setRealWeight(BigDecimal.ZERO); + noWaybillNoData.setRealVolume(BigDecimal.ZERO); + addList.add(noWaybillNoData); + }else{ + Integer realNum = noWaybillNoData.getRealNum(); + noWaybillNoData.setRealNum(realNum+integer); + updateList.add(noWaybillNoData); + } + }else{ + Integer realNum = billladingWaybillEntity.getRealNum(); + billladingWaybillEntity.setRealNum(realNum + integer); + updateList.add(billladingWaybillEntity); + } + + } + + + if(!addList.isEmpty()){ + trunklineBillladingWaybillService.saveBatch(addList); + } + trunklineBillladingWaybillService.updateBatchById(updateList); + + TrunklineBillladingEntity billladingEntity = trunklineBillladingService.getById(billladingId); + if(!Objects.isNull(billladingEntity)){ + int realNum = billladingEntity.getRealNum(); + Integer all = waybillNoMNumMap.values().stream().reduce(Integer::sum).get(); + billladingEntity.setRealNum(realNum+all); + trunklineBillladingService.updateById(billladingEntity); + } + + List warehouseWaybillEntities = new ArrayList<>(); waybillEntityMap.keySet().forEach(waybillNo -> { WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo); - if(Objects.isNull(waybillEntity)){ + if(!Objects.isNull(waybillEntity)){ Integer totalCount = waybillEntity.getTotalCount(); Integer stockCount = waybillEntity.getStockCount(); if(stockCount.equals(totalCount)){ @@ -360,10 +364,9 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl warehouseWaybillEntities = new ArrayList<>(waybillEntityMap.values()); warehouseWaybillClient.updateList(warehouseWaybillEntities); //根据提货单id重新计算每个运单的费用 diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java index b269b6742..baf97c318 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java @@ -105,6 +105,8 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl saveBillladingWaybillList = new ArrayList<>(); + Map waybillBillladingNumMap = new HashMap<>(); //保存提货运单 List billladingWaybillList = billladingDTO.getBillladingWaybillList(); for (TrunklineBillladingWaybillVO billladingWaybillVO:billladingWaybillList){ @@ -117,12 +119,28 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl waybillIds = waybillBillladingNumMap.keySet(); + List waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIds)); + waybillEntityList.forEach(waybillEntity -> { + Long waybillEntityId = waybillEntity.getId(); + Integer planNum = waybillBillladingNumMap.get(waybillEntityId); + if(Objects.isNull(planNum)){ + planNum = 0; + } + Integer billladingNum = waybillEntity.getBillladingNum(); + if(Objects.isNull(billladingNum)){ + billladingNum = 0; + } + waybillEntity.setBillladingNum(billladingNum+planNum); + }); + warehouseWaybillClient.updateList(waybillEntityList); TrunklineBillladingLogEntity logEntity = new TrunklineBillladingLogEntity(); @@ -205,18 +223,42 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl oldWaybillBillladingNumMap = new HashMap<>(); + List billladingWaybillVOList = billladingWaybillService.findWaybillInfoListByBillladingId(billladingId); + billladingWaybillVOList.forEach(billladingWaybillVO -> { + oldWaybillBillladingNumMap.put(billladingWaybillVO.getWaybillId(),billladingWaybillVO.getPlanNum()); + }); + + Set oldWaybillIdSet = oldWaybillBillladingNumMap.keySet(); + + List oldWaybillList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(oldWaybillIdSet)); + oldWaybillList.forEach(waybillEntity -> { + Long waybillEntityId = waybillEntity.getId(); + Integer planNum = oldWaybillBillladingNumMap.get(waybillEntityId); + if(Objects.isNull(planNum)){ + planNum = 0; + } + Integer billladingNum = waybillEntity.getBillladingNum(); + if(Objects.isNull(billladingNum)){ + billladingNum = 0; + } + waybillEntity.setBillladingNum(Math.max(billladingNum - planNum, 0)); + }); + warehouseWaybillClient.updateList(oldWaybillList); //先删除所有对应的运单 billladingWaybillService.deletedByBillladingId(billladingId); + Map newWaybillBillladingNumMap = new HashMap<>(); //保存提货运单 List billladingWaybillList = billladingDTO.getBillladingWaybillList(); for (TrunklineBillladingWaybillVO billladingWaybillVO:billladingWaybillList){ String waybillNo = billladingWaybillVO.getWaybillNo(); + Integer planNum = billladingWaybillVO.getPlanNum(); //查询运单以前是否挂在当前提货单下 TrunklineBillladingWaybillEntity one = billladingWaybillService.getOneByBillladingIdAndWaybillNo(billladingId,waybillNo); if(!Objects.isNull(one)){ - billladingWaybillService.updateByBillladingIdAndWaybillNo(billladingId,waybillNo); + billladingWaybillService.updateByBillladingIdAndWaybillNo(billladingId,waybillNo,planNum); }else{ TrunklineBillladingWaybillEntity billladingWaybillEntity = new TrunklineBillladingWaybillEntity(); BeanUtil.copy(billladingWaybillVO,billladingWaybillEntity); @@ -228,8 +270,25 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl newWaybillIdSet = newWaybillBillladingNumMap.keySet(); + List newWaybillList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(newWaybillIdSet)); + newWaybillList.forEach(waybillEntity -> { + Long waybillEntityId = waybillEntity.getId(); + Integer planNum = newWaybillBillladingNumMap.get(waybillEntityId); + if(Objects.isNull(planNum)){ + planNum = 0; + } + Integer billladingNum = waybillEntity.getBillladingNum(); + if(Objects.isNull(billladingNum)){ + billladingNum = 0; + } + waybillEntity.setBillladingNum(billladingNum + planNum); + }); + warehouseWaybillClient.updateList(newWaybillList); + logEntity.setAfterOpreation(JSON.toJSONString(billladingEntity)); trunklineBillladingLogService.save(logEntity); @@ -364,6 +423,28 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl billladingWaybillEntities = billladingWaybillService.findNoFinishWaybillByBillladingId(billladingId); + Map map = new HashMap<>(); + billladingWaybillEntities.forEach(billladingWaybillEntity -> { + map.put(billladingWaybillEntity.getWaybillId(),billladingWaybillEntity.getPlanNum() - billladingWaybillEntity.getRealNum()); + }); + + Set waybillIdSet = map.keySet(); + List waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet)); + waybillEntityList.forEach(waybillEntity -> { + Integer integer = map.get(waybillEntity.getId()); + if(Objects.isNull(integer)){ + integer = 0; + } + Integer billladingNum = waybillEntity.getBillladingNum(); + if(Objects.isNull(billladingNum)){ + billladingNum = 0; + } + waybillEntity.setBillladingNum(Math.max(billladingNum - integer, 0)); + }); + warehouseWaybillClient.updateList(waybillEntityList); + } else { log.warn("##################updateBillladingStatus: 提货单不能更新为已结算 billladingStatus={}", billladingStatus); throw new CustomerException(405, "提货单不能更新为提货中"); @@ -371,16 +452,16 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl totalCount){ - log.warn("###############updateBillladingWaybillNum: 运单提货数量已经大于总数 waybillId={} totalCount={}",waybillId,totalCount); - throw new CustomerException(405,"【"+waybillNo+"】运单提货数量已经大于总数"); + if(enterNum > planNum){ + log.warn("###############updateBillladingWaybillNum: 运单提货数量已经大于计划数 waybillId={} planNum={}",waybillId,planNum); + throw new CustomerException(405,"【"+waybillNo+"】运单提货数量已经大于计划数"); } - BigDecimal enterWeight = billladingWaybillDTO.getEnterWeight(); - BigDecimal enterVolume = billladingWaybillDTO.getEnterVolume(); - - stockNum = stockNum + enterNum; - stockWeight = stockWeight.add(enterWeight); - stockVolume = stockVolume.add(enterVolume); billladingWaybillService.updateDataByBillladingWaybillId(billladingWaybillId,enterNum,enterWeight,enterVolume); - WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); - waybillEntity.setStockCount(enterNum); - waybillEntity.setStockWeight(enterWeight); - waybillEntity.setStockVolume(enterVolume); - - - if(totalCount.equals(enterNum)){ - waybillEntity.setWaybillStatus("10"); - try{ - TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity(); - waybillTrackEntity.setWarehouseId(billladingEntity.getWarehouseId()); - waybillTrackEntity.setWarehouseName(billladingEntity.getWarehouseName()); - waybillTrackEntity.setWaybillId(waybillId); - waybillTrackEntity.setWaybillNo(waybillNo); - waybillTrackEntity.setTrackType("20"); - waybillTrackEntity.setRefer("已入库"); - waybillTrackEntity.setOperationRemark("运单入库:"+enterNum+"/"+totalCount+",入库类型:【批量入库】,入库时间:"+ CommonUtil.dateToString(new Date())); - trunklineWaybillTrackService.save(waybillTrackEntity); - }catch (Exception e){ - log.warn("#################updateBillladingWaybillNum: 存入日志失败"); - } - } - warehouseWaybillClient.updateEntity(waybillEntity); +// Integer diffNum = enterNum-realNum; +// BigDecimal diffWeight = realWeight.subtract(enterWeight); +// BigDecimal diffVolume = realVolume.subtract(enterVolume); + +// WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); +// waybillEntity.setStockCount(Math.max(waybillEntity.getStockCount() + diffNum, 0)); +// waybillEntity.setStockWeight(waybillEntity.getStockWeight().add(diffWeight).compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : diffWeight); +// waybillEntity.setStockVolume(waybillEntity.getStockVolume().add(diffVolume).compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : diffVolume); + +// Integer totalCount = waybillEntity.getTotalCount(); +// Integer stockCount = waybillEntity.getStockCount(); + +// if(totalCount.equals(stockCount)){ +// waybillEntity.setWaybillStatus("10"); +// try{ +// TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity(); +// waybillTrackEntity.setWarehouseId(billladingEntity.getWarehouseId()); +// waybillTrackEntity.setWarehouseName(billladingEntity.getWarehouseName()); +// waybillTrackEntity.setWaybillId(waybillId); +// waybillTrackEntity.setWaybillNo(waybillNo); +// waybillTrackEntity.setTrackType("20"); +// waybillTrackEntity.setRefer("已入库"); +// waybillTrackEntity.setOperationRemark("运单入库:"+enterNum+"/"+totalCount+",入库类型:【批量入库】,入库时间:"+ CommonUtil.dateToString(new Date())); +// trunklineWaybillTrackService.save(waybillTrackEntity); +// }catch (Exception e){ +// log.warn("#################updateBillladingWaybillNum: 存入日志失败"); +// } +// } +// warehouseWaybillClient.updateEntity(waybillEntity); } - billladingEntity.setRealNum(stockNum); - billladingEntity.setRealWeight(stockWeight); - billladingEntity.setRealVolume(stockVolume); + TrunklineBillladingNumVO numVO = billladingWaybillService.getNumVOByBillladingId(billladingId); + + billladingEntity.setRealNum(numVO.getNum()); + billladingEntity.setRealWeight(numVO.getWeight()); + billladingEntity.setRealVolume(numVO.getVolume()); updateById(billladingEntity); billladingWaybillService.updateBillladingFeeByBillladingId(billladingEntity); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingWaybillServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingWaybillServiceImpl.java index 2faf91918..84ef9dc35 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingWaybillServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingWaybillServiceImpl.java @@ -6,6 +6,7 @@ import com.logpm.trunkline.entity.TrunklineBillladingWaybillEntity; import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; import com.logpm.trunkline.mapper.TrunklineBillladingWaybillMapper; import com.logpm.trunkline.service.ITrunklineBillladingWaybillService; +import com.logpm.trunkline.vo.TrunklineBillladingNumVO; import com.logpm.trunkline.vo.TrunklineBillladingWaybillVO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -134,8 +135,18 @@ public class TrunklineBillladingWaybillServiceImpl extends BaseServiceImpl findNoFinishWaybillByBillladingId(Long billladingId) { + return baseMapper.findNoFinishWaybillByBillladingId(billladingId); + } + + @Override + public TrunklineBillladingNumVO getNumVOByBillladingId(Long billladingId) { + return baseMapper.getNumVOByBillladingId(billladingId); } } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java index 3be4ea2a1..4ea83a6ce 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java @@ -884,8 +884,7 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl qw = new QueryWrapper<>(); - qw.eq("association_value",orderPackageCode) - .eq("tenant_id","627683"); + qw.eq("association_value",orderPackageCode); WarehouseTrayGoodsEntity trayGoodsEntity = warehouseTrayGoodsService.getOne(qw); if(!Objects.isNull(trayGoodsEntity)){ @@ -900,8 +899,7 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl updownGoodsEntityQueryWrapper = new QueryWrapper<>(); - updownGoodsEntityQueryWrapper.eq("association_value",orderPackageCode) - .eq("tenant_id","627683"); + updownGoodsEntityQueryWrapper.eq("association_value",orderPackageCode); WarehouseUpdownGoodsEntity updownGoodsEntity = warehouseUpdownGoodsService.getOne(updownGoodsEntityQueryWrapper); if(!Objects.isNull(updownGoodsEntity)){ String positionCode = updownGoodsEntity.getPositionCode(); @@ -957,7 +955,6 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("tray_code",trayCode) - .eq("tenant_id","627683") .eq("is_deleted",0); WarehouseTrayTypeEntity trayTypeEntity = baseMapper.selectOne(queryWrapper); if(Objects.isNull(trayTypeEntity)){