From b1246242391a591957c9b5751ae58eb9a1ee9f27 Mon Sep 17 00:00:00 2001 From: zhenghaoyu Date: Thu, 24 Oct 2024 21:32:34 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=BF=90=E5=8D=95=E5=88=97=E8=A1=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96=202.=E5=B9=B2=E7=BA=BF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E6=8D=AE=E9=99=90=E5=88=B6=203.=E5=B9=B2?= =?UTF-8?q?=E7=BA=BF=E5=BC=80=E5=8D=95=E8=BF=90=E5=8D=95=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/TrunklineCarsLoadScanEntity.java | 21 +++ .../vo/ExportWarehouseWaybillVO.java | 61 +++++- .../mapper/TrunklineCarsLoadScanMapper.xml | 1 + .../service/impl/OpenOrderServiceImpl.java | 42 ++++- .../impl/TrunklineCarsLoadServiceImpl.java | 28 +++ .../mapper/WarehouseWaybillMapper.xml | 178 ++++++++++++++++-- 6 files changed, 303 insertions(+), 28 deletions(-) diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineCarsLoadScanEntity.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineCarsLoadScanEntity.java index e8ec3f7f3..c297dc00d 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineCarsLoadScanEntity.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineCarsLoadScanEntity.java @@ -154,4 +154,25 @@ public class TrunklineCarsLoadScanEntity extends TenantEntity { @ApiModelProperty(name = "顾客地址",notes = "") private String customerAddress; + /** 一级品类 */ + @ApiModelProperty(name = "一级品类",notes = "") + private String firsts; + + /** 二级品类 */ + @ApiModelProperty(name = "二级品类",notes = "") + private String senconds; + + /** 三级品类 */ + @ApiModelProperty(name = "三级品类",notes = "") + private String thirds; + + /** 物料编码 */ + @ApiModelProperty(name = "物料编码",notes = "") + private String materialCode; + + /** 物料名称 */ + @ApiModelProperty(name = "物料名称",notes = "") + private String materialName; + + } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java index f787258d1..dc73e0168 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/ExportWarehouseWaybillVO.java @@ -18,6 +18,9 @@ public class ExportWarehouseWaybillVO implements Serializable { @ExcelProperty(value = "订单号") private String orderNo; + @ExcelProperty(value = "备注") + private String remark; + @ExcelProperty(value = "发站仓") private String departureWarehouseName; @@ -64,6 +67,12 @@ public class ExportWarehouseWaybillVO implements Serializable { @ExcelProperty(value = "货物名称") private String goodsName; + @ExcelProperty(value = "货物名称明细") + private String productNum; + + @ExcelProperty(value = "干线品类单价") + private String productPrice; + @ExcelProperty(value = "按件分摊") private BigDecimal costPiece; @@ -76,6 +85,9 @@ public class ExportWarehouseWaybillVO implements Serializable { @ExcelProperty(value = "总件数") private Integer totalCount; + @ExcelProperty(value = "签收数量") + private Integer signNum; + @ExcelProperty(value = "总重量") private BigDecimal totalWeight; @@ -142,13 +154,6 @@ public class ExportWarehouseWaybillVO implements Serializable { @ExcelProperty(value = "经办人") private String agent; - @ExcelProperty(value = "创建时间") - @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; - - @ExcelProperty(value = "制单时间") - @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - private Date documentMakingTime; @ExcelIgnore private Integer pickupCompleteOrNot; @@ -176,8 +181,40 @@ public class ExportWarehouseWaybillVO implements Serializable { @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date freezeTime; + + @ExcelProperty(value = "审核人") + private String checkUserName; + + @ExcelProperty(value = "审核原因") + private String checkReson; + + @ExcelProperty(value = "审核备注") + private String checkRemark; + + @ExcelProperty(value = "审核时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date checkTime; + + + + @ExcelProperty(value = "签收人") + private String signUserName; + + @ExcelProperty(value = "复核人") + private String signCheckUserName; + + @ExcelProperty(value = "签收时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date signTime; + + @ExcelProperty(value = "复核时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date signCheckTime; + + @ExcelIgnore private Integer abolishStatus; + @ExcelProperty(value = "是否作废") private String abolishStatusStr; @@ -188,4 +225,14 @@ public class ExportWarehouseWaybillVO implements Serializable { @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date abolishTime; + + @ExcelProperty(value = "创建时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ExcelProperty(value = "制单时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date documentMakingTime; + + } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml index f3a7d5cc1..b458ad8e7 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml @@ -182,6 +182,7 @@ select * from logpm_trunkline_cars_load_scan where is_deleted = 0 + and is_supple = 0 and load_id = #{param.loadId} 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 6ee57e13a..8e414ba13 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 @@ -477,6 +477,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { // while(!Objects.isNull(warehouseWaybillEntity)){ // waybillNo = basicdataCodeClient.getCodeByType(CodeNumConstant.WAYBILL, warehouseCode, ""); // } + }else{ + WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); + if(!Objects.isNull(warehouseWaybillEntity)){ + log.warn("#############openWaybill: 运单号已存在 waybillNo={}", waybillNo); + return R.fail(405, "运单号已存在"); + } } Long departureWarehouseId = openOrderDTO.getDepartureWarehouseId(); Long destinationWarehouseId = openOrderDTO.getDestinationWarehouseId(); @@ -823,6 +829,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { //如果运单号为空则自动生成运单号 if (StringUtil.isBlank(waybillNo)) { waybillNo = basicdataCodeClient.getCodeByType(CodeNumConstant.WAYBILL, warehouseCode, ""); + }else{ + WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); + if(!Objects.isNull(warehouseWaybillEntity)){ + log.warn("#############openZeroWaybill: 运单号已存在 waybillNo={}", waybillNo); + return R.fail(405, "运单号已存在"); + } } WarehouseWaybillEntity waybillEntity = new WarehouseWaybillEntity(); @@ -1758,6 +1770,14 @@ public class OpenOrderServiceImpl implements IOpenOrderService { long start = System.currentTimeMillis(); List importCustomizedOuPaiDTOS = EasyExcel.read(inputStream).head(ImportCustomizedOuPaiDTO.class).sheet(0).headRowNumber(1).doReadSync(); + //判断importCustomizedOuPaiDTOS中firstsName有值的数量 + long countWithMaterialName = importCustomizedOuPaiDTOS.stream() + .filter(dto -> StringUtil.isNotBlank(dto.getFirstsName())) + .count(); + if(NumberUtil.equals(countWithMaterialName,0)){ + log.warn("#################: 请使用定制品模版"); + return R.fail(405,"请使用定制品模版"); + } //排除pacakgeDetailExcelDTOS中的orderPackageCode为空的元素 importCustomizedOuPaiDTOS = importCustomizedOuPaiDTOS.stream().filter(item -> StringUtil.isNotBlank(item.getOrderPackageCode())).collect(Collectors.toList()); @@ -2095,8 +2115,18 @@ public class OpenOrderServiceImpl implements IOpenOrderService { InputStream inputStream = file.getInputStream(); + //读取inputStream中Excel的表头数据 List importStandardOuPaiDTOS = EasyExcel.read(inputStream).head(ImportStandardOuPaiDTO.class).sheet(0).headRowNumber(1).doReadSync(); + //判断importStandardOuPaiDTOS中materialName有值的数量 + long countWithMaterialName = importStandardOuPaiDTOS.stream() + .filter(dto -> StringUtil.isNotBlank(dto.getMaterialName())) + .count(); + if(NumberUtil.equals(countWithMaterialName,0)){ + log.warn("#################: 请使用标准品模版"); + return R.fail(405,"请使用标准品模版"); + } + //排除importStandardOuPaiDTOS中的orderPackageCode为空的元素 importStandardOuPaiDTOS = importStandardOuPaiDTOS.stream().filter(item -> StringUtil.isNotBlank(item.getOrderPackageCode())).collect(Collectors.toList()); @@ -2407,8 +2437,16 @@ public class OpenOrderServiceImpl implements IOpenOrderService { advanceDetailModel.setMaterialId(basicMaterialEntity.getId()); advanceDetailModel.setMaterialCode(materialCode); advanceDetailModel.setMaterialName(materialName); - advanceDetailModel.setWeight(new BigDecimal(basicMaterialEntity.getWeight())); - advanceDetailModel.setVolume(new BigDecimal(basicMaterialEntity.getVolume())); + String weight = basicMaterialEntity.getWeight(); + if(StringUtil.isBlank(weight)){ + weight = "0"; + } + String volume1 = basicMaterialEntity.getVolume(); + if(StringUtil.isBlank(volume1)){ + volume1 = "0"; + } + advanceDetailModel.setWeight(new BigDecimal(weight)); + advanceDetailModel.setVolume(new BigDecimal(volume1)); } // if (StringUtil.isNotBlank(materialCode) && StringUtil.isNotBlank(materialName)) { 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 57ce9811a..4c1b7e27c 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 @@ -3647,6 +3647,12 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailList = new ArrayList<>(); @@ -5652,6 +5664,17 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadScanEntityListHasData = loadScanEntityList.stream().filter(e -> e.getIsData() == 1).collect(Collectors.toList()); + //把loadScanEntityListHasData中所有元素的scanCode放入一个List + List scanCodeList = loadScanEntityListHasData.stream().map(TrunklineCarsLoadScanEntity::getScanCode).collect(Collectors.toList()); + FindParamterDTO findParamterDTO = new FindParamterDTO(); + findParamterDTO.setOrderPackageCodeList(scanCodeList); + findParamterDTO.setWarehouseId(warehouseId); + List parcelListEntityList = distributionParcelListClient.findListByOrderPackageCodeList(findParamterDTO); + //把parcelListEntityList中所有的orderPackageCode放入一个List + List orderPackageCodeList = parcelListEntityList.stream().map(DistributionParcelListEntity::getOrderPackageCode).collect(Collectors.toList()); + //把loadScanEntityListHasData中的元素通过orderPackageCodeList存在及过滤掉 + loadScanEntityListHasData = loadScanEntityListHasData.stream().filter(e -> !orderPackageCodeList.contains(e.getScanCode())).collect(Collectors.toList()); + //把loadScanEntityListHasData通过tray_code is null和tray_code is not null 分成两个新的list List loadScanEntityListHasDataNoTray = loadScanEntityListHasData.stream().filter(e -> StringUtil.isBlank(e.getTrayCode())).collect(Collectors.toList()); //把loadScanEntityListHasDataNoTray通过orderCode进行分组 @@ -7170,6 +7193,11 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl - select lww.*, + select lww.id id, + lww.brand brand, + lww.waybill_no waybillNo, + lww.order_no orderNo, + lww.consignee consignee, + lww.consignee_name consigneeName, + lww.consignee_mobile consigneeMobile, + lww.consignee_address consigneeAddress, + lww.shipper shipper, + lww.shipper_name shipperName, + lww.shipper_mobile shipperMobile, + lww.shipper_address shipperAddress, + lww.destination destination, + lww.departure departure, + lww.departure_warehouse_name departureWarehouseName, + lww.destination_warehouse_name destinationWarehouseName, + lww.delivery_way deliveryWay, + lww.customer_train customerTrain, + IFNULL(lww.return_status,0) returnStatus, + lww.remark remark, + lww.pay_type payType, + lww.pay_way payWay, + lww.x_pay xPay, + lww.d_pay dPay, + lww.h_pay hPay, + lww.y_pay yPay, + lww.service_type serviceType, + IFNULL(lww.update_status,0) updateStatus, + IFNULL(lww.check_status,0) checkStatus, + lww.check_reson checkReson, + lww.check_remark checkRemark, + lww.check_user_name checkUserName, + lww.check_time checkTime, + lww.cancle_check_remark cancleCheckRemark, + lww.cancle_check_user_name cancleCheckUserName, + lww.cancle_check_time cancleCheckTime, + lww.waybill_status waybillStatus, + lww.waybill_type waybillType, + lww.document_making_time openTime, + GROUP_CONCAT(lwwd.product_name) goodsName, + lww.total_count totalCount, + sum(lwwd.weight) totalWeight, + sum(lwwd.volume) totalVolume, + lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee, + sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee, + lww.pickup_fee pickupFee, + lww.total_freight totalFreight, + lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee, + lww.storage_fee storageFee, + lww.warehouse_management_fee warehouseManagementFee, + 0.00 warehouseSortingFee, + 0.00 warehouseOprationFee, + lww.delivery_fee+lww.handling_fee deliveryServiceFee, + lww.delivery_fee deliveryFee, + lww.handling_fee handlingFee, + 0.00 deliverySortingFee, + 0.00 deliveryUpfloorFee, + 0.00 deliveryMoveFee, + 0.00 deliveryLine, + 0.00 deliveryLineFee, + lww.other_fee otherFee, + lww.install_fee installFee, + lww.insurance_fee insuranceFee, + lww.claiming_value claimingValue, + lww.third_operation_fee thirdOperationFee, + lww.sign_num signNum, + lww.sign_user_name signUserName, + lww.sign_time signTime, + lww.sign_check_user_name signCheckUserName, + lww.sign_check_time signCheckTime, + lww.rebate rebate, GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.num,')')) productNum, GROUP_CONCAT(CONCAT(lwwd.product_name,'(',lwwd.price,')')) productPrice from logpm_warehouse_waybill lww - left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id + left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id and lwwd.is_deleted = 0 where lww.is_deleted = 0 - and lww.waybill_no not in + and lww.waybill_no in #{item} @@ -372,7 +442,7 @@ lww.d_pay dPay, lww.h_pay hPay, lww.y_pay yPay, - lww.service_type serviceType, + lbc.type_service serviceType, IFNULL(lww.update_status,0) updateStatus, IFNULL(lww.check_status,0) checkStatus, lww.check_reson checkReson, @@ -387,8 +457,8 @@ lww.document_making_time openTime, lww.goods_name goodsName, lww.total_count totalCount, - lww.total_weight totalWeight, - lww.total_volume totalVolume, + sum(lwwd.weight) totalWeight, + sum(lwwd.volume) totalVolume, lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee, sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee, lww.pickup_fee pickupFee, @@ -420,10 +490,10 @@ count(lwwd.id) goodsTypeCount from logpm_warehouse_waybill lww left join logpm_basicdata_client lbc on lbc.id = lww.consignee_id - left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id + left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id and lwwd.is_deleted = 0 where lww.is_deleted = 0 - and lww.waybill_no not in + and lww.waybill_no in #{item} @@ -620,10 +690,10 @@ lww.d_pay dPay, lww.h_pay hPay, lww.y_pay yPay, - case when lww.service_type='1' then '商配' - when lww.service_type='2' then '市配' - when lww.service_type='3' then '自提' - when lww.service_type='4' then '三方中转' + case when lbc.type_service='1' then '商配' + when lbc.type_service='2' then '市配' + when lbc.type_service='3' then '自提' + when lbc.type_service='4' then '三方中转' else '未知' end serviceType, CASE WHEN IFNULL(lww.update_status,0)=0 THEN '未改单' WHEN IFNULL(lww.update_status,0)=1 THEN '已改单' @@ -652,8 +722,8 @@ lww.document_making_time openTime, lww.goods_name goodsName, lww.total_count totalCount, - lww.total_weight totalWeight, - lww.total_volume totalVolume, + sum(lwwd.weight) totalWeight, + sum(lwwd.volume) totalVolume, lww.x_pay+lww.d_pay+lww.h_pay+lww.y_pay totalFee, sum(IFNULL(lwwd.freight_price,0)*lwwd.num+IFNULL(lwwd.pickup_price,0)*lwwd.num+IFNULL(lwwd.delivery_price,0)*lwwd.num) systemTotalFee, lww.pickup_fee pickupFee, @@ -685,10 +755,10 @@ count(lwwd.id) goodsTypeCount from logpm_warehouse_waybill lww left join logpm_basicdata_client lbc on lbc.id = lww.consignee_id - left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id + left join logpm_warehouse_waybill_detail lwwd on lwwd.waybill_id = lww.id and lwwd.is_deleted = 0 where lww.is_deleted = 0 - and lww.waybill_no not in + and lww.waybill_no in #{item} @@ -847,14 +917,84 @@