diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/OperatModeConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/OperatModeConstant.java
index f2f4f0248..0b9767015 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/constant/OperatModeConstant.java
+++ b/blade-biz-common/src/main/java/org/springblade/common/constant/OperatModeConstant.java
@@ -5,7 +5,8 @@ package org.springblade.common.constant;
*/
public interface OperatModeConstant {
- public static final String SCAN = "扫描";
- public static final String BATCH = "批量";
+ public static final String SCAN = "司机扫描签收";
+ public static final String BATCH = "司机批量签收";
+ public static final String CLERK= "文员批量签收";
}
diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/report/ReportConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/report/ReportConstants.java
index 6a1d0f61b..3120432f0 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/constant/report/ReportConstants.java
+++ b/blade-biz-common/src/main/java/org/springblade/common/constant/report/ReportConstants.java
@@ -1,5 +1,7 @@
package org.springblade.common.constant.report;
+import org.springblade.common.constant.ModuleNameConstant;
+
/**
* excel处理常量类
*
@@ -11,8 +13,15 @@ public class ReportConstants {
/**
* 配送明细报表
*/
- public static final String REPORT_QUALITY_DELIVER_EXCHANGE = "report.quality.deliver.exchange";
- public static final String REPORT_QUALITY_DELIVER_QUEUE = "report.quality.deliver.queue";
- public static final String REPORT_QUALITY_DELIVER_ROUTINGKEY = "report.quality.deliver.key";
+ public static final String REPORT_QUALITY_DELIVER_EXCHANGE = "report.quality.deliver.exchange" + ModuleNameConstant.DEVAUTH;
+ public static final String REPORT_QUALITY_DELIVER_QUEUE = "report.quality.deliver.queue" + ModuleNameConstant.DEVAUTH;
+ public static final String REPORT_QUALITY_DELIVER_ROUTINGKEY = "report.quality.deliver.key" + ModuleNameConstant.DEVAUTH;
+
+ /**
+ * 车辆车次报表
+ */
+ public static final String REPORT_QUALITY_CAR_FINAL_EXCHANGE = "report.quality.car.final.exchange" + ModuleNameConstant.DEVAUTH;
+ public static final String REPORT_QUALITY_CAR_FINAL_QUEUE = "report.quality.car.final.queue" + ModuleNameConstant.DEVAUTH;
+ public static final String REPORT_QUALITY_CAR_FINAL_ROUTINGKEY = "report.quality.car.final.key" + ModuleNameConstant.DEVAUTH;
}
diff --git a/blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java b/blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java
index 60dcfc791..c04c64737 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java
+++ b/blade-biz-common/src/main/java/org/springblade/common/model/workNode/PickUpByScanVO.java
@@ -29,6 +29,11 @@ public class PickUpByScanVO {
*/
private String driverName;
+ /**
+ * 签收类型
+ */
+ private String signType;
+
/**
* 配送时间
*/
diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataVehicleEntity.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataVehicleEntity.java
index 1467a7bc3..1b195dcb7 100644
--- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataVehicleEntity.java
+++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataVehicleEntity.java
@@ -319,5 +319,6 @@ public class BasicdataVehicleEntity extends TenantEntity {
@ApiModelProperty(value = "预留5")
private String reserve5;
-
+ @ApiModelProperty(value = "车型id")
+ private Long vehicleModelId;
}
diff --git a/blade-service-api/logpm-data-sharing-api/pom.xml b/blade-service-api/logpm-data-sharing-api/pom.xml
new file mode 100644
index 000000000..943b859db
--- /dev/null
+++ b/blade-service-api/logpm-data-sharing-api/pom.xml
@@ -0,0 +1,18 @@
+
+
+ 4.0.0
+
+
+ org.springblade
+ blade-service-api
+ 3.2.0.RELEASE
+
+
+ org.springblade
+ logpm-data-sharing-api
+ 3.2.0.RELEASE
+
+
+
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java
similarity index 100%
rename from blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java
rename to blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java
diff --git a/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WarehouseNumberVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WarehouseNumberVO.java
new file mode 100644
index 000000000..cb41f3b9b
--- /dev/null
+++ b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WarehouseNumberVO.java
@@ -0,0 +1,26 @@
+package com.logpm.datasharing.vo;
+
+import lombok.Data;
+
+/**
+ * @see com.logpm.datasharing.vo.WarehouseNumberVO
+ * 仓库数据
+ *
始发仓
+ * 中转仓
+ * 目的仓
+ */
+@Data
+public class WarehouseNumberVO {
+
+ /**
+ * 仓库名称
+ */
+ private String warehouseName;
+
+ /**
+ * 数量
+ */
+ private Integer number;
+
+
+}
diff --git a/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WaybillInfoVO.java b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WaybillInfoVO.java
new file mode 100644
index 000000000..fe661bb55
--- /dev/null
+++ b/blade-service-api/logpm-data-sharing-api/src/main/java/com/logpm/datasharing/vo/WaybillInfoVO.java
@@ -0,0 +1,137 @@
+package com.logpm.datasharing.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 开放模块
+ * 运单返回诗句
+ */
+@Data
+public class WaybillInfoVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * 运单状态 10部分入库
+ *
+ * 20入库
+ *
+ * 30部分中转
+ *
+ * 40 中转
+ *
+ * 50 目的仓部分到达
+ *
+ * 60 目的仓到达
+ *
+ * 70 配送部分装车
+ *
+ * 80 配送装车
+ *
+ * 90 部分签收
+ *
+ * 100 已签收
+ */
+ @ApiModelProperty(value = "运单状态")
+ private String statusName;
+
+
+ /**
+ * 运单号
+ */
+ @ApiModelProperty(value = "运单号")
+ private String waybillNo;
+
+ /**
+ * 目的仓
+ */
+ @ApiModelProperty(value = "目的仓")
+ private String destinationWarehouseName;
+
+
+
+ /**
+ * 发站仓
+ */
+ @ApiModelProperty(value = "发站仓")
+ private String departureWarehouseName;
+
+
+ /**
+ * 发货单位
+ */
+ @ApiModelProperty(value = "发货单位")
+ private String shipper;
+
+ /**
+ * 发货人
+ */
+ @ApiModelProperty(value = "发货人")
+ private String shipperName;
+
+ /**
+ * 总数
+ */
+ @ApiModelProperty(value = "总数")
+ private Integer totalCount;
+
+
+ /**
+ * 在途数量
+ */
+ @ApiModelProperty(value = "总数")
+ private Integer onWayCount;
+
+
+ /**
+ * 收货单位
+ */
+ @ApiModelProperty(value = "收货单位")
+ private String consignee;
+
+ /**
+ * 收货人
+ */
+ @ApiModelProperty(value = "收货人")
+ private String consigneeName;
+
+
+ /**
+ * 始发仓数量信息
+ */
+ @ApiModelProperty(value = "始发仓数量信息")
+ private WarehouseNumberVO startWarehouseNumber;
+
+
+ /**
+ * 中转仓数量信息
+ */
+ @ApiModelProperty(value = "中转仓数量信息")
+ private List middleWarehouseNumber;
+
+ /**
+ * 目的仓数量信息
+ */
+ @ApiModelProperty(value = "目的仓数量信息")
+ private WarehouseNumberVO endWarehouseNumber;
+
+ /**
+ * 配送数量
+ */
+ @ApiModelProperty(value = "配送数量")
+ private Integer deliveryNum ;
+
+ /**
+ * 签收数量
+ */
+ @ApiModelProperty(value = "签收数量")
+ private Integer signNum;
+
+
+
+
+}
diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionLoadscanEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionLoadscanEntity.java
index e3615b542..be74f47ca 100644
--- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionLoadscanEntity.java
+++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionLoadscanEntity.java
@@ -350,7 +350,7 @@ public class DistributionLoadscanEntity extends TenantEntity {
/**
- * 是否异常装车 1-否 2-是
+ * 是否是零担 1 =零单
*/
@ApiModelProperty(value = "是否异常装车 1-否 2-是")
private Integer isZero;
diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java
index 399f8f970..9d92c0c22 100644
--- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java
+++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/QualityDeliverEntity.java
@@ -569,6 +569,11 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "车辆类型")
private String signCarType;
+ /**
+ * 车辆类型id
+ */
+ @ApiModelProperty(value = "车辆类型id")
+ private Long signCarTypeId;
/**
* 上楼层数
*/
@@ -579,6 +584,11 @@ public class QualityDeliverEntity extends TenantEntity {
*/
@ApiModelProperty(value = "复核人")
private String reviewUserName;
+ /**
+ * 复核数量
+ */
+ @ApiModelProperty(value = "复核数量")
+ private Integer reviewNum;
/**
* 复核时间 复核时间=回库时间
*/
diff --git a/blade-service-api/pom.xml b/blade-service-api/pom.xml
index 6ff42ac06..7d3b3201e 100644
--- a/blade-service-api/pom.xml
+++ b/blade-service-api/pom.xml
@@ -45,8 +45,11 @@
logpm-factory-data-zbom-api
-
+
logpm-business-api
+
+
+ logpm-data-sharing-api
diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesWorkOrderController.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesWorkOrderController.java
index 8a0314a18..d21ede5c1 100644
--- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesWorkOrderController.java
+++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesWorkOrderController.java
@@ -988,6 +988,8 @@ public class AftersalesWorkOrderController extends BladeController {
basicTitle.add(head2);
List head3 = new ArrayList<>(Arrays.asList("理赔金额"));
basicTitle.add(head3);
+ List head4 = new ArrayList<>(Arrays.asList("最新回复消息"));
+ basicTitle.add(head4);
List exportData = aftersalesWorkOrderService.getBasicExportData(aftersalesWorkOrder);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (!exportData.isEmpty()) {
@@ -1026,8 +1028,15 @@ public class AftersalesWorkOrderController extends BladeController {
data.add(17, exportDatum.getHeadquartersName());
data.add(18, exportDatum.getResultTypes());
data.add(19, exportDatum.getTotalAmountNum());
+ data.add(20, "");
//查询此工单是否存在有责任方如果存在有责任方完善表头
-
+ AftersalesWorkOrderDTO workOrderDTO = new AftersalesWorkOrderDTO();
+ workOrderDTO.setId(exportDatum.getId());
+ AftersalesWorkOrderVO trackRecord = aftersalesWorkOrderService.getTrackRecord(workOrderDTO);
+ if (!Objects.isNull(trackRecord) && !Objects.isNull(trackRecord.getSurveyRecordEntities())){
+ String processingResults = trackRecord.getSurveyRecordEntities().get(0).getProcessingResults();
+ data.add(20, processingResults);
+ }
if (personResponsibleMap!= null && !Objects.isNull(personResponsibleMap.get(exportDatum.getId()))) {
handleResponsibility(basicTitle, personResponsibleMap.get(exportDatum.getId()), data);
}
diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java
index 8ac3a5ebb..025899693 100644
--- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java
+++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java
@@ -2807,10 +2807,10 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl exportData = baseMapper.getBasicExportData(workOrderDTO, ids, warehouseIds);
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java
index 181cc29e4..f84410ba4 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java
+++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataTrayController.java
@@ -260,10 +260,15 @@ public class BasicdataTrayController extends BladeController {
return R.data(trayService.printCode(Func.toLongList(ids)));
}
- @GetMapping("/getPDF")
- public void getPDF(@ApiParam(value = "主键集合", required = true) @RequestParam String ids,
+ @PostMapping("/downPdf")
+ public void downPdf(@RequestBody Map map,
HttpServletResponse response) throws Exception {
+
+
+ String ids = (String) map.get("ids");
+// System.out.println(ids);
trayService.downloadCodePDF(Func.toLongList(ids), response);
+ return ;
}
/**
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.java
index 9574f1586..012de62b6 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.java
+++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.java
@@ -87,4 +87,5 @@ public interface BasicdataTrayMapper extends BaseMapper {
* 托盘 零担历史记录
*/
WarehouseTrayQRCode getTray(@Param("id") Long id);
+ List getTrayByIds(@Param("ids") List ids);
}
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.xml b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.xml
index ab5139983..ebb6bd105 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.xml
+++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataTrayMapper.xml
@@ -421,6 +421,21 @@
+
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataVehicleMapper.xml b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataVehicleMapper.xml
index 81d8c2815..57a96e9c9 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataVehicleMapper.xml
+++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataVehicleMapper.xml
@@ -312,6 +312,7 @@
lbv.with_gps withGps,
lbv.gps_service_provider gpsServiceProvider,
lbv.gps_model gpsModel,
+ lbv.vehicle_model_id vehicleModelId,
(
SELECT
group_concat( lbvp.photo_url )
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java
index 727cebbb9..f23b33356 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java
+++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataTrayServiceImpl.java
@@ -280,8 +280,12 @@ public class BasicdataTrayServiceImpl extends BaseServiceImpl trayQRCodes = baseMapper.getTrayByIds(ids);
+
+ for (WarehouseTrayQRCode trayQRCode : trayQRCodes) {
+// WarehouseTrayQRCode trayQRCode = baseMapper.getTray(id);
String filename = QRCodeUtil.createCodeToFile(trayQRCode.getTrayCode());
String fileTypeName = QRCodeUtil.createCodeToFileType(trayQRCode.getTrayCode());
diff --git a/blade-service/logpm-data-sharing/pom.xml b/blade-service/logpm-data-sharing/pom.xml
index 1baf0111b..893a94e33 100644
--- a/blade-service/logpm-data-sharing/pom.xml
+++ b/blade-service/logpm-data-sharing/pom.xml
@@ -35,6 +35,17 @@
logpm-basicdata-api
3.2.0.RELEASE
+
+ org.springblade
+ logpm-warehouse-api
+ 3.2.0.RELEASE
+
+
+ org.springblade
+ logpm-data-sharing-api
+ 3.2.0.RELEASE
+
+
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/config/InterceptorAdapterConfig.java b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/config/InterceptorAdapterConfig.java
new file mode 100644
index 000000000..1364d45a4
--- /dev/null
+++ b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/config/InterceptorAdapterConfig.java
@@ -0,0 +1,33 @@
+package com.logpm.datasharing.config;
+
+
+import com.logpm.datasharing.interceptor.LocalServerLoginAccountsInterceptor;
+import lombok.AllArgsConstructor;
+import org.springblade.common.component.MockLoginService;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.redis.lock.RedisLockClient;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * 为所有的的
+ */
+@Configuration
+@AllArgsConstructor
+public class InterceptorAdapterConfig implements WebMvcConfigurer {
+
+
+ private final BladeRedis redis;
+
+ private final RedisLockClient redisLockClient;
+ private final MockLoginService mockLoginService;
+
+
+ @Override
+ public void addInterceptors(InterceptorRegistry interceptorRegistry) {
+
+ interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,redisLockClient,mockLoginService)).addPathPatterns("/search/**").order(1);
+
+ }
+}
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/LogpmDataSearchController.java b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/LogpmDataSearchController.java
index ff0598cb8..b501bbb73 100644
--- a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/LogpmDataSearchController.java
+++ b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/LogpmDataSearchController.java
@@ -1,5 +1,6 @@
package com.logpm.datasharing.controller;
+import com.logpm.datasharing.service.ILogpmDataSearchService;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
@@ -24,22 +25,18 @@ import org.springframework.web.bind.annotation.RestController;
@Api(value = "运单/订单查询", tags = "运单/订单查询")
public class LogpmDataSearchController extends BladeController {
+ private final ILogpmDataSearchService logpmDataSearchService;
/**
* 订单/运单搜索
* @return
*/
- @GetMapping("/data/${type}/${order}")
- public R data(@PathVariable("order") String order){
+ @GetMapping("/data/{type}/{order}")
+ public R data(@PathVariable("type") String type,@PathVariable("order") String order){
-
-
-
-
-
- return null;
+ return logpmDataSearchService.data(type, order);
}
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java
index 5b978ea11..86637b35c 100644
--- a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java
+++ b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java
@@ -41,10 +41,11 @@ public class MerchantController extends BladeController {
private final MerchantService merchantService;
- @GetMapping("goods")
+ @GetMapping("/goods")
public R goods(@RequestParam("contract_number") String contract_number, @RequestParam("auth_key") String auth_key) {
return R.data(merchantService.goods(contract_number, auth_key));
}
+
}
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/interceptor/LocalServerLoginAccountsInterceptor.java
new file mode 100644
index 000000000..2fc1a3960
--- /dev/null
+++ b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/interceptor/LocalServerLoginAccountsInterceptor.java
@@ -0,0 +1,100 @@
+package com.logpm.datasharing.interceptor;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+import org.springblade.common.cache.CacheNames;
+import org.springblade.common.component.MockLoginService;
+import org.springblade.common.exception.CustomerException;
+import org.springblade.common.wrapper.CustomHttpServletRequestWrapper;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.redis.lock.LockType;
+import org.springblade.core.redis.lock.RedisLockClient;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.ThreadLocalUtil;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+@Log4j2
+@AllArgsConstructor
+public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapter {
+
+ private final BladeRedis bladeRedis;
+ private final RedisLockClient redisLockClient;
+ private final MockLoginService mockLoginService;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException {
+
+
+ try {
+ CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request);
+ String account ="shujutongbu";
+ String tenantId = request.getHeader("tenantId");
+ tenantId = StringUtil.isBlank(tenantId)?"627683":tenantId;
+ String key =CacheNames.LOCAL_SERVER_USER+tenantId+":"+account;
+ String lockKey =key+":lock";
+ JSONObject data =bladeRedis.get(key);
+ if(Objects.isNull(data)){
+ boolean flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS);
+ if(flag){
+ data =bladeRedis.get(key);
+ if(Objects.isNull(data)){
+ data = mockLoginService.mockToken(tenantId,account);
+ bladeRedis.setEx(key,data,2591990L);
+ redisLockClient.unLock(lockKey, LockType.FAIR);
+ }
+ }
+ }
+
+ // 修改或添加header
+
+ // 发送登录请求
+ log.info("##########preHandle: request={}", request);
+
+ wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token"));
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") );
+ httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0");
+ ThreadLocalUtil.put("bladeContext", httpHeaders);
+
+
+ // 用包装后的request替换原始request
+ request = wrappedRequest;
+ RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
+ return true;
+ } catch (Exception e) {
+ returnJson(response, JSONObject.toJSONString(R.fail(500, "服务异常,请联系管理员")));
+ return false;
+ }
+ }
+
+ private void returnJson(HttpServletResponse response, String json) {
+ PrintWriter writer = null;
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("application/json");
+ try {
+ writer = response.getWriter();
+ writer.print(json);
+
+ } catch (IOException e) {
+ System.out.println(e.getMessage());
+ } finally {
+ if (writer != null) {
+ writer.close();
+ }
+ }
+ }
+
+
+}
diff --git a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/LogpmDataSearchServiceImpl.java b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/LogpmDataSearchServiceImpl.java
index b1094c908..53decf3c1 100644
--- a/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/LogpmDataSearchServiceImpl.java
+++ b/blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/LogpmDataSearchServiceImpl.java
@@ -1,11 +1,28 @@
package com.logpm.datasharing.service.impl;
import com.logpm.datasharing.service.ILogpmDataSearchService;
+import com.logpm.datasharing.vo.WarehouseNumberVO;
+import com.logpm.datasharing.vo.WaybillInfoVO;
+import com.logpm.distribution.entity.DistributionParcelListEntity;
+import com.logpm.distribution.feign.IDistributionParcelListClient;
+import com.logpm.warehouse.entity.WarehouseWaybillEntity;
+import com.logpm.warehouse.feign.IWarehouseWaybillClient;
+import lombok.AllArgsConstructor;
+import org.springblade.common.exception.CustomerException;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.stream.Collectors;
+
@Service
+@AllArgsConstructor
public class LogpmDataSearchServiceImpl implements ILogpmDataSearchService {
+
+
+ private final IWarehouseWaybillClient warehouseWaybillClient;
+ private final IDistributionParcelListClient distributionParcelListClient;
+
@Override
public R data(String type, String order) {
@@ -18,23 +35,167 @@ public class LogpmDataSearchServiceImpl implements ILogpmDataSearchService {
case "waybill":
// 运单查询
- break;
+ return R.data(dataWEaybill(order)) ;
default:
// 需要没有参数的查询全部的情况
return R.fail("参数错误");
}
+ }
+
+
+ /**
+ * 运单查询
+ * @param waybillNo
+ * @return
+ */
+ private WaybillInfoVO dataWEaybill(String waybillNo) {
+
+ WaybillInfoVO result = new WaybillInfoVO();
+ int temp =0;
+ // todo 查询运单
+ WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(waybillNo);
+ if(Objects.isNull(byWaybillNo)){
+ throw new CustomerException("运单信息不存在~");
+ }
+ result.setWaybillNo(byWaybillNo.getWaybillNo());
+ result.setDestinationWarehouseName(byWaybillNo.getDestinationWarehouseName());
+ result.setDepartureWarehouseName(byWaybillNo.getDepartureWarehouseName());
+ result.setShipper(byWaybillNo.getShipper());
+ result.setShipperName(byWaybillNo.getShipperName());
+ result.setConsignee(byWaybillNo.getConsignee());
+ result.setConsigneeName(byWaybillNo.getConsigneeName());
+ result.setTotalCount(byWaybillNo.getTotalCount());
+
+ List distributionParcelListEntities = distributionParcelListClient.findByWaybillNumber(waybillNo);
+ // 按照仓库ID进行分组
+ Map> groupedByWarehouse= distributionParcelListEntities.stream()
+ .collect(Collectors.groupingBy(DistributionParcelListEntity::getWarehouse));
+
+ // 获取始发仓的入库数据
+ WarehouseNumberVO startWarehouseNumber =buildWarehouse(groupedByWarehouse,result.getDepartureWarehouseName());
+ // 移除当前的仓库
+ groupedByWarehouse.remove(result.getDepartureWarehouseName());
+ result.setStartWarehouseNumber(startWarehouseNumber);
+ temp +=startWarehouseNumber!=null?startWarehouseNumber.getNumber():temp;
+ /*********************************m目的仓 start********************************/
+ String destinationWarehouseName = result.getDestinationWarehouseName();
+ WarehouseNumberVO endWarehouseNumber=buildWarehouse(groupedByWarehouse,destinationWarehouseName);
+ temp +=endWarehouseNumber!=null?endWarehouseNumber.getNumber():temp;
+ // 计算预约数量
+ List end = groupedByWarehouse.get(destinationWarehouseName);
+
+ if(end!=null){
+ int resNum = end.stream().filter(t->"20".equals(t.getOrderPackageReservationStatus())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
+ result.setDeliveryNum(resNum);
+ }
+
+ groupedByWarehouse.remove(result.getDestinationWarehouseName());
+ result.setEndWarehouseNumber(endWarehouseNumber);
+ /*********************************m目的仓 end********************************/
+ // 判断当前map 中的key长度
+ Set keys = groupedByWarehouse.keySet();
+ List models = null;
+ for (String key : keys) {
+ if(models==null){
+ models = new ArrayList<>();
+ }
+ WarehouseNumberVO middleWarehouseNumberVO = buildWarehouse(groupedByWarehouse,key);
+ models.add(middleWarehouseNumberVO);
+ temp +=middleWarehouseNumberVO!=null?middleWarehouseNumberVO.getNumber():temp;
+ }
+ // 加入中转的数据
+ result.setMiddleWarehouseNumber(models);
+
+ // 查询运单的签收数量
+ result.setSignNum(byWaybillNo.getSignNum());
+
+ // 运单状态
+
+ result.setStatusName(changeStatusName(byWaybillNo.getWaybillStatus()));
+
+ // 计算在途数量
+ result.setOnWayCount(result.getTotalCount()-temp);
+
+
+
+ return result;
+ }
+
+ private String changeStatusName(String waybillStatus) {
+
+ if(waybillStatus==null){
+ waybillStatus="";
+ }
+
+ switch (waybillStatus){
+ case "20":
+ return "已入库";
+
+ case "30":
+ return "部分中转";
+
+ case "40":
+ return "中转";
+
+ case "50":
+ return "目的仓部分到达";
+
+ case "60":
+ return "目的仓到达";
+
+ case "70":
+ return "配送部分装车";
+
+ case "80":
+ return "配送装车";
+ case "90":
+ return "部分签收";
+
+ case "100":
+ return "已签收";
+ default:
+ return "未知";
+ }
+
+
+
+
+
+
+ }
+
+
+ private WarehouseNumberVO buildWarehouse(Map> groupedByWarehouse,String warehouseName){
+
+ List end = groupedByWarehouse.get(warehouseName);
+ if(end==null){
+ return null;
+ }
+ // 获取始发仓的在库数量
+ int num = end.stream().filter(t->"20".equals(t.getOrderPackageStatus()) && t.getQuantity()!=0).mapToInt(DistributionParcelListEntity::getQuantity).sum();
+ if(num != 0) {
+ WarehouseNumberVO endWarehouseNumber = new WarehouseNumberVO();
+ endWarehouseNumber.setNumber(num);
+ endWarehouseNumber.setWarehouseName(warehouseName);
+
+
+ return endWarehouseNumber;
+
+ }
return null;
}
+
+
+
private R dataOrder(String order) {
// 通过订单查询站存单导入时间
- // 导入
+ //todo
- //
return null;
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 9b800d282..6478caf2e 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
@@ -103,25 +103,15 @@ public class DistributionStockupAppController extends BladeController {
private final IDistributionReservationStocklistService distributionReservationStocklistService;
private final IWarehouseUpdownGoodsClient warehouseUpdownGoodsClient;
- private final IWarehouseUpdownTypeClient warehouseUpdownTypeClient;
- private final IDistributionAsyncService distributionAsyncService;
private final DistributionReservationMapper distributionReservationMapper;
private final IDisStockListDetailService disStockListDetailService;
private final IBasicdataWarehouseClient basicdataWarehouseClient;
- private final RabbitTemplate rabbitTemplate;
-
-
private final IDistributionStockListService distributionStockListService;
-
- private final IDisStockOrdercodeRecoService disStockOrdercodeRecoService;
private final IDistributionReservationStockarticleService distributionReservationStockarticleService;
- private final IWarehouseUpdownStockUpAreaClient warehouseUpdownStockUpAreaClient;
private final BladeRedis redis;
- private final ITrunklinePackageTrackLogClient trunklinePackageTrackLogClient;
- private final IDistributionNodeWorkService distributionNodeWorkService;
private final IDistributionDeliveryDetailsService distributionDeliveryDetailsService;
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/ReportQualityDeliverDTO.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/ReportQualityDeliverDTO.java
index 07ac1afe5..0932208a7 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/ReportQualityDeliverDTO.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/ReportQualityDeliverDTO.java
@@ -21,4 +21,6 @@ public class ReportQualityDeliverDTO implements Serializable {
private BizOperationEnums operation;
+ private String node;
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/job/ExpenseJob.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/job/ExpenseJob.java
index 5ab102dca..2569f7ba9 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/job/ExpenseJob.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/job/ExpenseJob.java
@@ -1,5 +1,6 @@
package com.logpm.distribution.job;
+import com.logpm.distribution.receiver.report.DeliverFinishReportListener;
import com.logpm.distribution.service.IQualityDeliverService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
@@ -20,6 +21,8 @@ public class ExpenseJob {
@Resource
private IQualityDeliverService qualityDeliverService;
+ @Resource
+ private DeliverFinishReportListener deliverFinishReportListener;
/**
* 车辆成本明细表 job
@@ -33,6 +36,28 @@ public class ExpenseJob {
qualityDeliverService.carExpenseDispatchDetailJob(param);
return ReturnT.SUCCESS;
}
+ /**
+ * 车辆成本明细表 车次号
+ * 每天晚上凌晨0点执行
+ * @param param 指定时间 yyyy-MM-dd
+ * @return
+ * @throws Exception
+ */
+ @XxlJob("carExpenseDispatchDetailTrainJob")
+ public ReturnT carExpenseDispatchDetailTrainJob(String param) throws Exception {
+ qualityDeliverService.carExpenseDispatchDetailFinal(param);
+ return ReturnT.SUCCESS;
+ }
+ /**
+ * 计算车次成本 车次号
+ * @return
+ * @throws Exception
+ */
+ @XxlJob("calculateTripCostJob")
+ public ReturnT calculateTripCostJob(String param) throws Exception {
+ deliverFinishReportListener.calculateTripCost(param);
+ return ReturnT.SUCCESS;
+ }
/**
* 每天凌晨00:30:00计算仓储成本
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
index 663aff2ef..2049f710d 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
@@ -19,17 +19,36 @@ package com.logpm.distribution.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.distribution.dto.DistributionDeliveryListDTO;
import com.logpm.distribution.dto.DistributionLoadingNumDTO;
import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO;
-import com.logpm.distribution.entity.*;
+import com.logpm.distribution.entity.DisStockListDetailEntity;
+import com.logpm.distribution.entity.DistributionDeliveryListEntity;
+import com.logpm.distribution.entity.DistributionLoadscanAbnormalEntity;
+import com.logpm.distribution.entity.DistributionLoadscanEntity;
+import com.logpm.distribution.entity.DistributionLoadscaninvnEntity;
+import com.logpm.distribution.entity.DistributionParcelListEntity;
+import com.logpm.distribution.entity.DistributionReservationEntity;
+import com.logpm.distribution.entity.DistributionReservationStockarticleEntity;
+import com.logpm.distribution.entity.DistributionSignforEntity;
+import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionDeliveryListExcel;
-import com.logpm.distribution.vo.*;
-import com.logpm.distribution.vo.app.*;
+import com.logpm.distribution.vo.DisStockListDetailVO;
+import com.logpm.distribution.vo.DistributionDeliveryListPrintReponseVO;
+import com.logpm.distribution.vo.DistributionDeliveryListPrintRequestVO;
+import com.logpm.distribution.vo.DistributionDeliveryListVO;
+import com.logpm.distribution.vo.DistributionDeliveryWordVO;
+import com.logpm.distribution.vo.DistributionParcelNumberVO;
+import com.logpm.distribution.vo.DistributionReservationStocklistVO;
+import com.logpm.distribution.vo.DistributionRetentionScanVo;
+import com.logpm.distribution.vo.DistributionStockArticleVO;
+import com.logpm.distribution.vo.app.DistributionAppDeliveryListVO;
+import com.logpm.distribution.vo.app.DistributionAppDetailVO;
+import com.logpm.distribution.vo.app.DistributionAppNewDeliveryListVO;
+import com.logpm.distribution.vo.app.DistributionAppParcelListVO;
+import com.logpm.distribution.vo.app.DistributionAppStockArticleVO;
import com.logpm.oldproject.dto.SignPushDataDTO;
import org.apache.ibatis.annotations.Param;
-import org.springblade.common.model.PackageData;
import java.util.List;
import java.util.Map;
@@ -530,11 +549,12 @@ public interface DistributionDeliveryListMapper extends BaseMapper selectDeliveryZeroOrderInfoDetail(Long id, Long id1);
+ List selectDeliveryZeroOrderInfoDetail(@Param("stockArticleId") Long id, @Param("deliveryId") Long id1);
/**
* 配送计划内的定制品计划查询
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
index 036beca02..aafdbe386 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
@@ -1364,7 +1364,7 @@
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.java
index 3e836dfe6..e92c8f1b9 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.java
@@ -18,6 +18,7 @@ package com.logpm.distribution.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.distribution.entity.QualityDeliverEntity;
+import org.apache.ibatis.annotations.Param;
/**
* 配送明细 Mapper 接口
@@ -27,4 +28,13 @@ import com.logpm.distribution.entity.QualityDeliverEntity;
*/
public interface QualityDeliverMapper extends BaseMapper {
+ void deleteByPlanReservationCode(@Param("reservationCode") String reservationCode);
+
+ void deleteEntityById(@Param("id") Long id);
+
+ void delStockingOperation(@Param("id") Long id);
+
+ void delPlanDelivery(@Param("id") Long id);
+
+ void delDistributionCarStart(@Param("id") Long id);
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.xml
index c23aaa783..97031ad79 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.xml
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/QualityDeliverMapper.xml
@@ -6,5 +6,46 @@
+
+ delete from logpm_quality_deliver where plan_reservation_code = #{reservationCode}
+
+
+ delete from logpm_quality_deliver where id = #{id}
+
+
+
+ update logpm_quality_deliver
+ set stockup_code = null,
+ stockup_user_name = null,
+ stockup_finish_time = null,
+ stockup_create_time = null,
+ stock_num = null,
+ stock_allocation = null,
+ stockup_type = null
+ where id = #{id}
+
+
+ update logpm_quality_deliver
+ set plan_train_number = null,
+ delivery_time = null,
+ delivery_type = null,
+ delivery_kind = null,
+ vehicle_name = null,
+ driver_name = null,
+ delivery_fee = null,
+ distribution_company = null,
+ delivery_plan_time = null,
+ plan_type = null,
+ delivery_create_user_name = null,
+ yn_whole_vehicle = null
+ where id = #{id}
+
+
+
+ update logpm_quality_deliver
+ set start_car_user_name = null,
+ start_car_time = null
+ where id = #{id}
+
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java
index 57c334d7c..7da811533 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java
@@ -1,21 +1,20 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
-import com.logpm.distribution.pros.DistributionProperties;
-import com.logpm.distribution.service.IQualityDeliverService;
+import com.logpm.distribution.mapper.QualityDeliverMapper;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
@@ -23,16 +22,15 @@ import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
import org.springblade.common.model.workNode.DeliveryOfPickupPlanVO;
import org.springblade.core.tool.utils.BeanUtil;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* 自提任务生成明细报表
@@ -43,28 +41,14 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class BillPlanReportListener {
+public class BillPlanReportListener implements ReportService {
- @Resource
- private IQualityDeliverService qualityDeliverService;
@Resource
private IFactoryDataClient factoryDataClient;
- @Resource
- private DistributionProperties destinationProperties;
+ private final QualityDeliverMapper qualityDeliverMapper;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillPlan.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillPlan.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getBillPlanReport()) {
- return;
- }
- log.info("自提任务生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -72,20 +56,30 @@ public class BillPlanReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
- if (BizOperationEnums.MODIFY.equals(bizOperation) || BizOperationEnums.DELETE.equals(bizOperation)) {
- // 根据预约单号查询出所有这个预约单下的数据 先置空
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getPlanTrainNumber, null)
- .set(QualityDeliverEntity::getDeliveryTime, null)
- .set(QualityDeliverEntity::getDeliveryType, null)
- .set(QualityDeliverEntity::getVehicleName, null)
- .set(QualityDeliverEntity::getBizCode, null)
- .set(QualityDeliverEntity::getDriverName, null)
- .set(QualityDeliverEntity::getDeliveryPlanTime, null)
- .set(QualityDeliverEntity::getDeliveryCreateUserName, null)
- .eq(QualityDeliverEntity::getBizCode, vo.getPickupBatch())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
+ String reservationCode = vo.getPickupBatch();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverMapper.selectList(Wrappers.lambdaQuery().eq(QualityDeliverEntity::getPlanReservationCode, reservationCode));
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ // 取消预约 将表中数据全删
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ for (QualityDeliverEntity qualityDeliverEntity : qualityDeliverEntities) {
+ sendReport(qualityDeliverEntity, bizOperation);
+ }
+ return;
+ }
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getMallName() + item.getMaterielCode() + item.getIncomingBatch()));
+ }
}
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
@@ -93,25 +87,44 @@ public class BillPlanReportListener {
.warehouseName(bean.getWarehouse())
.warehouseId(warehouseId)
.orderPackageCode(detail.getPackageCode())
+ .planReservationCode(vo.getPickupBatch())
+ .reservationConsignee(vo.getConsignee())
+ .reservationConsigneePhone(vo.getConsigneePhone())
+ .planReservationUser(bean.getOperator())
+ .planReservationTime(bean.getOperatorTime())
+ .planNum(detail.getNumber())
.planTrainNumber(vo.getPickupBatch())
.deliveryTime(vo.getPickUpTime())
.deliveryType("自提")
+ .deliveryKind("自主配送")
.vehicleName(vo.getPickUpPlate())
- .bizCode(vo.getPickupBatch())
.driverName(vo.getConsignee())
+ .bizCode(vo.getPickupBatch())
.deliveryPlanTime(bean.getOperatorTime())
.deliveryCreateUserName(bean.getOperator())
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setPlanNum(1);
- sendReport(bizOperation, qualityDeliverEntity, BizOperationEnums.MODIFY);
+ // 存在订制品则修改 不存在则新增
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.ADD);
+ }
}
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity, BizOperationEnums.MODIFY);
+ // 存在零担则修改 不存在则新增
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.ADD);
+ }
}
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
@@ -120,28 +133,98 @@ public class BillPlanReportListener {
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
Integer number = detail.getNumber();
- for (int i = 0; i < number; i++) {
- QualityDeliverEntity entity = new QualityDeliverEntity();
- BeanUtil.copyProperties(qualityDeliverEntity, entity);
- entity.setPlanNum(1);
- sendReport(bizOperation, entity, BizOperationEnums.ADD);
+ // 存在库存品则修改 不存在则新增
+ // 当前库存品数据大于已有数量 则新增增量部分,如果当前库存品数量小于已有数量 需要删除数据 1 删除操作只针对未备货的数据 2 全删或者只删除部分
+ if (invMap.containsKey(detail.getMallName() + detail.getMaterialCode() + detail.getPickupBatch())) {
+ List qualityDeliverEntities = invMap.get(detail.getMallName() + detail.getMaterialCode() + detail.getPickupBatch());
+ int size = qualityDeliverEntities.size();
+ if (number > size) {
+ for (int i = 0; i < number - size; i++) {
+ QualityDeliverEntity entity = new QualityDeliverEntity();
+ BeanUtil.copyProperties(qualityDeliverEntity, entity);
+ entity.setPlanNum(1);
+ sendReport(entity, BizOperationEnums.ADD);
+ }
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ qualityDeliverEntity.setPlanNum(1);
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ }
+ } else if (number == size) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ qualityDeliverEntity.setPlanNum(1);
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ } else {
+ List collect = qualityDeliverEntities.stream()
+ .filter(item -> StrUtil.isEmpty(item.getOrderPackageCode()))
+ .collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(collect)) {
+ int i = size - number;
+ if (i >= collect.size()) {
+ for (QualityDeliverEntity entity : collect) {
+ sendReport(entity, BizOperationEnums.DELETE);
+ }
+ } else {
+ for (int j = 0; j < i; j++) {
+ sendReport(collect.get(j), BizOperationEnums.DELETE);
+ }
+ }
+ }
+ }
+ } else {
+ for (int i = 0; i < number; i++) {
+ QualityDeliverEntity entity = new QualityDeliverEntity();
+ BeanUtil.copyProperties(qualityDeliverEntity, entity);
+ entity.setPlanNum(1);
+ sendReport(entity, BizOperationEnums.ADD);
+ }
}
}
-
+ }
+ }
+ // 系统中有的包件在当前不存在,则删除
+ Set cmpSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.CMP)).map(PackageData::getPackageCode).collect(Collectors.toSet());
+ for (Map.Entry> entry : cmpMap.entrySet()) {
+ String key = entry.getKey();
+ if (!cmpSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set ltlSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.LTL))
+ .map(i -> i.getProductName() + i.getOrderCode()).collect(Collectors.toSet());
+ for (Map.Entry> entry : ltlMap.entrySet()) {
+ String key = entry.getKey();
+ if (!ltlSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set invSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.INV))
+ .map(i -> i.getMallName() + i.getMaterialCode() + i.getPickupBatch()).collect(Collectors.toSet());
+ for (Map.Entry> entry : invMap.entrySet()) {
+ String key = entry.getKey();
+ if (!invSet.contains(key)) {
+ List value = entry.getValue();
+ for (QualityDeliverEntity entity : value) {
+ sendReport(entity, BizOperationEnums.DELETE);
+ }
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity, BizOperationEnums bizOperationEnums) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(bizOperationEnums).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.PLAN_BILLOFLADING.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillReViewReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillReViewReportListener.java
index 6c7b400ae..fa43d913a 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillReViewReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillReViewReportListener.java
@@ -1,10 +1,12 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
@@ -13,23 +15,21 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
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.model.workNode.PickUpByReCheckVO;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 自提复核生成明细报表
@@ -40,7 +40,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class BillReViewReportListener {
+public class BillReViewReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -49,19 +49,8 @@ public class BillReViewReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillSignReview.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillSignReview.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getBillReviewReport()) {
- return;
- }
- log.info("自提复核生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -69,12 +58,33 @@ public class BillReViewReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
+ String reservationCode = vo.getPickupBatch();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .eq(QualityDeliverEntity::getPlanReservationCode, reservationCode)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ }
+ }
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
.warehouseName(bean.getWarehouse())
.warehouseId(warehouseId)
.orderPackageCode(detail.getPackageCode())
+ .reviewNum(detail.getNumber())
.reviewUserName(bean.getOperator())
.reviewTime(bean.getOperatorTime())
.bizCode(vo.getPickupBatch())
@@ -82,36 +92,49 @@ public class BillReViewReportListener {
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
- qualityDeliverEntity.setLoadNum(1);
- sendReport(bizOperation, qualityDeliverEntity);
+ qualityDeliverEntity.setReviewNum(1);
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ } else {
+ // 不在计划内被扫描到了 特殊处理
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setBizCode(vo.getPickupBatch());
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
qualityDeliverEntity.setMallName(detail.getMallName());
qualityDeliverEntity.setMaterielCode(detail.getMaterialCode());
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (invMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
}
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(BizOperationEnums operationEnums, QualityDeliverEntity qualityDeliverEntity) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.SIGN_BILLOFLADING_REVIEW.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java
index 28fc72b64..b72db0bee 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java
@@ -1,10 +1,12 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
@@ -13,23 +15,21 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
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.model.workNode.PickUpByScanVO;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 自提签收扫描生成明细报表
@@ -40,7 +40,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class BillSignforReportListener {
+public class BillSignforReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -49,19 +49,8 @@ public class BillSignforReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillSign.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillSign.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getBillSignforReport()) {
- return;
- }
- log.info("自提签收扫描生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -69,29 +58,61 @@ public class BillSignforReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
+ String reservationCode = vo.getPickupBatch();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .eq(QualityDeliverEntity::getPlanReservationCode, reservationCode)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ }
+ }
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
.warehouseName(bean.getWarehouse())
.warehouseId(warehouseId)
.orderPackageCode(detail.getPackageCode())
+ .signCarNumber(vo.getCarNumber())
+ .signReservationCode(vo.getPickupBatch())
+ .signTrainNumber(vo.getPickupBatch())
.signUserName(bean.getOperator())
.signTime(bean.getOperatorTime())
- .signReservationCode(vo.getPickupBatch())
+ .signType(vo.getSignType())
.bizCode(vo.getPickupBatch())
.bizStatus(90)
+ .signStatus("已签收")
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setSignNum(1);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ } else {
+ // 不在计划内被扫描到了 特殊处理
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setBizCode(vo.getPickupBatch());
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setSignNum(detail.getNumber());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
qualityDeliverEntity.setMallName(detail.getMallName());
@@ -99,22 +120,27 @@ public class BillSignforReportListener {
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setSignNum(1);
qualityDeliverEntity.setConditions(3);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (invMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
}
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(BizOperationEnums operationEnums, QualityDeliverEntity qualityDeliverEntity) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.SIGN_BILLOFLADING.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/CarStartReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/CarStartReportListener.java
index 75723cd5a..6da3207fa 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/CarStartReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/CarStartReportListener.java
@@ -1,29 +1,27 @@
package com.logpm.distribution.receiver.report;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
import com.logpm.distribution.service.IQualityDeliverService;
import com.logpm.factorydata.feign.IFactoryDataClient;
+import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
+import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.model.CarStartVO;
import org.springblade.common.model.NodeFanoutMsg;
-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 javax.annotation.Resource;
+import java.util.List;
/**
* 发车生成明细报表
@@ -34,7 +32,7 @@ import javax.annotation.Resource;
@Slf4j
@Component
@AllArgsConstructor
-public class CarStartReportListener {
+public class CarStartReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -43,42 +41,53 @@ public class CarStartReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndCarStart.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndCarStart.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getCarStartReport()) {
- return;
- }
- log.info("发车生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
CarStartVO vo = JSONUtil.toBean(entries, CarStartVO.class);
BizOperationEnums bizOperation = bean.getBizOperation();
- if (BizOperationEnums.DELETE.equals(bizOperation)) {
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getStartCarUserName, null)
- .set(QualityDeliverEntity::getStartCarTime, null)
- .eq(QualityDeliverEntity::getLoadTrainNumber, vo.getTrainNumber())
- .eq(QualityDeliverEntity::getLoadLicensePlate, vo.getVehicleName())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
- }
- if (BizOperationEnums.ADD.equals(bizOperation)) {
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getStartCarUserName, vo.getDriverName())
- .set(QualityDeliverEntity::getStartCarTime, bean.getOperatorTime())
- .eq(QualityDeliverEntity::getLoadTrainNumber, vo.getTrainNumber())
- .eq(QualityDeliverEntity::getLoadLicensePlate, vo.getVehicleName())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
+ // 装车车次号 + 车牌
+ String trainNumber = vo.getTrainNumber();
+ String vehicleName = vo.getVehicleName();
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .select(QualityDeliverEntity::getId)
+ .eq(QualityDeliverEntity::getLoadTrainNumber, trainNumber)
+ .eq(QualityDeliverEntity::getLoadLicensePlate, vehicleName)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
+ .startCarUserName(bean.getOperator())
+ .startCarTime(bean.getOperatorTime())
+ .build();
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ }
+ }
+ if (BizOperationEnums.ADD.equals(bizOperation)) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ }
}
}
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.DISTRIBUTION_CAR_START.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
+ }
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ConsigneeArriveReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ConsigneeArriveReportListener.java
index ffb4e2c9f..914daf99c 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ConsigneeArriveReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ConsigneeArriveReportListener.java
@@ -1,29 +1,27 @@
package com.logpm.distribution.receiver.report;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
-import com.logpm.distribution.pros.DistributionProperties;
import com.logpm.distribution.service.IQualityDeliverService;
import com.logpm.factorydata.feign.IFactoryDataClient;
+import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
+import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.model.ConsigneeArriveVO;
import org.springblade.common.model.NodeFanoutMsg;
-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 javax.annotation.Resource;
+import java.util.List;
/**
* 配送到达生成明细报表
@@ -34,65 +32,58 @@ import javax.annotation.Resource;
@Slf4j
@Component
@AllArgsConstructor
-public class ConsigneeArriveReportListener {
+public class ConsigneeArriveReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@Resource
private IFactoryDataClient factoryDataClient;
- @Resource
- private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndConsigneeArrive.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndConsigneeArrive.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getConsigneeArriveReport()) {
- return;
- }
- log.info("配送到达生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
ConsigneeArriveVO vo = JSONUtil.toBean(entries, ConsigneeArriveVO.class);
BizOperationEnums bizOperation = bean.getBizOperation();
- if (BizOperationEnums.DELETE.equals(bizOperation)) {
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getArriveCarUserName, null)
- .set(QualityDeliverEntity::getArriveCarTime, null)
- .set(QualityDeliverEntity::getArriveProvince, null)
- .set(QualityDeliverEntity::getArriveCity, null)
- .set(QualityDeliverEntity::getArriveDistrict, null)
- .set(QualityDeliverEntity::getArriveTownship, null)
- .set(QualityDeliverEntity::getArriveAddress, null)
- .set(QualityDeliverEntity::getArrivePositioning, null)
- .eq(QualityDeliverEntity::getLoadLicensePlate, vo.getVehicleName())
- .eq(QualityDeliverEntity::getLoadTrainNumber, vo.getTrainNumber())
- .eq(QualityDeliverEntity::getBizCode, vo.getReservationCode())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
- }
- if (BizOperationEnums.ADD.equals(bizOperation)) {
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getArriveCarUserName, vo.getDriverName())
- .set(QualityDeliverEntity::getArriveCarTime, bean.getOperatorTime())
- .set(QualityDeliverEntity::getArriveProvince, vo.getProvince())
- .set(QualityDeliverEntity::getArriveCity, vo.getCity())
- .set(QualityDeliverEntity::getArriveDistrict, vo.getDistrict())
- .set(QualityDeliverEntity::getArriveTownship, vo.getTownship())
- .set(QualityDeliverEntity::getArriveAddress, vo.getAddress())
- .set(QualityDeliverEntity::getArrivePositioning, vo.getPositioning())
- .eq(QualityDeliverEntity::getLoadTrainNumber, vo.getTrainNumber())
- .eq(QualityDeliverEntity::getLoadLicensePlate, vo.getVehicleName())
- .eq(QualityDeliverEntity::getBizCode, vo.getReservationCode())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
+ // 装车车次号 + 车牌
+ String reservationCode = vo.getReservationCode();
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .select(QualityDeliverEntity::getId)
+ .eq(QualityDeliverEntity::getPlanReservationCode, reservationCode)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
+ .arriveCarUserName(vo.getDriverName())
+ .arriveCarTime(DateUtil.formatDateTime(bean.getOperatorTime()))
+ .arriveProvince(vo.getProvince())
+ .arriveCity(vo.getCity())
+ .arriveDistrict(vo.getDistrict())
+ .arriveTownship(vo.getTownship())
+ .arriveAddress(vo.getAddress())
+ .arrivePositioning(vo.getPositioning())
+ .build();
+ if (BizOperationEnums.ADD.equals(bizOperation)) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ }
}
}
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.DISTRIBUTION_CAR_ARRIVED.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
+ }
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/DeliverFinishReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/DeliverFinishReportListener.java
index 406513416..ff914be75 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/DeliverFinishReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/DeliverFinishReportListener.java
@@ -25,18 +25,12 @@ import com.logpm.statistics.vo.ExpenseDispatchPriceCategoryVO;
import com.logpm.statistics.vo.ExpenseDispatchPriceVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.BooleanZeroOneEnums;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.workNode.FinishDistributionTrainVO;
import org.springblade.common.utils.GaoDeApiUtil;
-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;
@@ -60,7 +54,7 @@ import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
-public class DeliverFinishReportListener {
+public class DeliverFinishReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -75,38 +69,28 @@ public class DeliverFinishReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillAndFinish.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillAndFinish.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
- public void buildPickUpReport(String msg) {
- this.buildReport(msg);
-
- }
-
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndFinish.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndFinish.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getDeliverFinishReport()) {
- return;
- }
- log.info("车次完成生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
FinishDistributionTrainVO vo = JSONUtil.toBean(entries, FinishDistributionTrainVO.class);
String trainNumber = vo.getTrainNumber();
+ calculateTripCost(trainNumber);
+ // 生成车辆车次成本 发送延时消息生成报表
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_CAR_FINAL_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_CAR_FINAL_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(vo))
+ .delay(10000)
+ .build());
+
+ }
+
+ public void calculateTripCost(String trainNumber) {
// 根据车次查询出包件明细,然后计算对应的成本
List entities = qualityDeliverService.list(Wrappers.lambdaQuery()
.eq(QualityDeliverEntity::getSignTrainNumber, trainNumber)
- .eq(QualityDeliverEntity::getBizStatus, 100)
);
if (CollUtil.isNotEmpty(entities)) {
// 按签收车分组
@@ -190,11 +174,14 @@ public class DeliverFinishReportListener {
if (StrUtil.isNotEmpty(deliveryKind) && StrUtil.equals(deliveryKind, "自主配送")) {
if (StrUtil.isNotEmpty(qualityDeliverEntity.getDeliveryType())
&& (StrUtil.equals(qualityDeliverEntity.getDeliveryType(), "商配") || StrUtil.equals(qualityDeliverEntity.getDeliveryType(), "市配"))) {
+ if(StrUtil.isEmpty(qualityDeliverEntity.getSignCarType())){
+ continue;
+ }
ExpenseDispatchClientDTO expenseDispatchClientDTO = expenseDispatchClient.findPriceByDriverId(qualityDeliverEntity.getWarehouseId(), driverId, qualityDeliverEntity.getSignCarType(), qualityDeliverEntity.getDeliveryType());
if (ObjectUtil.isNotEmpty(expenseDispatchClientDTO)) {
ExpenseDispatchPriceVO priceVO = expenseDispatchClientDTO.getPriceVO();
if (ObjectUtil.isEmpty(priceVO)) {
- return;
+ continue;
}
// 整车计费,则车内的每个包件分摊整车成本费用
if (ynWholeVehicle) {
@@ -218,7 +205,7 @@ public class DeliverFinishReportListener {
BigDecimal totalFreight = BigDecimal.ZERO;
ExpenseDispatchPriceRuleDTO rule = expenseDispatchClientDTO.getRule();
if (ObjectUtil.isEmpty(rule)) {
- return;
+ continue;
}
if (CollUtil.isNotEmpty(priceList)) {
Map priceMap = priceList.stream().collect(Collectors.toMap(ExpenseDispatchPriceCategoryVO::getCategoryId, v -> v));
@@ -888,7 +875,6 @@ public class DeliverFinishReportListener {
}
}
}
-
}
if (CollUtil.isNotEmpty(valueMap)) {
// 修改配送明细信息
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/LoadingReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/LoadingReportListener.java
index 4c1cba4e8..d620e9b32 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/LoadingReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/LoadingReportListener.java
@@ -1,10 +1,12 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
@@ -13,23 +15,20 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.model.DistributionLoadVO;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 装车生成明细报表
@@ -40,7 +39,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class LoadingReportListener {
+public class LoadingReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -49,19 +48,7 @@ public class LoadingReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndLoading.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndLoading.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getLoadingReport()) {
- return;
- }
- log.info("装车生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -69,6 +56,26 @@ public class LoadingReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
+ // 单号 referenceCode
+ String referenceCode = vo.getTrainNumber();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(referenceCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .eq(QualityDeliverEntity::getPlanTrainNumber, referenceCode));
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ }
+ }
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
@@ -83,36 +90,49 @@ public class LoadingReportListener {
.bizCode(vo.getReservationCode())
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
- qualityDeliverEntity.setConditions(1);
+ // qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setLoadNum(1);
- sendReport(bizOperation, qualityDeliverEntity);
+ // 装车包件是计划内的 更新
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
- qualityDeliverEntity.setOrderCode(detail.getOrderCode());
- qualityDeliverEntity.setCategory(detail.getProductName());
- qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity);
+ // qualityDeliverEntity.setOrderCode(detail.getOrderCode());
+ // qualityDeliverEntity.setCategory(detail.getProductName());
+ // qualityDeliverEntity.setConditions(2);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
- qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
- qualityDeliverEntity.setMallName(detail.getMallName());
- qualityDeliverEntity.setMaterielCode(detail.getMaterialCode());
- qualityDeliverEntity.setMaterielName(detail.getMaterialName());
- qualityDeliverEntity.setConditions(3);
- sendReport(bizOperation, qualityDeliverEntity);
+ // qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
+ // qualityDeliverEntity.setMallName(detail.getMallName());
+ // qualityDeliverEntity.setMaterielCode(detail.getMaterialCode());
+ // qualityDeliverEntity.setMaterielName(detail.getMaterialName());
+ // qualityDeliverEntity.setConditions(3);
+ qualityDeliverEntity.setLoadNum(1);
+ if (invMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
}
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.DISTRIBUTION_LOADING.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/PlanReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/PlanReportListener.java
index 3b8961b95..082c22d58 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/PlanReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/PlanReportListener.java
@@ -2,11 +2,10 @@ package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
@@ -16,7 +15,7 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
@@ -25,11 +24,6 @@ import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
import org.springblade.common.model.PlanDriverbindCarVO;
import org.springblade.common.model.ReservationVO;
-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;
@@ -37,6 +31,7 @@ import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -48,7 +43,7 @@ import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
-public class PlanReportListener {
+public class PlanReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -57,19 +52,8 @@ public class PlanReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndPlan.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndPlan.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getLoadingReport()) {
- return;
- }
- log.info("配送计划生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -86,28 +70,26 @@ public class PlanReportListener {
vehicleName = planDriverbindCars.stream().map(PlanDriverbindCarVO::getCarPlate).collect(Collectors.joining(","));
driverName = planDriverbindCars.stream().map(PlanDriverbindCarVO::getDriverName).collect(Collectors.joining(","));
}
- Map invMap = new HashMap<>();
- if (BizOperationEnums.MODIFY.equals(bizOperation) || BizOperationEnums.DELETE.equals(bizOperation)) {
- // 根据预约单号查询出所有这个预约单下的数据 先置空
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getDeliveryTime, null)
- .set(QualityDeliverEntity::getDeliveryType, null)
- .set(QualityDeliverEntity::getDeliveryKind, null)
- .set(QualityDeliverEntity::getVehicleName, null)
- .set(QualityDeliverEntity::getDriverName, null)
- .set(QualityDeliverEntity::getDistributionCompany, null)
- .set(QualityDeliverEntity::getDeliveryPlanTime, null)
- .set(QualityDeliverEntity::getDeliveryCreateUserName, null)
- .set(QualityDeliverEntity::getYnWholeVehicle, null)
- .set(QualityDeliverEntity::getDeliveryFee, null)
- .eq(QualityDeliverEntity::getPlanTrainNumber, vo.getTrainNumber())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- if (BizOperationEnums.DELETE.equals(bizOperation)) {
- wrapper.set(QualityDeliverEntity::getPlanTrainNumber, null);
+ Set reservationCodeSet = reservationVOList.stream().map(ReservationVO::getReservationCode).collect(Collectors.toSet());
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if(CollUtil.isNotEmpty(reservationCodeSet)){
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery().in(QualityDeliverEntity::getPlanReservationCode, reservationCodeSet));
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getPlanReservationCode() + item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getPlanReservationCode() + item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getPlanReservationCode() + item.getMallName() + item.getMaterielCode()));
}
- qualityDeliverService.update(wrapper);
}
for (ReservationVO reservationVO : reservationVOList) {
+ String reservationCode = reservationVO.getReservationCode();
List details = reservationVO.getPackageDataList();
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
@@ -130,59 +112,97 @@ public class PlanReportListener {
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
- qualityDeliverEntity.setPlanNum(1);
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
+ if (cmpMap.containsKey(reservationCode + detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(reservationCode + detail.getPackageCode()).get(0).getId());
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
}
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
- qualityDeliverEntity.setPlanNum(detail.getNumber());
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
+ if (ltlMap.containsKey(reservationCode + detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(reservationCode + detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
}
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
- invMap.put(detail.getMallName() + detail.getMaterialCode(), qualityDeliverEntity);
qualityDeliverEntity.setBizCode(reservationVO.getReservationCode());
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
qualityDeliverEntity.setMallName(detail.getMallName());
qualityDeliverEntity.setMaterielCode(detail.getMaterialCode());
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
- qualityDeliverEntity.setPlanNum(1);
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- invMap.put(detail.getMallName() + detail.getMaterialCode(), qualityDeliverEntity);
+ if (invMap.containsKey(reservationCode + detail.getMallName() + detail.getMaterialCode())) {
+ List qualityDeliverEntities = invMap.get(reservationCode + detail.getMallName() + detail.getMaterialCode());
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ }
+ } else {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ }
+ }
}
}
}
}
- }
- if (CollUtil.isNotEmpty(invMap)) {
- for (Map.Entry entry : invMap.entrySet()) {
- QualityDeliverEntity qualityDeliverEntity = entry.getValue();
- qualityDeliverService.update(qualityDeliverEntity, Wrappers.lambdaUpdate()
- .eq(QualityDeliverEntity::getPlanTrainNumber, qualityDeliverEntity.getPlanTrainNumber())
- .eq(QualityDeliverEntity::getMallName, qualityDeliverEntity.getMallName())
- .eq(QualityDeliverEntity::getMaterielCode, qualityDeliverEntity.getMaterielCode())
- .eq(QualityDeliverEntity::getConditions, 3)
- .lt(QualityDeliverEntity::getBizStatus, 110)
- );
+ // 系统中有的包件在当前不存在,则删除
+ Set cmpSet = details.stream()
+ .filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.CMP))
+ .map(i-> reservationCode + i.getPackageCode()).collect(Collectors.toSet());
+ for (Map.Entry> entry : cmpMap.entrySet()) {
+ String key = entry.getKey();
+ if (!cmpSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set ltlSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.LTL))
+ .map(i -> reservationCode + i.getProductName() + i.getOrderCode()).collect(Collectors.toSet());
+ for (Map.Entry> entry : ltlMap.entrySet()) {
+ String key = entry.getKey();
+ if (!ltlSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set invSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.INV))
+ .map(i -> reservationCode + i.getMallName() + i.getMaterialCode()).collect(Collectors.toSet());
+ for (Map.Entry> entry : invMap.entrySet()) {
+ String key = entry.getKey();
+ if (!invSet.contains(key)) {
+ List value = entry.getValue();
+ for (QualityDeliverEntity entity : value) {
+ sendReport(entity, BizOperationEnums.DELETE);
+ }
+ }
}
}
}
}
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.PLAN_DELIVERY.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
+ }
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java
index 62acef4e6..1505d4851 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/QualityDeliverListener.java
@@ -15,10 +15,12 @@ import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.entity.DistributionStockListEntity;
+import com.logpm.distribution.entity.DistributionStockListInfoEntity;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
+import com.logpm.distribution.service.IDistributionStockListInfoService;
import com.logpm.distribution.service.IDistributionStockListService;
import com.logpm.distribution.service.IQualityDeliverService;
import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient;
@@ -29,16 +31,12 @@ import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
-import org.springblade.common.constant.report.ReportConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.core.redis.cache.BladeRedis;
-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 javax.annotation.Resource;
import java.util.Arrays;
@@ -53,7 +51,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class QualityDeliverListener {
+public class QualityDeliverListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -73,6 +71,9 @@ public class QualityDeliverListener {
@Resource
private IDistributionStockListService stockListService;
+ @Resource
+ private IDistributionStockListInfoService stockListInfoService;
+
@Resource
private IBasicdataFactoryCategoryClient factoryCategoryClient;
@@ -87,62 +88,68 @@ public class QualityDeliverListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = ReportConstants.REPORT_QUALITY_DELIVER_QUEUE, durable = "true"),
- exchange = @Exchange(name = ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE, type = ExchangeTypes.TOPIC),
- key = ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY
- ))
- public void data(String msg) throws InterruptedException {
- if (!destinationProperties.getReport().getQualityDeliver()) {
- return;
- }
- log.info("配送明细基础表处理: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
+ @Transactional
+ public void buildReport(String msg) {
ReportQualityDeliverDTO bean = JSONUtil.toBean(msg, ReportQualityDeliverDTO.class);
+ String node = bean.getNode();
String data = bean.getData();
QualityDeliverEntity qualityDeliverEntity = JSONUtil.toBean(data, QualityDeliverEntity.class);
Integer conditions = qualityDeliverEntity.getConditions();
if (ObjectUtil.equals(bean.getOperation(), BizOperationEnums.MODIFY)) {
- if (ObjectUtil.equals(PackageTypeEnums.CMP.getCode(), conditions)) {
- // 定制品
- LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
- if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
- wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
- } else {
- wrapper.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode());
- }
- wrapper.lt(QualityDeliverEntity::getBizStatus, 110);
- saveOrUpdate(wrapper, qualityDeliverEntity);
- } else if (ObjectUtil.equals(PackageTypeEnums.INV.getCode(), conditions)) {
- // 库存品
- LambdaQueryWrapper wrapper = buildInvWrapper(qualityDeliverEntity);
- if (wrapper == null) {
- return;
- }
- // 查询不存在时更新,存在时修改
- saveOrUpdate(wrapper, qualityDeliverEntity);
- } else if (ObjectUtil.equals(PackageTypeEnums.LTL.getCode(), conditions)) {
- // 零担
- LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
- if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
- wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
- } else {
- wrapper.eq(QualityDeliverEntity::getOrderCode, qualityDeliverEntity.getOrderCode())
- .eq(QualityDeliverEntity::getCategory, qualityDeliverEntity.getCategory());
- }
- wrapper.lt(QualityDeliverEntity::getBizStatus, 110);
- if (StrUtil.isNotEmpty(qualityDeliverEntity.getBizCode())) {
- wrapper.eq(QualityDeliverEntity::getBizCode, qualityDeliverEntity.getBizCode());
- }
- saveOrUpdate(wrapper, qualityDeliverEntity);
- }
+ qualityDeliverService.updateById(qualityDeliverEntity);
+ // if (ObjectUtil.equals(PackageTypeEnums.CMP.getCode(), conditions)) {
+ // // 定制品
+ // LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ // if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
+ // wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
+ // } else {
+ // wrapper.eq(QualityDeliverEntity::getOrderPackageCode, qualityDeliverEntity.getOrderPackageCode());
+ // }
+ // wrapper.lt(QualityDeliverEntity::getBizStatus, 110);
+ // saveOrUpdate(wrapper, qualityDeliverEntity);
+ // } else if (ObjectUtil.equals(PackageTypeEnums.INV.getCode(), conditions)) {
+ // // 库存品
+ // LambdaQueryWrapper wrapper = buildInvWrapper(qualityDeliverEntity);
+ // if (wrapper == null) {
+ // return;
+ // }
+ // // 查询不存在时更新,存在时修改
+ // saveOrUpdate(wrapper, qualityDeliverEntity);
+ // } else if (ObjectUtil.equals(PackageTypeEnums.LTL.getCode(), conditions)) {
+ // // 零担
+ // LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ // if (ObjectUtil.isNotEmpty(qualityDeliverEntity.getId())) {
+ // wrapper.eq(QualityDeliverEntity::getId, qualityDeliverEntity.getId());
+ // } else {
+ // wrapper.eq(QualityDeliverEntity::getOrderCode, qualityDeliverEntity.getOrderCode())
+ // .eq(QualityDeliverEntity::getCategory, qualityDeliverEntity.getCategory());
+ // }
+ // wrapper.lt(QualityDeliverEntity::getBizStatus, 110);
+ // if (StrUtil.isNotEmpty(qualityDeliverEntity.getBizCode())) {
+ // wrapper.eq(QualityDeliverEntity::getBizCode, qualityDeliverEntity.getBizCode());
+ // }
+ // saveOrUpdate(wrapper, qualityDeliverEntity);
+ // }
}
if (ObjectUtil.equals(bean.getOperation(), BizOperationEnums.ADD)) {
- if (ObjectUtil.equals(PackageTypeEnums.INV.getCode(), conditions)) {
- // 查询不存在时更新,存在时修改
- saveOrUpdate(null, qualityDeliverEntity);
+ // 查询不存在时更新,存在时修改
+ saveOrUpdate(null, qualityDeliverEntity);
+ }
+ if (ObjectUtil.equals(bean.getOperation(), BizOperationEnums.DELETE)) {
+ if (StrUtil.equals(node, WorkNodeEnums.PLANNED_RESERVATION.getValue())){
+ qualityDeliverService.deleteEntityById(qualityDeliverEntity.getId());
+ }
+ if (StrUtil.equals(node, WorkNodeEnums.STOCKING_OPERATION.getValue())){
+ qualityDeliverService.delStockingOperation(qualityDeliverEntity.getId());
+ }
+ if (StrUtil.equals(node, WorkNodeEnums.PLAN_DELIVERY.getValue())){
+ qualityDeliverService.delPlanDelivery(qualityDeliverEntity.getId());
+ }
+ if (StrUtil.equals(node, WorkNodeEnums.DISTRIBUTION_CAR_START.getValue())){
+ qualityDeliverService.delDistributionCarStart(qualityDeliverEntity.getId());
+ }
+ if (StrUtil.equals(node, WorkNodeEnums.PLAN_BILLOFLADING.getValue())){
+ qualityDeliverService.deleteEntityById(qualityDeliverEntity.getId());
}
}
}
@@ -265,9 +272,16 @@ public class QualityDeliverListener {
String brandName = stockList.getBrandName();
String sourceType = stockList.getSourceType();
if (StrUtil.equals(sourceType, "1")) {
- DistributionParcelListEntity parcelListEntity = getDistributionParcelListEntity(qualityDeliverEntity.getOrderPackageCode(), qualityDeliverEntity.getWarehouseId());
- buildCmpBasicInfo(qualityDeliverEntity, parcelListEntity);
+ // 定制品转的库存品先查出包条码
+ List list = stockListInfoService.list(Wrappers.lambdaQuery().eq(DistributionStockListInfoEntity::getStockListId, stockList.getId()));
+ if (CollUtil.isNotEmpty(list)) {
+ DistributionStockListInfoEntity distributionStockListInfoEntity = list.get(0);
+ DistributionParcelListEntity parcelListEntity = getDistributionParcelListEntity(distributionStockListInfoEntity.getPackageCode(), qualityDeliverEntity.getWarehouseId());
+ buildCmpBasicInfo(qualityDeliverEntity, parcelListEntity);
+ }
} else {
+ qualityDeliverEntity.setBeginWarehouseName(stockList.getWarehouseName());
+ qualityDeliverEntity.setBeginWarehouseInTime(stockList.getWarehousingTime());
qualityDeliverEntity.setBrandName(brandName);
qualityDeliverEntity.setMallCode(stockList.getMarketCode());
qualityDeliverEntity.setMallId(stockList.getMarketId());
@@ -313,6 +327,10 @@ public class QualityDeliverListener {
// 物料编码
qualityDeliverEntity.setMaterielCode(parcelListEntity.getMaterialCode());
}
+ // 包条码
+ if (StrUtil.isNotEmpty(parcelListEntity.getOrderPackageCode())) {
+ qualityDeliverEntity.setOrderPackageCode(parcelListEntity.getOrderPackageCode());
+ }
// 订单号
qualityDeliverEntity.setOrderCode(parcelListEntity.getOrderCode());
// 工厂车次号
@@ -352,12 +370,14 @@ public class QualityDeliverListener {
private void buildOrderInfo(QualityDeliverEntity qualityDeliverEntity, Long warehouseId, String orderCode) {
DistributionStockArticleEntity stockArticleEntity = getDistributionStockArticleEntity(warehouseId, orderCode);
if (ObjectUtil.isNotEmpty(stockArticleEntity)) {
+ qualityDeliverEntity.setOrderNumber(stockArticleEntity.getTotalNumber());
// 客户信息
qualityDeliverEntity.setCustomName(stockArticleEntity.getCustomerName());
qualityDeliverEntity.setCustomPhone(stockArticleEntity.getCustomerTelephone());
qualityDeliverEntity.setCustomAddress(stockArticleEntity.getCustomerAddress());
// 商场信息
qualityDeliverEntity.setMallName(stockArticleEntity.getMallName());
+ qualityDeliverEntity.setMallId(stockArticleEntity.getMallId());
qualityDeliverEntity.setMallCode(stockArticleEntity.getMallCode());
// 服务号
qualityDeliverEntity.setServiceNumber(stockArticleEntity.getServiceNumber());
@@ -390,6 +410,7 @@ public class QualityDeliverListener {
if (StrUtil.isNotEmpty(waybillNumber)) {
WarehouseWaybillEntity byWaybillNo = getWarehouseWaybillEntity(waybillNumber);
if (ObjectUtil.isNotEmpty(byWaybillNo)) {
+ qualityDeliverEntity.setOpenOrderTime(byWaybillNo.getDocumentMakingTime());
// 运单发货信息
qualityDeliverEntity.setShipperUnitId(byWaybillNo.getShipperId());
qualityDeliverEntity.setShipperUnit(byWaybillNo.getShipper());
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReViewReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReViewReportListener.java
index af4683960..b0eb33f8b 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReViewReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReViewReportListener.java
@@ -1,10 +1,12 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
@@ -13,23 +15,21 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.model.DistributionSignforVO;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 文员复核生成明细报表
@@ -40,7 +40,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class ReViewReportListener {
+public class ReViewReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -49,25 +49,34 @@ public class ReViewReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndrecheck.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndrecheck.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getReViewReport()) {
- return;
- }
- log.info("文员复核生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
DistributionSignforVO vo = JSONUtil.toBean(entries, DistributionSignforVO.class);
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
+ String reservationCode = vo.getReservationCode();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .eq(QualityDeliverEntity::getPlanReservationCode, reservationCode)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ }
+ }
List details = vo.getPackageDataList();
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
@@ -77,39 +86,53 @@ public class ReViewReportListener {
.orderPackageCode(detail.getPackageCode())
.reviewUserName(bean.getOperator())
.reviewTime(bean.getOperatorTime())
+ .reviewNum(detail.getNumber())
.bizCode(vo.getReservationCode())
.bizStatus(100)
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ } else {
+ // 不在计划内被扫描到了 特殊处理
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
qualityDeliverEntity.setMallName(detail.getMallName());
qualityDeliverEntity.setMaterielCode(detail.getMaterialCode());
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (invMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
}
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(BizOperationEnums operationEnums, QualityDeliverEntity qualityDeliverEntity) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.CLERK_REVIEW.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java
new file mode 100644
index 000000000..0d2e9331e
--- /dev/null
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java
@@ -0,0 +1,445 @@
+package com.logpm.distribution.receiver.report;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.logpm.distribution.pros.DistributionProperties;
+import com.logpm.distribution.service.IQualityDeliverService;
+import com.rabbitmq.client.Channel;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.report.ReportConstants;
+import org.springblade.common.model.workNode.FinishDistributionTrainVO;
+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.amqp.support.AmqpHeaders;
+import org.springframework.messaging.handler.annotation.Header;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 配送明细报表作业节点监听器
+ *
+ * @author zhaoqiaobo
+ * @create 2024-03-18 0:02
+ */
+@Slf4j
+@Component
+@AllArgsConstructor
+public class ReportListener {
+
+ private final DistributionProperties destinationProperties;
+ private final List reportServices;
+ private final IQualityDeliverService qualityDeliverService;
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillPlan.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillPlan.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void billPlanReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getBillPlanReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("自提任务生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(BillPlanReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("自提任务生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillSignReview.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillSignReview.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void billReViewReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getBillReviewReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("自提复核生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(BillReViewReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("自提复核生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillSign.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillSign.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void billSignforReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getBillSignforReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("自提签收扫描生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(BillSignforReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("自提签收扫描生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndCarStart.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndCarStart.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void carStartReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getCarStartReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("发车生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(CarStartReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("发车生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndConsigneeArrive.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndConsigneeArrive.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void consigneeArriveReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getConsigneeArriveReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("配送到达生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(ConsigneeArriveReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("配送到达生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndFinish.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndFinish.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void deliverFinishReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getDeliverFinishReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("车次完成生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(DeliverFinishReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("车次完成生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndLoading.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndLoading.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void loadingReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getLoadingReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("装车生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(LoadingReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("装车生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndPlan.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndPlan.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void planReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getPlanReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("配送计划生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(PlanReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("配送计划生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.reservation.OwnReservation.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.reservation.OwnReservation.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void reservationPlanReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getReservationPlanReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("预约计划生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(ReservationPlanReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("预约计划生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void returnWarehouseReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getReturnWarehouseReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("回库生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(ReturnWarehouseReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("回库生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndrecheck.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndrecheck.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void reViewReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getReViewReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("文员复核生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(ReViewReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("文员复核生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.DeliveryAndSignfor.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndSignfor.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void signforReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getSignforReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("签收扫描生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(SignforReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("签收扫描生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = FanoutConstants.distribution.stock.QUEUE.REPORT, durable = "true"),
+ exchange = @Exchange(name = FanoutConstants.distribution.stock.EXCHANGE, type = ExchangeTypes.FANOUT)
+ ), ackMode = "MANUAL")
+ public void stockReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getStockReport()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("备货生成明细报表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(StockReportListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("备货生成明细报表失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = ReportConstants.REPORT_QUALITY_DELIVER_QUEUE, durable = "true"),
+ exchange = @Exchange(name = ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE, type = ExchangeTypes.TOPIC),
+ key = ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY
+ ), ackMode = "MANUAL")
+ public void qualityDeliverListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ Boolean flag = Boolean.TRUE;
+ if (!destinationProperties.getReport().getQualityDeliver()) {
+ flag = Boolean.FALSE;
+ }
+ log.info("配送明细基础表: {}", msg);
+ if (StrUtil.isEmpty(msg)) {
+ flag = Boolean.FALSE;
+ }
+ if (flag) {
+ try {
+ selectReportService(QualityDeliverListener.class).buildReport(msg);
+ } catch (Exception e) {
+ log.error("配送明细基础表处理失败: {}", e.getMessage());
+ }
+ }
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @RabbitListener(bindings = @QueueBinding(
+ value = @Queue(name = ReportConstants.REPORT_QUALITY_CAR_FINAL_QUEUE, durable = "true"),
+ exchange = @Exchange(name = ReportConstants.REPORT_QUALITY_CAR_FINAL_EXCHANGE, type = ExchangeTypes.TOPIC),
+ key = ReportConstants.REPORT_QUALITY_CAR_FINAL_ROUTINGKEY
+ ), ackMode = "MANUAL")
+ public void carExpenseDispatchDetailFinal(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
+ log.info("生成车辆车次成本报表: {}", msg);
+ try {
+ FinishDistributionTrainVO vo = JSONUtil.toBean(msg, FinishDistributionTrainVO.class);
+ String trainNumber = vo.getTrainNumber();
+ qualityDeliverService.carExpenseDispatchDetailFinal(trainNumber);
+ } catch (Exception e) {
+ log.error("生成车辆车次成本报表失败: {}", e.getMessage());
+ }
+
+ try {
+ channel.basicAck(tag, false);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+ private ReportService selectReportService(Class extends ReportService> clazz) {
+ // 根据某些条件选择具体的实现类
+ for (ReportService reportService : reportServices) {
+ if (clazz.isInstance(reportService)) {
+ return reportService;
+ }
+ }
+ // 默认返回第一个实现类
+ return reportServices.get(0);
+ }
+
+}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportService.java
new file mode 100644
index 000000000..54e257385
--- /dev/null
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportService.java
@@ -0,0 +1,11 @@
+package com.logpm.distribution.receiver.report;
+
+/**
+ * @Author: zqb
+ * @Date: 2024/12/10
+ */
+public interface ReportService {
+
+ void buildReport(String msg);
+
+}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java
index 703ae20ed..2079f89cf 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReservationPlanReportListener.java
@@ -1,21 +1,20 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
-import com.logpm.distribution.pros.DistributionProperties;
-import com.logpm.distribution.service.IQualityDeliverService;
+import com.logpm.distribution.mapper.QualityDeliverMapper;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
@@ -23,16 +22,14 @@ import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
import org.springblade.common.model.ReservationVO;
import org.springblade.core.tool.utils.BeanUtil;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* 预约计划生成明细报表
@@ -43,29 +40,13 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class ReservationPlanReportListener {
+public class ReservationPlanReportListener implements ReportService {
- @Resource
- private IQualityDeliverService qualityDeliverService;
- @Resource
- private IFactoryDataClient factoryDataClient;
- @Resource
- private DistributionProperties destinationProperties;
+ private final IFactoryDataClient factoryDataClient;
+ private final QualityDeliverMapper qualityDeliverMapper;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.reservation.OwnReservation.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.reservation.OwnReservation.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
- public void buildReport(String msg) throws InterruptedException {
- if (!destinationProperties.getReport().getReservationPlanReport()) {
- return;
- }
-
- log.info("预约计划生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
+ @Transactional(rollbackFor = Exception.class)
+ public void buildReport(String msg) {
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -73,21 +54,30 @@ public class ReservationPlanReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
- if (BizOperationEnums.MODIFY.equals(bizOperation) || BizOperationEnums.DELETE.equals(bizOperation)) {
- // 根据预约单号查询出所有这个预约单下的数据 先置空
- LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate()
- .set(QualityDeliverEntity::getPlanReservationCreateTime, null)
- .set(QualityDeliverEntity::getPlanReservationCode, null)
- .set(QualityDeliverEntity::getBizCode, null)
- .set(QualityDeliverEntity::getPlanReservationTime, null)
- .set(QualityDeliverEntity::getPlanReservationUser, null)
- .set(QualityDeliverEntity::getPlanNum, null)
- .set(QualityDeliverEntity::getReservationConsignee, null)
- .set(QualityDeliverEntity::getReservationConsigneePhone, null)
- .set(QualityDeliverEntity::getReservationConsigneeAddr, null)
- .eq(QualityDeliverEntity::getPlanReservationCode, vo.getReservationCode())
- .ne(QualityDeliverEntity::getBizStatus, 110);
- qualityDeliverService.update(wrapper);
+ String reservationCode = vo.getReservationCode();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverMapper.selectList(Wrappers.lambdaQuery().eq(QualityDeliverEntity::getPlanReservationCode, reservationCode));
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ // 取消预约 将表中数据全删
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ for (QualityDeliverEntity qualityDeliverEntity : qualityDeliverEntities) {
+ sendReport(qualityDeliverEntity, bizOperation);
+ }
+ return;
+ }
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getMallName() + item.getMaterielCode() + item.getIncomingBatch()));
+ }
}
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
@@ -101,7 +91,6 @@ public class ReservationPlanReportListener {
.planReservationTime(vo.getReservationDate())
.planReservationUser(bean.getOperator())
.planNum(detail.getNumber())
- // .serviceType(vo.getDeliveryType())
.reservationConsignee(vo.getConsignee())
.reservationConsigneePhone(vo.getDeliveryPhone())
.reservationConsigneeAddr(vo.getDeliveryAddress())
@@ -109,13 +98,25 @@ public class ReservationPlanReportListener {
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setPlanNum(1);
- sendReport(bizOperation, qualityDeliverEntity, BizOperationEnums.MODIFY);
+ // 存在订制品则修改 不存在则新增
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.ADD);
+ }
}
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity, BizOperationEnums.MODIFY);
+ // 存在零担则修改 不存在则新增
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.ADD);
+ }
}
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
@@ -124,28 +125,98 @@ public class ReservationPlanReportListener {
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
Integer number = detail.getNumber();
- for (int i = 0; i < number; i++) {
- QualityDeliverEntity entity = new QualityDeliverEntity();
- BeanUtil.copyProperties(qualityDeliverEntity, entity);
- entity.setPlanNum(1);
- sendReport(bizOperation, entity, BizOperationEnums.ADD);
+ // 存在库存品则修改 不存在则新增
+ // 当前库存品数据大于已有数量 则新增增量部分,如果当前库存品数量小于已有数量 需要删除数据 1 删除操作只针对未备货的数据 2 全删或者只删除部分
+ if (invMap.containsKey(detail.getMallName() + detail.getMaterialCode() + detail.getPickupBatch())) {
+ List qualityDeliverEntities = invMap.get(detail.getMallName() + detail.getMaterialCode() + detail.getPickupBatch());
+ int size = qualityDeliverEntities.size();
+ if (number > size) {
+ for (int i = 0; i < number - size; i++) {
+ QualityDeliverEntity entity = new QualityDeliverEntity();
+ BeanUtil.copyProperties(qualityDeliverEntity, entity);
+ entity.setPlanNum(1);
+ sendReport(entity, BizOperationEnums.ADD);
+ }
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ qualityDeliverEntity.setPlanNum(1);
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ }
+ } else if (number == size) {
+ for (QualityDeliverEntity deliverEntity : qualityDeliverEntities) {
+ qualityDeliverEntity.setId(deliverEntity.getId());
+ qualityDeliverEntity.setPlanNum(1);
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ } else {
+ List collect = qualityDeliverEntities.stream()
+ .filter(item -> StrUtil.isEmpty(item.getOrderPackageCode()))
+ .collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(collect)) {
+ int i = size - number;
+ if (i >= collect.size()) {
+ for (QualityDeliverEntity entity : collect) {
+ sendReport(entity, BizOperationEnums.DELETE);
+ }
+ } else {
+ for (int j = 0; j < i; j++) {
+ sendReport(collect.get(j), BizOperationEnums.DELETE);
+ }
+ }
+ }
+ }
+ } else {
+ for (int i = 0; i < number; i++) {
+ QualityDeliverEntity entity = new QualityDeliverEntity();
+ BeanUtil.copyProperties(qualityDeliverEntity, entity);
+ entity.setPlanNum(1);
+ sendReport(entity, BizOperationEnums.ADD);
+ }
+ }
+ }
+ }
+ // 系统中有的包件在当前不存在,则删除
+ Set cmpSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.CMP)).map(PackageData::getPackageCode).collect(Collectors.toSet());
+ for (Map.Entry> entry : cmpMap.entrySet()) {
+ String key = entry.getKey();
+ if (!cmpSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set ltlSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.LTL))
+ .map(i -> i.getProductName() + i.getOrderCode()).collect(Collectors.toSet());
+ for (Map.Entry> entry : ltlMap.entrySet()) {
+ String key = entry.getKey();
+ if (!ltlSet.contains(key)) {
+ sendReport(entry.getValue().get(0), BizOperationEnums.DELETE);
+ }
+ }
+ Set invSet = details.stream().filter(item -> ObjectUtil.equals(item.getPackageType(), PackageTypeEnums.INV))
+ .map(i -> i.getMallName() + i.getMaterialCode() + i.getPickupBatch()).collect(Collectors.toSet());
+ for (Map.Entry> entry : invMap.entrySet()) {
+ String key = entry.getKey();
+ if (!invSet.contains(key)) {
+ List value = entry.getValue();
+ for (QualityDeliverEntity entity : value) {
+ sendReport(entity, BizOperationEnums.DELETE);
}
}
-
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity, BizOperationEnums bizOperationEnums) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(bizOperationEnums).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.PLANNED_RESERVATION.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java
index 6aec684f1..6b3f1010a 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java
@@ -2,7 +2,6 @@ package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
@@ -13,18 +12,12 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.model.DistributionSignforVO;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
-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;
@@ -40,7 +33,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class ReturnWarehouseReportListener {
+public class ReturnWarehouseReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -49,19 +42,8 @@ public class ReturnWarehouseReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getReturnWarehouseReport()) {
- return;
- }
- log.info("回库生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -78,7 +60,7 @@ public class ReturnWarehouseReportListener {
.reviewUserName(bean.getOperator())
.reviewTime(bean.getOperatorTime())
.bizCode(vo.getReservationCode())
- .bizStatus(100)
+ .bizStatus(-1)
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/SignforReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/SignforReportListener.java
index fef058866..a89cca8fb 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/SignforReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/SignforReportListener.java
@@ -2,10 +2,12 @@ package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties;
@@ -14,23 +16,21 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.model.DistributionSignforVO;
import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 签收扫描生成明细报表
@@ -41,7 +41,7 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class SignforReportListener {
+public class SignforReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@@ -50,19 +50,8 @@ public class SignforReportListener {
@Resource
private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.DeliveryAndSignfor.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndSignfor.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getSignforReport()) {
- return;
- }
- log.info("签收扫描生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -70,6 +59,26 @@ public class SignforReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
+ String reservationCode = vo.getReservationCode();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(reservationCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery()
+ .eq(QualityDeliverEntity::getPlanReservationCode, reservationCode)
+ );
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ }
+ }
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
@@ -84,19 +93,30 @@ public class SignforReportListener {
.signTrainNumber(vo.getTrainNumber())
.signReservationCode(vo.getReservationCode())
.signType(vo.getOperatMode())
+ .signCarTypeId(vo.getCarTypeId())
+ .signCarType(vo.getCarType())
.bizCode(vo.getReservationCode())
.bizStatus(90)
+ .signStatus("已签收")
.build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setSignNum(1);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ } else {
+ // 不在计划内被扫描到了 特殊处理
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setSignNum(detail.getNumber());
qualityDeliverEntity.setConditions(2);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch());
qualityDeliverEntity.setMallName(detail.getMallName());
@@ -104,22 +124,27 @@ public class SignforReportListener {
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setSignNum(1);
qualityDeliverEntity.setConditions(3);
- sendReport(bizOperation, qualityDeliverEntity);
+ if (invMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
+ sendReport(BizOperationEnums.MODIFY, qualityDeliverEntity);
+ }
}
}
}
}
- private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) {
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
- factoryDataClient.sendMessage(SendMsg.builder()
- .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
- .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
- .message(JSONUtil.toJsonStr(dto))
- .delay(3000)
- .build());
- }
+ private void sendReport(BizOperationEnums operationEnums, QualityDeliverEntity qualityDeliverEntity) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getValue())
+ .build();
+ factoryDataClient.sendMessage(SendMsg.builder()
+ .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
+ .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
+ .message(JSONUtil.toJsonStr(dto))
+ .delay(3000)
+ .build());
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/StockReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/StockReportListener.java
index 8e65940a9..b8a37f4df 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/StockReportListener.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/StockReportListener.java
@@ -1,6 +1,7 @@
package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
@@ -8,29 +9,26 @@ import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity;
-import com.logpm.distribution.pros.DistributionProperties;
import com.logpm.distribution.service.IQualityDeliverService;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.common.constant.broadcast.FanoutConstants;
+import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants;
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.model.StockUpVO;
-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 javax.annotation.Resource;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 备货生成明细报表
@@ -41,28 +39,15 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
-public class StockReportListener {
+public class StockReportListener implements ReportService {
@Resource
private IQualityDeliverService qualityDeliverService;
@Resource
private IFactoryDataClient factoryDataClient;
- @Resource
- private DistributionProperties destinationProperties;
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = FanoutConstants.distribution.stock.QUEUE.REPORT, durable = "true"),
- exchange = @Exchange(name = FanoutConstants.distribution.stock.EXCHANGE, type = ExchangeTypes.FANOUT)
- ))
-// @Transactional(rollbackFor = Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void buildReport(String msg) {
- if (!destinationProperties.getReport().getStockReport()) {
- return;
- }
- log.info("备货生成明细报表: {}", msg);
- if (StrUtil.isEmpty(msg)) {
- return;
- }
NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main);
@@ -70,6 +55,25 @@ public class StockReportListener {
Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List details = vo.getPackageDataList();
+ // 单号 referenceCode
+ String referenceCode = vo.getReferenceCode();
+ Map> cmpMap = new HashMap<>();
+ Map> ltlMap = new HashMap<>();
+ Map> invMap = new HashMap<>();
+ if (StrUtil.isNotEmpty(referenceCode)) {
+ List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery().eq(QualityDeliverEntity::getPlanReservationCode, referenceCode));
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ cmpMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getOrderPackageCode()));
+ ltlMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode()));
+ invMap = qualityDeliverEntities.stream()
+ .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode()))
+ .collect(Collectors.groupingBy(item -> item.getMallName() + item.getMaterielCode()));
+ }
+ }
if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
@@ -86,16 +90,26 @@ public class StockReportListener {
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1);
qualityDeliverEntity.setStockNum(1);
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- sendReport(qualityDeliverEntity);
+ if (cmpMap.containsKey(detail.getPackageCode())) {
+ qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId());
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
}
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode());
qualityDeliverEntity.setCategory(detail.getProductName());
qualityDeliverEntity.setConditions(2);
qualityDeliverEntity.setStockNum(detail.getNumber());
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- sendReport(qualityDeliverEntity);
+ if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
+ qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ } else {
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
}
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setBizCode(vo.getReferenceCode());
@@ -105,19 +119,26 @@ public class StockReportListener {
qualityDeliverEntity.setMaterielName(detail.getMaterialName());
qualityDeliverEntity.setConditions(3);
qualityDeliverEntity.setStockNum(1);
- if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) {
- List list = qualityDeliverService.list(Wrappers.lambdaQuery()
- .select(QualityDeliverEntity::getId)
- .eq(QualityDeliverEntity::getBizCode, qualityDeliverEntity.getBizCode())
- .eq(QualityDeliverEntity::getMallName, qualityDeliverEntity.getMallName())
- .eq(QualityDeliverEntity::getMaterielCode, qualityDeliverEntity.getMaterielCode())
- .isNull(QualityDeliverEntity::getOrderPackageCode)
- .lt(QualityDeliverEntity::getBizStatus, 110)
- .last(" limit 1")
- );
- if(CollUtil.isNotEmpty(list)){
- qualityDeliverEntity.setId(list.get(0).getId());
- sendReport(qualityDeliverEntity);
+ if (invMap.containsKey(detail.getMallName() + detail.getMaterialCode())) {
+ List qualityDeliverEntities = invMap.get(detail.getMallName() + detail.getMaterialCode());
+ if (CollUtil.isNotEmpty(qualityDeliverEntities)) {
+ if (BizOperationEnums.DELETE.equals(bizOperation)) {
+ List collect = qualityDeliverEntities.stream()
+ .filter(i -> StrUtil.equals(i.getOrderPackageCode(), detail.getPackageCode()))
+ .collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(collect)) {
+ qualityDeliverEntity.setId(collect.get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.DELETE);
+ }
+ } else {
+ List collect = qualityDeliverEntities.stream()
+ .filter( i -> StrUtil.isEmpty(i.getStockupCode()))
+ .collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(collect)) {
+ qualityDeliverEntity.setId(collect.get(0).getId());
+ sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
+ }
+ }
}
}
}
@@ -125,8 +146,12 @@ public class StockReportListener {
}
}
- private void sendReport(QualityDeliverEntity qualityDeliverEntity) {
- ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build();
+ private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
+ ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
+ .data(JSONUtil.toJsonStr(qualityDeliverEntity))
+ .operation(operationEnums)
+ .node(WorkNodeEnums.STOCKING_OPERATION.getValue())
+ .build();
factoryDataClient.sendMessage(SendMsg.builder()
.exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
.routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IQualityDeliverService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IQualityDeliverService.java
index 87ebb1605..7be05663f 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IQualityDeliverService.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IQualityDeliverService.java
@@ -32,4 +32,14 @@ public interface IQualityDeliverService extends BaseService buildNodeFanoutMsgByStock(DistributionDeliveryListEntity distributionDeliveryListEntity, DistributionReservationEntity reservationEntity, List ts) {
+ private NodeFanoutMsg buildNodeFanoutMsgByStock(DistributionDeliveryListEntity distributionDeliveryListEntity, List ts) {
NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
nodeFanoutMsg.setNode(WorkNodeEnums.DISTRIBUTION_LOADING);
@@ -1702,6 +1729,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl updatePackageList = new ArrayList<>();
List logList = new ArrayList<>();
List orderCodes = new ArrayList<>();
+
+
+ List kucuns = new ArrayList<>();
+ List dingzhis= new ArrayList<>();
+ List lingdans = new ArrayList<>();
+
for (DistributionReservationStockarticleEntity reservationStockarticleEntity : reservationStockarticleEntityList) {
switch (reservationStockarticleEntity.getIsZero()) {
case "0":
@@ -1764,6 +1797,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildNodeFanoutMsgByPackage(deliveryList, dingzhis);
+ distributionNodeWorkService.nodeLoading(nodeFanoutMsg, AuthUtil.getUser());
+ }
+ if(Func.isNotEmpty(kucuns)){
+ NodeFanoutMsg nodeFanoutMsg = buildNodeFanoutMsgByStock(deliveryList, kucuns);
+ distributionNodeWorkService.nodeLoading(nodeFanoutMsg, AuthUtil.getUser());
+ }
+ if(Func.isNotEmpty(lingdans)){
+ NodeFanoutMsg nodeFanoutMsg = buildNodeFanoutMsgByZeroOrder(deliveryList, lingdans);
+ distributionNodeWorkService.nodeLoading(nodeFanoutMsg, AuthUtil.getUser());
+ }
+
+
+
+
+
return Resp.scanSuccess("操作成功", "装车成功");
}
@@ -2211,8 +2269,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildNodeFanoutMsgByStock(distributionDeliveryListEntity, reservationEntity, ts);
+ NodeFanoutMsg nodeFanoutMsg = buildNodeFanoutMsgByStock(distributionDeliveryListEntity, ts);
distributionNodeWorkService.nodeLoading(nodeFanoutMsg, AuthUtil.getUser());
String msg = getLoadingMsg(distrilbutionloadingscanDTO);
return Resp.scanSuccess("扫描成功", msg);
@@ -4957,7 +5014,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildNodeFanoutMsgByStock(deliveryListEntity, reservationEntity2, ts);
+ NodeFanoutMsg nodeFanoutMsg = buildNodeFanoutMsgByStock(deliveryListEntity, ts);
distributionNodeWorkService.nodeLoading(nodeFanoutMsg, AuthUtil.getUser());
}
break;
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 3ae99b56a..3d87a0e0c 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
@@ -188,7 +188,7 @@ public class DistributionNodeWorkServiceImpl implements IDistributionNodeWorkSer
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
} catch (Exception e) {
- log.error("推送工厂失败:{}", e);
+ log.error("推送工厂失败:", e);
}
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
index 1f14cc663..3f58afdab 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
@@ -1913,6 +1913,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl detailEntities = distributionReservationMapper.selectInventoryListByReservation(distrilbutionloadingscanDTO.getReservationId());
List jsonObjects = new ArrayList<>();
if (Func.isNotEmpty(split)) {
+
+
+ List pushList = new ArrayList<>();
+ DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper.selectById(distrilbutionloadingscanDTO.getDeliveryId());
for (String s : split) {
List inventoryPackage = detailEntities.stream().filter(f -> Func.isNotEmpty(f.getStockPackageCode()) && f.getStockPackageCode().equals(s)).collect(Collectors.toList());
if (Func.isNotEmpty(inventoryPackage) && inventoryPackage.size() == 1) {
@@ -938,6 +943,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl().lambda()
@@ -1006,6 +1012,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildDistributionSignforVOByStock(deliveryListEntity, pushList, OperatModeConstant.CLERK);
+ iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
+
}
//维护签收数量
this.maintenanceSignfor(distrilbutionloadingscanDTO.getReservationId());
+
return R.status(true);
}
@@ -1261,6 +1278,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl pushList = new ArrayList<>();
//查询该车次负责司机
for (DistributionReservationZeroPackageEntity reservationZeroPackageEntity : reservationZeroPackageEntities) {
//查询订单
@@ -1351,6 +1371,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildDistributionSignforVOByZero(deliveryListEntity, pushList,OperatModeConstant.BATCH);
+ iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
+
+
//查询计划和是否进行装车
return R.success("操作成功");
}
@@ -3042,11 +3072,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity, distributionReservationEntity, pushDatas, OperatModeConstant.BATCH);
+ NodeFanoutMsg nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity, distributionReservationEntity, pushDatas, OperatModeConstant.CLERK);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
@@ -6768,7 +6813,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl orderCodes = new ArrayList<>();
List pushList = new ArrayList<>();
BladeUser user = AuthUtil.getUser();
@@ -6978,7 +7023,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildDistributionSignforVOByZero(deliveryListEntity, pushList);
+ NodeFanoutMsg nodeFanoutMsg = buildDistributionSignforVOByZero(deliveryListEntity, pushList, OperatModeConstant.SCAN);
iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
@@ -6986,7 +7031,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl buildDistributionSignforVOByZero(DistributionDeliveryListEntity distributionDeliveryListEntity, List pushList) {
+ private NodeFanoutMsg buildDistributionSignforVOByZero(DistributionDeliveryListEntity distributionDeliveryListEntity, List pushList,String operatMode) {
NodeFanoutMsg nodeFanoutMsg = new NodeFanoutMsg();
nodeFanoutMsg.setBizOperation(BizOperationEnums.ADD);
@@ -6996,15 +7041,15 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl nodeFanoutMsg = buildDistributionSignforVO(deliveryListEntity, reservationEntity, pushList, OperatModeConstant.BATCH);
- iDistributionNodeWorkService.signFor(nodeFanoutMsg, AuthUtil.getUser());
break;
case 2:
//零担
@@ -9160,8 +9203,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>();
- if (stockupDTO.getOrderCode().contains(",")) {
- stockupDTO.setOrderCodeList(stockupDTO.getOrderCode().split(","));
- queryWrapper.in("order_self_numbering", stockupDTO.getOrderCodeList());
- stockupDTO.setOrderCode(null);
- } else {
- queryWrapper.eq("order_self_numbering", orderCode);
- }
+// QueryWrapper queryWrapper = new QueryWrapper<>();
+// if (stockupDTO.getOrderCode().contains(",")) {
+// stockupDTO.setOrderCodeList(stockupDTO.getOrderCode().split(","));
+// queryWrapper.in("order_self_numbering", stockupDTO.getOrderCodeList());
+// stockupDTO.setOrderCode(null);
+// } else {
+// queryWrapper.eq("order_self_numbering", orderCode);
+// }
String packetBarCode = stockupDTO.getPacketBarCode();
Integer integer = baseMapper.selectPackageExist(stockupDTO);
//查询包件信息
if (ObjectUtils.isNotNull(integer) && integer > 0) {
//存在
+ QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("coding", packetBarCode);
queryWrapper.eq("stockup_id", stockupId);
queryWrapper.eq("reservation_id", reservationId);
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
index 1be7a2dfb..bdfc5fb70 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
@@ -21,6 +21,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -600,10 +601,36 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(DistrilbutionBillPackageEntity::getBillLadingId, distrilbutionBillLading.getId());
+ wrapper.ne(DistrilbutionBillPackageEntity::getPacketBarStatus, 2);// 不查询取消的
+ List list = distrilbutionBillPackageService.list(wrapper);
+ packageEntityList.addAll(list); // 将目前修改后的包件加入集合中
+
+ // 查询自提任务的零担
+ LambdaQueryWrapper lambdaQueryWrapper =new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(DistributionReservationZeroPackageEntity::getReservationId, distrilbutionBillLading.getId());
+ lambdaQueryWrapper.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, 2);
+ List list1 = distributionZeroPackageService.list(lambdaQueryWrapper);
+ zeroPackageEntityList.addAll(list1);
+
+ // 查询库存
+
+ LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>();
+ wrapper1.eq(DistributionDeliveryDetailsEntity::getBillLadingId, distrilbutionBillLading.getId());
+ wrapper1.ne(DistributionDeliveryDetailsEntity::getInventoryStatus, 2);
+ List list2 = distributionDeliveryDetailsService.list(wrapper1);
+ detailsEntities.addAll(list2);
+
} else {
//设置lockey
String lockKey = "lock:" + distrilbutionBillLading.getStockArticleId();
@@ -1047,14 +1074,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl deliveryOfPickupPlanFeiVOList = new ArrayList<>();
- listEntity.forEach(t -> {
- DeliveryOfPickupPlanFeiVO deliveryOfPickupPlanFeiVO = new DeliveryOfPickupPlanFeiVO();
- deliveryOfPickupPlanFeiVO.setCost(t.getCost());
- String deliveryType = DictBizCache.getValue("deliveryType", deliveryOfPickupPlanFeiVO.getCost());
- deliveryOfPickupPlanFeiVO.setCostName(deliveryType);
- deliveryOfPickupPlanFeiVO.setMoney(t.getMoney());
- deliveryOfPickupPlanFeiVOList.add(deliveryOfPickupPlanFeiVO);
- });
+ if(listEntity!=null){
+ listEntity.forEach(t -> {
+ DeliveryOfPickupPlanFeiVO deliveryOfPickupPlanFeiVO = new DeliveryOfPickupPlanFeiVO();
+ deliveryOfPickupPlanFeiVO.setCost(t.getCost());
+ String deliveryType = DictBizCache.getValue("deliveryType", deliveryOfPickupPlanFeiVO.getCost());
+ deliveryOfPickupPlanFeiVO.setCostName(deliveryType);
+ deliveryOfPickupPlanFeiVO.setMoney(t.getMoney());
+ deliveryOfPickupPlanFeiVOList.add(deliveryOfPickupPlanFeiVO);
+ });
+
+ }
deliveryOfPickupPlanVO.setDeliveryOfPickupPlanFeiVOList(deliveryOfPickupPlanFeiVOList);
@@ -1065,61 +1095,72 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl zeroPackageEntityList, List packageDataList) {
- zeroPackageEntityList.forEach(t -> {
- PackageData packageData = new PackageData();
- packageData.setPackageType(PackageTypeEnums.LTL);
- packageData.setNumber(t.getQuantity());
- DistributionParcelListEntity byId = distributionParcelListService.getById(t.getParcelListId());
- if (Func.isNotEmpty(byId)) {
- packageData.setOrderCode(byId.getOrderCode());
- if (Func.isEmpty(byId.getBrandName())) {
- DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(byId.getStockArticleId());
- if (ObjectUtils.isNotNull(stockArticleEntity)) {
- packageData.setBrand(stockArticleEntity.getBrand());
+ if(zeroPackageEntityList!=null){
+ zeroPackageEntityList.forEach(t -> {
+
+ PackageData packageData = new PackageData();
+ packageData.setPackageType(PackageTypeEnums.LTL);
+ packageData.setNumber(t.getQuantity());
+ DistributionParcelListEntity byId = distributionParcelListService.getById(t.getParcelListId());
+ if (Func.isNotEmpty(byId)) {
+ packageData.setOrderCode(byId.getOrderCode());
+ if (Func.isEmpty(byId.getBrandName())) {
+ DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(byId.getStockArticleId());
+ if (ObjectUtils.isNotNull(stockArticleEntity)) {
+ packageData.setBrand(stockArticleEntity.getBrand());
+ }
+ } else {
+ packageData.setBrand(byId.getBrandName());
}
- } else {
- packageData.setBrand(byId.getBrandName());
+ packageData.setWaybillNumber(byId.getWaybillNumber());
}
- packageData.setWaybillNumber(byId.getWaybillNumber());
- }
- packageData.setProductName(t.getCategoryName());
- packageDataList.add(packageData);
+ packageData.setProductName(t.getCategoryName());
+ packageDataList.add(packageData);
+
+ });
+ }
+
- });
}
private void buildPackageDataByStockExtracted(List detailsEntities, List packageDataList) {
- detailsEntities.forEach(t -> {
- PackageData packageData = new PackageData();
- Long stockListId = t.getStockListId();
- DistributionStockListEntity byId = distributionStockListService.getById(stockListId);
- if (byId != null) {
- packageData.setPickupBatch(byId.getIncomingBatch());
- packageData.setBrand(byId.getBrandName());
- packageData.setMaterialName(byId.getDescriptionGoods());
- packageData.setMallName(byId.getMarketName());
- packageData.setMaterialCode(byId.getCargoNumber());
- packageData.setNumber(t.getQuantity());
- packageData.setPackageType(PackageTypeEnums.INV);
+ if(detailsEntities!=null){
+ detailsEntities.forEach(t -> {
+ PackageData packageData = new PackageData();
+ Long stockListId = t.getStockListId();
+ DistributionStockListEntity byId = distributionStockListService.getById(stockListId);
+ if (byId != null) {
+ packageData.setPickupBatch(byId.getIncomingBatch());
+ packageData.setBrand(byId.getBrandName());
+ packageData.setMaterialName(byId.getDescriptionGoods());
+ packageData.setMallName(byId.getMarketName());
+ packageData.setMaterialCode(byId.getCargoNumber());
+ packageData.setNumber(t.getQuantity());
+ packageData.setPackageType(PackageTypeEnums.INV);
- }
- packageDataList.add(packageData);
+ }
+ packageDataList.add(packageData);
+
+ });
+ }
- });
}
private void buildPackageByBillPackageExtracted(List packageEntityList, List packageDataList) {
- packageEntityList.forEach(t -> {
- PackageData packageData = new PackageData();
- packageData.setPackageCode(t.getPacketBarCode());
- packageData.setNumber(1);
- packageData.setPackageType(PackageTypeEnums.CMP);
- packageDataList.add(packageData);
+ if(packageEntityList!=null){
+ packageEntityList.forEach(t -> {
+ PackageData packageData = new PackageData();
+ packageData.setPackageCode(t.getPacketBarCode());
+ packageData.setNumber(1);
+ packageData.setPackageType(PackageTypeEnums.CMP);
+ packageDataList.add(packageData);
+
+ });
+ }
- });
}
@@ -1252,12 +1293,22 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl entities = this.list(wrapper);
+ buildCarExpenseReport(entities);
+ }
+
+ private void buildCarExpenseReport(List entities) {
if (CollUtil.isNotEmpty(entities)) {
// 按签收车次+签收车次分组封装为map
Map> collect = new HashMap<>();
for (QualityDeliverEntity entity : entities) {
- if (!collect.containsKey(entity.getSignCarNumber() + entity.getPlanTrainNumber())) {
- collect.put(entity.getSignCarNumber() + entity.getPlanTrainNumber(), CollUtil.newArrayList(entity));
+ if (!collect.containsKey(entity.getSignCarNumber() + entity.getSignTrainNumber())) {
+ collect.put(entity.getSignCarNumber() + entity.getSignTrainNumber(), CollUtil.newArrayList(entity));
} else {
- collect.get(entity.getSignCarNumber() + entity.getPlanTrainNumber()).add(entity);
+ collect.get(entity.getSignCarNumber() + entity.getSignTrainNumber()).add(entity);
}
}
@@ -405,4 +409,34 @@ public class QualityDeliverServiceImpl extends BaseServiceImpl entities = this.list(Wrappers.lambdaQuery().eq(QualityDeliverEntity::getSignTrainNumber, trainNumber));
+ if(CollUtil.isNotEmpty(entities)){
+ buildCarExpenseReport(entities);
+ }
+ }
+ }
+
}
diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/mq/FactoryOrderListener.java b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/mq/FactoryOrderListener.java
index fb4bc181c..e1edf47b1 100644
--- a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/mq/FactoryOrderListener.java
+++ b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/mq/FactoryOrderListener.java
@@ -90,9 +90,10 @@ public class FactoryOrderListener {
return;
}
// 1 解析数据保存入库
- // 订单号唯一
+ // 交割单 + 订单号唯一
String orderSelfNum = vo.getOrderSelfNum();
List list = deliveryNoteService.list(Wrappers.lambdaQuery()
+ .eq(DeliveryNoteEntity::getOrderNo, vo.getOrderNo())
.eq(DeliveryNoteEntity::getOrderSelfNum, orderSelfNum));
if (CollUtil.isNotEmpty(list)) {
log.error("订单号{} 数据已经处理过了, logId: {}", orderSelfNum, logId);
diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/service/impl/DeliveryNoteServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/service/impl/DeliveryNoteServiceImpl.java
index f92ea6f3c..4e1d07d3d 100644
--- a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/service/impl/DeliveryNoteServiceImpl.java
+++ b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/service/impl/DeliveryNoteServiceImpl.java
@@ -98,7 +98,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl>>>>>>> 保存开单推送的已入库包件 {} 保存到新系统", unitNo);
- String operationTime = DateUtil.format(new Date(), "yyyy-MM-dd hh:mm:ss");
+ String operationTime = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
oldSystemWaybillClient.handleDataToPlatform(unitNo, operationTime,warehouseId,1);
}
}
diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportIncomingDTO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportIncomingDTO.java
index 763fbaaa6..9585cc1d8 100644
--- a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportIncomingDTO.java
+++ b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportIncomingDTO.java
@@ -4,6 +4,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
@Data
public class ReportIncomingDTO implements Serializable {
@@ -21,10 +22,10 @@ public class ReportIncomingDTO implements Serializable {
private String year;
private String month;
- private String businessLine;
- private String departureWarehouseName;
- private String destinationWarehouseName;
- private String brand;
+ private List businessLines;
+ private List departureWarehouseIds;
+ private List destinationWarehouseIds;
+ private List brands;
private String consignee;
diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportIncomingMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportIncomingMapper.xml
index efe3279a8..9c58830af 100644
--- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportIncomingMapper.xml
+++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportIncomingMapper.xml
@@ -28,17 +28,29 @@
left join logpm_warehouse_warehouse waw on waw.id = lww.destination_warehouse_id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
+
+ and waw.business_line in
+
+ #{item}
+
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
-
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
@@ -70,17 +82,29 @@
left join logpm_distribution_parcel_number ldpn on ldpn.parcel_list_id = ldpl.id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
-
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
-
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and waw.business_line in
+
+ #{item}
+
+
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
@@ -120,17 +144,29 @@
left join logpm_warehouse_warehouse waw on waw.id = lww.destination_warehouse_id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
-
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
-
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and waw.business_line in
+
+ #{item}
+
+
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
@@ -170,20 +206,32 @@
left join logpm_warehouse_warehouse waw on waw.id = lww.destination_warehouse_id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
-
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
+
+ and waw.business_line in
+
+ #{item}
+
+
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
and lww.consignee like concat('%',#{param.consignee},'%')
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
@@ -216,20 +264,32 @@
left join logpm_distribution_parcel_number ldpn on ldpn.parcel_list_id = ldpl.id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
-
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
+
+ and waw.business_line in
+
+ #{item}
+
+
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
and lww.consignee like concat('%',#{param.consignee},'%')
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
@@ -269,20 +329,32 @@
left join logpm_warehouse_warehouse waw on waw.id = lww.destination_warehouse_id
where lww.document_making_time > '2024-10-22 00:00:00'
and lww.departure_warehouse_id != 1847456188105195522
-
- and waw.business_line like concat('%',#{param.businessLine},'%')
-
-
- and lww.departure_warehouse_name like concat('%',#{param.departureWarehouseName},'%')
-
-
- and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
+
+ and waw.business_line in
+
+ #{item}
+
+
+
+ and lww.departure_warehouse_id in
+
+ #{item}
+
+
+
+ and lww.destination_warehouse_id in
+
+ #{item}
+
and lww.consignee like concat('%',#{param.consignee},'%')
-
- and lww.brand like concat('%',#{param.brand},'%')
+
+ and lww.brand in
+
+ #{item}
+
and lww.document_making_time >= #{param.startTime}
diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/ExpenseDispatchTrainDetailMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/ExpenseDispatchTrainDetailMapper.xml
index f1a55124a..ead0723a1 100644
--- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/ExpenseDispatchTrainDetailMapper.xml
+++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/ExpenseDispatchTrainDetailMapper.xml
@@ -23,13 +23,13 @@
and settlement_month = #{expenseDispatchTrainDetail.settlementMonth}
- and train_number like concat('%',#{expenseDispatchTrainDetail.settlementMonth},'%')
+ and train_number like concat('%',#{expenseDispatchTrainDetail.trainNumber},'%')
and delivery_date >= #{expenseDispatchTrainDetail.deliveryDateStart}
- and delivery_date <= #{expenseDispatchTrainDetail.deliveryDateStart}
+ and delivery_date <= #{expenseDispatchTrainDetail.deliveryDateEnd}
and distribution_type = #{expenseDispatchTrainDetail.distributionType}
diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsBalanceOrderInfoServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsBalanceOrderInfoServiceImpl.java
index 76304414b..ab50870b1 100644
--- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsBalanceOrderInfoServiceImpl.java
+++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsBalanceOrderInfoServiceImpl.java
@@ -17,7 +17,6 @@ import com.logpm.statistics.vo.StatisticsBalanceOrderInfoVO;
import com.logpm.statistics.vo.StatisticsBalanceRecordVO;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
-import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.mp.base.BaseServiceImpl;
@@ -283,7 +282,9 @@ public R findBalanceDetail(Long balanceOrderId) {
@Override
public void deleteBanlanceOrderByIds(List balanceOrderIds) {
- baseMapper.deleteBanlanceOrderByIds(balanceOrderIds);
+ if(CollUtil.isNotEmpty(balanceOrderIds)){
+ baseMapper.deleteBanlanceOrderByIds(balanceOrderIds);
+ }
}
@Override
diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsReconciliationOrderInfoServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsReconciliationOrderInfoServiceImpl.java
index d9ea1861e..8fe49c783 100644
--- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsReconciliationOrderInfoServiceImpl.java
+++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsReconciliationOrderInfoServiceImpl.java
@@ -1,5 +1,6 @@
package com.logpm.statistics.service.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
@@ -61,6 +62,8 @@ public class StatisticsReconciliationOrderInfoServiceImpl extends BaseServiceImp
@Override
public void deleteRencilitionOrderByIds(List rencilitionOrderIds) {
- baseMapper.deleteRencilitionOrderByIds(rencilitionOrderIds);
+ if(CollUtil.isNotEmpty(rencilitionOrderIds)){
+ baseMapper.deleteRencilitionOrderByIds(rencilitionOrderIds);
+ }
}
}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
index a575c73b1..77449c766 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
@@ -5457,6 +5457,10 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
stringBuilder.append("收货单位:").append(consignee).append("-->").append(newConsignee).append(";");
waybillEntity.setConsignee(newConsignee);
waybillEntity.setConsigneeId(newConsigneeId);
+ BasicdataClientEntity basicdataClient = basicdataClientClient.findEntityById(newConsigneeId);
+ if(!Objects.isNull(basicdataClient)){
+ waybillEntity.setServiceType(basicdataClient.getTypeService());
+ }
}
String newConsigneeName = openOrderDTO.getConsigneeName();
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 5234b7a03..d65bd3143 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
@@ -2575,8 +2575,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl distinctList = addList.stream()
+ .collect(Collectors.toMap(
+ entity -> entity.getOrderCode() + "-" + entity.getWaybillNo(), // 复合键
+ entity -> entity,
+ (existing, replacement) -> existing // 保留第一个出现的元素
+ )).values().stream().collect(Collectors.toList());
+
+ log.info("##############saveNew: loadId={} 处理后新增的订单集合 {}",loadId,distinctList);
+
+ for (TrunklineCarsOrderDTO trunklineCarsOrderDTO : distinctList) {
TrunklineCarsOrderEntity trunklineCarsOrderEntity = new TrunklineCarsOrderEntity();
BeanUtil.copy(trunklineCarsOrderDTO, trunklineCarsOrderEntity);
Integer realNum = trunklineCarsOrderDTO.getRealNum();
@@ -6498,9 +6508,19 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl records = pageList.getRecords();
//把records中所有元素的id放入一个List
List idList = records.stream().map(TrunklineCarsLoadVO::getId).collect(Collectors.toList());
- List carsLoadLinePhotoEntities = carsLoadLinePhotoService.findListByLoadIdListAndWarehouseId(idList,warehouseId);
- Map> map = new HashMap<>();
- if(CollUtil.isNotEmpty(carsLoadLinePhotoEntities)){
- //把carsLoadLinePhotoEntities中所有元素通过loadId进行分组
- map = carsLoadLinePhotoEntities.stream().collect(Collectors.groupingBy(TrunklineCarsLoadLinePhotoEntity::getLoadId));
- }
-
- for (TrunklineCarsLoadVO trunklineCarsLoadVO : records) {
- Long loadId = trunklineCarsLoadVO.getId();
- TrunklineCarsLoadLineEntity carsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId);
- Integer sort = carsLoadLineEntity.getSort();
- String nodeStatus1 = carsLoadLineEntity.getNodeStatus();
- String unloadStatus = carsLoadLineEntity.getUnloadStatus();
- trunklineCarsLoadVO.setUnloadStatus(unloadStatus);
- TrunklineCarsLoadLineEntity upCarsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndSort(loadId, sort - 1);
- String nodeStatus = upCarsLoadLineEntity.getNodeStatus();
- trunklineCarsLoadVO.setLastStartCarStatus(0);
- if (!"20".equals(nodeStatus)) {
+ if(CollUtil.isNotEmpty(idList)){
+ List carsLoadLinePhotoEntities = carsLoadLinePhotoService.findListByLoadIdListAndWarehouseId(idList,warehouseId);
+ Map> map = new HashMap<>();
+ if(CollUtil.isNotEmpty(carsLoadLinePhotoEntities)){
+ //把carsLoadLinePhotoEntities中所有元素通过loadId进行分组
+ map = carsLoadLinePhotoEntities.stream().collect(Collectors.groupingBy(TrunklineCarsLoadLinePhotoEntity::getLoadId));
+ }
+
+ for (TrunklineCarsLoadVO trunklineCarsLoadVO : records) {
+ Long loadId = trunklineCarsLoadVO.getId();
+ TrunklineCarsLoadLineEntity carsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId);
+ Integer sort = carsLoadLineEntity.getSort();
+ String nodeStatus1 = carsLoadLineEntity.getNodeStatus();
+ String unloadStatus = carsLoadLineEntity.getUnloadStatus();
+ trunklineCarsLoadVO.setUnloadStatus(unloadStatus);
+ TrunklineCarsLoadLineEntity upCarsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndSort(loadId, sort - 1);
+ String nodeStatus = upCarsLoadLineEntity.getNodeStatus();
trunklineCarsLoadVO.setLastStartCarStatus(0);
- } else {
- if (!"20".equals(nodeStatus1)) {
- trunklineCarsLoadVO.setLastStartCarStatus(1);
- } else {
+ if (!"20".equals(nodeStatus)) {
trunklineCarsLoadVO.setLastStartCarStatus(0);
+ } else {
+ if (!"20".equals(nodeStatus1)) {
+ trunklineCarsLoadVO.setLastStartCarStatus(1);
+ } else {
+ trunklineCarsLoadVO.setLastStartCarStatus(0);
+ }
}
- }
// if("20".equals(nodeStatus)){
// trunklineCarsLoadVO.setLastStartCarStatus(1);
// }else{
// trunklineCarsLoadVO.setLastStartCarStatus(0);
// }
- Integer realLoadingNumber = trunklineCarsLoadVO.getRealLoadingNumber();
- Integer unloadNumber = trunklineCarsLoadVO.getUnloadNumber();
- Integer stockCarNumber = trunklineCarsLoadVO.getStockNumber();
- trunklineCarsLoadVO.setRealLoadingNumber(stockCarNumber);
- trunklineCarsLoadVO.setTotalLoadingNum(realLoadingNumber);
+ Integer realLoadingNumber = trunklineCarsLoadVO.getRealLoadingNumber();
+ Integer unloadNumber = trunklineCarsLoadVO.getUnloadNumber();
+ Integer stockCarNumber = trunklineCarsLoadVO.getStockNumber();
+ trunklineCarsLoadVO.setRealLoadingNumber(stockCarNumber);
+ trunklineCarsLoadVO.setTotalLoadingNum(realLoadingNumber);
- List trunklineCarsLoadLinePhotoEntities = map.get(loadId);
- trunklineCarsLoadVO.setCarsLoadLinePhotoEntities(trunklineCarsLoadLinePhotoEntities);
+ List trunklineCarsLoadLinePhotoEntities = map.get(loadId);
+ trunklineCarsLoadVO.setCarsLoadLinePhotoEntities(trunklineCarsLoadLinePhotoEntities);
+ }
}
+
pageList.setRecords(records);
return R.data(pageList);
}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
index 2261f6630..7cb1a3fc0 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
@@ -1,6 +1,7 @@
package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
@@ -355,6 +356,7 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl waybillPackageEntities = new ArrayList<>();
- Set waybillIds = new HashSet<>();
+ Map waybillMap = new HashMap<>();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("order_package_code",orderPackageCodes)
.eq("is_deleted",0);
@@ -376,18 +378,35 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl updateList = new ArrayList<>();
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : trunklineWaybillPackageEntities) {
TrunklineWaybillPackageEntity updateEntity = new TrunklineWaybillPackageEntity();
+ Long waybillId = trunklineWaybillPackageEntity.getWaybillId();
+ WarehouseWaybillEntity waybillEntity = waybillMap.get(waybillId);
+ if(Objects.isNull(waybillEntity)){
+ waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
+ waybillMap.put(waybillId,waybillEntity);
+ if(NumberUtil.equals(30,packageStatus)){
+ if(!Objects.isNull(waybillEntity)){
+ Long destinationWarehouseId = waybillEntity.getDestinationWarehouseId();
+ if(!NumberUtil.equals(destinationWarehouseId,warehouseId)){
+ packageStatus = 20;
+ }
+ }else{
+ packageStatus = 20;
+ }
+ }
+ }
updateEntity.setId(trunklineWaybillPackageEntity.getId());
updateEntity.setPackageStatus(packageStatus);
updateList.add(updateEntity);
- waybillIds.add(trunklineWaybillPackageEntity.getWaybillId());
}
updateBatchById(updateList);
- for (Long waybillId : waybillIds) {
- WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
- updateWaybillStatus(waybillEntity);
- }
+ waybillMap.keySet().forEach(waybillId -> {
+ WarehouseWaybillEntity waybillEntity = waybillMap.get(waybillId);
+ if(!Objects.isNull(waybillEntity)){
+ updateWaybillStatus(waybillEntity);
+ }
+ });
}
}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseWaybillClient.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseWaybillClient.java
index adc376ca3..597c90510 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseWaybillClient.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseWaybillClient.java
@@ -41,7 +41,6 @@ public class WarehouseWaybillClient implements IWarehouseWaybillClient {
@Override
@GetMapping(API_PREFIX + "/findByWaybillNo")
public WarehouseWaybillEntity findByWaybillNo(String waybillNo) {
- String tenantId = AuthUtil.getTenantId();
return warehouseWaybillService.findByWaybillNo(waybillNo);
}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml
index e14242289..00d8264ab 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml
@@ -47,6 +47,7 @@
+
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/ErrorQueueHandler.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/ErrorQueueHandler.java
index 35d03fc50..c22ce47c3 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/ErrorQueueHandler.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/ErrorQueueHandler.java
@@ -1,7 +1,5 @@
package com.logpm.warehouse.receiver;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.logpm.warehouse.entity.WarehouseLog;
import com.logpm.warehouse.service.IWarehouseLogService;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
@@ -12,7 +10,6 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.io.IOException;
import java.util.Map;
@@ -32,26 +29,29 @@ public class ErrorQueueHandler {
@RabbitHandler
public void warehouseErrorHandler(Map map, Message message, Channel channel) {
// 如果手动ACK,消息会被监听消费,但是消息在队列中依旧存在,如果 未配置 acknowledge-mode 默认是会在消费完毕后自动ACK掉
- final long deliveryTag = message.getMessageProperties().getDeliveryTag();
- try {
- Long logId = (Long) map.get("logId");
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.set("status",2)
- .eq("id",logId);
- boolean updateFlag = warehouseLogService.update(updateWrapper);
- if(updateFlag){
- channel.basicAck(deliveryTag, false);
- }else{
- channel.basicReject(deliveryTag,true);
- }
- } catch (Exception e) {
- try {
- // 处理失败,重新压入MQ
- channel.basicReject(deliveryTag,true);
- } catch (IOException e1) {
- e1.printStackTrace();
- }
-
- }
+
+ log.warn("#################warehouseErrorHandler: message={}",message);
+
+// final long deliveryTag = message.getMessageProperties().getDeliveryTag();
+// try {
+// Long logId = (Long) map.get("logId");
+// UpdateWrapper updateWrapper = new UpdateWrapper<>();
+// updateWrapper.set("status",2)
+// .eq("id",logId);
+// boolean updateFlag = warehouseLogService.update(updateWrapper);
+// if(updateFlag){
+// channel.basicAck(deliveryTag, false);
+// }else{
+// channel.basicReject(deliveryTag,true);
+// }
+// } catch (Exception e) {
+// try {
+// // 处理失败,重新压入MQ
+// channel.basicReject(deliveryTag,true);
+// } catch (IOException e1) {
+// e1.printStackTrace();
+// }
+//
+// }
}
}