diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java index ea1022633..d2862e657 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java @@ -57,6 +57,26 @@ public abstract class FanoutConstants { } + + interface CHECKWAYBILL { + // 交换机 + String EXCHANGE = "fanout.trunkline.checkwaybill" + ModuleNameConstant.DEVAUTH; + + interface QUEUE { + String CHECKWAYBILL_INCOMINGDATA = "fanout.trunkline.checkwaybill.statisticsdata.incomingdata" + ModuleNameConstant.DEVAUTH; + } + } + + interface CANCLECHECKWAYBILL { + // 交换机 + String EXCHANGE = "fanout.trunkline.canclecheckwaybill" + ModuleNameConstant.DEVAUTH; + + interface QUEUE { + String CANCLECHECKWAYBILL_INCOMINGDATA = "fanout.trunkline.canclecheckwaybill.statisticsdata.incomingdata" + ModuleNameConstant.DEVAUTH; + } + } + + } diff --git a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java index f6aa5bef8..107c8211e 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java +++ b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java @@ -43,27 +43,25 @@ public class LauncherServiceImpl implements LauncherService { // 开启elk日志 // PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile)); - - PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.username","nacos"); PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.password","Nacos123123"); PropsUtil.setProperty(props, "spring.cloud.nacos.config.username","nacos"); PropsUtil.setProperty(props, "spring.cloud.nacos.config.password","Nacos123123"); // dubbo注册 - PropsUtil.setProperty(props, "dubbo.application.name", appName); - PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false"); - PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo"); - PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile)); - PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION); - PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES); +// PropsUtil.setProperty(props, "dubbo.application.name", appName); +// PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false"); +// PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo"); +// PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile)); +// PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION); +// PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES); - // seata注册地址 - PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); - // seata注册group格式 - PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName)); - // seata配置服务group - PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE); +// // seata注册地址 +// PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); +// // seata注册group格式 +// PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName)); +// // seata配置服务group +// PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE); // seata注册模式配置 // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE); // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile)); diff --git a/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalRecordZeroDetailEntity.java b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalRecordZeroDetailEntity.java new file mode 100644 index 000000000..4f1dbb059 --- /dev/null +++ b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalRecordZeroDetailEntity.java @@ -0,0 +1,53 @@ +package com.logpm.aftersales.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +@Data +@TableName("logpm_aftersales_abnormal_record_zero_detail") +@ApiModel(value = "AftersalesAbnormalRecordZeroDetail对象", description = "异常记录零担明细表") +@EqualsAndHashCode(callSuper = true) +public class AftersalesAbnormalRecordZeroDetailEntity extends TenantEntity { + + /** 预留1 */ + @ApiModelProperty(name = "预留1",notes = "") + private String reserve1 ; + /** 预留2 */ + @ApiModelProperty(name = "预留2",notes = "") + private String reserve2 ; + /** 预留3 */ + @ApiModelProperty(name = "预留3",notes = "") + private String reserve3 ; + /** 预留4 */ + @ApiModelProperty(name = "预留4",notes = "") + private String reserve4 ; + /** 预留5 */ + @ApiModelProperty(name = "预留5",notes = "") + private String reserve5 ; + + @ApiModelProperty(name = "异常记录id",notes = "") + private Long abnormalRecordId; + + @ApiModelProperty(name = "包件id",notes = "") + private Long packageId; + + @ApiModelProperty(name = "品类id",notes = "") + private Long goodsId; + + @ApiModelProperty(name = "品类名称",notes = "") + private String goodsName; + + @ApiModelProperty(name = "异常数量",notes = "") + private Integer abnormalNum; + + @ApiModelProperty(name = "回库数量",notes = "") + private Integer returnNum; + + @ApiModelProperty(name = "入库数量",notes = "") + private Integer incomingNum; + +} diff --git a/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java index 7ff999f08..26e1c5cc6 100644 --- a/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java +++ b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java @@ -58,4 +58,8 @@ public interface IAftersalesAbnormalRecordClient { @PostMapping(API_PREFIX+"/addAbnormalRecordList") void addAbnormalRecordList(@RequestBody List abnormalRecordEntities); + + @PostMapping(API_PREFIX+"/addAbnormalRecordListReturnList") + List addAbnormalRecordListReturnList(@RequestBody List abnormalRecordEntities); + } diff --git a/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordZeroDetailClient.java b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordZeroDetailClient.java new file mode 100644 index 000000000..d5a4ede48 --- /dev/null +++ b/blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordZeroDetailClient.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.aftersales.feign; + +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; +import org.springblade.common.constant.ModuleNameConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * 货位 Feign接口类 + * + * @author zhy + * @since 2023-09-02 + */ +@FeignClient( + value = ModuleNameConstant.APPLICATION_AFTERSALES_NAME +) +public interface IAftersalesAbnormalRecordZeroDetailClient { + + String API_PREFIX = "abormal/client"; + String TOP = API_PREFIX + "/top"; + + @PostMapping(API_PREFIX+"/addAbnormalRecordZeroDetail") + void addAbnormalRecordZeroDetail(@RequestBody List abnormalRecordZeroDetailEntityList); + +} diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java index c256b7bb8..3f708f90c 100644 --- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java +++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java @@ -80,6 +80,14 @@ public class BasicdataClientEntity extends TenantEntity { */ @ApiModelProperty(value = "客户类型 ") private String clientType; + + + /** + * 结算对象类型:1.工厂 2.商场 3.个人 + */ + @ApiModelProperty(value = "结算对象类型 ") + private String cleanObjType; + /** * 详细地址 */ diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataDriverArteryClient.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataDriverArteryClient.java index 6a8e1a028..c1e7fe8b6 100644 --- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataDriverArteryClient.java +++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataDriverArteryClient.java @@ -62,7 +62,7 @@ public interface IBasicdataDriverArteryClient { List findDriverListByName(@RequestParam String driverName,@RequestParam String jobType); @GetMapping(API_PREFIX+"/getDriverArteryById") - BasicdataDriverArteryEntity getDriverArteryById(Long id); + BasicdataDriverArteryEntity getDriverArteryById(@RequestParam Long id); @GetMapping(API_PREFIX+"/findDriverListByNameAndWarehouseId") List findDriverListByNameAndWarehouseId(@RequestParam String driverName, @RequestParam String jobType, @RequestParam Long warehouseId); diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java index 16c7fd869..12d8a5870 100644 --- a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java +++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java @@ -139,11 +139,12 @@ public interface IBasicdataWarehouseClient { @GetMapping(API_PREFIX + "/findWarehouseList") List findWarehouseList(@RequestParam("warehouseName") String warehouseName); - @GetMapping(API_PREFIX + "/findWarehousesByIds") - List findWarehousesByIds(@RequestParam("ids") List ids); @GetMapping(API_PREFIX + "/findAllList") List findAllList(); + + @GetMapping(API_PREFIX + "/findWarehousesByIds") + List findWarehousesByIds(@RequestParam("ids") List ids); } diff --git a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java index 5e006a083..04ad1d1a0 100644 --- a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java +++ b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java @@ -9,9 +9,9 @@ public class BusinessSanDTO { @ApiModelProperty(value = "配送车次") private String distrCarNumber; @ApiModelProperty(value = "包间码") - String orderPackageCode; + private String orderPackageCode; @ApiModelProperty(value = "预约单号") - String reservationCode; + private String reservationCode; @ApiModelProperty(value = "异常入库 0 正常 1 异常") private Integer inWarehouseException; @@ -30,4 +30,16 @@ public class BusinessSanDTO { @ApiModelProperty(value = "打托方式") private String trayType;//打托方式 + @ApiModelProperty(value = "订单号") + private String orderCode; + + @ApiModelProperty(value = "零担品类") + private String firsts; + + @ApiModelProperty(value = "卸车数量") + private Integer unloadNum; + @ApiModelProperty(value = "状态 1 定制品 2 库存品 3零担") + private String conditions; + + } diff --git a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java index 05df60ba6..30b54cc01 100644 --- a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java +++ b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java @@ -169,10 +169,28 @@ public class BusinessPreOrderEntity extends TenantEntity { @ApiModelProperty(value = "物料单位") private String materialUnit; /** - * 数量 + * 计划数量 */ @ApiModelProperty(value = "数量") private Integer quantity; + + + /** + * 卸车数量 + */ + @ApiModelProperty(value = "卸车数量") + private Integer unloadNum; + + + /** + * 装车数量 + */ + @ApiModelProperty(value = "装车数量") + private Integer loadNum; + + + + /** * 车次号 */ diff --git a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarDetalPackageVO.java b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarDetalPackageVO.java index ca8cf57a5..75a0d6c2f 100644 --- a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarDetalPackageVO.java +++ b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarDetalPackageVO.java @@ -24,5 +24,13 @@ public class DistributionBusinessPreCarDetalPackageVO { private Integer inWarehouse; @ApiModelProperty(value = "操作状态 0 正常操作 1.补录操作") private Integer operationStatus; + @ApiModelProperty(value = "计划数量") + private Integer quantity; + @ApiModelProperty(value = "卸车数量") + private Integer unloadNum; + @ApiModelProperty(value = "预约单号") + private String reservationCode; + + } diff --git a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java index 3b03f44c0..be5420183 100644 --- a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java +++ b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java @@ -24,5 +24,9 @@ public class DistributionBusinessPreCarNumberVO { @ApiModelProperty(value = "待入库件数") private Integer restNum; + @ApiModelProperty(value = "配送司机") + private String driverName; + @ApiModelProperty(value = "配送时间") + private String taskTime; } diff --git a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java index a746d5578..a99fda6d8 100644 --- a/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java +++ b/blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java @@ -13,4 +13,7 @@ public class DistributionBusinessPreCarNumerPageQueryVO { private String orderCode; @ApiModelProperty(value = "配送车次号") private String distrCarNumber; + + @ApiModelProperty(value = "物品类型 1 定制品 3零担") + private String conditions; } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelListEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelListEntity.java index 673a3e634..b9abba72c 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelListEntity.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelListEntity.java @@ -332,11 +332,11 @@ public class DistributionParcelListEntity extends TenantEntity { @ApiModelProperty(value = "包件冻结状态") private String orderPackageFreezeStatus; - @ApiModelProperty(value = "包件冻结状态") + @ApiModelProperty(value = "预约状态") private String orderPackageReservationStatus; - @ApiModelProperty(value = "包件冻结状态") + @ApiModelProperty(value = "预约数量") @TableField(exist = false) private Integer reservationNum; diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java index b4d2e6835..957b4ff59 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java @@ -16,10 +16,12 @@ */ package com.logpm.distribution.feign; +import com.alibaba.fastjson.JSONObject; import com.logpm.distribution.dto.FindParamterDTO; import com.logpm.distribution.dto.OrderPackageDTO; import com.logpm.distribution.entity.DistributionParcelListEntity; import com.logpm.distribution.vo.DistributionParcelListVO; +import com.logpm.distribution.vo.ZeroPackageSupplyVO; import org.springblade.common.constant.ModuleNameConstant; import org.springblade.core.mp.support.BladePage; import org.springblade.core.tool.api.R; @@ -100,9 +102,26 @@ public interface IDistributionParcelListClient { @PostMapping(API_PREFIX + "/update") void update(@RequestBody DistributionParcelListEntity distributionParcelListEntity); + /** + * 根据 订单号合开单品类查询指定仓库下的零担的品类信息 + * @param orderCode + * @param first + * @param warehouseId + * @return + */ + @GetMapping(API_PREFIX + "/findDistributionParcelListEntityByOrderCodeAndFirstName") + DistributionParcelListEntity findDistributionParcelListEntityByOrderCodeAndFirstName(@RequestParam String orderCode, @RequestParam String first,@RequestParam Long warehouseId); - @GetMapping(API_PREFIX + "/SumEntityZkByOrderId") - Integer SumEntityByOrderId(@RequestParam Long orderId, @RequestParam Long warehouseId); + /** + * 根据 订单号合开单品类查询指定租户下的仓库的零担的品类信息 + * @param tenantId + * @param orderCode + * @param first + * @param warehouseId + * @return + */ + @GetMapping(API_PREFIX + "/findDistributionParcelListEntityByOrderCodeAndFirstNameAndTenantId") + DistributionParcelListEntity findDistributionParcelListEntityByOrderCodeAndFirstNameAndTenantId(@RequestParam String tenantId,@RequestParam String orderCode, @RequestParam String first,@RequestParam Long warehouseId); /** @@ -211,6 +230,27 @@ public interface IDistributionParcelListClient { @PostMapping(API_PREFIX + "/clearPallet") void clearPallet(@RequestBody List orderPackageIdList); + @GetMapping(API_PREFIX + "/findPackageGoodsListByWaybillNo") + List findPackageGoodsListByWaybillNo(@RequestParam String waybillNo); + + @GetMapping(API_PREFIX + "/findListByStockArticleId") + List findListByStockArticleId(@RequestParam Long articleId); + + @GetMapping(API_PREFIX + "/findEntityVOListByOrderCode") + List findEntityVOListByOrderCode(@RequestParam String orderCode, @RequestParam Long fromWarehouseId); + + @GetMapping(API_PREFIX + "/addZeroQuantity") + void addZeroQuantity(@RequestParam Long packageId, @RequestParam int num); + + @PostMapping(API_PREFIX + "/findListByStockArticleIds") + List findListByStockArticleIds(@RequestBody List orderIdList); + + @GetMapping(API_PREFIX + "/updateWaybillIdByWaybillNo") + void updateWaybillIdByWaybillNo(@RequestParam Long waybillId, @RequestParam String waybillNo); + @GetMapping(API_PREFIX + "/findOrderCodeByWaybillId") + List findOrderCodeByWaybillId(@RequestParam Long waybillId); + @PostMapping(API_PREFIX + "/clearWaybillInfoByParceListIds") + void clearWaybillInfoByParceListIds(@RequestBody List parceListIds); } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelNumberClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelNumberClient.java index b88cbd1e9..9994502eb 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelNumberClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelNumberClient.java @@ -54,4 +54,15 @@ public interface IDistributionParcelNumberClient { @PostMapping(API_PREFIX + "/addBatch") void addBatch(@RequestBody List parcelNumberList); + @PostMapping(API_PREFIX + "/findListByParcelListIds") + List findListByParcelListIds(@RequestBody List parcelListIds); + + @PostMapping(API_PREFIX + "/updateList") + void updateList(@RequestBody List updateParceNumberList); + + @GetMapping(API_PREFIX+"/findListByStockArticleId") + List findListByStockArticleId(@RequestParam Long orderId); + + @GetMapping(API_PREFIX+"/addHandleQuantity") + void addHandleQuantity(@RequestParam Long packageId, @RequestParam int num); } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationStockarticleClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationStockarticleClient.java index 49e26ac46..653ba1e6b 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationStockarticleClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationStockarticleClient.java @@ -21,8 +21,12 @@ import org.springblade.common.constant.ModuleNameConstant; import org.springblade.core.mp.support.BladePage; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; + /** * 预约订单中间表 Feign接口类 * @@ -47,4 +51,6 @@ public interface IDistributionReservationStockarticleClient { @GetMapping(TOP) BladePage reservationStockArticleTop(@RequestParam("current") Integer current, @RequestParam("size") Integer size); + @PostMapping(API_PREFIX+"/findReservationIdsByOrderCodes") + List findReservationIdsByOrderCodes(@RequestBody List orderCodes); } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java index df9c448e7..1819088fd 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java @@ -75,6 +75,9 @@ public interface IDistributionStockArticleClient { @GetMapping(API_PREFIX + "/findByOrderSelfNum") DistributionStockArticleEntity findByOrderSelfNum(@RequestParam String orderCode, @RequestParam Long warehouseId); + @GetMapping(API_PREFIX + "/findByOrderSelfNumAndTenantId") + DistributionStockArticleEntity findByOrderSelfNumAndTenantId(@RequestParam String tenantId,@RequestParam String orderCode, @RequestParam Long warehouseId); + @GetMapping(API_PREFIX + "/deleteById") void deleteById(@RequestParam Long orderId); @@ -211,4 +214,10 @@ public interface IDistributionStockArticleClient { @GetMapping(API_PREFIX + "/findSignNumByWaybillNo") Integer findSignNumByWaybillNo(@RequestParam String waybillNo, @RequestParam Long destinationWarehouseId); + @GetMapping(API_PREFIX + "/addSignNum") + void addSignNum(@RequestParam Long orderId, @RequestParam Integer unloadNum); + + @PostMapping(value = API_PREFIX + "/deleteZeroOrderByWaybillNoList",consumes = MediaType.APPLICATION_JSON_VALUE) + void deleteZeroOrderByWaybillNoList(@RequestBody List waybillNoList); + } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java index fcd4cfa42..4fc7232ff 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelListVO.java @@ -37,6 +37,8 @@ import java.util.List; public class DistributionParcelListVO extends DistributionParcelListEntity { private static final long serialVersionUID = 1L; + private Integer zeroPackageTotalNum; + private String stockupStatus; //备货状态 private String stockupStatusName; //备货名称 private Date stockupDate; diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ZeroPackageSupplyVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ZeroPackageSupplyVO.java new file mode 100644 index 000000000..e1a2c3ca8 --- /dev/null +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ZeroPackageSupplyVO.java @@ -0,0 +1,16 @@ +package com.logpm.distribution.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ZeroPackageSupplyVO implements Serializable { + + private Long stockArticleId; + private Long packageId; + private Long goodsId; + private String goodsName;//品类名称 + private Integer stockNum;//品类在库件数 + +} diff --git a/blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/mt/feign/MtFactoryDataClient.java b/blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/mt/feign/MtFactoryDataClient.java index f656f2b99..6d4d6c19a 100644 --- a/blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/mt/feign/MtFactoryDataClient.java +++ b/blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/mt/feign/MtFactoryDataClient.java @@ -4,8 +4,8 @@ package com.logpm.factory.mt.feign; import com.logpm.factory.mt.dto.MtPushDataDTO; import org.springblade.common.constant.ModuleNameConstant; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Set; @@ -20,10 +20,10 @@ public interface MtFactoryDataClient { /** * 根据订单编号查询梦天的数据 - * @param orderCodes + * @param orderCode */ - @GetMapping(HANDLEDATATOPLATFORM) - List orderPushData(@RequestParam("orderCode") Set orderCodes); + @PostMapping(HANDLEDATATOPLATFORM) + List orderPushData(@RequestBody Set orderCode); diff --git a/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/QualityDeliverEntity.java b/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/QualityDeliverEntity.java new file mode 100644 index 000000000..204494d4a --- /dev/null +++ b/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/QualityDeliverEntity.java @@ -0,0 +1,492 @@ +package com.logpm.report.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springblade.core.tenant.mp.TenantEntity; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 配送明细 + * + * @author zqb + * @create 2024-08-23 + */ +@Data +@TableName("logpm_quality_deliver") +@ApiModel(value = "QualityDeliver对象", description = "配送明细") +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QualityDeliverEntity extends TenantEntity { + private static final long serialVersionUID = 1L; + /** + * 事业线 + */ + @ApiModelProperty(value = "事业线") + private String businessUnit; + /** + * 作业仓库 + */ + @ApiModelProperty(value = "作业仓库") + private String warehouseName; + /** + * 作业仓库ID + */ + @ApiModelProperty(value = "作业仓库ID") + private Long warehouseId; + /** + * 品牌 + */ + @ApiModelProperty(value = "品牌") + private String brandName; + /** + * 客户名称 + */ + @ApiModelProperty(value = "客户名称") + private String customName; + /** + * 客户电话 + */ + @ApiModelProperty(value = "客户电话") + private String customPhone; + /** + * 客户地址 + */ + @ApiModelProperty(value = "客户地址") + private String customAddress; + /** + * 运单发货单位 + */ + @ApiModelProperty(value = "运单发货单位") + private String shipperUnit; + /** + * 运单发货人 + */ + @ApiModelProperty(value = "运单发货人") + private String shipperPerson; + /** + * 运单发货电话 + */ + @ApiModelProperty(value = "运单发货电话") + private String shipperMobile; + /** + * 运单发货地址 + */ + @ApiModelProperty(value = "运单发货地址") + private String shipperAddress; + /** + * 运单收货单位 + */ + @ApiModelProperty(value = "运单收货单位") + private String consigneeUnit; + /** + * 运单收货人 + */ + @ApiModelProperty(value = "运单收货人") + private String consigneePerson; + /** + * 运单收货电话 + */ + @ApiModelProperty(value = "运单收货电话") + private String consigneeMobile; + /** + * 运单收货地址 + */ + @ApiModelProperty(value = "运单收货地址") + private String consigneeAddress; + /** + * 运单号 + */ + @ApiModelProperty(value = "运单号") + private String waybillNumber; + /** + * 商场名称 + */ + @ApiModelProperty(value = "商场名称") + private String mallName; + /** + * 商场ID + */ + @ApiModelProperty(value = "商场ID") + private Long mallId; + /** + * 入库批次号 + */ + @ApiModelProperty(value = "入库批次号") + private String incomingBatch; + /** + * 订单号 + */ + @ApiModelProperty(value = "订单号") + private String orderCode; + /** + * 包条码 + */ + @ApiModelProperty(value = "包条码") + private String orderPackageCode; + /** + * 客户车次号 + */ + @ApiModelProperty(value = "客户车次号") + private String trainNumber; + /** + * 数据类型 1 定制品 2 库存品 3零担 + */ + @ApiModelProperty(value = "数据类型 1 定制品 2 库存品 3零担") + private Integer conditions; + /** + * 一级品 + */ + @ApiModelProperty(value = "一级品") + private String firstsProduct; + /** + * 二级品 + */ + @ApiModelProperty(value = "二级品") + private String secondProduct; + /** + * 三级品 + */ + @ApiModelProperty(value = "三级品") + private String thirdProduct; + /** + * 体积 + */ + @ApiModelProperty(value = "体积") + private BigDecimal volume; + /** + * 重量 + */ + @ApiModelProperty(value = "重量") + private BigDecimal weight; + /** + * 成本结算品类 + */ + @ApiModelProperty(value = "成本结算品类") + private String costCategory; + /** + * 收入结算品类 + */ + @ApiModelProperty(value = "收入结算品类") + private String revenueCategory; + /** + * 物料信息 + */ + @ApiModelProperty(value = "物料信息") + private String materielName; + /** + * 物料编码 + */ + @ApiModelProperty(value = "物料编码") + private String materielCode; + /** + * 始发仓 + */ + @ApiModelProperty(value = "始发仓") + private String beginWarehouseName; + /** + * 始发仓入库时间 + */ + @ApiModelProperty(value = "始发仓入库时间") + private Date beginWarehouseInTime; + /** + * 始发仓发货时间 + */ + @ApiModelProperty(value = "始发仓发货时间") + private Date beginWarehouseOutTime; + /** + * 末端仓入库时间 + */ + @ApiModelProperty(value = "末端仓入库时间") + private String endWarehouseInTime; + /** + * 计划配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号 + */ + @ApiModelProperty(value = "计划配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号") + private String planTrainNumber; + /** + * 计划预约单号 只有商市配,自提采用自提车次号 三方中转采用三方中转车次号 + */ + @ApiModelProperty(value = "计划预约单号 只有商市配,自提采用自提车次号 三方中转采用三方中转车次号") + private String planReservationCode; + /** + * 配送日期 + */ + @ApiModelProperty(value = "配送日期") + private Date deliveryTime; + /** + * 配送类型2市配 1商配 3自提 4三方中转(5直发商家 【签收节点进行驱动】) 没有这个字段 + */ + @ApiModelProperty(value = "配送类型2市配 1商配 3自提 4三方中转(5直发商家 【签收节点进行驱动】) 没有这个字段") + private String deliveryType; + /** + * 配送种类 + */ + @ApiModelProperty(value = "配送种类") + private String deliveryKind; + /** + * 配送车辆 存在多个逗号拼接 + */ + @ApiModelProperty(value = "配送车辆 存在多个逗号拼接") + private String vehicleName; + /** + * 配送司机 存在多个逗号拼接 + */ + @ApiModelProperty(value = "配送司机 存在多个逗号拼接") + private String driverName; + /** + * 配送公司 + */ + @ApiModelProperty(value = "配送公司") + private String distributionCompany; + /** + * 计划时间 + */ + @ApiModelProperty(value = "计划时间") + private Date deliveryPlanTime; + /** + * 计划数量 + */ + @ApiModelProperty(value = "计划数量") + private Integer planNum; + /** + * 计划类型(新增 补录) + */ + @ApiModelProperty(value = "计划类型(新增 补录)") + private String planType; + /** + * 计划人 + */ + @ApiModelProperty(value = "计划人") + private String deliveryCreateUserName; + /** + * 备货单号 + */ + @ApiModelProperty(value = "备货单号") + private String stockupCode; + /** + * 备货人 + */ + @ApiModelProperty(value = "备货人") + private String stockupUserName; + /** + * 备货时间 + */ + @ApiModelProperty(value = "备货时间") + private Date stockupFinishTime; + /** + * 备货数量 + */ + @ApiModelProperty(value = "备货数量") + private Integer stockNum; + /** + * 备货区 + */ + @ApiModelProperty(value = "备货区") + private String stockAllocation; + /** + * 备货类型(新增 补录) + */ + @ApiModelProperty(value = "备货类型(新增 补录)") + private String stockupType; + /** + * 装车人 + */ + @ApiModelProperty(value = "装车人") + private String loadUserName; + /** + * 装车时间 + */ + @ApiModelProperty(value = "装车时间") + private Date loadTime; + /** + * 装车配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号 + */ + @ApiModelProperty(value = "装车配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号") + private String loadTrainNumber; + /** + * 装车数量 + */ + @ApiModelProperty(value = "装车数量") + private Integer loadNum; + /** + * 装车类型(按件装车 一键装车 补录) + */ + @ApiModelProperty(value = "装车类型(按件装车 一键装车 补录)") + private String loadType; + /** + * 发车人 + */ + @ApiModelProperty(value = "发车人") + private String startCarUserName; + /** + * 发车时间 + */ + @ApiModelProperty(value = "发车时间") + private String startCarTime; + /** + * 到达人 + */ + @ApiModelProperty(value = "到达人") + private String arriveCarUserName; + /** + * 到达时间 + */ + @ApiModelProperty(value = "到达时间") + private String arriveCarTime; + /** + * 到达省 + */ + @ApiModelProperty(value = "到达省") + private String arriveProvince; + /** + * 到达市 + */ + @ApiModelProperty(value = "到达市") + private String arriveCity; + /** + * 到达区/县 + */ + @ApiModelProperty(value = "到达区/县") + private String arriveDistrict; + /** + * 到达地址 + */ + @ApiModelProperty(value = "到达地址") + private String arriveAddress; + /** + * 签收人 + */ + @ApiModelProperty(value = "签收人") + private String signUserName; + /** + * 签收时间 + */ + @ApiModelProperty(value = "签收时间") + private String signTime; + /** + * 签收状态 1.已签收 0 未签收 -1 已回库 -2 滞留 + */ + @ApiModelProperty(value = "签收状态 1.已签收 0 未签收 -1 已回库 -2 滞留") + private String signStatus; + /** + * 签收数量 + */ + @ApiModelProperty(value = "签收数量") + private String signNum; + /** + * 签收配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号 + */ + @ApiModelProperty(value = "签收配送单号 包含配送车次和自提车次 直发商家 对应干线车次 三方中转 三方中转车次号") + private String signTrainNumber; + /** + * 签收预约单号 只有商市配,自提没有该字段 + */ + @ApiModelProperty(value = "签收预约单号 只有商市配,自提没有该字段") + private String signReservationCode; + /** + * 签收车牌 + */ + @ApiModelProperty(value = "签收车牌") + private String signCarNumber; + /** + * 签收类型(按件签收 批量签收 补录) + */ + @ApiModelProperty(value = "签收类型(按件签收 批量签收 补录)") + private String signType; + /** + * 车辆类型 + */ + @ApiModelProperty(value = "车辆类型") + private String signCarType; + /** + * 复核人 + */ + @ApiModelProperty(value = "复核人") + private String reviewUserName; + /** + * 复核时间 复核时间=回库时间 + */ + @ApiModelProperty(value = "复核时间 复核时间=回库时间") + private String reviewTime; + /** + * 滞留人 + */ + @ApiModelProperty(value = "滞留人") + private String retentionUserName; + /** + * 滞留时间 + */ + @ApiModelProperty(value = "滞留时间") + private String retentionTime; + /** + * 配送成本 + */ + @ApiModelProperty(value = "配送成本") + private String distributionCost; + /** + * 分货费成本 + */ + @ApiModelProperty(value = "分货费成本") + private String apartCost; + /** + * 上楼费成本 + */ + @ApiModelProperty(value = "上楼费成本") + private String apstairsCost; + /** + * 平移费成本 + */ + @ApiModelProperty(value = "平移费成本") + private String moveCost; + /** + * 装卸费成本 + */ + @ApiModelProperty(value = "装卸费成本") + private String stevedoreCost; + /** + * 公里数成本 + */ + @ApiModelProperty(value = "公里数成本") + private String kiloAllowCost; + /** + * 补贴公里数成本 + */ + @ApiModelProperty(value = "补贴公里数成本") + private String allowKiloAllowCost; + /** + * 超区公里数成本 + */ + @ApiModelProperty(value = "超区公里数成本") + private String ultrAllpwCost; + /** + * 点位补贴成本 + */ + @ApiModelProperty(value = "点位补贴成本") + private String pointAllowCost; + /** + * 保底费成本 + */ + @ApiModelProperty(value = "保底费成本") + private String guarCost; + /** + * 油费成本 + */ + @ApiModelProperty(value = "油费成本") + private String fuelCost; + /** + * 其它成本 + */ + @ApiModelProperty(value = "其它成本") + private String otherCost; + +} diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/AftersalesOrderDTO.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/AftersalesOrderDTO.java new file mode 100644 index 000000000..06e8320ce --- /dev/null +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/AftersalesOrderDTO.java @@ -0,0 +1,14 @@ +package com.logpm.statistics.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class AftersalesOrderDTO implements Serializable { + + private String aftersaleOrder; + private BigDecimal aftersalesFee; + +} diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/ChangesRecordDTO.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/ChangesRecordDTO.java index 566859eb3..6627a72d8 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/ChangesRecordDTO.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/ChangesRecordDTO.java @@ -9,9 +9,9 @@ import java.util.List; @Data public class ChangesRecordDTO implements Serializable { - private Long orderInfoId;//订单id + private Long reconciliationOrderId;//对账单id - private String orderCode;//订单号 + private String reconciliationOrderCode;//对账单号 private BigDecimal pickupFee = BigDecimal.ZERO;//提货费 diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/MerchantStatisticsDTO.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/MerchantStatisticsDTO.java index b9f8ac49b..23aa095c9 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/MerchantStatisticsDTO.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/dto/MerchantStatisticsDTO.java @@ -3,6 +3,7 @@ package com.logpm.statistics.dto; import lombok.Data; import java.io.Serializable; +import java.util.Date; import java.util.List; @Data @@ -18,11 +19,42 @@ public class MerchantStatisticsDTO implements Serializable { private Integer listType; private String consignee; + private String shipper; + private Long consigneeId; private Integer confirmStatisticsOrder;//对账状态 0 1 + private List reconciliationOrderIds; private List orderInfoIds; private Long balanceOrderInfoId; + private Long reconciliationOrderId; + + private List aftersalesOrderDTOS; + + private Integer syncFeeSstatus; + private Integer signStatus; + + private String waybillNo; + private String orderCode; + private String departureWarehouseName; + private String destinationWarehouseName; + private String typeService; + private String shipperPerson; + private String shipperMoblie; + private String consigneePerson; + private String consigneeMobile; + private String cleanObjType; + private String payType; + private String payWay; + + + private String openTimeStartStr; + private String openTimeEndStr; + + private Date openTimeStart; + private Date openTimeEnd; + + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsAftersalesOrderRecordEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsAftersalesOrderRecordEntity.java new file mode 100644 index 000000000..a3a658a4b --- /dev/null +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsAftersalesOrderRecordEntity.java @@ -0,0 +1,55 @@ +package com.logpm.statistics.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +import java.math.BigDecimal; + +@Data +@TableName("logpm_statistics_aftersales_order_record") +@ApiModel(value = "StatisticsAftersalesOrderRecord对象", description = "售后单记录表") +@EqualsAndHashCode(callSuper = true) +public class StatisticsAftersalesOrderRecordEntity extends TenantEntity { + + + /** + * 预留1 + */ + @ApiModelProperty(value = "预留1") + private String reserve1; + /** + * 预留2 + */ + @ApiModelProperty(value = "预留2") + private String reserve2; + /** + * 预留3 + */ + @ApiModelProperty(value = "预留3") + private String reserve3; + /** + * 预留4 + */ + @ApiModelProperty(value = "预留4") + private String reserve4; + /** + * 预留5 + */ + @ApiModelProperty(value = "预留5") + private String reserve5; + + + private Long reconciliationOrderId; + + private Long balanceOrderId; + + private String aftersaleOrderCode; + + private BigDecimal aftersalesFee; + + +} diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsBalanceOrderInfoEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsBalanceOrderInfoEntity.java index eb0a05e86..86c427d2c 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsBalanceOrderInfoEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsBalanceOrderInfoEntity.java @@ -42,48 +42,27 @@ public class StatisticsBalanceOrderInfoEntity extends TenantEntity { @ApiModelProperty(value = "预留5") private String reserve5; + @ApiModelProperty(value = "结算单号") private String balanceOrderNo;//结算单号 + @ApiModelProperty(value = "品牌") private String brand;//品牌 private String waybillNo;//运单号 private String orderCode;//订单号 - private String typeService;//服务类型 + private Integer typeService;//服务类型 private String productGoods;//货物品类 - private String productTypeNum;//品类数 - + private BigDecimal totalBalanceFee;//结算总金额 private Integer totalCount;//总数量 - private BigDecimal totalWeight;//总重量 private BigDecimal totalVolume;//总体积 - - private String shipper;//发货单位 - private String shipperPerson;//发货人 - private String shipperMobile;//发货电话 - private String shipperAddress;//发货地址 + private Long consigneeId;//收货单位ID private String consignee;//收货单位 - private String consigneePerson;//收货人 - private String consigneeMobile;//收货电话 - private String consigneeAddress;//收货地址 - private String departure;//发站 - private String destination;//到站 - private String departureWarehouseName;//发站仓 - private String destinationWarehouseName;//目的仓 - private String payType;//支付类型 - private String payWay;//支付方式 - - private Integer isAftersale;//是否有售后 - private BigDecimal aftersalesFee;//售后金额 - - private BigDecimal totalBalanceFee;//结算总金额 - - private BigDecimal totalFee; - private BigDecimal openFee; - + private BigDecimal realTotalFee;//实际费用 private BigDecimal pickupFee;//提货费 private BigDecimal freightFee;//运费 private BigDecimal warehouseServiceFee;//仓库服务费 @@ -91,25 +70,19 @@ public class StatisticsBalanceOrderInfoEntity extends TenantEntity { private BigDecimal warehouseManageFee;//仓储管理费 private BigDecimal warehouseSortingFee;//仓储分拣费 private BigDecimal warehouseOperatingFee;//仓储操作费 - - private BigDecimal deliveryServiceFee;//配送服务费 private BigDecimal deliveryFee;//配送费 + private BigDecimal deliveryServiceFee;//配送服务费 private BigDecimal deliveryLoadingFee;//配送装卸费 private BigDecimal deliverySortingFee;//配送分拣费 private BigDecimal deliveryUpfloorFee;//配送上楼费 private BigDecimal deliveryMoveFee;//配送平移费 + private BigDecimal deliveryOtherFee;//配送其他费 private BigDecimal deliveryCrossingFee;//超区费 - private BigDecimal installFee;//安装费 - private BigDecimal quotationFee;//保价费 - private BigDecimal claimingValue;//申明价值 private BigDecimal otherFee;//其他费 - private BigDecimal returnFee;//回扣 - private BigDecimal thirdOprationFee;//三方操作费 - private BigDecimal xPay;//现付 - private BigDecimal dPay;//到付 - private BigDecimal hPay;//回付 - private BigDecimal yPay;//月结 + private Integer isAftersale;//是否有售后 + private String aftersaleOrder;//售后单号 + private BigDecimal aftersalesFee;//售后金额 private Integer balanceStatus;//0未结算 1部分结算 2已结算 @@ -125,4 +98,7 @@ public class StatisticsBalanceOrderInfoEntity extends TenantEntity { private String abnormalUserName;//异常确认人 private String abnormalRemark;//异常备注 + private Long destinationWarehouseId;//目的仓id + private String destinationWarehouseName;//目的仓名称 + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsChangesRecordEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsChangesRecordEntity.java index 5d64419bc..1fe33c945 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsChangesRecordEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsChangesRecordEntity.java @@ -42,9 +42,9 @@ public class StatisticsChangesRecordEntity extends TenantEntity { @ApiModelProperty(value = "预留5") private String reserve5; - private Long orderInfoId;//订单id + private Long reconciliationOrderId;//对账单id - private String orderCode;//订单号 + private String reconciliationOrderCode;//对账单号 private BigDecimal pickupFee;//提货费 diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsDistributionPackageEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsDistributionPackageEntity.java index 7283fb2ea..9e9dcffb0 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsDistributionPackageEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsDistributionPackageEntity.java @@ -42,30 +42,6 @@ public class StatisticsDistributionPackageEntity extends TenantEntity { @ApiModelProperty(value = "预留5") private String reserve5; - /** - * 仓库id - */ - @ApiModelProperty(value = "仓库id") - private Long warehouseId; - - /** - * 品牌id - */ - @ApiModelProperty(value = "品牌id") - private Long brandId; - - /** - * 客户id - */ - @ApiModelProperty(value = "客户id") - private Long consigneeId; - - /** - * 仓库名称 - */ - @ApiModelProperty(value = "仓库名称") - private String warehouseName; - /** * 运单id */ @@ -102,56 +78,44 @@ public class StatisticsDistributionPackageEntity extends TenantEntity { @ApiModelProperty(value = "品类Id") private String productId; - /** - * 配送车次号 - */ - @ApiModelProperty(value = "配送车次号") - private String trainNumber; - /** * 件数 */ @ApiModelProperty(value = "件数") - private Integer totalNum; + private Integer num; /** * 重量 */ @ApiModelProperty(value = "重量") - private BigDecimal totalWeight; + private BigDecimal weight; @ApiModelProperty(value = "体积") - private BigDecimal totalVolume; + private BigDecimal volume; - private BigDecimal openPrice; - private BigDecimal totalPrice; - private BigDecimal deliveryServiceFee; + private BigDecimal systemDeliveryFee; private BigDecimal deliveryFee; + private BigDecimal deliveryServiceFee; private BigDecimal deliveryLoadingFee; private BigDecimal deliverySortingFee; private BigDecimal deliveryUpfloorFee; private BigDecimal deliveryMoveFee; - private BigDecimal deliveryDistance; + private BigDecimal deliveryOtherFee; private BigDecimal deliveryCrossingFee; - private Integer isAftersales; - private BigDecimal aftersalesPrice; - private Integer hasStatement; - private Long statementCreateTime; - private String statementCreateUser; - private Integer isZero; - private BigDecimal realDeliveryServiceFee; - private BigDecimal realDeliveryFee; - private BigDecimal realDeliveryLoadingFee; - private BigDecimal realDeliverySortingFee; - private BigDecimal realDeliveryUpfloorFee; - private BigDecimal realDeliveryMoveFee; - private BigDecimal realDeliveryDistance; - private BigDecimal realDeliveryCrossingFee; private Integer goodsType; //1 订制品 2零担 3库存品 - private String typeService; //1 商配 2市配 3自提 4三方中转 private Long orderInfoId; - private Integer isSign;//是否签收 0否 1是 + private Integer signNum;//签收件数 private Date signTime; //签收时间 + private Integer isSign;//是否签收1是0否 + + private String trainNumber; + + private Long brandId; + private Long consigneeId; + + private Integer systemDeliveryChargeType; + private Integer deliveryChargeType; + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsOrderInfoEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsOrderInfoEntity.java index cbb0f054d..efac832b2 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsOrderInfoEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsOrderInfoEntity.java @@ -48,27 +48,93 @@ public class StatisticsOrderInfoEntity extends TenantEntity { @ApiModelProperty(value = "品牌id") private Long brandId; + @ApiModelProperty(value = "品牌") + private String brand; + /** * 收货单位id */ @ApiModelProperty(value = "收货单位id") private Long consigneeId; + @ApiModelProperty(value = "收货单位") + private String consignee; + @ApiModelProperty(value = "订单号") private String orderCode; + @ApiModelProperty(value = "运单id") private Long waybillId; + @ApiModelProperty(value = "运单号") private String waybillNo; - private String typeService; + @ApiModelProperty(value = "服务类型") + private Integer typeService; + + @ApiModelProperty(value = "签收状态") private Integer signStatus;// 签收状态 0未签收 1部分签收 2已签收 + @ApiModelProperty(value = "签收时间") + private Date signDate; + + @ApiModelProperty(value = "计算金额状态 0否 1是") + private Integer syncFeeStatus; + @ApiModelProperty(value = "计算金额时间") + private Date syncFeeDate; + + @ApiModelProperty(value = "生成对账单状态") + private Integer createReconciliationOrderStatus;//0未生成 1已生成 + @ApiModelProperty(value = "生成对账单确认人") + private String createReconciliationUserName;//生成对账单确认人 + @ApiModelProperty(value = "生成对账单时间") + private Date createReconciliationDate;//生成对账单时间 + + @ApiModelProperty(value = "商家对账单id") + private Long reconciliationOrderId;//商家对账单id + @ApiModelProperty(value = "商家对账单号") + private String reconciliationOrderNo;//商家对账单号 - private Integer confirmStatisticsOrder;//0未确认 1已确认 - private String confirmStatisticsUserName;//对账确认人 - private Date confirmStatisticsTime;//对账确认时间 + @ApiModelProperty(value = "确认对账状态") + private Integer confirmBalanceOrderStatus;//0未确认 1已确认 + @ApiModelProperty(value = "确认对账人") + private String confirmBalanceUserName;//对账确认人 + @ApiModelProperty(value = "确认对账时间") + private Date confirmBalanceDate;//对账确认时间 private Long waybillInfoId;//运单维度id + + @ApiModelProperty(value = "结算单id") private Long balanceOrderId;//结算单id + @ApiModelProperty(value = "结算单号") private String balanceOrderNo;//结算单号 + @ApiModelProperty(value = "异动金额") private BigDecimal changesFee;//异动金额 + @ApiModelProperty(value = "异常金额") + private BigDecimal exceptionFee;//异常金额 + + @ApiModelProperty(value = "在库周期") + private Integer cycle;//在库周期 + + @ApiModelProperty(value = "在库费用区间") + private String warehouseFeeInterval;//费用区间 + + + @ApiModelProperty(value = "发站仓id") + private Long departureWarehouseId; + + @ApiModelProperty(value = "发站仓名称") + private String departureWarehouseName; + + + @ApiModelProperty(value = "目的仓id") + private Long destinationWarehouseId; + + @ApiModelProperty(value = "目的仓名称") + private String destinationWarehouseName; + + + @ApiModelProperty(value = "取消对账单确认人") + private String cancleReconciliationUserName;//取消对账单确认人 + @ApiModelProperty(value = "取消对账单时间") + private Date cancleReconciliationDate;//取消对账单时间 + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsReconciliationOrderInfoEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsReconciliationOrderInfoEntity.java new file mode 100644 index 000000000..91f3aab5e --- /dev/null +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsReconciliationOrderInfoEntity.java @@ -0,0 +1,105 @@ +package com.logpm.statistics.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("logpm_statistics_reconciliation_order_info") +@ApiModel(value = "StatisticsReconciliationOrderInfo对象", description = "对账单表") +@EqualsAndHashCode(callSuper = true) +public class StatisticsReconciliationOrderInfoEntity extends TenantEntity { + + /** + * 预留1 + */ + @ApiModelProperty(value = "预留1") + private String reserve1; + /** + * 预留2 + */ + @ApiModelProperty(value = "预留2") + private String reserve2; + /** + * 预留3 + */ + @ApiModelProperty(value = "预留3") + private String reserve3; + /** + * 预留4 + */ + @ApiModelProperty(value = "预留4") + private String reserve4; + /** + * 预留5 + */ + @ApiModelProperty(value = "预留5") + private String reserve5; + + @ApiModelProperty(value = "对账单号") + private String reconciliationOrderNo;//对账单号 + + private String waybillNo;//运单号 + + private String orderCode;//订单号 + + @ApiModelProperty(value = "品牌") + private String brand;//品牌 + + private Long consigneeId;//收货单位ID + private String consignee;//收货单位 + + private Long destinationWarehouseId;//目的仓id + private String destinationWarehouseName;//目的仓名称 + + private Integer totalNum;//总数量 + private BigDecimal totalWeight;//总重量 + private BigDecimal totalVolume;//总体积 + + private BigDecimal realTotalFee;//实际费用 + private BigDecimal pickupFee;//提货费 + private BigDecimal freightFee;//运费 + private BigDecimal warehouseServiceFee;//仓库服务费 + private BigDecimal warehouseFee;//仓储费 + private BigDecimal warehouseManageFee;//仓储管理费 + private BigDecimal warehouseSortingFee;//仓储分拣费 + private BigDecimal warehouseOperatingFee;//仓储操作费 + private BigDecimal deliveryFee;//配送费 + private BigDecimal deliveryServiceFee;//配送服务费 + private BigDecimal deliveryLoadingFee;//配送装卸费 + private BigDecimal deliverySortingFee;//配送分拣费 + private BigDecimal deliveryUpfloorFee;//配送上楼费 + private BigDecimal deliveryMoveFee;//配送平移费 + private BigDecimal deliveryOtherFee;//配送其他费 + private BigDecimal deliveryCrossingFee;//超区费 + private BigDecimal installFee;//安装费 + private BigDecimal otherFee;//其他费 + + private Integer isAftersale;//是否有售后 + private String aftersaleOrder;//售后单号 + private BigDecimal aftersalesFee;//售后金额 + + private String createUserName; + + private Integer isChanges;//是否有异动 0 否 1是 + private BigDecimal changesFee;//异动金额 + private String changesItems;//异动栏目 + private String changesRemark;//异动备注 + private Date changesTime;//异动时间 + + private Integer checkStatus;//确认结算状态 0为确认 1已确认 + private String checkUserName; + private Date checkTime; + + private String balanceOrderNo; + private Long balanceOrderId; + + + +} diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsTrunklinePackageEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsTrunklinePackageEntity.java index 8bc83562d..5d53565fd 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsTrunklinePackageEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsTrunklinePackageEntity.java @@ -41,18 +41,6 @@ public class StatisticsTrunklinePackageEntity extends TenantEntity { @ApiModelProperty(value = "预留5") private String reserve5; - /** - * 仓库id - */ - @ApiModelProperty(value = "仓库id") - private Long warehouseId; - - /** - * 仓库名称 - */ - @ApiModelProperty(value = "仓库名称") - private String warehouseName; - /** * 运单id */ @@ -87,59 +75,66 @@ public class StatisticsTrunklinePackageEntity extends TenantEntity { * 品类名称 */ @ApiModelProperty(value = "品类id") - private String productId; + private Long productId; /** * 件数 */ @ApiModelProperty(value = "件数") - private Integer totalNum; + private Integer num; /** * 重量 */ @ApiModelProperty(value = "重量") - private BigDecimal totalWeight; + private BigDecimal weight; @ApiModelProperty(value = "体积") - private BigDecimal totalVolume; - - private BigDecimal openPrice; - private BigDecimal totalPrice; - private BigDecimal pickupFee; - private BigDecimal freightFee; - private BigDecimal installFee; - private BigDecimal quotationFee; - private BigDecimal claimingValue; - private BigDecimal otherFee; - private BigDecimal returnFee; - private BigDecimal thirdOprationFee; - private BigDecimal xPay; - private BigDecimal dPay; - private BigDecimal hPay; - private BigDecimal yPay; - private Integer isAftersales; - private BigDecimal aftersalesPrice; - private Integer hasStatement; - private Long statementCreateTime; - private String statementCreateUser; - private Integer isZero; - private BigDecimal realPickupFee; - private BigDecimal realFreightFee; - private BigDecimal realInstallFee; - private BigDecimal realQuotationFee; - private BigDecimal realClaimingValue; - private BigDecimal realOtherFee; - private BigDecimal realReturnFee; - private BigDecimal realThirdOprationFee; - private BigDecimal realXPay; - private BigDecimal realDPay; - private BigDecimal realHPay; - private BigDecimal realYPay; + private BigDecimal volume; + + @ApiModelProperty(value = "实际运费计算方式") + private Integer freightChargeType; + @ApiModelProperty(value = "系统运费计算方式") + private Integer systemFreightChargeType; + @ApiModelProperty(value = "实际提货费计算方式") + private Integer pickupChargeType; + @ApiModelProperty(value = "系统提货费计算方式") + private Integer systemPickupChargeType; + + @ApiModelProperty(value = "系统总费用") + private BigDecimal totalSystemFee; + + @ApiModelProperty(value = "实际总费用") + private BigDecimal totalRealFee; + @ApiModelProperty(value = "系统运费单价") + private BigDecimal systemFreightPrice; + + @ApiModelProperty(value = "实际运费单价") + private BigDecimal freightPrice; + + @ApiModelProperty(value = "系统提货单价") + private BigDecimal systemPickupPrice; + + @ApiModelProperty(value = "实际提货单价") + private BigDecimal pickupPrice; + + @ApiModelProperty(value = "保价费") + private BigDecimal insurancePrice; + + @ApiModelProperty(value = "保价费") + private BigDecimal otherPrice; + + @ApiModelProperty(value = "三方操作费") + private BigDecimal thirdOperationPrice; + + @ApiModelProperty(value = "货物类型") private Integer goodsType; //1 订制品 2零担 3库存品 - private String typeService; //1 商配 2市配 3自提 4三方中转 + @ApiModelProperty(value = "订单id") private Long orderInfoId; + private Long brandId; + private Long consigneeId; + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsWarehousePackageEntity.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsWarehousePackageEntity.java index a07e655a2..0b2df0fcd 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsWarehousePackageEntity.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/entity/StatisticsWarehousePackageEntity.java @@ -42,18 +42,6 @@ public class StatisticsWarehousePackageEntity extends TenantEntity { @ApiModelProperty(value = "预留5") private String reserve5; - /** - * 仓库id - */ - @ApiModelProperty(value = "仓库id") - private Long warehouseId; - - /** - * 仓库名称 - */ - @ApiModelProperty(value = "仓库名称") - private String warehouseName; - /** * 运单id */ @@ -88,53 +76,58 @@ public class StatisticsWarehousePackageEntity extends TenantEntity { * 品类名称 */ @ApiModelProperty(value = "品类id") - private String productId; + private Long productId; /** * 件数 */ @ApiModelProperty(value = "件数") - private Integer totalNum; + private Integer num; /** * 重量 */ @ApiModelProperty(value = "重量") - private BigDecimal totalWeight; + private BigDecimal weight; @ApiModelProperty(value = "体积") - private BigDecimal totalVolume; + private BigDecimal volume; - private BigDecimal openPrice; - private BigDecimal totalPrice; - private Date incomingTime; - @ApiModelProperty(value = "签收时间") - private Date signTime; - @ApiModelProperty(value = "末端仓入库时间") - private Date warehouseEntryTimeEnd; - private Date outingTime; + @ApiModelProperty(value = "在库周期") + private Integer cycle; + + @ApiModelProperty(value = "仓库费用区间") private String warehouseFeeInterval; + + @ApiModelProperty(value = "仓库服务费合计") private BigDecimal warehouseServiceFee; + + @ApiModelProperty(value = "仓库仓储费") private BigDecimal warehouseFee; + + @ApiModelProperty(value = "仓库管理费") private BigDecimal warehouseManageFee; + + @ApiModelProperty(value = "仓库分拣费") private BigDecimal warehouseSortingFee; + + @ApiModelProperty(value = "仓库操作费") private BigDecimal warehouseOperatingFee; - private Integer isAftersales; - private BigDecimal aftersalesPrice; - private Integer hasStatement; - private Long statementCreateTime; - private String statementCreateUser; - private Integer isZero; - private String realWarehouseFeeInterval; - private BigDecimal realWarehouseServiceFee; - private BigDecimal realWarehouseFee; - private BigDecimal realWarehouseManageFee; - private BigDecimal realWarehouseSortingFee; - private BigDecimal realWarehouseOperatingFee; + @ApiModelProperty(value = "货物类型") private Integer goodsType; //1 订制品 2零担 3库存品 - private String typeService; //1 商配 2市配 3自提 4三方中转 + @ApiModelProperty(value = "订单id") private Long orderInfoId; + @ApiModelProperty(value = "签收时间") + private Date signTime; + + private Date warehouseEntryTimeEnd; + + private Long brandId; + private Long consigneeId; + + private Integer chargeType; + } diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/feign/IOrderInfoClient.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/feign/IOrderInfoClient.java new file mode 100644 index 000000000..b68114506 --- /dev/null +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/feign/IOrderInfoClient.java @@ -0,0 +1,19 @@ +package com.logpm.statistics.feign; + +import org.springblade.common.constant.ModuleNameConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient( + value = ModuleNameConstant.APPLICATION_BASICDATA_NAME +) +public interface IOrderInfoClient { + + String API_PREFIX = "/orderInfo/client"; + + + @GetMapping(API_PREFIX+"/findCreateRencilitionOrderStatus") + Integer findCreateRencilitionOrderStatus(@RequestParam Long waybillId); + +} diff --git a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoVO.java b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoVO.java index c8fdaa455..9770ccfdf 100644 --- a/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoVO.java +++ b/blade-service-api/logpm-statisticsdata-api/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoVO.java @@ -10,9 +10,11 @@ import java.util.Date; public class StatisticsOrderInfoVO implements Serializable { private Long orderInfoId; + private Long brandId;//品牌id private String brand;//品牌 + private Long waybillId;//运单id private String waybillNo;//运单号 - private String orderNo;//订单号 + private String orderCode;//订单号 private String typeService;//商家服务类型 private String shipper;//发货单位 private String shipperPerson;//发货人 @@ -22,117 +24,64 @@ public class StatisticsOrderInfoVO implements Serializable { private String consigneePerson;//收货人 private String consigneeMobile;//收货电话 private String consigneeAddress;//收货地址 - private String waybillStatus;//运单状态 private Integer signStatus;//订单签收状态 - private Integer isCheck;//运单是否审核 + private Date signDate;//签收时间 private Date openTime;//开单时间 - private String goodsName;//物料品类 - private String departure;//发站 - private String destination;//到站 + + private Long departureWarehouseId;//发站仓id private String departureWarehouseName;//发站仓 + private Long destinationWarehouseId;//目的仓id private String destinationWarehouseName;//目的仓 - private String deliveryMethod;//配送方式 + private String departure;//发站 + private String destination;//到站 private String customerTrain;//客户车次号 - private String receiptStatus;//回单状态 - private String waybillRemark;//运单备注 - private String statisticsFang; + private String statisticsFang;//结算方 private String payType;//支付类型 private String payWay;//支付方式 - private String storeBusiness; - private Integer confirmStatisticsOrder;//0未确认 1已确认 - private String confirmStatisticsUserName;//对账确认人 - private Date confirmStatisticsTime;//对账确认时间 - - private Integer isEdit; - private String goodsTypeNum; - private Integer productTypeNum; - - private Integer totalcount;//订单数量 + private String goodsName;//物料品类 + private Integer totalNum;//订单数量 private BigDecimal totalWeight;//订单重量 private BigDecimal totalVolume;//订单体积 + private BigDecimal systemFreightPrice; + private BigDecimal freightPrice; + private BigDecimal systemPickupPrice; + private BigDecimal pickupPrice; + + private BigDecimal warehouseServiceFee; + private BigDecimal warehouseFee; + private BigDecimal warehouseManageFee; + private BigDecimal warehouseSortingFee; + private BigDecimal warehouseOperatingFee; + + private BigDecimal systemDeliveryFee; + private BigDecimal deliveryFee; + private BigDecimal deliveryServiceFee; + private BigDecimal deliveryLoadingFee; + private BigDecimal deliverySortingFee; + private BigDecimal deliveryUpfloorFee; + private BigDecimal deliveryMoveFee; + private BigDecimal deliveryOtherFee; + private BigDecimal deliveryCrossingFee; + + private Integer cycle;//在库周期 + private String cleanObjType;//结算方 + private String warehouseFeeInterval;//费用区间 + + private BigDecimal installFee = BigDecimal.ZERO;//安装费 + private BigDecimal otherFee = BigDecimal.ZERO;//其他费 - private BigDecimal totalFee;//总费用 - private BigDecimal openFee;//开单费 - //干线 - private BigDecimal pickupFee;//开单提货费 - private BigDecimal realPickupFee;//实际提货费 - private BigDecimal freightFee;//开单运费 - private BigDecimal realFreightFee;//实际运费 - private BigDecimal installFee;//开单安装费 - private BigDecimal realInstallFee;//实际安装费 - private BigDecimal quotationFee;//保价费 - private BigDecimal realQuotationFee;//实际保价费 - private BigDecimal claimingValue;//开单申明价值 - private BigDecimal realClaimingValue;//实际申明价值 - private BigDecimal otherFee;//开单其他费 - private BigDecimal realOtherFee;//实际其他费 - private BigDecimal returnFee;//开单回扣 - private BigDecimal realReturnFee;//实际回扣 - private BigDecimal thirdOprationFee;//开单三方操作费 - private BigDecimal realThirdOprationFee;//实际三方操作费 - private BigDecimal xPay;//开单现付 - private BigDecimal realXPay;//实际现付 - private BigDecimal dPay;//开单到付 - private BigDecimal realDPay;//实际到付 - private BigDecimal hPay;//开单回付 - private BigDecimal realHPay;//实际回付 - private BigDecimal yPay;//开单月结 - private BigDecimal realYPay;//实际月结 - - - private Date incomingTime;//入库时间 - private Date outingTime;//出库时间 - private String warehouseFeeInterval; - private BigDecimal warehouseServiceFee;//开单仓库服务费 - private BigDecimal realWarehouseServiceFee;//实际仓库服务费 - private BigDecimal warehouseFee;//开单仓储费 - private BigDecimal realWarehouseFee;//实际仓储费 - private BigDecimal warehouseManageFee;//开单仓储管理费 - private BigDecimal realWarehouseManageFee;//实际仓储管理费 - private BigDecimal warehouseSortingFee;//开单仓储分拣费 - private BigDecimal realWarehouseSortingFee;//实际仓储分拣费 - private BigDecimal warehouseOperatingFee;//开单仓储操作费 - private BigDecimal realWarehouseOperatingFee;//实际仓储操作费 - //配送 - private BigDecimal deliveryServiceFee;//开单配送服务费 - private BigDecimal realDeliveryServiceFee;//实际配送服务费 - private BigDecimal deliveryFee;//开单配送费 - private BigDecimal realDeliveryFee;//实际配送费 - private BigDecimal deliveryLoadingFee;//配送装卸费 - private BigDecimal realDeliveryLoadingFee;//实际配送装卸费 - private BigDecimal deliverySortingFee;//配送分拣费 - private BigDecimal realDeliverySortingFee;//实际配送分拣费 - private BigDecimal deliveryUpfloorFee;//开单配送上楼费 - private BigDecimal realDeliveryUpfloorFee;//实际配送上楼费 - private BigDecimal deliveryMoveFee;//开单配送平移费 - private BigDecimal realDeliveryMoveFee;//实际平移费 - private BigDecimal deliveryDistance;//开单配送公里数 - private BigDecimal realDeliveryDistance;//实际配送公里数 - private BigDecimal deliveryCrossingFee;//开单超区费 - private BigDecimal realDeliveryCrossingFee;//实际超区费 - - -// private String isAftersales; -// private BigDecimal aftersalesFee; - private BigDecimal totalStatementFee;//对账总金额 - private String statementStatus; - private BigDecimal hasStatementFee; - private String statementCreateUser; - private Integer isChanges;//是否异动0否 1是 - private BigDecimal changesFee;//异动金额 - private String changesItems;//异动条目 - private String changesRemark;//异动备注 - private Date changesTime;//最晚一条 private Integer signNum; private Date signTime;//最晚一条 - private String statisticsStatus;//结算状态 - private BigDecimal totalStatisticsFee;//结算总金额 - private BigDecimal hasStatisticsFee;//已结算金额 - private Integer isAbnormalStatistics;//是否异常结算 0否 1是 - private BigDecimal abnormalFee;//异常金额 + private Integer syncFeeStatus; + + private Date syncFeeDate; + + private Integer createReconciliationOrderStatus;//0未生成 1已生成 + private String createReconciliationUserName;//生成对账单确认人 + private Date createReconciliationDate;//生成对账单时间 } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java index 8409a7f32..be000cf82 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java @@ -37,6 +37,7 @@ public class LoadCarsDTO implements Serializable { private String deliveryType; private String operator; private String settlementPerson; + private String customerType; private Long warehouseId; private List warehouseIds; @@ -61,6 +62,7 @@ public class LoadCarsDTO implements Serializable { private String orderPackageCode; private List productInfoList = new ArrayList<>(); + private List zeroPackageList = new ArrayList<>(); private String goodsName; diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java index 29590ed4f..005a6b889 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java @@ -159,5 +159,8 @@ public class OpenOrderDTO implements Serializable { private List updateAdvanceDetailList; + private String checkReson; + + private String checkRemark; } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/WaybillDetailDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/WaybillDetailDTO.java index 68474e618..d6e6ac3d1 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/WaybillDetailDTO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/WaybillDetailDTO.java @@ -1,5 +1,6 @@ package com.logpm.trunkline.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -22,5 +23,11 @@ public class WaybillDetailDTO implements Serializable { private BigDecimal subtotalFreight;//小计运费 private BigDecimal deliveryPrice;//配送单价 private BigDecimal subtotalDeliveryFee;//小计配送费用 + private BigDecimal pickupPrice; + private BigDecimal freightPrice; + private Integer systemChargeType; + private Integer systemDeliveryChargeType; + private Integer systemPickupChargeType; + private Integer systemWarehouseChargeType; } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/ZeroPackageDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/ZeroPackageDTO.java new file mode 100644 index 000000000..d1c2916bd --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/ZeroPackageDTO.java @@ -0,0 +1,16 @@ +package com.logpm.trunkline.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ZeroPackageDTO implements Serializable { + + private Long id; + private Long packageId; + private Long goodsId; + private String goodsName;//品类名称 + private Integer enterNum;//装车数量 + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineScanZeroDetailEntity.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineScanZeroDetailEntity.java new file mode 100644 index 000000000..e1b837ef8 --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineScanZeroDetailEntity.java @@ -0,0 +1,51 @@ +package com.logpm.trunkline.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +@Data +@TableName("logpm_trunkline_scan_zero_detail") +@ApiModel(value = "TrunklineScanZeroDetail对象", description = "装车扫描零担明细表") +@EqualsAndHashCode(callSuper = true) +public class TrunklineScanZeroDetailEntity extends TenantEntity { + + /** 预留1 */ + @ApiModelProperty(name = "预留1",notes = "") + private String reserve1 ; + /** 预留2 */ + @ApiModelProperty(name = "预留2",notes = "") + private String reserve2 ; + /** 预留3 */ + @ApiModelProperty(name = "预留3",notes = "") + private String reserve3 ; + /** 预留4 */ + @ApiModelProperty(name = "预留4",notes = "") + private String reserve4 ; + /** 预留5 */ + @ApiModelProperty(name = "预留5",notes = "") + private String reserve5 ; + /** scanId */ + @ApiModelProperty(name = "装车扫描id",notes = "") + private Long scanId ; + /** packageId */ + @ApiModelProperty(name = "包件id",notes = "") + private Long packageId ; + /** goodsId */ + @ApiModelProperty(name = "品类id",notes = "") + private Long goodsId ; + /** goodsName */ + @ApiModelProperty(name = "品类名称",notes = "") + private String goodsName ; + /** loadingNum */ + @ApiModelProperty(name = "装车数量",notes = "") + private Integer loadingNum ; + /** unloadNum */ + @ApiModelProperty(name = "卸车数量",notes = "") + private Integer unloadNum ; + + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IExtractedDataClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IExtractedDataClient.java new file mode 100644 index 000000000..350dfca01 --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IExtractedDataClient.java @@ -0,0 +1,18 @@ +package com.logpm.trunkline.feign; + +import com.logpm.trunkline.entity.TrunklineCarsLoadEntity; +import org.springblade.common.constant.ModuleNameConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient( + value = ModuleNameConstant.APPLICATION_TRUNKLINE_NAME +) +public interface IExtractedDataClient { + + String API_PREFIX = "extractedData/client"; + @GetMapping(API_PREFIX+"/findEntityByCarsNo") + void execute(@RequestParam String tenantId,@RequestParam String wallbillNum); + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceClient.java index fb3d19099..fca74b559 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceClient.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceClient.java @@ -29,4 +29,7 @@ public interface ITrunklineAdvanceClient { @PostMapping(API_PREFIX+"/cancelOrder") Boolean cancelOrder(@RequestBody CancelOrderParamVO orderCode); + + @GetMapping(API_PREFIX+"/findListByWaybillNo") + List findListByWaybillNo(@RequestParam String waybillNo); } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceDetailClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceDetailClient.java index 1fb266675..426965b38 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceDetailClient.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineAdvanceDetailClient.java @@ -25,4 +25,7 @@ public interface ITrunklineAdvanceDetailClient { List findListByAdvanceIds(@RequestBody List collect); @GetMapping(API_PREFIX+"/findEntityByOrderPackageCode") TrunklineAdvanceDetailEntity findEntityByOrderPackageCode(@RequestParam String orderPackageCode); + + @GetMapping(API_PREFIX+"/findListByWaybillId") + List findListByWaybillId(@RequestParam Long waybillId); } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineScanZeroDetailClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineScanZeroDetailClient.java new file mode 100644 index 000000000..5e04afbc6 --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineScanZeroDetailClient.java @@ -0,0 +1,26 @@ +package com.logpm.trunkline.feign; + +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import org.springblade.common.constant.ModuleNameConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient( + value = ModuleNameConstant.APPLICATION_TRUNKLINE_NAME +) +public interface ITrunklineScanZeroDetailClient { + + String API_PREFIX = "trunklineScanZeroDetail/client"; + + @GetMapping(API_PREFIX+"/findListByCarsLoadScanId") + List findListByCarsLoadScanId(@RequestParam Long carsLoadScanId); + + @PostMapping(API_PREFIX+"/updateBetch") + void updateBetch(@RequestBody List updateScanZeroDetailEntityList); + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadOrderInfoVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadOrderInfoVO.java index e088db4ff..c0dfda215 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadOrderInfoVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadOrderInfoVO.java @@ -17,6 +17,7 @@ public class CarsLoadOrderInfoVO implements Serializable { private BigDecimal unloadIncome; private BigDecimal costZhang; private BigDecimal costPiece; + private BigDecimal income; private BigDecimal weight; private BigDecimal volume; private BigDecimal orderFreight; diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/GoodsLoadingNumVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/GoodsLoadingNumVO.java new file mode 100644 index 000000000..17aeb99af --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/GoodsLoadingNumVO.java @@ -0,0 +1,13 @@ +package com.logpm.trunkline.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class GoodsLoadingNumVO implements Serializable { + + private Long goodsId; + private Integer loadingNum; + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadZeroListVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadZeroListVO.java index c07d2669a..d521f7abf 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadZeroListVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadZeroListVO.java @@ -3,6 +3,8 @@ package com.logpm.trunkline.vo; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Data public class LoadZeroListVO implements Serializable { @@ -12,4 +14,7 @@ public class LoadZeroListVO implements Serializable { private Integer planNum;//计划装车件数 private Integer loadingNum;//已装车件数 private Integer unloadingNum;//已卸车件数 + + private List zeroPackageList = new ArrayList<>(); + } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java index 5aa4353c6..a254cbfa2 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java @@ -1,5 +1,6 @@ package com.logpm.trunkline.vo; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -10,6 +11,9 @@ import java.util.Date; @Data public class LoadingDetailExportVO implements Serializable { + @ExcelIgnore + private Long id; + @ExcelProperty(value = "运单号") private String waybillNo; @@ -85,4 +89,9 @@ public class LoadingDetailExportVO implements Serializable { @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date signTime; + @ExcelProperty(value = "装车品类数量") + private String loadingGoods; + @ExcelProperty(value = "卸车品类数量") + private String unloadGoods; + } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderCodeNumVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderCodeNumVO.java new file mode 100644 index 000000000..58c32efd7 --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderCodeNumVO.java @@ -0,0 +1,14 @@ +package com.logpm.trunkline.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class OrderCodeNumVO implements Serializable { + + private String orderCode; + + private Integer totalNum; + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderScanDetailVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderScanDetailVO.java index d34dbd376..ebcb96c9a 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderScanDetailVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderScanDetailVO.java @@ -3,6 +3,8 @@ package com.logpm.trunkline.vo; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Data public class OrderScanDetailVO implements Serializable { @@ -13,4 +15,6 @@ public class OrderScanDetailVO implements Serializable { private String trayName; private String trayCode; + private List zeroDetailList = new ArrayList<>(); + } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/SignPackageVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/SignPackageVO.java index a75bf8f19..eb27db6f5 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/SignPackageVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/SignPackageVO.java @@ -3,6 +3,8 @@ package com.logpm.trunkline.vo; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Data public class SignPackageVO implements Serializable { @@ -12,5 +14,9 @@ public class SignPackageVO implements Serializable { private Integer num; private Integer unloadNum; private String scanStatus; + private String orderCode; + private String waybillNo; + + private List scanZeroDetailList = new ArrayList<>(); } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadScanVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadScanVO.java index a9bee5e6d..6e55b5e9c 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadScanVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadScanVO.java @@ -7,8 +7,11 @@ import lombok.Data; public class TrunklineCarsLoadScanVO extends TrunklineCarsLoadScanEntity { private Long signOrderId; + private Long carsLoadScanId; private String destinationWarehouseName; + private String loadingGoods; + private String unloadGoods; } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineScanZeroDetailVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineScanZeroDetailVO.java new file mode 100644 index 000000000..f81bf4b1d --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineScanZeroDetailVO.java @@ -0,0 +1,11 @@ +package com.logpm.trunkline.vo; + +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import lombok.Data; + +@Data +public class TrunklineScanZeroDetailVO extends TrunklineScanZeroDetailEntity { + + + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/UnloadPackageVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/UnloadPackageVO.java index 1b7bbbdb1..52e15fb7c 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/UnloadPackageVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/UnloadPackageVO.java @@ -3,6 +3,8 @@ package com.logpm.trunkline.vo; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Data public class UnloadPackageVO implements Serializable { @@ -15,5 +17,9 @@ public class UnloadPackageVO implements Serializable { private String trayCode; private String scanStatus; private String unloadNodeName; + private String orderCode; + private String waybillNo; + + private List scanZeroDetailList = new ArrayList<>(); } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroPackageVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroPackageVO.java new file mode 100644 index 000000000..99d0b55dc --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroPackageVO.java @@ -0,0 +1,16 @@ +package com.logpm.trunkline.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ZeroPackageVO implements Serializable { + + private Long packageId; + private Long goodsId; + private String goodsName;//品类名称 + private Integer stockNum;//品类在库件数 + private Integer loadingNum;//品类装车件数 + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleListVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleListVO.java new file mode 100644 index 000000000..bce4c47fe --- /dev/null +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleListVO.java @@ -0,0 +1,40 @@ +package com.logpm.trunkline.vo; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Data +public class ZeroSuppleListVO implements Serializable { + + + private Long orderId; + private String waybillNo; + private String orderCode; + private Integer stockNum;//在库数量 + private Date createTime;//开单时间 + private String destination;//到站 + private String destinationWarehouseName;//目的仓 + private String shipper;//发货单位 + private String shipperName;//发货人 + private String consignee;//收货单位 + private String consigneeName;//收货人 + private String goodsName;//货物名称 + private Integer totalNum;//运单总件数 + private BigDecimal weight;//运单总重量 + private BigDecimal volume;//运单总体积 + private String customerTrain;//客户车次号 + private String remark;//备注 + private String loadSignCode;//签收单号 + private Long signOrderId;//签收单id + private BigDecimal totalFreight;//总运费 + private BigDecimal price;//总运费 + + private List zeroPackageSupplyVOS = new ArrayList<>(); + +} diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleVO.java index 5302f0a09..03538c686 100644 --- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleVO.java +++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/ZeroSuppleVO.java @@ -1,8 +1,11 @@ package com.logpm.trunkline.vo; +import com.logpm.trunkline.dto.ZeroPackageDTO; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; @Data public class ZeroSuppleVO implements Serializable { @@ -14,5 +17,6 @@ public class ZeroSuppleVO implements Serializable { private Long finalNodeId;//目的仓id private Long signOrderId;//签收单id + private List zeroPackageList = new ArrayList<>(); } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseSettingEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseSettingEntity.java new file mode 100644 index 000000000..506744350 --- /dev/null +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseSettingEntity.java @@ -0,0 +1,25 @@ +package com.logpm.warehouse.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +@TableName("logpm_warehouse_setting") +@ApiModel(value = "WarehouseSetting对象", description = "仓库设置") +@EqualsAndHashCode(callSuper = true) +@Data +public class WarehouseSettingEntity extends TenantEntity { + private static final long serialVersionUID = 1L; + + /** + * 仓库id + */ + private Long warehouseId; + + /** + * 强制装车:0=不限制,1=强制 + */ + private Integer mandatoryLoading; +} diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWayBillDetail.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWayBillDetail.java index 63b62707e..d250d35c9 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWayBillDetail.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWayBillDetail.java @@ -50,7 +50,7 @@ public class WarehouseWayBillDetail extends BaseEntity { private BigDecimal subtotalFreight; /** 计价方式 1件 2方 3公斤 */ - @ApiModelProperty(name = "计价方式 1件 2方 3公斤",notes = "") + @ApiModelProperty(name = "实际运费计价方式 1件 2方 3公斤",notes = "") private Integer chargeType; /** 单价 */ @@ -61,5 +61,24 @@ public class WarehouseWayBillDetail extends BaseEntity { @ApiModelProperty(name = "小计配送费用",notes = "") private BigDecimal subtotalDeliveryFee; + /** 单价 */ + @ApiModelProperty(name = "提货单价",notes = "") + private BigDecimal pickupPrice; + + /** 单价 */ + @ApiModelProperty(name = "运费单价",notes = "") + private BigDecimal freightPrice; + + @ApiModelProperty(name = "系统运费计价方式 1件 2方 3公斤",notes = "") + private Integer systemChargeType; + + @ApiModelProperty(name = "系统配送计价方式 1件 2方 3公斤",notes = "") + private Integer systemDeliveryChargeType; + + @ApiModelProperty(name = "系统提货计价方式 1件 2方 3公斤",notes = "") + private Integer systemPickupChargeType; + + @ApiModelProperty(name = "系统仓库计价方式 1件 2方 3公斤",notes = "") + private Integer systemWarehouseChargeType; } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java index a02f1ba66..89846f789 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java @@ -492,4 +492,50 @@ public class WarehouseWaybillEntity extends TenantEntity { @ApiModelProperty(value = "提货件数 ") private Integer billladingNum; + @ApiModelProperty(value = "审核时间 ") + private Date checkTime; + + @ApiModelProperty(value = "回单状态 ") + private Integer returnStatus; + + @ApiModelProperty(value = "审核状态 ") + private Integer checkStatus; + + @ApiModelProperty(value = "更新状态 ") + private Integer updateStatus; + + @ApiModelProperty(value = "审核意见 ") + private String checkReson; + + @ApiModelProperty(value = "审核备注 ") + private String checkRemark; + + + @ApiModelProperty(value = "取消审核备注 ") + private String cancleCheckRemark; + + @ApiModelProperty(value = "取消审核人id") + private Long cancleCheckUserId; + @ApiModelProperty(value = "取消审核人名称") + private String cancleCheckUserName; + @ApiModelProperty(value = "取消审核时间 ") + private Date cancleCheckTime; + + + @ApiModelProperty(value = "签收件数 ") + private Integer signNum; + + @ApiModelProperty(value = "签收人") + private String signUserName; + @ApiModelProperty(value = "签收时间 ") + private Date signTime; + + @ApiModelProperty(value = "文员复核人") + private String signCheckUserName; + @ApiModelProperty(value = "文员复核时间 ") + private Date signCheckTime; + + + + } diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/IWarehouseSettingClient.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/IWarehouseSettingClient.java new file mode 100644 index 000000000..70d94a8af --- /dev/null +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/IWarehouseSettingClient.java @@ -0,0 +1,19 @@ +package com.logpm.warehouse.feign; + +import org.springblade.common.constant.ModuleNameConstant; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 仓库设置 Feign接口 + */ +@FeignClient( + value = ModuleNameConstant.APPLICATION_WAREHOUSE_NAME +) +public interface IWarehouseSettingClient { + + String API_PREFIX = "warehouse-setting/client"; + + @GetMapping(API_PREFIX + "/is-mandatory-loading") + Boolean isMandatoryLoading(Long warehouseId); +} diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillExportVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillExportVO.java new file mode 100644 index 000000000..dd2c2f5df --- /dev/null +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillExportVO.java @@ -0,0 +1,204 @@ +package com.logpm.warehouse.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class FinanceWaybillExportVO implements Serializable { + + @ExcelIgnore + private Long waybillId; + + @ExcelProperty(value = "品牌") + private String brand; + + @ExcelProperty(value = "运单号") + private String waybillNo; + + @ExcelProperty(value = "订单号") + private String orderNo; + + + @ExcelProperty(value = "收货单位") + private String consignee; + + @ExcelProperty(value = "收货人") + private String consigneeName; + + @ExcelProperty(value = "收货人电话") + private String consigneeMobile; + + + @ExcelProperty(value = "收货人地址") + private String consigneeAddress; + + @ExcelProperty(value = "发货单位") + private String shipper; + + @ExcelProperty(value = "发货人") + private String shipperName; + + + @ExcelProperty(value = "发货人电话") + private String shipperMobile; + + @ExcelProperty(value = "发货地址") + private String shipperAddress; + + @ExcelProperty(value = "到站") + private String destination; + @ExcelProperty(value = "发站") + private String departure; + @ExcelProperty(value = "发站仓") + private String departureWarehouseName; + @ExcelProperty(value = "目的仓") + private String destinationWarehouseName; + + @ExcelProperty(value = "目的仓") + private String deliveryWay; + + @ExcelProperty(value = "车次号") + private String customerTrain; + + @ExcelProperty(value = "备注") + private String remark; + + @ExcelProperty(value = "备注") + private String cleanObjType; + + @ExcelProperty(value = "支付方式") + private String payType; + + @ExcelProperty(value = "付款方式") + private String payWay; + + @ExcelProperty(value = "现付") + private BigDecimal xPay; + + @ExcelProperty(value = "到付") + private BigDecimal dPay; + + @ExcelProperty(value = "回付") + private BigDecimal hPay; + + @ExcelProperty(value = "月结") + private BigDecimal yPay; + + @ExcelProperty(value = "服务类型") + private String serviceType; + + @ExcelProperty(value = "是否改单") + private String updateStatus; + + @ExcelProperty(value = "是否审单") + private String checkStatus; + + @ExcelProperty(value = "审核原因") + private String checkReson; + + @ExcelProperty(value = "审核备注") + private String checkRemark; + + @ExcelProperty(value = "审核人") + private String checkUserName; + + @ExcelProperty(value = "审核时间") + private Date checkTime; + + @ExcelProperty(value = "取消审核备注") + private String cancleCheckRemark; + + @ExcelProperty(value = "取消审核人") + private String cancleCheckUserName; + + @ExcelProperty(value = "取消审核时间") + private Date cancleCheckTime; + + @ExcelProperty(value = "运单状态") + private String waybillStatus; + + @ExcelProperty(value = "开单时间") + private Date openTime; + + @ExcelProperty(value = "货物品类") + private String goodsName; + + @ExcelProperty(value = "总数量") + private Integer totalCount; + + @ExcelProperty(value = "总重量") + private BigDecimal totalWeight; + + @ExcelProperty(value = "总重量") + private BigDecimal totalVolume; + + @ExcelProperty(value = "总费用") + private BigDecimal totalFee; + + @ExcelProperty(value = "开单费用") + private BigDecimal systemTotalFee; + + @ExcelProperty(value = "提货费") + private BigDecimal pickupFee; + + @ExcelProperty(value = "运费") + private BigDecimal freightFee; + @ExcelProperty(value = "仓库服务费合计") + private BigDecimal warehouseServiceFee; + @ExcelProperty(value = "仓储费") + private BigDecimal warehouseFee; + @ExcelProperty(value = "仓储管理费") + private BigDecimal warehouseManagementFee; + @ExcelProperty(value = "仓储分拣费") + private BigDecimal warehouseSortingFee; + @ExcelProperty(value = "仓储操作费") + private BigDecimal warehouseOprationFee; + @ExcelProperty(value = "配送服务费合计") + private BigDecimal deliveryServiceFee; + @ExcelProperty(value = "配送费") + private BigDecimal deliveryFee; + @ExcelProperty(value = "配送装卸费") + private BigDecimal deliveryHandlingFee; + @ExcelProperty(value = "配送分货费") + private BigDecimal deliverySortingFee; + @ExcelProperty(value = "配送上楼费") + private BigDecimal deliveryUpfloorFee; + @ExcelProperty(value = "配送平移费") + private BigDecimal deliveryMoveFee; + @ExcelProperty(value = "配送公里数") + private BigDecimal deliveryLine; + @ExcelProperty(value = "超区公里费") + private BigDecimal deliveryLineFee; + @ExcelProperty(value = "其他费用") + private BigDecimal otherFee; + @ExcelProperty(value = "安装费") + private BigDecimal installFee; + @ExcelProperty(value = "保价费") + private BigDecimal insuranceFee; + @ExcelProperty(value = "申明价值") + private BigDecimal claimingValue; + @ExcelProperty(value = "三方操作费") + private BigDecimal thirdOperationFee; + @ExcelProperty(value = "回扣") + private BigDecimal rebate; + @ExcelProperty(value = "品类数量") + private BigDecimal goodsTypeNum; + @ExcelProperty(value = "品类开单运费") + private BigDecimal goodsTypePrice; + @ExcelProperty(value = "品类系统配送单价") + private BigDecimal goodsTypeDeliveryPrice; + @ExcelProperty(value = "品类系统提货单价") + private BigDecimal goodsTypePickupPrice; + @ExcelProperty(value = "品类系统运费单价") + private BigDecimal goodsTypeFreightPrice; + @ExcelProperty(value = "品类数") + private BigDecimal goodsTypeCount; + + + +} diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillVO.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillVO.java new file mode 100644 index 000000000..9d805d508 --- /dev/null +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/FinanceWaybillVO.java @@ -0,0 +1,87 @@ +package com.logpm.warehouse.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class FinanceWaybillVO implements Serializable { + + private Long id; + private String brand; + private String waybillNo; + private String orderNo; + private String consignee; + private String consigneeName; + private String consigneeMobile; + private String consigneeAddress; + private String shipper; + private String shipperName; + private String shipperMobile; + private String shipperAddress; + private String destination; + private String departure; + private String departureWarehouseName; + private String destinationWarehouseName; + private String deliveryWay; + private String customerTrain; + private Integer returnStatus; + private String remark; + private String cleanObjType; + private String payType; + private String payWay; + private BigDecimal xPay; + private BigDecimal dPay; + private BigDecimal hPay; + private BigDecimal yPay; + private String serviceType; + private Integer updateStatus; + private Integer checkStatus; + private String checkReson; + private String checkRemark; + private String checkUserName; + private Date checkTime; + private String cancleCheckRemark; + private String cancleCheckUserName; + private Date cancleCheckTime; + private String waybillStatus; + private Date openTime; + private String goodsName; + private Integer totalCount; + private BigDecimal totalWeight; + private BigDecimal totalVolume; + private BigDecimal totalFee; + private BigDecimal systemTotalFee; + private BigDecimal pickupFee; + private BigDecimal freightFee; + private BigDecimal warehouseServiceFee; + private BigDecimal warehouseFee; + private BigDecimal warehouseManagementFee; + private BigDecimal warehouseSortingFee; + private BigDecimal warehouseOprationFee; + private BigDecimal deliveryServiceFee; + private BigDecimal deliveryFee; + private BigDecimal deliveryHandlingFee; + private BigDecimal deliverySortingFee; + private BigDecimal deliveryUpfloorFee; + private BigDecimal deliveryMoveFee; + private BigDecimal deliveryLine; + private BigDecimal deliveryLineFee; + private BigDecimal otherFee; + private BigDecimal installFee; + private BigDecimal insuranceFee; + private BigDecimal claimingValue; + private BigDecimal thirdOperationFee; + private BigDecimal rebate; + private BigDecimal goodsTypeNum; + private BigDecimal goodsTypePrice; + private BigDecimal goodsTypeDeliveryPrice; + private BigDecimal goodsTypePickupPrice; + private BigDecimal goodsTypeFreightPrice; + private BigDecimal goodsTypeCount; + + + +} diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java index 93c42a23d..d8e729bee 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java @@ -19,8 +19,6 @@ package com.logpm.aftersales.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.aftersales.dto.AbnormalRecordDTO; import com.logpm.aftersales.service.IAftersalesAbnormalRecordService; -import com.logpm.basicdata.entity.BasicdataWarehouseEntity; -import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -84,9 +82,34 @@ public class AftersalesAbnormalRecordController extends BladeController { return R.fail(405,"异常id为空"); } + return aftersalesAbnormalRecordService.dealAbnormal(abnormalRecordDTO); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,"系统异常"); + } + } - return aftersalesAbnormalRecordService.dealAbnormal(abnormalRecordDTO); + @ResponseBody + @PostMapping("/findZeroDetail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "处理异常", notes = "传入loadCarsDTO") + public R findZeroDetail(@RequestBody AbnormalRecordDTO abnormalRecordDTO) { + String method = "############findZeroDetail: "; + log.info(method + "请求参数{}", abnormalRecordDTO); + Long abnormalRecordId = abnormalRecordDTO.getAbnormalRecordId(); + + try{ + + if(Objects.isNull(abnormalRecordId)){ + log.warn(method+"异常id为空 abnormalRecordId={}",abnormalRecordId); + return R.fail(405,"异常id为空"); + } + + return aftersalesAbnormalRecordService.findZeroDetail(abnormalRecordDTO); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); @@ -95,4 +118,6 @@ public class AftersalesAbnormalRecordController extends BladeController { return R.fail(500,"系统异常"); } } + + } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java index e16d56068..4e675f06d 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java @@ -1,9 +1,12 @@ package com.logpm.aftersales.dto; import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity; +import com.logpm.trunkline.dto.ZeroPackageDTO; import lombok.Data; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Data public class AbnormalRecordDTO extends AftersalesAbnormalRecordEntity { @@ -27,4 +30,6 @@ public class AbnormalRecordDTO extends AftersalesAbnormalRecordEntity { private Date dealDateStart; private Date dealDateEnd; + private List zeroPackageDTOS = new ArrayList<>(); + } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java index dc1820ef3..e0ee72a05 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java @@ -54,4 +54,10 @@ public class AftersalesAbnormalRecordClient implements IAftersalesAbnormalRecord public void addAbnormalRecordList(List abnormalRecordEntities) { aftersalesAbnormalRecordService.saveBatch(abnormalRecordEntities); } + + @Override + public List addAbnormalRecordListReturnList(List abnormalRecordEntities) { + aftersalesAbnormalRecordService.saveBatch(abnormalRecordEntities); + return abnormalRecordEntities; + } } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordZeroDetailClient.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordZeroDetailClient.java new file mode 100644 index 000000000..18f988378 --- /dev/null +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordZeroDetailClient.java @@ -0,0 +1,22 @@ +package com.logpm.aftersales.feign; + +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; +import com.logpm.aftersales.service.IAftersalesAbnormalRecordZeroDetailService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +@ApiIgnore() +@RestController +@AllArgsConstructor +public class AftersalesAbnormalRecordZeroDetailClient implements IAftersalesAbnormalRecordZeroDetailClient { + + private final IAftersalesAbnormalRecordZeroDetailService abnormalRecordZeroDetailService; + + @Override + public void addAbnormalRecordZeroDetail(List abnormalRecordZeroDetailEntityList) { + abnormalRecordZeroDetailService.saveBatch(abnormalRecordZeroDetailEntityList); + } +} diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordZeroDetailMapper.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordZeroDetailMapper.java new file mode 100644 index 000000000..789a0ea53 --- /dev/null +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordZeroDetailMapper.java @@ -0,0 +1,9 @@ +package com.logpm.aftersales.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; +import org.mapstruct.Mapper; + +@Mapper +public interface AftersalesAbnormalRecordZeroDetailMapper extends BaseMapper { +} diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java index b19900864..334532381 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java @@ -12,4 +12,6 @@ public interface IAftersalesAbnormalRecordService extends BaseService { + + List findListByAbnormalRecordId(Long abnormalRecordId); + +} diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java index 10b8e70ea..5c6b65a9a 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java @@ -1,24 +1,30 @@ package com.logpm.aftersales.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.logpm.aftersales.dto.AbnormalRecordDTO; import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity; +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; import com.logpm.aftersales.mapper.AftersalesAbnormalRecordMapper; import com.logpm.aftersales.service.IAftersalesAbnormalRecordService; +import com.logpm.aftersales.service.IAftersalesAbnormalRecordZeroDetailService; import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.entity.DistributionParcelNumberEntity; import com.logpm.distribution.entity.DistributionStockArticleEntity; import com.logpm.distribution.feign.IDistributionParcelListClient; +import com.logpm.distribution.feign.IDistributionParcelNumberClient; import com.logpm.distribution.feign.IDistributionStockArticleClient; +import com.logpm.distribution.vo.DistributionParcelListVO; import com.logpm.trunkline.dto.AddWaybillTrackDTO; +import com.logpm.trunkline.dto.ZeroPackageDTO; import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity; -import com.logpm.trunkline.feign.ITrunklineCarsLoadScanClient; -import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient; -import com.logpm.trunkline.feign.ITrunklineWaybillPackageClient; -import com.logpm.trunkline.feign.ITrunklineWaybillTrackClient; +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import com.logpm.trunkline.feign.*; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.feign.IWarehouseWaybillClient; import lombok.AllArgsConstructor; @@ -30,10 +36,8 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @@ -49,6 +53,8 @@ public class AftersalesAbnormalRecordServiceImpl extends BaseServiceImpl page = new Page<>(); @@ -145,149 +155,229 @@ public class AftersalesAbnormalRecordServiceImpl extends BaseServiceImpl zeroPackageDTOS = abnormalRecordDTO.getZeroPackageDTOS(); + if(CollUtil.isEmpty(zeroPackageDTOS)){ + log.warn("################dealAbnormal: 品类信息不存在"); + return R.fail(405,"品类信息不存在"); + } Integer num = abnormalRecordEntity.getNum(); - Long associationId = abnormalRecordEntity.getAssociationId(); - TrunklineCarsLoadScanEntity carsLoadScanEntity = trunklineCarsLoadScanClient.findEntityById(associationId); + Long carsLoadScanId = abnormalRecordEntity.getAssociationId(); + TrunklineCarsLoadScanEntity carsLoadScanEntity = trunklineCarsLoadScanClient.findEntityById(carsLoadScanId); Long fromWarehouseId = carsLoadScanEntity.getFromWarehouseId(); String orderCode = carsLoadScanEntity.getOrderCode(); + List recordZeroDetailEntities = recordZeroDetailService.findListByAbnormalRecordId(abnormalRecordId); + //把zeroPackageDTOS转化成以goodsId作为key的Map + Map recordZeroDetailEntitiesMapByGoodsId = recordZeroDetailEntities.stream().collect(Collectors.toMap(AftersalesAbnormalRecordZeroDetailEntity::getGoodsId, Function.identity())); + List scanZeroDetailEntityList = scanZeroDetailClient.findListByCarsLoadScanId(carsLoadScanId); + DistributionStockArticleEntity stockArticleEntity = stockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, fromWarehouseId); if(!Objects.isNull(stockArticleEntity)){ Long stockId = stockArticleEntity.getId(); if(dealType.equals(5)){ //回退原仓库 + recordZeroDetailEntities.forEach(detailEntity -> { + parcelListClient.addZeroQuantity(detailEntity.getPackageId(),detailEntity.getAbnormalNum()); + detailEntity.setReturnNum(detailEntity.getAbnormalNum()); + }); stockArticleClient.addHandQuantity(stockId,num); + recordZeroDetailService.updateBatchById(recordZeroDetailEntities); abnormalRecordEntity.setRemark("差异件数退回原仓"); }else if(dealType.equals(6)){ //入库本仓 Integer enterNum = abnormalRecordDTO.getNum(); + //把scanZeroDetailEntityList转化成以packageId为key的map + Map scanZeroDetailEntityMap = scanZeroDetailEntityList.stream().collect(Collectors.toMap(TrunklineScanZeroDetailEntity::getPackageId, Function.identity())); + if(enterNum > 0){ Date now = new Date(); int diff = num - enterNum; Long warehouseId = abnormalRecordEntity.getWarehouseId(); BasicdataWarehouseEntity warehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(warehouseId); + //把zeroPackageDTOS转化成以packageId作为key的Map + Map zeroPackageDTOSMapByPackageId = zeroPackageDTOS.stream().collect(Collectors.toMap(ZeroPackageDTO::getPackageId, Function.identity())); if(diff == 0){ - //全部入库到本仓 - DistributionStockArticleEntity currentStockArticleEntity = stockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, warehouseId); - if(Objects.isNull(currentStockArticleEntity)){ - currentStockArticleEntity = new DistributionStockArticleEntity(); - Integer totalNumber = stockArticleEntity.getTotalNumber(); - BeanUtil.copy(stockArticleEntity,currentStockArticleEntity); - currentStockArticleEntity.setId(null); - currentStockArticleEntity.setHandQuantity(enterNum); - currentStockArticleEntity.setWarehouseId(warehouseId); - currentStockArticleEntity.setWarehouse(warehouseEntity.getName()); - currentStockArticleEntity.setWarehouseEntryTime(now); - currentStockArticleEntity.setCompleteSet(1); - currentStockArticleEntity.setOrderReceiveStatus("20"); - if(totalNumber.equals(enterNum)){ - currentStockArticleEntity.setCompleteSet(2); - currentStockArticleEntity.setOrderReceiveStatus("30"); - } - currentStockArticleEntity.setStockupStatus("10"); - currentStockArticleEntity.setReservationStatus("10"); - currentStockArticleEntity.setOrderStatus("20"); - currentStockArticleEntity.setGroundingStatus("10"); - currentStockArticleEntity.setFreezeStatus("10"); - currentStockArticleEntity.setWarehouseEntryTimeEnd(now); - currentStockArticleEntity.setSortingQuantity(0); - currentStockArticleEntity.setDeliveryQuantity(0); - currentStockArticleEntity.setTransferQuantity(0); - currentStockArticleEntity.setSigninQuantity(0); - currentStockArticleEntity.setAllocation(null); - currentStockArticleEntity.setTrays(null); - currentStockArticleEntity.setIncomingNum(enterNum); - Long orderId = stockArticleClient.addData(currentStockArticleEntity); - if(!Objects.isNull(orderId)){ - List addParcelListEntityList = new ArrayList<>(); - List parcelListEntityList = parcelListClient.findEntityListByOrderCode(orderCode, warehouseId); - parcelListEntityList.forEach(parcelListEntity -> { - DistributionParcelListEntity currentParcelListEntity = new DistributionParcelListEntity(); - BeanUtil.copy(parcelListEntity,currentParcelListEntity); - Long acceptWarehouseId = parcelListEntity.getAcceptWarehouseId(); - currentParcelListEntity.setId(null); - currentParcelListEntity.setGoodsAllocation(null); - currentParcelListEntity.setStockArticleId(orderId); - currentParcelListEntity.setPallet(null); - currentParcelListEntity.setWarehouseId(warehouseId); - currentParcelListEntity.setWarehouse(warehouseEntity.getName()); - currentParcelListEntity.setIsTransfer(1); - if(acceptWarehouseId.equals(warehouseId)){ - currentParcelListEntity.setIsTransfer(0); - } - addParcelListEntityList.add(currentParcelListEntity); - }); - parcelListClient.addZeroParcelList(addParcelListEntityList); - } - }else{ - - stockArticleClient.addHandQuantityAndIncomingNum(currentStockArticleEntity.getId(),enterNum); - - } abnormalRecordEntity.setRemark("差异"+enterNum+"件数入库本仓"); - }else{ //回退原仓库 + recordZeroDetailEntities.forEach(detailEntity -> { + Long packageId = detailEntity.getPackageId(); + Integer abnormalNum = detailEntity.getAbnormalNum(); + ZeroPackageDTO zeroPackageDTO = zeroPackageDTOSMapByPackageId.get(packageId); + Integer enterPackageNum = zeroPackageDTO.getEnterNum(); + parcelListClient.addZeroQuantity(packageId,abnormalNum - enterPackageNum); + detailEntity.setReturnNum(abnormalNum - enterPackageNum); + }); + stockArticleClient.addHandQuantity(stockId,diff); + recordZeroDetailService.updateBatchById(recordZeroDetailEntities); + abnormalRecordEntity.setRemark("差异"+enterNum+"件数入库本仓,原仓返回"+diff+"件"); + } - //全部入库到本仓 - DistributionStockArticleEntity currentStockArticleEntity = stockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, warehouseId); - if(Objects.isNull(currentStockArticleEntity)){ - currentStockArticleEntity = new DistributionStockArticleEntity(); - Integer totalNumber = stockArticleEntity.getTotalNumber(); - BeanUtil.copy(stockArticleEntity,currentStockArticleEntity); - currentStockArticleEntity.setId(null); - currentStockArticleEntity.setHandQuantity(enterNum); - currentStockArticleEntity.setWarehouseId(warehouseId); - currentStockArticleEntity.setWarehouse(warehouseEntity.getName()); - currentStockArticleEntity.setWarehouseEntryTime(now); - currentStockArticleEntity.setCompleteSet(1); - currentStockArticleEntity.setOrderReceiveStatus("20"); - if(totalNumber.equals(enterNum)){ - currentStockArticleEntity.setCompleteSet(2); - currentStockArticleEntity.setOrderReceiveStatus("30"); + DistributionStockArticleEntity currentStockArticleEntity = stockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, warehouseId); + if(Objects.isNull(currentStockArticleEntity)){ + currentStockArticleEntity = new DistributionStockArticleEntity(); + Integer totalNumber = stockArticleEntity.getTotalNumber(); + BeanUtil.copy(stockArticleEntity,currentStockArticleEntity); + currentStockArticleEntity.setId(null); + currentStockArticleEntity.setHandQuantity(enterNum); + currentStockArticleEntity.setWarehouseId(warehouseId); + currentStockArticleEntity.setWarehouse(warehouseEntity.getName()); + currentStockArticleEntity.setWarehouseEntryTime(now); + currentStockArticleEntity.setCompleteSet(1); + currentStockArticleEntity.setOrderReceiveStatus("20"); + if(totalNumber.equals(enterNum)){ + currentStockArticleEntity.setCompleteSet(2); + currentStockArticleEntity.setOrderReceiveStatus("30"); + } + currentStockArticleEntity.setStockupStatus("10"); + currentStockArticleEntity.setReservationStatus("10"); + currentStockArticleEntity.setOrderStatus("20"); + currentStockArticleEntity.setGroundingStatus("10"); + currentStockArticleEntity.setFreezeStatus("10"); + currentStockArticleEntity.setWarehouseEntryTimeEnd(now); + currentStockArticleEntity.setSortingQuantity(0); + currentStockArticleEntity.setDeliveryQuantity(0); + currentStockArticleEntity.setTransferQuantity(0); + currentStockArticleEntity.setSigninQuantity(0); + currentStockArticleEntity.setAllocation(null); + currentStockArticleEntity.setTrays(null); + currentStockArticleEntity.setIncomingNum(enterNum); + Long orderId = stockArticleClient.addData(currentStockArticleEntity); + if(!Objects.isNull(orderId)){ + List updateScanZeroDetailEntityList = new ArrayList<>(); + List addParcelNumberEntityList = new ArrayList<>(); + List updateRecordZeroDetailList = new ArrayList<>(); + List parcelListEntityList = parcelListClient.findEntityVOListByOrderCode(orderCode, fromWarehouseId); + parcelListEntityList.forEach(parcelListEntity -> { + Long packageId = parcelListEntity.getId(); + Integer zeroPackageTotalNum = parcelListEntity.getZeroPackageTotalNum(); + ZeroPackageDTO zeroPackageDTO = zeroPackageDTOSMapByPackageId.get(packageId); + Long goodsId = zeroPackageDTO.getGoodsId(); + Integer packageEnterNum = zeroPackageDTO.getEnterNum(); + //保存包件信息 + DistributionParcelListEntity currentParcelListEntity = new DistributionParcelListEntity(); + BeanUtil.copy(parcelListEntity,currentParcelListEntity); + Long acceptWarehouseId = parcelListEntity.getAcceptWarehouseId(); + currentParcelListEntity.setId(null); + currentParcelListEntity.setQuantity(packageEnterNum); + currentParcelListEntity.setGoodsAllocation(null); + currentParcelListEntity.setStockArticleId(orderId); + currentParcelListEntity.setPallet(null); + currentParcelListEntity.setWarehouseId(warehouseId); + currentParcelListEntity.setWarehouse(warehouseEntity.getName()); + currentParcelListEntity.setIsTransfer(1); + if(acceptWarehouseId.equals(warehouseId)){ + currentParcelListEntity.setIsTransfer(0); + } + Long parceListId = parcelListClient.addReturnId(currentParcelListEntity); + if(!Objects.isNull(parceListId)){ + //保存零担包件数量信息 + DistributionParcelNumberEntity currentParcelNumberEntity = new DistributionParcelNumberEntity(); + currentParcelNumberEntity.setStockArticleId(orderId); + currentParcelNumberEntity.setParcelListId(parceListId); + currentParcelNumberEntity.setQuantity(zeroPackageTotalNum); + currentParcelNumberEntity.setHandQuantity(packageEnterNum); + currentParcelNumberEntity.setOutboundQuantity(0); + currentParcelNumberEntity.setDeliveryQuantity(0); + currentParcelNumberEntity.setSigninQuantity(0); + addParcelNumberEntityList.add(currentParcelNumberEntity); + } + + //更新异常列表零担品类数量信息 + AftersalesAbnormalRecordZeroDetailEntity aftersalesAbnormalRecordZeroDetailEntity = recordZeroDetailEntitiesMapByGoodsId.get(goodsId); + AftersalesAbnormalRecordZeroDetailEntity updateRecordZeroDetail = new AftersalesAbnormalRecordZeroDetailEntity(); + updateRecordZeroDetail.setId(aftersalesAbnormalRecordZeroDetailEntity.getId()); + updateRecordZeroDetail.setIncomingNum(packageEnterNum); + updateRecordZeroDetailList.add(updateRecordZeroDetail); + + //更新装车明细零担信息 + TrunklineScanZeroDetailEntity scanZeroDetailEntity = scanZeroDetailEntityMap.get(packageId); + TrunklineScanZeroDetailEntity updateScanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + updateScanZeroDetailEntity.setId(scanZeroDetailEntity.getId()); + updateScanZeroDetailEntity.setUnloadNum(scanZeroDetailEntity.getUnloadNum()+packageEnterNum); + updateScanZeroDetailEntityList.add(updateScanZeroDetailEntity); + }); + if(CollUtil.isNotEmpty(updateRecordZeroDetailList)){ + recordZeroDetailService.updateBatchById(updateRecordZeroDetailList); + } + if(CollUtil.isNotEmpty(updateScanZeroDetailEntityList)){ + scanZeroDetailClient.updateBetch(updateScanZeroDetailEntityList); } - currentStockArticleEntity.setStockupStatus("10"); - currentStockArticleEntity.setReservationStatus("10"); - currentStockArticleEntity.setOrderStatus("20"); - currentStockArticleEntity.setGroundingStatus("10"); - currentStockArticleEntity.setFreezeStatus("10"); - currentStockArticleEntity.setWarehouseEntryTimeEnd(now); - currentStockArticleEntity.setSortingQuantity(0); - currentStockArticleEntity.setDeliveryQuantity(0); - currentStockArticleEntity.setTransferQuantity(0); - currentStockArticleEntity.setSigninQuantity(0); - currentStockArticleEntity.setAllocation(null); - currentStockArticleEntity.setTrays(null); - currentStockArticleEntity.setIncomingNum(enterNum); - Long orderId = stockArticleClient.addData(currentStockArticleEntity); - if(!Objects.isNull(orderId)){ - List addParcelListEntityList = new ArrayList<>(); - List parcelListEntityList = parcelListClient.findEntityListByOrderCode(orderCode, warehouseId); - parcelListEntityList.forEach(parcelListEntity -> { - DistributionParcelListEntity currentParcelListEntity = new DistributionParcelListEntity(); - BeanUtil.copy(parcelListEntity,currentParcelListEntity); - Long acceptWarehouseId = parcelListEntity.getAcceptWarehouseId(); - currentParcelListEntity.setId(null); - currentParcelListEntity.setGoodsAllocation(null); - currentParcelListEntity.setStockArticleId(orderId); - currentParcelListEntity.setPallet(null); - currentParcelListEntity.setWarehouseId(warehouseId); - currentParcelListEntity.setWarehouse(warehouseEntity.getName()); - currentParcelListEntity.setIsTransfer(1); - if(acceptWarehouseId.equals(warehouseId)){ - currentParcelListEntity.setIsTransfer(0); - } - addParcelListEntityList.add(currentParcelListEntity); - }); - parcelListClient.addZeroParcelList(addParcelListEntityList); + if(CollUtil.isNotEmpty(addParcelNumberEntityList)){ + parcelNumberClient.addBatch(addParcelNumberEntityList); } - }else{ + } + }else{ + Long orderId = currentStockArticleEntity.getId(); + + List parcelListEntityList = parcelListClient.findListByStockArticleId(orderId); + //把parcelListEntityList转化成以firsts为key的map + Map parcelListEntityMapByFirsts = parcelListEntityList.stream().collect(Collectors.toMap(DistributionParcelListEntity::getFirsts, Function.identity())); + + List parcelNumberEntityList =parcelNumberClient.findListByStockArticleId(orderId); + //把parcelNumberEntityList转化成以parceListId为key的Map + Map parcelNumberEntityMapByParcelListId = parcelNumberEntityList.stream().collect(Collectors.toMap(DistributionParcelNumberEntity::getParcelListId, Function.identity())); + + //把scanZeroDetailEntityList转化成以goodsId为key的Map + Map scanZeroDetailEntityMapByGoodsId = scanZeroDetailEntityList.stream().collect(Collectors.toMap(TrunklineScanZeroDetailEntity::getGoodsId, Function.identity())); + + List updateScanZeroDetailEntityList = new ArrayList<>(); + List updateAbnormalRecordZeroDetailEntityList = new ArrayList<>(); + List updateParcelListEntityList = new ArrayList<>(); + List updateParcelNumberEntityList = new ArrayList<>(); + + zeroPackageDTOS.forEach(zeroPackageDTO -> { + Integer packageNum = zeroPackageDTO.getEnterNum(); + String goodsName = zeroPackageDTO.getGoodsName(); + Long goodsId = zeroPackageDTO.getGoodsId(); + //更新装车明细零担信息 + TrunklineScanZeroDetailEntity scanZeroDetailEntity = scanZeroDetailEntityMapByGoodsId.get(goodsId); + TrunklineScanZeroDetailEntity updateScanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + updateScanZeroDetailEntity.setId(scanZeroDetailEntity.getId()); + updateScanZeroDetailEntity.setUnloadNum(scanZeroDetailEntity.getUnloadNum()+packageNum); + updateScanZeroDetailEntityList.add(updateScanZeroDetailEntity); + + //更新异常列表零担品类数量 + AftersalesAbnormalRecordZeroDetailEntity aftersalesAbnormalRecordZeroDetailEntity = recordZeroDetailEntitiesMapByGoodsId.get(goodsId); + AftersalesAbnormalRecordZeroDetailEntity updateRecordZeroDetail = new AftersalesAbnormalRecordZeroDetailEntity(); + updateRecordZeroDetail.setId(aftersalesAbnormalRecordZeroDetailEntity.getId()); + updateRecordZeroDetail.setIncomingNum(aftersalesAbnormalRecordZeroDetailEntity.getIncomingNum()+packageNum); + updateAbnormalRecordZeroDetailEntityList.add(updateRecordZeroDetail); + + //更新;零担包件信息 + DistributionParcelListEntity parcelList = parcelListEntityMapByFirsts.get(goodsName); + Long parcelListId = parcelList.getId(); + DistributionParcelListEntity updateParceListEntity = new DistributionParcelListEntity(); + updateParceListEntity.setId(parcelListId); + updateParceListEntity.setQuantity(parcelList.getQuantity()+packageNum); + updateParcelListEntityList.add(updateParceListEntity); + + //更新零担品类数量信息 + DistributionParcelNumberEntity parcelNumberEntity = parcelNumberEntityMapByParcelListId.get(parcelListId); + DistributionParcelNumberEntity updateParceNumberEntity = new DistributionParcelNumberEntity(); + updateParceNumberEntity.setId(parcelNumberEntity.getId()); + updateParceNumberEntity.setHandQuantity(parcelNumberEntity.getHandQuantity()+packageNum); + updateParcelNumberEntityList.add(updateParceNumberEntity); + }); + + if(CollUtil.isNotEmpty(updateScanZeroDetailEntityList)){ + scanZeroDetailClient.updateBetch(updateScanZeroDetailEntityList); + } + if(CollUtil.isNotEmpty(updateAbnormalRecordZeroDetailEntityList)){ + recordZeroDetailService.updateBatchById(updateAbnormalRecordZeroDetailEntityList); + } + if(CollUtil.isNotEmpty(updateParcelListEntityList)){ + parcelListClient.updateList(updateParcelListEntityList); + } + if(CollUtil.isNotEmpty(updateParcelNumberEntityList)){ + parcelNumberClient.updateList(updateParcelNumberEntityList); + } - stockArticleClient.addHandQuantityAndIncomingNum(currentStockArticleEntity.getId(),enterNum); + stockArticleClient.addHandQuantityAndIncomingNum(currentStockArticleEntity.getId(),enterNum); - } - abnormalRecordEntity.setRemark("差异"+enterNum+"件数入库本仓,原仓返回"+diff+"件"); } + + carsLoadScanEntity.setScanStatus("2"); carsLoadScanEntity.setUnloadNum(carsLoadScanEntity.getUnloadNum()+enterNum); trunklineCarsLoadScanClient.updateEntity(carsLoadScanEntity); @@ -353,4 +443,13 @@ public class AftersalesAbnormalRecordServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("abnormal_record_id",abnormalRecordId); + List list = recordZeroDetailService.list(queryWrapper); + return R.data(list); + } } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordZeroDetailServiceImpl.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordZeroDetailServiceImpl.java new file mode 100644 index 000000000..d603b5419 --- /dev/null +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordZeroDetailServiceImpl.java @@ -0,0 +1,25 @@ +package com.logpm.aftersales.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; +import com.logpm.aftersales.mapper.AftersalesAbnormalRecordZeroDetailMapper; +import com.logpm.aftersales.service.IAftersalesAbnormalRecordZeroDetailService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@AllArgsConstructor +@Slf4j +public class AftersalesAbnormalRecordZeroDetailServiceImpl extends BaseServiceImpl implements IAftersalesAbnormalRecordZeroDetailService { + @Override + public List findListByAbnormalRecordId(Long abnormalRecordId) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("abnormal_record_id",abnormalRecordId); + return baseMapper.selectList(queryWrapper); + } +} diff --git a/blade-service/logpm-aftersales/src/main/resources/application-dev.yml b/blade-service/logpm-aftersales/src/main/resources/application-dev.yml index 87cf7228b..e2327e2d1 100644 --- a/blade-service/logpm-aftersales/src/main/resources/application-dev.yml +++ b/blade-service/logpm-aftersales/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: diff --git a/blade-service/logpm-aftersales/src/main/resources/application-test.yml b/blade-service/logpm-aftersales/src/main/resources/application-test.yml index 7508cbc1c..4bd85e777 100644 --- a/blade-service/logpm-aftersales/src/main/resources/application-test.yml +++ b/blade-service/logpm-aftersales/src/main/resources/application-test.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: @@ -25,11 +25,4 @@ spring: url: ${blade.datasource.aftersales.master.url} username: ${blade.datasource.aftersales.master.username} password: ${blade.datasource.aftersales.master.password} - 627683: - url: ${blade.datasource.aftersales.627683.url} - username: ${blade.datasource.aftersales.627683.username} - password: ${blade.datasource.aftersales.627683.password} - 695224: - url: ${blade.datasource.aftersales.695224.url} - username: ${blade.datasource.aftersales.695224.username} - password: ${blade.datasource.aftersales.695224.password} + diff --git a/blade-service/logpm-basic/src/main/resources/application-test.yml b/blade-service/logpm-basic/src/main/resources/application-test.yml index b85178a5b..cc3ed0026 100644 --- a/blade-service/logpm-basic/src/main/resources/application-test.yml +++ b/blade-service/logpm-basic/src/main/resources/application-test.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: @@ -33,32 +33,3 @@ spring: url: ${blade.datasource.basic.master.url} username: ${blade.datasource.basic.master.username} password: ${blade.datasource.basic.master.password} - 627683: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.basic.627683.url} - username: ${blade.datasource.basic.627683.username} - password: ${blade.datasource.basic.627683.password} - - 695224: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.basic.695224.url} - username: ${blade.datasource.basic.695224.username} - password: ${blade.datasource.basic.695224.password} - - 645789: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.basic.645789.url} - username: ${blade.datasource.basic.645789.username} - password: ${blade.datasource.basic.645789.password} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java index d4413e643..0bad06bc2 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java @@ -94,7 +94,7 @@ public class BasicdataFactoryCategoryImporter implements ExcelImporter findAllList() { + return warehouseWarehouseService.list(Wrappers.lambdaQuery() + .eq(BasicdataWarehouseEntity::getEnableStatus,2) + ); + } + @Override public List findWarehousesByIds(List ids) { if(CollUtil.isNotEmpty(ids)){ @@ -265,12 +274,5 @@ public class BasicdataWarehouseClient implements IBasicdataWarehouseClient { return Collections.emptyList(); } - @Override - public List findAllList() { - return warehouseWarehouseService.list(Wrappers.lambdaQuery() - .eq(BasicdataWarehouseEntity::getEnableStatus,2) - ); - } - } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java index 59ba9d2a6..eef064488 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java @@ -463,6 +463,19 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl> generalMap = new HashMap<>(); buildDetailMap(priceEntity, fullMap, basicMap, warehouseMap, dispatchMap, generalMap); String serviceType = templateEntity.getServiceType(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(BasicdataPriceRouteEntity::getPriceId, priceEntity.getId()) + .eq(BasicdataPriceRouteEntity::getSendOrgId, param.getSendOrgId()) + .eq(BasicdataPriceRouteEntity::getStartProvinceId, param.getStartProvinceId()) + .eq(BasicdataPriceRouteEntity::getStartCityId, param.getStartCityId()) + .eq(BasicdataPriceRouteEntity::getEndProvinceId, param.getEndProvinceId()) + .eq(BasicdataPriceRouteEntity::getEndCityId, param.getEndCityId()); + if (ObjectUtil.isNotEmpty(param.getStartCountyId())) { + wrapper.eq(BasicdataPriceRouteEntity::getStartCountyId, param.getStartCountyId()); + } + if (ObjectUtil.isNotEmpty(param.getEndCountyId())) { + wrapper.eq(BasicdataPriceRouteEntity::getEndCountyId, param.getEndCountyId()); + } // 提货费 if (StrUtil.contains(serviceType, ServiceTypeEnums.PICK_UP.getCode().toString())) { // 提货不按区域计费 @@ -471,13 +484,8 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl routeEntities = basicdataPriceRouteService.list(Wrappers.lambdaQuery() - .eq(BasicdataPriceRouteEntity::getPriceId, priceEntity.getId()) - .eq(BasicdataPriceRouteEntity::getSendOrgId, param.getSendOrgId()) - .eq(BasicdataPriceRouteEntity::getStartCountyId, param.getStartCountyId()) - .eq(BasicdataPriceRouteEntity::getEndCountyId, param.getEndCountyId()) - .eq(BasicdataPriceRouteEntity::getServiceType, ServiceTypeEnums.PICK_UP.getCode()) - ); + wrapper.eq(BasicdataPriceRouteEntity::getServiceType, ServiceTypeEnums.TRUNK_LINE.getCode()); + List routeEntities = basicdataPriceRouteService.list(wrapper); if (CollUtil.isNotEmpty(routeEntities)) { PriceRouteVO detail = basicdataPriceRouteService.detail(routeEntities.get(0).getId()); PricePickupVO pickup = new PricePickupVO(); @@ -500,13 +508,8 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl routeEntities = basicdataPriceRouteService.list(Wrappers.lambdaQuery() - .eq(BasicdataPriceRouteEntity::getPriceId, priceEntity.getId()) - .eq(BasicdataPriceRouteEntity::getSendOrgId, param.getSendOrgId()) - .eq(BasicdataPriceRouteEntity::getStartCountyId, param.getStartCountyId()) - .eq(BasicdataPriceRouteEntity::getEndCountyId, param.getEndCountyId()) - .eq(BasicdataPriceRouteEntity::getServiceType, ServiceTypeEnums.TRUNK_LINE.getCode()) - ); + wrapper.eq(BasicdataPriceRouteEntity::getServiceType, ServiceTypeEnums.TRUNK_LINE.getCode()); + List routeEntities = basicdataPriceRouteService.list(wrapper); if (CollUtil.isNotEmpty(routeEntities)) { PriceRouteVO detail = basicdataPriceRouteService.detail(routeEntities.get(0).getId()); PriceTrunkLineVO trunkLineVO = new PriceTrunkLineVO(); diff --git a/blade-service/logpm-basicdata/src/main/resources/application-test.yml b/blade-service/logpm-basicdata/src/main/resources/application-test.yml index bb06a1b98..45ba362a3 100644 --- a/blade-service/logpm-basicdata/src/main/resources/application-test.yml +++ b/blade-service/logpm-basicdata/src/main/resources/application-test.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: @@ -33,20 +33,4 @@ spring: url: ${blade.datasource.basicdata.master.url} username: ${blade.datasource.basicdata.master.username} password: ${blade.datasource.basicdata.master.password} - 627683: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.basicdata.627683.url} - username: ${blade.datasource.basicdata.627683.username} - password: ${blade.datasource.basicdata.627683.password} - 695224: - url: ${blade.datasource.basicdata.695224.url} - username: ${blade.datasource.basicdata.695224.username} - password: ${blade.datasource.basicdata.695224.password} - 645789: - url: ${blade.datasource.basicdata.645789.url} - username: ${blade.datasource.basicdata.645789.username} - password: ${blade.datasource.basicdata.645789.password} + diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/api/BusinessPreOrderApi.java b/blade-service/logpm-business/src/main/java/com/logpm/business/api/BusinessPreOrderApi.java index 57439787a..74a238b9c 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/api/BusinessPreOrderApi.java +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/api/BusinessPreOrderApi.java @@ -23,6 +23,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Objects; @RestController @@ -37,7 +38,7 @@ public class BusinessPreOrderApi { @PostMapping("/list") @ApiOperationSupport(order = 1) @ApiOperation(value = "模糊查询", notes = "传入trayTypeDTO") - public R list(@RequestBody BusinessPreListDTO queryrderDTO){ + public R list(@RequestBody BusinessPreListDTO queryrderDTO) { DistributionBusinessPreOrderListVO data = distributionIBusinessPreOrderService.list(queryrderDTO); @@ -45,9 +46,15 @@ public class BusinessPreOrderApi { } + /** + * 商家入库接口 + * 零担入库也走这个接口 + * @param businessSanDTO + * @return + */ @PostMapping("/scanOrderPackageCode") @ApiOperationSupport(order = 1) - public R scanOrderPackageCode(@RequestBody BusinessSanDTO businessSanDTO){ + public R scanOrderPackageCode(@RequestBody BusinessSanDTO businessSanDTO) { Resp resp = null; try { @@ -61,12 +68,13 @@ public class BusinessPreOrderApi { + @GetMapping("/listCarNum") @ApiOperationSupport(order = 1) @ApiOperation(value = "条件查询", notes = "传入trayTypeDTO") - public R listCarNum(DistributionBusinessPreCarNumerPageQueryVO distributionBusinessPreCarNumerPageQueryVO, Query query){ + public R listCarNum(DistributionBusinessPreCarNumerPageQueryVO distributionBusinessPreCarNumerPageQueryVO, Query query) { - IPage data = distributionIBusinessPreOrderService.listCarNum(Condition.getPage(query),distributionBusinessPreCarNumerPageQueryVO); + IPage data = distributionIBusinessPreOrderService.listCarNum(Condition.getPage(query), distributionBusinessPreCarNumerPageQueryVO); return R.data(data); } @@ -74,7 +82,7 @@ public class BusinessPreOrderApi { @GetMapping("/preCarInfoDetailByCarNum") @ApiOperationSupport(order = 1) @ApiOperation(value = "条件查询", notes = "传入trayTypeDTO") - public R preCarInfoDetailByCarNum(DistributionBusinessPreCarNumerPageQueryVO distributionBusinessPreCarNumerPageQueryVO){ + public R preCarInfoDetailByCarNum(DistributionBusinessPreCarNumerPageQueryVO distributionBusinessPreCarNumerPageQueryVO) { DistributionBusinessPreCarDetalVO distributionBusinessPreCarDetalVO = distributionIBusinessPreOrderService.preCarInfoDetailByCarNumber(distributionBusinessPreCarNumerPageQueryVO); @@ -82,5 +90,4 @@ public class BusinessPreOrderApi { } - } diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java b/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java index 141c3ed59..a56ccf6f0 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java @@ -14,12 +14,10 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; +import java.util.List; import java.util.Map; @RestController @@ -72,6 +70,20 @@ public class DistributionBusinessPreOrderController extends BladeController { } + @PostMapping("/inOrderByZero") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "页面ID", notes = "传入distributionDeliveryList") + public R inOrderByZero(@ApiParam(value = "主键集合", required = true) @RequestBody List businessPreOrderList) { + try { + Boolean isSuccess = distributionIBusinessPreOrderService.inOrderByZero(businessPreOrderList); + return R.data(isSuccess); + }catch (Exception e){ + log.error("预入库信息入库失败",e); + return R.fail(500,e.getMessage()); + } + + } + diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/BusinessPreOrderMapper.xml b/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/BusinessPreOrderMapper.xml index a80562e12..a612d06cf 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/BusinessPreOrderMapper.xml +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/BusinessPreOrderMapper.xml @@ -25,7 +25,8 @@ firsts, `SECOND`, third_product, - quantity, + quantity,unload_num, + load_num, train_number, order_code, service_number, @@ -45,7 +46,8 @@ volume, driver_name, vehicle_name, - in_warehouse + in_warehouse, + conditions FROM logpm_business_pre_order @@ -108,6 +110,10 @@ AND in_warehouse = #{param.inWarehouse} + + AND conditions = #{param.conditions} + + @@ -158,11 +164,13 @@ + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java index a0bff054b..772f402bd 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java @@ -16,6 +16,7 @@ */ package com.logpm.distribution.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.distribution.dto.DistributionParcelListDTO; @@ -296,4 +297,18 @@ public interface DistributionParcelListMapper extends BaseMapper parcelListIdList, @Param("orderCode") String orderCode); void clearAllocationByIds(@Param("clearTrayList") List clearTrayList); + + List findPackageGoodsListByWaybillNo(@Param("waybillNo") String waybillNo); + + List findEntityVOListByOrderCode(@Param("orderCode") String orderCode,@Param("fromWarehouseId") Long fromWarehouseId); + + void addZeroPackageQuantity(@Param("packageId") Long packageId, @Param("num") int num); + + List findListByStockArticleIds(@Param("orderIdList") List orderIdList); + + void updateWaybillIdByWaybillNo(@Param("waybillId") Long waybillId, @Param("waybillNo") String waybillNo); + + List findOrderCodeByWaybillId(@Param("waybillId") Long waybillId); + + void clearWaybillInfoByParceListIds(@Param("parceListIds") List parceListIds); } 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 78c93bb8e..05902d41a 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 @@ -1874,4 +1874,73 @@ + + + + + + + update logpm_distribution_parcel_list + set quantity = quantity + #{num} + where id = #{packageId} + + + + + + + update logpm_distribution_parcel_list + set waybill_id = #{waybillId} + where waybill_number = #{waybillNo} + + + + + + update logpm_distribution_parcel_list + set waybill_id = null, + waybill_number = null, + send_warehouse_id = null, + send_warehouse_id = null, + accept_warehouse_id = null, + accept_warehouse_name = null + where id in + + #{item} + + + + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.java index 26b6142a7..13a37a426 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.java @@ -74,4 +74,6 @@ public interface DistributionParcelNumberMapper extends BaseMapper + + UPDATE + logpm_distribution_parcel_number + SET + hand_quantity = hand_quantity + #{num} + WHERE + parcel_list_id = #{packageId} + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.java index 2d725a81f..3ab48df59 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.java @@ -16,7 +16,6 @@ */ package com.logpm.distribution.mapper; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.distribution.dto.DistributionReservationStockarticleDTO; @@ -83,4 +82,6 @@ public interface DistributionReservationStockarticleMapper extends BaseMapper findReservationIdsByOrderCodes(@Param("orderCodes") List orderCodes); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.xml index 6b52e664a..c9b5a2eeb 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationStockarticleMapper.xml @@ -187,4 +187,16 @@ + + + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java index ee9d567e0..308d9d459 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java @@ -3,11 +3,9 @@ package com.logpm.distribution.receiver; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.logpm.business.entity.BusinessPreOrderEntity; import com.logpm.business.feign.IBusinessPreOrderClient; -import com.logpm.distribution.entity.DistributionDeliveryListEntity; -import com.logpm.distribution.entity.DistributionParcelListEntity; -import com.logpm.distribution.entity.DistributionReservationEntity; -import com.logpm.distribution.entity.DistributionReservationPackageEntity; +import com.logpm.distribution.entity.*; import com.logpm.distribution.service.*; +import com.logpm.trunkline.feign.IExtractedDataClient; import com.rabbitmq.client.Channel; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,6 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; @Slf4j @RabbitListener(queues = RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_QUEUE) @@ -38,8 +37,11 @@ public class BusinessPreOrderDataQueueHandler { private final IDistributionReservationService distributionReservationService; private final IDistributionReservationPackageService distributionReservationPackageService; private final IDistributionParcelListService distributionParcelListService; + private final IDistributionReservationZeroPackageService distributionReservationZeroPackageService; private final ISysClient sysClient; private final IBusinessPreOrderClient businessPreOrderClient; + private final IExtractedDataClient extractedDataClient; + private final IDistributionLoadscanService distributionLoadscanService; private final IDistributionAsyncService distributionAsyncService; @@ -107,6 +109,10 @@ public class BusinessPreOrderDataQueueHandler { DistributionParcelListEntity byId = distributionParcelListService.getById(distributionReservationPackageEntity.getParceListId()); BusinessPreOrderEntity data = BeanUtil.copy(byId, BusinessPreOrderEntity.class); + // 判断包件是否装车 + if ("20".equals(byId.getOrderPackageLoadingStatus())) { + data.setLoadNum(1); + } data.setDriverName(distributionDeliveryListEntity.getDriverName()); data.setVehicleName(distributionDeliveryListEntity.getVehicleName()); data.setDistrCarNumber(distributionDeliveryListEntity.getTrainNumber()); @@ -119,11 +125,57 @@ public class BusinessPreOrderDataQueueHandler { data.setTaskTime(distributionDeliveryListEntity.getTaskTime()); dataResult.add(data); } + + // 零担数据 + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DistributionReservationZeroPackageEntity::getReservationId, distributionReservationEntity.getId()); + lambdaQueryWrapper.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, 2); + List list1 = distributionReservationZeroPackageService.list(lambdaQueryWrapper); + for (DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity : list1) { + // 查询包间 + DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionReservationZeroPackageEntity.getParcelListId()); + if (parcelListEntity != null) { + BusinessPreOrderEntity data = BeanUtil.copy(parcelListEntity, BusinessPreOrderEntity.class); + // 计划数量 + data.setQuantity(distributionReservationZeroPackageEntity.getQuantity()); + + // 获取装车数量 + DistributionLoadscanEntity distributionLoadscanEntity = distributionLoadscanService.findLoadDataByRelationIdAndParcelListId(distributionReservationZeroPackageEntity.getReservationId(), distributionReservationZeroPackageEntity.getParcelListId()); + if(distributionLoadscanEntity != null){ + //设置装车数量 + data.setLoadNum(distributionLoadscanEntity.getLoadedNub()); + } + data.setConditions(3); + data.setDriverName(distributionDeliveryListEntity.getDriverName()); + data.setVehicleName(distributionDeliveryListEntity.getVehicleName()); + data.setDistrCarNumber(distributionDeliveryListEntity.getTrainNumber()); + data.setFromTenantId(parcelListEntity.getTenantId()); + data.setOperationStatus(0); + data.setInWarehouse(0); + data.setId(null); + data.setTenantId(null); + data.setReservationCode(distributionReservationEntity.getReservationCode()); + data.setTaskTime(distributionDeliveryListEntity.getTaskTime()); + dataResult.add(data); + } + + } } } + + // 处理暂存但的数据 + + // 获取运单号集合 + List waybillNumberList = dataResult.stream().map(BusinessPreOrderEntity::getWaybillNumber).distinct().collect(Collectors.toList()); + + // 发送数据 + Tenant tenant = changeDataBase(mallName); + waybillNumberList.forEach(waybillNumber -> extractedDataClient.execute(tenant.getTenantId(), waybillNumber)); + businessPreOrderClient.saveOtherDataBaseNew(tenant.getTenantId(), dataResult, mallName); // CompletableFuture.supplyAsync(() -> { //// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionLoadscanService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionLoadscanService.java index fb6189a13..8df7fc4dc 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionLoadscanService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionLoadscanService.java @@ -63,4 +63,12 @@ public interface IDistributionLoadscanService extends BaseService findPackageGoodsListByWaybillNo(String waybillNo); + + List findEntityVOListByOrderCode(String orderCode, Long fromWarehouseId); + + void addZeroPackageQuantity(Long packageId, int num); + + List findListByStockArticleIds(List orderIdList); + + void updateWaybillIdByWaybillNo(Long waybillId, String waybillNo); + + List findOrderCodeByWaybillId(Long waybillId); + + void clearWaybillInfoByParceListIds(List parceListIds); + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelNumberService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelNumberService.java index e041e0a3b..76284d1b8 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelNumberService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelNumberService.java @@ -78,4 +78,7 @@ public interface IDistributionParcelNumberService extends BaseService findReservationIdsByOrderCodes(List orderCodes); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java index d333a395a..3502f89cb 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java @@ -3274,8 +3274,11 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { for (DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities) { OrderStatusDTO orderStatusDTO = new OrderStatusDTO(); // 通过包件id 查询包件 + DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(ladingScanEntity.getStockArticleId()); + if(stockArticleEntity !=null){ + orderStatusDTO.setOrderNo(stockArticleEntity.getOrderCode()); + } orderStatusDTO.setUnitNo(ladingScanEntity.getPacketBarCode()); - orderStatusDTO.setOrderNo(ladingScanEntity.getOrderSelfNumbering()); orderStatusDTO.setStatus("7"); orderStatusDTO.setOperationTime(DateUtil.now()); orderStatusDTO.setCurrentWarehouse(warehouse.getId().toString()); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index 157881de7..d13a3d484 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -321,6 +321,30 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl distributionDeliveryListEntities = baseMapper.selectDistributionDeliveryListPage(page, distributionDeliveryList); + // 获取集合中 kind =2 的id集合 + List ids = distributionDeliveryListEntities.stream().filter(item -> "2".equals(item.getKind())).map(DistributionDeliveryListEntity::getId).collect(Collectors.toList()); + + if(!ids.isEmpty()){ + // 关联查询所有的三方配送信息表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(DistributionDeliveryTripartiteEntity::getDeliveryId, ids); + List distributionDeliveryTripartiteEntities = distributionDeliveryTripartiteService.list(wrapper); + + for (DistributionDeliveryListEntity distributionDeliveryListEntity : distributionDeliveryListEntities) { + if(Objects.equals( "2",distributionDeliveryListEntity.getKind())){ + // 在集合 distributionDeliveryTripartiteEntities 中寻找 distributionDeliveryListEntity的ID相同的 + DistributionDeliveryTripartiteEntity tripartiteEntity = distributionDeliveryTripartiteEntities.stream().filter(item -> item.getDeliveryId().equals(distributionDeliveryListEntity.getId())).findFirst().orElse(null); + if(tripartiteEntity != null){ + // 保留2为小数 + if(tripartiteEntity.getDeliveryFee()!=null){ + distributionDeliveryListEntity.setPrice(tripartiteEntity.getDeliveryFee().setScale(2)); + } + + } + } + } + } + return page.setRecords(distributionDeliveryListEntities); } @@ -350,6 +374,34 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl distributionDeliveryListExcels = baseMapper.exportDistributionDeliveryList(distributionDeliveryList); + + + // 获取集合中 kind =2 的id集合 + List ids = distributionDeliveryListExcels.stream().filter(item -> "三方配送".equals(item.getKind())).map(DistributionDeliveryListExcel::getId).collect(Collectors.toList()); + + if(!ids.isEmpty()){ + // 关联查询所有的三方配送信息表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(DistributionDeliveryTripartiteEntity::getDeliveryId, ids); + List distributionDeliveryTripartiteEntities = distributionDeliveryTripartiteService.list(wrapper); + + for (DistributionDeliveryListExcel distributionDeliveryListEntity : distributionDeliveryListExcels) { + if(Objects.equals( "三方配送",distributionDeliveryListEntity.getKind())){ + // 在集合 distributionDeliveryTripartiteEntities 中寻找 distributionDeliveryListEntity的ID相同的 + DistributionDeliveryTripartiteEntity tripartiteEntity = distributionDeliveryTripartiteEntities.stream().filter(item -> item.getDeliveryId().equals(distributionDeliveryListEntity.getId())).findFirst().orElse(null); + if(tripartiteEntity != null){ + // 保留2为小数 + if(tripartiteEntity.getDeliveryFee()!=null){ + distributionDeliveryListEntity.setPrice(tripartiteEntity.getDeliveryFee().setScale(2)); + } + + } + } + } + } + + + return distributionDeliveryListExcels; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionLoadscanServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionLoadscanServiceImpl.java index 704c463f1..161836053 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionLoadscanServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionLoadscanServiceImpl.java @@ -57,6 +57,10 @@ public class DistributionLoadscanServiceImpl extends BaseServiceImpl findPackageGoodsListByWaybillNo(String waybillNo) { + return baseMapper.findPackageGoodsListByWaybillNo(waybillNo); + } + + @Override + public List findEntityVOListByOrderCode(String orderCode, Long fromWarehouseId) { + return baseMapper.findEntityVOListByOrderCode(orderCode,fromWarehouseId); + } + + @Override + public void addZeroPackageQuantity(Long packageId, int num) { + baseMapper.addZeroPackageQuantity(packageId,num); + } + + @Override + public List findListByStockArticleIds(List orderIdList) { + return baseMapper.findListByStockArticleIds(orderIdList); + } + + @Override + public void updateWaybillIdByWaybillNo(Long waybillId, String waybillNo) { + baseMapper.updateWaybillIdByWaybillNo(waybillId,waybillNo); + } + + @Override + public List findOrderCodeByWaybillId(Long waybillId) { + return baseMapper.findOrderCodeByWaybillId(waybillId); + } + + @Override + public void clearWaybillInfoByParceListIds(List parceListIds) { + baseMapper.clearWaybillInfoByParceListIds(parceListIds); + } + private JSONObject handleLogJSONObject(BasicdataWarehouseEntity warehouse, BladeUser user, String orderPackageCode, String content, Integer node) { JSONObject trunklinePackageTrackLog = new JSONObject(); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelNumberServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelNumberServiceImpl.java index 1a05df9b1..f4565d1f5 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelNumberServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelNumberServiceImpl.java @@ -16,31 +16,29 @@ */ package com.logpm.distribution.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.logpm.distribution.dto.DistributionParcelNumberDTO; import com.logpm.distribution.entity.DistributionParcelListEntity; import com.logpm.distribution.entity.DistributionParcelNumberEntity; import com.logpm.distribution.entity.DistributionStockArticleEntity; -import com.logpm.distribution.service.IDistributionParcelListService; -import com.logpm.distribution.service.IDistributionStockArticleService; -import com.logpm.distribution.vo.DistributionParcelNumberVO; import com.logpm.distribution.excel.DistributionParcelNumberExcel; import com.logpm.distribution.mapper.DistributionParcelNumberMapper; +import com.logpm.distribution.service.IDistributionParcelListService; import com.logpm.distribution.service.IDistributionParcelNumberService; -import lombok.AllArgsConstructor; +import com.logpm.distribution.service.IDistributionStockArticleService; +import com.logpm.distribution.vo.DistributionParcelNumberVO; import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.mp.base.BaseServiceImpl; + import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; /** * 订单零担包件数量记录 服务实现类 @@ -175,4 +173,9 @@ public class DistributionParcelNumberServiceImpl extends BaseServiceImpl findReservationIdsByOrderCodes(List orderCodes) { + return baseMapper.findReservationIdsByOrderCodes(orderCodes); + } + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java index 534ca8924..68c8b1272 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java @@ -5335,7 +5335,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl selectDistributionStockArticlePage(IPage page, DistributionStockArticleVO distributionStockArticle) { @@ -1600,6 +1604,9 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl wayBillDetailList = warehouseWaybillDetailClient.findByWaybillId(warehouseWaybill.getId()); + List productsNumList = new ArrayList<>(); + wayBillDetailList.forEach(wayBillDetail -> { + productsNumList.add(wayBillDetail.getProductName() + "(" + wayBillDetail.getNum() + ")"); + }); + map.put("product", String.join(",",productsNumList)); map.put("remark", StringUtil.isBlank(remark) ? "" : remark); } 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 a146880e7..02b381456 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 @@ -683,6 +683,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl packageEntityList = new ArrayList<>(); if (StringUtils.isNotBlank(distrilbutionBillLading.getStockArticleId())) { String[] split = distrilbutionBillLading.getStockArticleId().split(","); for (String s : split) { @@ -882,7 +883,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl>>未填写库存品批次号:{}", collect); throw new CustomerException("请填写正确的库存品数量"); } - + //没有 + List detailsEntities = new ArrayList<>(); Boolean finalLas = las; distrilbutionBillLading.getStockDTOList().forEach(i -> { DistributionDeliveryDetailsEntity details = new DistributionDeliveryDetailsEntity(); @@ -926,7 +928,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl listEntity = new ArrayList<>(); distrilbutionBillLading.getFei().forEach((k, v) -> { DistributionDeliveryChargeEntity distributionDeliveryCharge = new DistributionDeliveryChargeEntity(); distributionDeliveryCharge.setBillLading(distrilbutionBillLading.getId()); @@ -1337,7 +1339,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl map = oldSystemDataPushClient.pushOldSystemSignInfo(delivery); + Map map = oldSystemDataPushClient.pushOldSystemSignInfo(delivery); Boolean flag = (Boolean) map.get("result"); return flag; } catch (Exception e) { @@ -2554,7 +2556,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl { if (groupedEntities != null) { List list = groupedEntities.get(i.getId()); - if (!Func.isEmpty(groupedEntities.get(i.getId()))) { + if (!Func.isEmpty(groupedEntities.get(i.getId()))){ list.forEach(ii -> ii.setCostName(DictBizCache.getValue(DictBizConstant.DELIVERY_COST, ii.getCost()))); i.setList(list); } @@ -3283,6 +3285,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl s.getId().equals(so.getStockArticleId())).findFirst().orElse(null); - DistributionStockArticleEntity upObj = new DistributionStockArticleEntity(); + DistributionStockArticleEntity upObj =new DistributionStockArticleEntity(); upObj.setId(so.getStockArticleId()); @@ -3567,6 +3570,24 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl pushMap = new HashMap<>(); +// pushMap.put("orderPackageCode", coding); +// pushMap.put("operationTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// pushMap.put("distributionContactId", billLadingId); +// pushMap.put("destinationWarehouse", myCurrentWarehouse.getName()); +// +// rabbitTemplate.convertAndSend(RabbitConstant.MT_BUSINESS_DATA_2_FACTORY_EXCHANGE, RabbitConstant.MT_BUSINESS_DATA_2_FACTORY_ROUTING, pushMap, message -> { +// message.getMessageProperties() +// .setHeader("x-delay", 3000); +// return message; +// }); +// } + distributionParcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue()); + distributionParcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue()); + distributionParcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue()); + distributionParcelListService.updateById(distributionParcelListEntity); } @@ -3581,6 +3602,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl parcelListIds = new HashSet<>(); for (int i = 0; i < split.length; i++) { @@ -3838,60 +3862,65 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl 0) { - parcelListIds.addAll(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getParcelListId).collect(Collectors.toSet())); - List listByOrderPackageCode = distributionParcelListService.findListByOrderPackageCode(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getPacketBarCode).collect(Collectors.toList()), myCurrentWarehouse.getId()); - // 根据品牌分组 - Map> collect = listByOrderPackageCode.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getBrandName)); - for (Map.Entry> entry : collect.entrySet()) { - String brand = entry.getKey(); - List list = entry.getValue(); - // 按订单分组 - Map> collect1 = list.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getOrderCode)); - for (Map.Entry> stringListEntry : collect1.entrySet()) { - String orderCode = stringListEntry.getKey(); - List list2 = stringListEntry.getValue(); - JSONObject js = new JSONObject(); - js.put("boId", billLadingEntity.getId()); - js.put("consignee", distrilbutionBillLadingEntity.getConsignee()); - js.put("images", list1.stream().map(m -> m.getSite()).collect(Collectors.toList())); - NodePushMsg msg = new NodePushMsg(); - msg.setNode(WorkNodeEnums.CLERK_REVIEW); - msg.setBrand(BrandEnums.getByValue(brand)); - msg.setWarehouse(myCurrentWarehouse.getName()); - msg.setOperator(AuthUtil.getNickName()); - msg.setOperatorTime(new Date()); - msg.setContent(list2.stream().map(pushData -> { - return PushData.builder() - .packageCode(pushData.getOrderPackageCode()) - .warehouseName(myCurrentWarehouse.getName()) - .waybillNumber(pushData.getWaybillNumber()) - .orderCode(pushData.getOrderCode()) - .build(); - }).collect(Collectors.toList())); - msg.setMain(JSONUtil.toJsonStr(js)); - log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg)); - factoryDataMessageSender.sendNodeDataByBrand(msg); + if (integer != sum) { + //存在资源释放操作 + releaseBillLadingResource(Long.parseLong(s), myCurrentWarehouse,distrilbutionBillLadingEntity.getPickupBatch()); + } + try { + if (sum > 0){ + parcelListIds.addAll(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getParcelListId).collect(Collectors.toSet())); + List listByOrderPackageCode = distributionParcelListService.findListByOrderPackageCode(ladingScanEntities.stream().map(DistributionBillLadingScanEntity::getPacketBarCode).collect(Collectors.toList()), myCurrentWarehouse.getId()); + // 根据品牌分组 + Map> collect = listByOrderPackageCode.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getBrandName)); + for (Map.Entry> entry : collect.entrySet()) { + String brand = entry.getKey(); + List list2 = entry.getValue(); + // 按订单分组 +// Map> collect1 = list.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getOrderCode)); +// for (Map.Entry> stringListEntry : collect1.entrySet()) { +// String orderCode = stringListEntry.getKey(); +// List list2 = stringListEntry.getValue(); + JSONObject js = new JSONObject(); + js.put("boId", billLadingEntity.getId()); + js.put("consignee", distrilbutionBillLadingEntity.getConsignee()); + js.put("images", list1.stream().map(m -> m.getSite()).collect(Collectors.toList())); + NodePushMsg msg = new NodePushMsg(); + msg.setNode(WorkNodeEnums.CLERK_REVIEW); + msg.setBrand(BrandEnums.getByValue(brand)); + msg.setWarehouse(myCurrentWarehouse.getName()); + msg.setOperator(AuthUtil.getNickName()); + msg.setOperatorTime(new Date()); + msg.setContent(list2.stream().map(pushData->{ + return PushData.builder() + .packageCode(pushData.getOrderPackageCode()) + .warehouseName(myCurrentWarehouse.getName()) + .waybillNumber(pushData.getWaybillNumber()) + .orderCode(pushData.getOrderCode()) + .build(); + }).collect(Collectors.toList())); + msg.setMain(JSONUtil.toJsonStr(js)); + log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg)); + factoryDataMessageSender.sendNodeDataByBrand(msg); + } + } + }catch (Exception e){ + log.error("推送失败:{}", e); + } + for (DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities) { + if(ladingScanEntity.getStockArticleId()!=null){ + DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(ladingScanEntity.getStockArticleId()); + if(stockArticleEntity!=null){ + // 签收发送消息到工厂 + pushFactoryOrderData(myCurrentWarehouse.getId(), ladingScanEntity.getParcelListId().toString(), stockArticleEntity.getOrderCode()); } } + } - } catch (Exception e) { - log.error("推送失败", e); } - for (DistributionBillLadingScanEntity ladingScanEntity : ladingScanEntities) { - // 签收发送消息到工厂 - pushFactoryOrderData(myCurrentWarehouse.getId(), ladingScanEntity.getParcelListId().toString(), ladingScanEntity.getOrderSelfNumbering()); - } - } - //修改订单状态 - List list = distrilbutionBillStockService.list(Wrappers.query().lambda() - .eq(DistrilbutionBillStockEntity::getBillLadingId, s) - .apply("order_status in ( '1' , '3')") + //修改订单状态 + List list = distrilbutionBillStockService.list(Wrappers.query().lambda() + .eq(DistrilbutionBillStockEntity::getBillLadingId, s) + .apply("order_status in ( '1' , '3')") // .or(ew -> ew.eq(DistrilbutionBillStockEntity::getBillLadingId, s).apply(DistrilbutionBillStockEntity::getOrderStatus, "2")) ); if (!list.isEmpty()) { @@ -3930,8 +3959,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl list = distrilbutionBillPackageService.list(Wrappers.query().lambda() .eq(DistrilbutionBillPackageEntity::getBillLadingId, l) .ne(DistrilbutionBillPackageEntity::getPacketBarStatus, 2) diff --git a/blade-service/logpm-distribution/src/main/resources/application-test.yml b/blade-service/logpm-distribution/src/main/resources/application-test.yml index cd0503369..b81fd7839 100644 --- a/blade-service/logpm-distribution/src/main/resources/application-test.yml +++ b/blade-service/logpm-distribution/src/main/resources/application-test.yml @@ -39,7 +39,7 @@ spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: @@ -60,30 +60,4 @@ spring: url: ${blade.datasource.distribution.master.url} username: ${blade.datasource.distribution.master.username} password: ${blade.datasource.distribution.master.password} - 627683: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.distribution.627683.url} - username: ${blade.datasource.distribution.627683.username} - password: ${blade.datasource.distribution.627683.password} - 695224: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.distribution.695224.url} - username: ${blade.datasource.distribution.695224.username} - password: ${blade.datasource.distribution.695224.password} - 645789: - druid: - #独立校验配置 - validation-query: select 1 - #oracle校验 - #validation-query: select 1 from dual - url: ${blade.datasource.distribution.645789.url} - username: ${blade.datasource.distribution.645789.username} - password: ${blade.datasource.distribution.645789.password} + diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/mq/NodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/mq/NodeDataPushListener.java index 485ba3af9..036b4d83e 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/mq/NodeDataPushListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/mq/NodeDataPushListener.java @@ -75,8 +75,10 @@ public class NodeDataPushListener { log.info("接收到节点数据推送:{}", msg); // 1 校验数据 if (checkData(msg)) { + log.info("数据校验不通过"); return; } + JSONObject entries = JSONUtil.parseObj(msg); // 节点 String node = entries.getStr("node"); @@ -139,7 +141,7 @@ public class NodeDataPushListener { .packageCode(centralStkInVO.getPackageCode()) .type("收货") .build(); - sendFactory(s, "mt.poc.ht_yc_noms.CentralStkIn", mengTianProperties.getCentralStkInUrl(), entity); + sendFactory(s, mengTianProperties.getCentralStkInCode(), mengTianProperties.getCentralStkInUrl(), entity); } } } @@ -205,7 +207,7 @@ public class NodeDataPushListener { .packageCode(packageCodes) .type("确认收货") .build(); - sendFactory(s, "mt.poc.ht_yc_noms.CentralStkInConfirm", mengTianProperties.getCentralStkInConfirmUrl(), entity); + sendFactory(s, mengTianProperties.getCentralStkInConfirmCode(), mengTianProperties.getCentralStkInConfirmUrl(), entity); } } } @@ -258,7 +260,7 @@ public class NodeDataPushListener { .type("签收") .sendTaskId(signForVO.getSendTaskId()) .build(); - sendFactory(s, "mt.poc.ht_yc_noms.SignFor", mengTianProperties.getSignForUrl(), entity); + sendFactory(s, mengTianProperties.getSignForCode(), mengTianProperties.getSignForUrl(), entity); } } } @@ -318,7 +320,7 @@ public class NodeDataPushListener { .type("确认签收") .sendTaskId(confirmVO.getSendTaskId()) .build(); - sendFactory(s, "mt.poc.ht_yc_noms.SignForConfirm", mengTianProperties.getSignForConfirmUrl(), entity); + sendFactory(s, mengTianProperties.getSignForConfirmCode(), mengTianProperties.getSignForConfirmUrl(), entity); } } @@ -335,16 +337,21 @@ public class NodeDataPushListener { entity.setOperationCode(operationCode); entity.setSendUrl(mengTianProperties.getHost() + url); String resBody = ""; + String resultCode = ""; try { - HttpResponse execute = post.execute(); - resBody = execute.body(); + if (mengTianProperties.getEnable()) { + HttpResponse execute = post.execute(); + resBody = execute.body(); + JSONObject entries = JSONUtil.parseObj(resBody); + resultCode = entries.getStr("Result"); + } else { + resBody = "总线推送开关未开启"; + } log.info("推送工厂结果:{}", resBody); - JSONObject entries = JSONUtil.parseObj(resBody); - String resultCode = entries.getStr("Result"); entity.setResultContent(resBody); entity.setSendStatus(StrUtil.isEmpty(resultCode) ? "-1" : resultCode); } catch (Exception e) { - entity.setResultContent(resBody); + entity.setResultContent(e.getMessage()); entity.setSendStatus("-1"); } factoryNodePushService.save(entity); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/pros/MengTianProperties.java b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/pros/MengTianProperties.java index 6a43b9aa4..3222ddbd2 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/pros/MengTianProperties.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/pros/MengTianProperties.java @@ -18,12 +18,16 @@ public class MengTianProperties { * 收货 url */ private String centralStkInUrl; + private String centralStkInCode; /** 确认收货 url */ private String centralStkInConfirmUrl; + private String centralStkInConfirmCode; /** 签收扫描 url */ private String signForUrl; + private String signForCode; /** 确认签收 url */ private String signForConfirmUrl; + private String signForConfirmCode; /** * 是否推送工厂 */ diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/service/impl/FactoryNodePushServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/service/impl/FactoryNodePushServiceImpl.java index 977d7e7ec..5d3d001ec 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/service/impl/FactoryNodePushServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-mengtian/src/main/java/com/logpm/factorydata/mengtian/service/impl/FactoryNodePushServiceImpl.java @@ -97,11 +97,10 @@ public class FactoryNodePushServiceImpl extends BaseServiceImpl warehouseByBrandAndSiteName = baseClient.getWarehouseByBrandAndSiteName(zbReceiptDTO.getSenderName(), zbReceiptDTO.getSenderName()); + R warehouseByBrandAndSiteName = baseClient.getWarehouseByBrandAndSiteName(BrandEnums.ZB.getValue(), zbReceiptDTO.getSenderCity()); if (ObjectUtil.equal(HttpConstants.HTTP.HTTP_RESOURCE_CODE.SUCCESS_CODE, warehouseByBrandAndSiteName.getCode())) { FactoryWarehouseBindVO data = warehouseByBrandAndSiteName.getData(); if (ObjectUtil.isNotNull(data)) { diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/AsyncDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/AsyncDataServiceImpl.java index d70d6360a..48cc18ba2 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/AsyncDataServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/service/impl/AsyncDataServiceImpl.java @@ -96,6 +96,7 @@ public class AsyncDataServiceImpl implements IAsyncDataService { private final IAdvanceDetailClient advanceDetailClient; private final IServiceNumClient serviceNumClient; private final IDetailProductClient detailProductClient; + private final IFactoryDataBaseClient factoryDataBaseClient; /* pan */ private final IPanFactoryOrderService panFactoryOrderService; private final IPanPackageInfoService panPackageInfoService; @@ -128,7 +129,6 @@ public class AsyncDataServiceImpl implements IAsyncDataService { private final OuPaiProperties ouPaiProperties; - private final IFactoryDataBaseClient factoryDataBaseClient; private final IFactoryDataClient factoryDataClient; /** @@ -1489,10 +1489,16 @@ public class AsyncDataServiceImpl implements IAsyncDataService { private AdvanceEntity saveAdvanceInfor(ZbOrderPackageEntity serviceNumEntity, List zbOrderPackageEntityList) { Long orderId = serviceNumEntity.getId(); log.info("#########handlerDataToHt: 当前处理的订单id={}", orderId); - + Integer warehouseId = 54; // 查询订单对应的发货单 ZbReceiptEntity zbReceiptEntity = findZbReceiptEntityUseCacheById(serviceNumEntity.getReceiptId()); - + R r = factoryDataBaseClient.getWarehouseByBrandAndSiteName(BrandEnums.ZB.getValue(), zbReceiptEntity.getSenderCity()); + if(r.isSuccess()){ + FactoryWarehouseBindVO data = r.getData(); + if(ObjectUtil.isNotEmpty(data) && ObjectUtil.isNotEmpty(data.getOldWarehouseId())){ + warehouseId = Convert.toInt(data.getOldWarehouseId()); + } + } AdvanceEntity advanceEntity = findAdvanceEntityUseCacheByOrderSelfNumAndReceiptId(serviceNumEntity.getReceiptId(), serviceNumEntity.getPlatformOrderCode(), zbReceiptEntity.getDepartCode()); if (ObjectUtils.isNotNull(advanceEntity)) { return advanceEntity; @@ -1541,7 +1547,7 @@ public class AsyncDataServiceImpl implements IAsyncDataService { advanceEntity.setCarsNum(""); //派车单--snm 可以为空 advanceEntity.setDeleteTime(0); // 删除时间 advanceEntity.setWaybillNo("");//运单号 可以为空 - Integer warehouseId = 54; + advanceEntity.setWarehouseId(warehouseId); //导入人仓库id advanceEntity.setWaybillStatus(Integer.parseInt("1"));//开单状态:1=未开单,2=已开单 diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/mt/controller/MtFactoryDataController.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/mt/controller/MtFactoryDataController.java index 2c032bbf0..24a94bda1 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/mt/controller/MtFactoryDataController.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/mt/controller/MtFactoryDataController.java @@ -41,7 +41,6 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -56,8 +55,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import static com.alibaba.druid.util.FnvHash.Constants.GSON; - /** * 梦天数据 控制器 * diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java index 971df1726..0d46ae308 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java @@ -117,7 +117,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { handleData(code); if (ObjectUtils.isNotNull(code)) { // 暂停推送 - if(ObjectUtil.equal(sendDataProperties.getSend(), "new")){ + if (ObjectUtil.equal(sendDataProperties.getSend(), "new")) { log.info("推送新系统"); asyncDataService.handlerOuPaiDataToHt(code); } @@ -164,7 +164,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(OpOrderStatusLogEntity::getType, 3); - lambdaQueryWrapper.like(OpOrderStatusLogEntity::getArgs, code); + lambdaQueryWrapper.like(OpOrderStatusLogEntity::getArgs, code); lambdaQueryWrapper.orderByAsc(OpOrderStatusLogEntity::getCreateTime); lambdaQueryWrapper.last("limit 1"); return opOrderStatusLogService.getOne(lambdaQueryWrapper); @@ -424,22 +424,22 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { /** * 重推 - * @see #handleStatusData(OrderStatusDTO, boolean) + * * @param orderStatusDTO * @return + * @see #handleStatusData(OrderStatusDTO, boolean) */ @Override - public boolean retryHandleStatusData(OrderStatusDTO orderStatusDTO){ + public boolean retryHandleStatusData(OrderStatusDTO orderStatusDTO) { R res = handleStatusData(orderStatusDTO, true); - return res.getCode() == 200; + return res.getCode() == 200; // 测试功能时使用 // return res.getCode() == 200 || Math.random() < 0.5; - } + } /** - * * @param orderStatusDTO - * @param isRetry 是否是重推调用 + * @param isRetry 是否是重推调用 * @return */ private R handleStatusData(OrderStatusDTO orderStatusDTO, boolean isRetry) { @@ -453,6 +453,39 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { return Resp.fail(400, "当前数据的状态不推送"); } + + + if(unitNo.startsWith("HB")){ + // 需要判断当前操作的码 是否是和包码 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(FactoryPackageEntity::getCosourcingCode, unitNo); + List list = factoryPackageService.list(queryWrapper); + if (list.isEmpty()) { + // 查询不到和包码 直接进行异常记录 + //return doPackageInfo(orderStatusDTO, isRetry, unitNo, status); + opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); + return Resp.fail(400, "未查询到该单据推送订单信息"); + } else { + try { + for (FactoryPackageEntity factoryPackageEntity : list) { + + R r = doPackageInfo(orderStatusDTO, isRetry, factoryPackageEntity.getCode(), status); + + } + } catch (Exception e) { + log.error("合包码推送出现异常", e); + } + return Resp.success("物流状态传递成功"); + + } + }else{ + return doPackageInfo(orderStatusDTO, isRetry, unitNo, status); + } + + } + + @NotNull + private R doPackageInfo(OrderStatusDTO orderStatusDTO, boolean isRetry, String unitNo, String status) { //继续判断是否到达目的仓 String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id //查询destinationWarehouse logiBillNo plantId数据 @@ -479,7 +512,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { // 不是重试的时候,记录对应数据 if (!isRetry) { - log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}", unitNo); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); } @@ -547,11 +580,11 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { if (opPackagePushLogEntity == null) { log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate")); } else { - if(opPackagePushLogEntity.getId().equals(-1L)){ + if (opPackagePushLogEntity.getId().equals(-1L)) { // 保存异常 // 不是重试的时候,记录对应数据 if (!isRetry) { - log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + log.info(">>> 保存没有查询到欧派订单包件推送 的记录 {}", unitNo); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); } } @@ -635,92 +668,124 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { // return Resp.fail(400, "不是目的仓"); // } - // 查询这个包件对应到新系统的订单 - FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo); - if (Objects.isNull(factoryOrder)) { - // 不是重试的时候,记录对应数据 - log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); + if(unitNo.startsWith("HB")){ + // 需要判断当前操作的码 是否是和包码 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(FactoryPackageEntity::getCosourcingCode, unitNo); + List list = factoryPackageService.list(queryWrapper); + if (list.isEmpty()) { + // 查询不到和包码 直接进行异常记录 + //return doPackageInfo(orderStatusDTO, isRetry, unitNo, status); opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); + return Resp.fail(400, "未查询到该单据推送订单信息"); + } else { + try { + for (FactoryPackageEntity factoryPackageEntity : list) { - return Resp.fail(400, "未查询到该单据推送订单信息"); - } - // 如何判断这个包间是非干仓配的数据 - - if (!"经销商".equals(factoryOrder.getBusinessModel())) { - log.info("oupai- 该包条为干仓配的数据类型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel()); - return Resp.fail(400, "包条为干仓配的数据类型"); - } - - boolean isPushHtNomal = checkOpfactoryOrderBusinessModel(factoryOrder); - if (isPushHtNomal) { - log.info("oupai- 该包条为汇通使用欧派系统进行作业类型型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel()); - return Resp.fail(400, "该包条为汇通使用欧派系统进行作业类型"); - } - - // 通过仓库编码查询 - ReceivingOrderEntity receivingOrderEntity = receivingOrderMapper.selectById(factoryOrder.getReceivingId()); - - if (Objects.isNull(receivingOrderEntity)) { - log.info(" 该订单为没有收货单 不进行推送 >>> receivingId={} ", factoryOrder.getReceivingId()); - return Resp.fail(400, "未查询到该单据推送收货单信息"); - } - - if (StringUtil.isBlank(receivingOrderEntity.getCurrentWarehouseOid())) { - log.info(" 该订单为没有收货仓 不进行推送 >>> getCurrentWarehouseOid={} ", receivingOrderEntity.getCurrentWarehouseOid()); - return Resp.fail(400, "收货仓信息不能为null"); - } - if (!receivingOrderEntity.getCurrentWarehouseName().contains("仓")) { - log.info(" 该订单为没有收货仓信息不正确 getCurrentWarehouseName={} ", receivingOrderEntity.getCurrentWarehouseName()); - return Resp.fail(400, "该订单为没有收货仓信息不正确"); - } + R r = doPackageInfo(orderStatusDTO, false, factoryPackageEntity.getCode(), status); + } + } catch (Exception e) { + log.error("合包码推送出现异常", e); + } + return Resp.success("物流状态传递成功"); - JSONObject detailObject = new JSONObject(); - detailObject.put("WarehouseOid", receivingOrderEntity.getCurrentWarehouseOid()); - detailObject.put("WarehouseBelong", "oppein"); - detailObject.put("Creator", orderStatusDTO.getUsername()); - detailObject.put("PackageCode", unitNo); - // 增加当仓直接入库的 就没有卸车收货的状态 直接 进行入库 入库就表示货物进入当前仓库 - if ("4".equals(status) || "1".equals(status)) { - detailObject.put("Operate", "收货"); - } else if ("7".equals(status)) { - detailObject.put("Operate", "发货"); - } else { - log.info(" 该包件的状态不正确 status={} ", status); - return Resp.fail(400, "该包件的状态不正确"); + } + }else{ + return doPackageInfo(orderStatusDTO, false, unitNo, status); } - // 查询系统的包件对象 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(FactoryPackageEntity::getCode, unitNo); - FactoryPackageEntity factoryPackageEntity = factoryPackageService.getOne(lambdaQueryWrapper); - if (ObjectUtils.isNotNull(factoryPackageEntity)) { - // 推送数据 - String url = ouPaiProperties.getUri() + "tims_odata_api/api/odata/PackageFeedbackRecord"; - OpPackagePushLogEntity opPackagePushLogEntity = sendPushOuPaiData(factoryPackageEntity.getId(), url, 1, detailObject); - - if (opPackagePushLogEntity == null) { - log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate")); - } else { - if(opPackagePushLogEntity.getId().equals(-1L)){ - log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}" ,unitNo); - opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); - } - // 需要盘点这个对象的 - String resp = opPackagePushLogEntity.getResp(); - log.info(" >>>>>>>>>>>>>>>>>>>>>>> 推送欧派返回数据 {}", resp); - // TODO: 2023/10/25 不知道返回成功的状态是多少 - // 需要修改包件对应的状态 - checkOpFactoryPackagePushStatus(factoryPackageEntity); - } - } - log.info(" >>>>>>>>>>>>>>>>>>>>>>> 物流状态传递成功"); - return Resp.success("物流状态传递成功"); + // 查询这个包件对应到新系统的订单 +// FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo); +// +// if (Objects.isNull(factoryOrder)) { +// +// // 不是重试的时候,记录对应数据 +// log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}", unitNo); +// opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); +// +// return Resp.fail(400, "未查询到该单据推送订单信息"); +// } +// // 如何判断这个包间是非干仓配的数据 +// +// if (!"经销商".equals(factoryOrder.getBusinessModel())) { +// log.info("oupai- 该包条为干仓配的数据类型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel()); +// return Resp.fail(400, "包条为干仓配的数据类型"); +// } +// +// boolean isPushHtNomal = checkOpfactoryOrderBusinessModel(factoryOrder); +// if (isPushHtNomal) { +// log.info("oupai- 该包条为汇通使用欧派系统进行作业类型型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel()); +// return Resp.fail(400, "该包条为汇通使用欧派系统进行作业类型"); +// } +// +// // 通过仓库编码查询 +// ReceivingOrderEntity receivingOrderEntity = receivingOrderMapper.selectById(factoryOrder.getReceivingId()); +// +// if (Objects.isNull(receivingOrderEntity)) { +// log.info(" 该订单为没有收货单 不进行推送 >>> receivingId={} ", factoryOrder.getReceivingId()); +// return Resp.fail(400, "未查询到该单据推送收货单信息"); +// } +// +// if (StringUtil.isBlank(receivingOrderEntity.getCurrentWarehouseOid())) { +// log.info(" 该订单为没有收货仓 不进行推送 >>> getCurrentWarehouseOid={} ", receivingOrderEntity.getCurrentWarehouseOid()); +// return Resp.fail(400, "收货仓信息不能为null"); +// } +// if (!receivingOrderEntity.getCurrentWarehouseName().contains("仓")) { +// log.info(" 该订单为没有收货仓信息不正确 getCurrentWarehouseName={} ", receivingOrderEntity.getCurrentWarehouseName()); +// return Resp.fail(400, "该订单为没有收货仓信息不正确"); +// } +// +// +// JSONObject detailObject = new JSONObject(); +// detailObject.put("WarehouseOid", receivingOrderEntity.getCurrentWarehouseOid()); +// detailObject.put("WarehouseBelong", "oppein"); +// detailObject.put("Creator", orderStatusDTO.getUsername()); +// detailObject.put("PackageCode", unitNo); +// // 增加当仓直接入库的 就没有卸车收货的状态 直接 进行入库 入库就表示货物进入当前仓库 +// if ("4".equals(status) || "1".equals(status)) { +// detailObject.put("Operate", "收货"); +// } else if ("7".equals(status)) { +// detailObject.put("Operate", "发货"); +// } else { +// log.info(" 该包件的状态不正确 status={} ", status); +// return Resp.fail(400, "该包件的状态不正确"); +// } +// +// // 查询系统的包件对象 +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper.eq(FactoryPackageEntity::getCode, unitNo); +// FactoryPackageEntity factoryPackageEntity = factoryPackageService.getOne(lambdaQueryWrapper); +// if (ObjectUtils.isNotNull(factoryPackageEntity)) { +// // 推送数据 +// String url = ouPaiProperties.getUri() + "tims_odata_api/api/odata/PackageFeedbackRecord"; +// OpPackagePushLogEntity opPackagePushLogEntity = sendPushOuPaiData(factoryPackageEntity.getId(), url, 1, detailObject); +// +// if (opPackagePushLogEntity == null) { +// log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate")); +// } else { +// +// if (opPackagePushLogEntity.getId().equals(-1L)) { +// log.info(">>> new保存没有查询到欧派订单包件推送 的记录 {}", unitNo); +// opPushFailedPackageRecordService.record(unitNo, orderStatusDTO); +// } +// +// // 需要盘点这个对象的 +// String resp = opPackagePushLogEntity.getResp(); +// +// log.info(" >>>>>>>>>>>>>>>>>>>>>>> 推送欧派返回数据 {}", resp); +// // TODO: 2023/10/25 不知道返回成功的状态是多少 +// // 需要修改包件对应的状态 +// checkOpFactoryPackagePushStatus(factoryPackageEntity); +// } +// } +// log.info(" >>>>>>>>>>>>>>>>>>>>>>> 物流状态传递成功"); +// return Resp.success("物流状态传递成功"); } /** @@ -842,20 +907,20 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { private OpPackagePushLogEntity sendPushOuPaiDataNew(Long refId, String url, Integer pushType, JSONObject data) { - OpPackagePushLogEntity opPackagePushLogEntity = new OpPackagePushLogEntity(); - opPackagePushLogEntity.setArgs(data.toJSONString()); - opPackagePushLogEntity.setPushType(pushType); - opPackagePushLogEntity.setUrl(url); - opPackagePushLogEntity.setRefId(refId); - opPackagePushLogEntity.setPushOupaiNode(data.getString("Operate")); + OpPackagePushLogEntity opPackagePushLogEntity = new OpPackagePushLogEntity(); + opPackagePushLogEntity.setArgs(data.toJSONString()); + opPackagePushLogEntity.setPushType(pushType); + opPackagePushLogEntity.setUrl(url); + opPackagePushLogEntity.setRefId(refId); + opPackagePushLogEntity.setPushOupaiNode(data.getString("Operate")); - String token = buildToken(); - HttpResponse httpResponse = HttpRequest.post(url).header("Authorization", token).body(data.toJSONString()).execute(); - String result = httpResponse.body(); - opPackagePushLogEntity.setResp(result); - opPackagePushLogService.save(opPackagePushLogEntity); - return opPackagePushLogEntity; + String token = buildToken(); + HttpResponse httpResponse = HttpRequest.post(url).header("Authorization", token).body(data.toJSONString()).execute(); + String result = httpResponse.body(); + opPackagePushLogEntity.setResp(result); + opPackagePushLogService.save(opPackagePushLogEntity); + return opPackagePushLogEntity; } @@ -877,26 +942,26 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushOupaiNode, "收货"); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushType, pushType);// 查询包件 List list = opPackagePushLogService.list(lambdaQueryWrapper); - if(list.isEmpty()){ - data.put("Operate","收货"); + if (list.isEmpty()) { + data.put("Operate", "收货"); OpPackagePushLogEntity opPackagePushLogEntity = sendPushOuPaiDataNew(refId, url, 1, data); - log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 由于欧派数据延迟推送作业,作业上没有进行入库作业回传,在出库回传欧派 再次进行补传入库数据, 包条ID:{}",refId); + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 由于欧派数据延迟推送作业,作业上没有进行入库作业回传,在出库回传欧派 再次进行补传入库数据, 包条ID:{}", refId); // 由于现在无法进行异步任务的绑定,所以对于没有入库数据的说发,导致无法进行延迟 再加上欧派现在没有进行发货数据的考核 所以在检查到没有收货数据的发货推送的时间只传收货 // 将当前的发货的原始数据保存在定时任务 晚上再次执行该原始数据 opPackagePushLogEntity.setId(-1L); return opPackagePushLogEntity; - }else{ + } else { return sendOupaiDataAndSaveLogs(refId, url, pushType, data); } - }else { + } else { return sendOupaiDataAndSaveLogs(refId, url, pushType, data); } } @Nullable private OpPackagePushLogEntity sendOupaiDataAndSaveLogs(Long refId, String url, Integer pushType, JSONObject data) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getRefId, refId); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushOupaiNode, data.getString("Operate")); lambdaQueryWrapper.eq(OpPackagePushLogEntity::getPushType, pushType);// 查询包件 @@ -1288,11 +1353,11 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService { String receiveCode = receivingOrderMapper.selectReceivingOrderByOrderId(factoryPackageEntity.getOrderId()); - if(receiveCode.equals(code)){ + if (receiveCode.equals(code)) { log.error("############handleData: 包件码已存在 packageCode={} ,订单 id {} 收货单号 {}", packageCode, factoryPackageEntity.getOrderId(), code); - }else{ - log.error("############handleData: 该包件存在于其它收货单 packageCode={} 订单ID {} 收货单号 {}", packageCode,factoryPackageEntity.getOrderId(), receiveCode); + } else { + log.error("############handleData: 该包件存在于其它收货单 packageCode={} 订单ID {} 收货单号 {}", packageCode, factoryPackageEntity.getOrderId(), receiveCode); } //throw new CustomerException(403, "包件码已存在"); diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java index 66a4a45ce..56343ed2c 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java @@ -53,6 +53,8 @@ import org.springblade.common.constant.orderpackage.*; import org.springblade.common.exception.CustomerException; import org.springblade.common.utils.CommonUtil; 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.ObjectUtil; import org.springblade.core.tool.utils.StringUtil; @@ -62,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.TimeUnit; @Slf4j @AllArgsConstructor @@ -110,6 +113,7 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { private final BladeRedis redis; + private final RedisLockClient redisLockClient; private final IRegionFeign regionFeign; private final IBasicdataBrandClient basicdataBrandClient; @@ -494,7 +498,7 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { String takeCompany= ""; if(ObjectUtil.isNotEmpty(supplyData)){ destinationWarehouse = supplyData.get("destinationWarehouse");//目的仓名称 - takeCompany = supplyData.get("takeCompany"); + takeCompany = supplyData.get("takeCompany"); } // OrderDetailEntity orderDetailEntity = orderDetailClient.findByUnitNo(unitNo); @@ -522,7 +526,7 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { if (Objects.isNull(distributionStockArticleEntity)) { Date date = new Date(); if(StringUtil.isNoneBlank(operationTime)){ - date = CommonUtil.StringToDate(operationTime); + date = CommonUtil.StringToDate(operationTime); } log.info("#################handleDataToPlatform.waybillNoNum: {}", waybillNoNum); @@ -554,9 +558,9 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { distributionStockArticleEntity.setCompleteSet(0); } log.info("############basicdataWarehouseEntity {}", basicdataWarehouseEntity); - distributionStockArticleEntity.setCreateDept(basicdataWarehouseEntity.getDepartment()); + distributionStockArticleEntity.setCreateDept(basicdataWarehouseEntity.getDepartment()); - WayBillEntity wayBillEntity = wayBillClient.getByWaybillNo(waybillNoNum); + WayBillEntity wayBillEntity = wayBillClient.getByWaybillNo(waybillNoNum); if(Objects.isNull(wayBillEntity)){ @@ -813,7 +817,9 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); if(!Objects.isNull(warehouseWaybillEntity)){ entity.setWaybillId(warehouseWaybillEntity.getId()); - entity.setWaybillNumber(waybillNo); + }else{ + Long waybillId = saveWaybillEntity(waybillNo); + entity.setWaybillId(waybillId); } String brand = distributionStockArticleEntity.getBrand(); @@ -894,186 +900,201 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { } } - private void saveWaybillEntity(String waybillNo) { + private Long saveWaybillEntity(String waybillNo) { log.info("#################handleDataToPlatform.saveWaybillEntity: {}", waybillNo); if (StringUtil.isBlank(waybillNo)) { - return; + return null; } - if(redis.exists("dealwithWaybillNo:"+waybillNo)){ - log.info("###########saveWaybillEntity: 已有保存数据 waybillNo={}",waybillNo); - return; - } +// if (redis.exists("dealwithWaybillNo:" + waybillNo)) { +// log.info("###########saveWaybillEntity: 已有保存数据 waybillNo={}", waybillNo); +// return waybillId; +// } - //通过运单号先去查询新系统是否存在这个运单号 - WarehouseWaybillEntity warehouseWaybill = warehouseWaybillClient.findByWaybillNo(waybillNo); - log.info("#################handleDataToPlatform.warehouseWaybill: {}", warehouseWaybill); - - if (Objects.isNull(warehouseWaybill)) { - redis.setEx("dealwithWaybillNo:"+waybillNo,waybillNo,30L); - //如果新系统中不存在这个运单,那么就去查询老系统的运单数据 - WayBillEntity wayBillEntity = wayBillClient.getByWaybillNo(waybillNo); - log.info("#################handleDataToPlatform.wayBillEntity: {}", wayBillEntity); - if (Objects.isNull(wayBillEntity)) { - log.warn("##############saveWaybillEntity: 老系统中未找到对应运单waybillNo={}", waybillNo); - throw new CustomerException("老系统中未找到对应运单"); - } - String startSite = wayBillEntity.getStartSite();//始发仓名称 - BasicdataWarehouseEntity starthouse = basicdataWarehouseClient.findByName(startSite); - String warehouseName = wayBillEntity.getWarehouseName();//目的仓 - BasicdataWarehouseEntity endhouse = basicdataWarehouseClient.findByName(warehouseName); - Integer number = wayBillEntity.getNumber();//运单总数量 - String packname = wayBillEntity.getPackname(); - String agent = wayBillEntity.getAgent(); - - warehouseWaybill = new WarehouseWaybillEntity(); - warehouseWaybill.setTenantId(TenantNum.HUITONGCODE); - warehouseWaybill.setCreateUser(1714696768639311873L); - warehouseWaybill.setUpdateUser(1714696768639311873L); - warehouseWaybill.setCreateDept(1649331096241836033L); - warehouseWaybill.setWaybillNo(waybillNo); - warehouseWaybill.setDestinationWarehouseName(warehouseName); - warehouseWaybill.setDestinationWarehouseId(Objects.isNull(endhouse) ? null : endhouse.getId()); - warehouseWaybill.setDepartureWarehouseName(startSite); - warehouseWaybill.setDepartureWarehouseId(Objects.isNull(starthouse) ? null : starthouse.getId()); - warehouseWaybill.setCustomerTrain(wayBillEntity.getCarNo()); - warehouseWaybill.setBrand(wayBillEntity.getBrand()); - String sendCompany = wayBillEntity.getSendCompany();//发货单位 - String takeCompany = wayBillEntity.getTakeCompany();//收货单位 - BasicdataClientEntity sendClient = basicdataClientClient.findByName(sendCompany); - BasicdataClientEntity takeClient = basicdataClientClient.findByName(takeCompany); - if (!Objects.isNull(sendClient)) { - Long clientEntityId = sendClient.getId();//基础客户 - warehouseWaybill.setShipperId(clientEntityId); - } - if (!Objects.isNull(takeClient)) { - Long clientEntityId = takeClient.getId();//基础客户 - BasicdataStoreBusinessEntity basicdataStoreBusinessEntity = basicdataStoreBusinessClient.findByClientIdAndTypeService(clientEntityId, 3); - if (!Objects.isNull(basicdataStoreBusinessEntity)) { - warehouseWaybill.setServiceType(Integer.parseInt(basicdataStoreBusinessEntity.getMold())); + String lockKey = "dealwithWaybillNo:" + waybillNo; + Long aLong = null; + boolean flag = false; + try { + flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 20000, 30000, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + log.info("##############我的flag状态 ================================{}",flag); + if(flag){ + log.info("##############我走的新增运单 ================================1"); + //通过运单号先去查询新系统是否存在这个运单号 + WarehouseWaybillEntity warehouseWaybill = warehouseWaybillClient.findByWaybillNo(waybillNo); + log.info("#################handleDataToPlatform.warehouseWaybill: {}", warehouseWaybill); + + if (Objects.isNull(warehouseWaybill)) { +// redis.setEx("dealwithWaybillNo:" + waybillNo, waybillNo, 30L); + //如果新系统中不存在这个运单,那么就去查询老系统的运单数据 + WayBillEntity wayBillEntity = wayBillClient.getByWaybillNo(waybillNo); + log.info("#################handleDataToPlatform.wayBillEntity: {}", wayBillEntity); + if (Objects.isNull(wayBillEntity)) { + log.warn("##############saveWaybillEntity: 老系统中未找到对应运单waybillNo={}", waybillNo); + throw new CustomerException("老系统中未找到对应运单"); } - warehouseWaybill.setConsigneeId(clientEntityId); - } - warehouseWaybill.setShipper(sendCompany); - warehouseWaybill.setShipperName(wayBillEntity.getSendPerson()); - warehouseWaybill.setShipperMobile(wayBillEntity.getSendMobile()); - warehouseWaybill.setShipperAddress(wayBillEntity.getSendAddress()); - warehouseWaybill.setConsignee(takeCompany); - warehouseWaybill.setConsigneeName(wayBillEntity.getTakePerson()); - warehouseWaybill.setConsigneeMobile(wayBillEntity.getTakeMobile()); - warehouseWaybill.setConsigneeAddress(wayBillEntity.getTakeAddress()); + String startSite = wayBillEntity.getStartSite();//始发仓名称 + BasicdataWarehouseEntity starthouse = basicdataWarehouseClient.findByName(startSite); + String warehouseName = wayBillEntity.getWarehouseName();//目的仓 + BasicdataWarehouseEntity endhouse = basicdataWarehouseClient.findByName(warehouseName); + Integer number = wayBillEntity.getNumber();//运单总数量 + String packname = wayBillEntity.getPackname(); + String agent = wayBillEntity.getAgent(); + + warehouseWaybill = new WarehouseWaybillEntity(); + warehouseWaybill.setTenantId(TenantNum.HUITONGCODE); + warehouseWaybill.setCreateUser(1714696768639311873L); + warehouseWaybill.setUpdateUser(1714696768639311873L); + warehouseWaybill.setCreateDept(1649331096241836033L); + warehouseWaybill.setWaybillNo(waybillNo); + warehouseWaybill.setDestinationWarehouseName(warehouseName); + warehouseWaybill.setDestinationWarehouseId(Objects.isNull(endhouse) ? null : endhouse.getId()); + warehouseWaybill.setDepartureWarehouseName(startSite); + warehouseWaybill.setDepartureWarehouseId(Objects.isNull(starthouse) ? null : starthouse.getId()); + warehouseWaybill.setCustomerTrain(wayBillEntity.getCarNo()); + warehouseWaybill.setBrand(wayBillEntity.getBrand()); + String sendCompany = wayBillEntity.getSendCompany();//发货单位 + String takeCompany = wayBillEntity.getTakeCompany();//收货单位 + BasicdataClientEntity sendClient = basicdataClientClient.findByName(sendCompany); + BasicdataClientEntity takeClient = basicdataClientClient.findByName(takeCompany); + if (!Objects.isNull(sendClient)) { + Long clientEntityId = sendClient.getId();//基础客户 + warehouseWaybill.setShipperId(clientEntityId); + } + if (!Objects.isNull(takeClient)) { + Long clientEntityId = takeClient.getId();//基础客户 + BasicdataStoreBusinessEntity basicdataStoreBusinessEntity = basicdataStoreBusinessClient.findByClientIdAndTypeService(clientEntityId, 3); + if (!Objects.isNull(basicdataStoreBusinessEntity)) { + warehouseWaybill.setServiceType(Integer.parseInt(basicdataStoreBusinessEntity.getMold())); + } + warehouseWaybill.setConsigneeId(clientEntityId); + } + warehouseWaybill.setShipper(sendCompany); + warehouseWaybill.setShipperName(wayBillEntity.getSendPerson()); + warehouseWaybill.setShipperMobile(wayBillEntity.getSendMobile()); + warehouseWaybill.setShipperAddress(wayBillEntity.getSendAddress()); + warehouseWaybill.setConsignee(takeCompany); + warehouseWaybill.setConsigneeName(wayBillEntity.getTakePerson()); + warehouseWaybill.setConsigneeMobile(wayBillEntity.getTakeMobile()); + warehouseWaybill.setConsigneeAddress(wayBillEntity.getTakeAddress()); // String arriveSite = wayBillEntity.getArriveSite(); - Integer arriveSiteId = wayBillEntity.getArriveSiteId(); - String code = wayBillClient.findAreaCodeByArriveSiteId(arriveSiteId); + Integer arriveSiteId = wayBillEntity.getArriveSiteId(); + String code = wayBillClient.findAreaCodeByArriveSiteId(arriveSiteId); // String code = regionFeign.getCode(arriveSite); - warehouseWaybill.setDestinationCode(code); - warehouseWaybill.setDestination(wayBillEntity.getArriveSite()); - warehouseWaybill.setGoodsName(packname); - warehouseWaybill.setTotalCount(number); - warehouseWaybill.setStockCount(1); - warehouseWaybill.setWaybillType(1); - warehouseWaybill.setTotalWeight(wayBillEntity.getWeight()); - warehouseWaybill.setTotalVolume(wayBillEntity.getVolume()); - warehouseWaybill.setDeliveryMethod(wayBillEntity.getSendType()); - warehouseWaybill.setUrgency(wayBillEntity.getUrgency()); - warehouseWaybill.setReceiptCount(wayBillEntity.getReceiptNum()); - warehouseWaybill.setReceiptRequirement(wayBillEntity.getReceiptAsk()); - //--------------2023-07-28------------- - warehouseWaybill.setCollectPay(wayBillEntity.getDPay()); - warehouseWaybill.setReceivedCollectPay(BigDecimal.ZERO); - warehouseWaybill.setReplacePrice(wayBillEntity.getReplacePrice()); - warehouseWaybill.setReceivedReplacePrice(BigDecimal.ZERO); - warehouseWaybill.setReceivedTotalPrice(BigDecimal.ZERO); - warehouseWaybill.setWaybillType(wayBillEntity.getType()); - warehouseWaybill.setReceivedStatus(0); - - warehouseWaybill.setTotalFreight(wayBillEntity.getFreight()); - warehouseWaybill.setDeliveryFee(wayBillEntity.getDeliveryCost()); - warehouseWaybill.setPickupFee(wayBillEntity.getTakeCost()); - warehouseWaybill.setWarehouseManagementFee(wayBillEntity.getWarehouseManagementFee()); - warehouseWaybill.setStorageFee(wayBillEntity.getWarehousingFee()); - warehouseWaybill.setHandlingFee(wayBillEntity.getPretendCost()); - warehouseWaybill.setOtherFee(wayBillEntity.getOtherFee()); - warehouseWaybill.setInsuranceFee(wayBillEntity.getPriceProtectionFee()); - warehouseWaybill.setClaimingValue(wayBillEntity.getValue()); - warehouseWaybill.setPayType(wayBillEntity.getPayType()+""); - warehouseWaybill.setPayWay(wayBillEntity.getPaymentMethod()+""); - warehouseWaybill.setXPay(wayBillEntity.getXPay()); - warehouseWaybill.setDPay(wayBillEntity.getDPay()); - warehouseWaybill.setHPay(wayBillEntity.getHPay()); - warehouseWaybill.setYPay(wayBillEntity.getYPay()); - warehouseWaybill.setThirdOperationFee(wayBillEntity.getThreeHandleFee()); - warehouseWaybill.setDeliveryWay(wayBillEntity.getSendType()+""); - warehouseWaybill.setUrgency(wayBillEntity.getUrgency()+""); - warehouseWaybill.setReceipt(wayBillEntity.getReceiptAsk()); - warehouseWaybill.setReceiptNum(wayBillEntity.getReceiptNum()); - warehouseWaybill.setTransportType(wayBillEntity.getShippingType()+""); - warehouseWaybill.setRebate(wayBillEntity.getRebate()); - - BasicdataClientEntity agentClient = basicdataClientClient.findByName(agent); - if (!Objects.isNull(agentClient)) { - Long clientEntityId = agentClient.getId();//基础客户 - warehouseWaybill.setAgentId(clientEntityId); - } - Date date = new Date(); - warehouseWaybill.setAgent(agent); - warehouseWaybill.setDocumentMakingTime(wayBillEntity.getPreparationTime()); - warehouseWaybill.setRemark(wayBillEntity.getMsg()); - warehouseWaybill.setBatchNo(wayBillEntity.getStartCarsNo()); - warehouseWaybill.setFreezeStatus(0); - warehouseWaybill.setStatus(0); - warehouseWaybill.setIsDeleted(0); - warehouseWaybill.setCreateTime(date); - warehouseWaybill.setUpdateTime(date); - Long aLong = warehouseWaybillClient.addEnntity(warehouseWaybill); - if(aLong != 0){ - - List desList = waybillDesClient.getDesList(waybillNo); - List warehouseWayBillDetails = new ArrayList<>(); - for (WaybillDesEntity waybillDesEntity : desList) { - WarehouseWayBillDetail warehouseWayBillDetail = new WarehouseWayBillDetail(); - warehouseWayBillDetail.setCreateUser(1714696768639311873L); - warehouseWayBillDetail.setUpdateUser(1714696768639311873L); - warehouseWayBillDetail.setCreateDept(1649331096241836033L); - warehouseWayBillDetail.setWaybillId(aLong); - warehouseWayBillDetail.setWaybillNo(waybillNo); - String goodsName = waybillDesEntity.getName(); - BasicdataCategoryEntity categoryEntity = categoryClient.findByName(goodsName); - if(Objects.isNull(categoryEntity)){ - categoryEntity = new BasicdataCategoryEntity(); - categoryEntity.setName(goodsName); - categoryEntity.setType(1); - categoryEntity.setTenantId(TenantNum.HUITONGCODE); - categoryEntity.setCreateUser(1714696768639311873L); - categoryEntity.setUpdateUser(1714696768639311873L); - categoryEntity.setCreateDept(1649331096241836033L); - Long categoryId = categoryClient.addReturnId(categoryEntity); - warehouseWayBillDetail.setProductId(categoryId); - }else{ - warehouseWayBillDetail.setProductId(categoryEntity.getId()); + warehouseWaybill.setDestinationCode(code); + warehouseWaybill.setDestination(wayBillEntity.getArriveSite()); + warehouseWaybill.setGoodsName(packname); + warehouseWaybill.setTotalCount(number); + warehouseWaybill.setStockCount(1); + warehouseWaybill.setWaybillType(1); + warehouseWaybill.setTotalWeight(wayBillEntity.getWeight()); + warehouseWaybill.setTotalVolume(wayBillEntity.getVolume()); + warehouseWaybill.setDeliveryMethod(wayBillEntity.getSendType()); + warehouseWaybill.setUrgency(wayBillEntity.getUrgency()); + warehouseWaybill.setReceiptCount(wayBillEntity.getReceiptNum()); + warehouseWaybill.setReceiptRequirement(wayBillEntity.getReceiptAsk()); + //--------------2023-07-28------------- + warehouseWaybill.setCollectPay(wayBillEntity.getDPay()); + warehouseWaybill.setReceivedCollectPay(BigDecimal.ZERO); + warehouseWaybill.setReplacePrice(wayBillEntity.getReplacePrice()); + warehouseWaybill.setReceivedReplacePrice(BigDecimal.ZERO); + warehouseWaybill.setReceivedTotalPrice(BigDecimal.ZERO); + warehouseWaybill.setWaybillType(wayBillEntity.getType()); + warehouseWaybill.setReceivedStatus(0); + + warehouseWaybill.setTotalFreight(wayBillEntity.getFreight()); + warehouseWaybill.setDeliveryFee(wayBillEntity.getDeliveryCost()); + warehouseWaybill.setPickupFee(wayBillEntity.getTakeCost()); + warehouseWaybill.setWarehouseManagementFee(wayBillEntity.getWarehouseManagementFee()); + warehouseWaybill.setStorageFee(wayBillEntity.getWarehousingFee()); + warehouseWaybill.setHandlingFee(wayBillEntity.getPretendCost()); + warehouseWaybill.setOtherFee(wayBillEntity.getOtherFee()); + warehouseWaybill.setInsuranceFee(wayBillEntity.getPriceProtectionFee()); + warehouseWaybill.setClaimingValue(wayBillEntity.getValue()); + warehouseWaybill.setPayType(wayBillEntity.getPayType() + ""); + warehouseWaybill.setPayWay(wayBillEntity.getPaymentMethod() + ""); + warehouseWaybill.setXPay(wayBillEntity.getXPay()); + warehouseWaybill.setDPay(wayBillEntity.getDPay()); + warehouseWaybill.setHPay(wayBillEntity.getHPay()); + warehouseWaybill.setYPay(wayBillEntity.getYPay()); + warehouseWaybill.setThirdOperationFee(wayBillEntity.getThreeHandleFee()); + warehouseWaybill.setDeliveryWay(wayBillEntity.getSendType() + ""); + warehouseWaybill.setUrgency(wayBillEntity.getUrgency() + ""); + warehouseWaybill.setReceipt(wayBillEntity.getReceiptAsk()); + warehouseWaybill.setReceiptNum(wayBillEntity.getReceiptNum()); + warehouseWaybill.setTransportType(wayBillEntity.getShippingType() + ""); + warehouseWaybill.setRebate(wayBillEntity.getRebate()); + + BasicdataClientEntity agentClient = basicdataClientClient.findByName(agent); + if (!Objects.isNull(agentClient)) { + Long clientEntityId = agentClient.getId();//基础客户 + warehouseWaybill.setAgentId(clientEntityId); + } + Date date = new Date(); + warehouseWaybill.setAgent(agent); + warehouseWaybill.setDocumentMakingTime(wayBillEntity.getPreparationTime()); + warehouseWaybill.setRemark(wayBillEntity.getMsg()); + warehouseWaybill.setBatchNo(wayBillEntity.getStartCarsNo()); + warehouseWaybill.setFreezeStatus(0); + warehouseWaybill.setStatus(0); + warehouseWaybill.setIsDeleted(0); + warehouseWaybill.setCreateTime(date); + warehouseWaybill.setUpdateTime(date); + aLong = warehouseWaybillClient.addEnntity(warehouseWaybill); + if (aLong != 0) { + redis.setEx("dealwithWaybillNoId:" + waybillNo,aLong, 30L); + List desList = waybillDesClient.getDesList(waybillNo); + List warehouseWayBillDetails = new ArrayList<>(); + for (WaybillDesEntity waybillDesEntity : desList) { + WarehouseWayBillDetail warehouseWayBillDetail = new WarehouseWayBillDetail(); + warehouseWayBillDetail.setCreateUser(1714696768639311873L); + warehouseWayBillDetail.setUpdateUser(1714696768639311873L); + warehouseWayBillDetail.setCreateDept(1649331096241836033L); + warehouseWayBillDetail.setWaybillId(aLong); + warehouseWayBillDetail.setWaybillNo(waybillNo); + String goodsName = waybillDesEntity.getName(); + BasicdataCategoryEntity categoryEntity = categoryClient.findByName(goodsName); + if (Objects.isNull(categoryEntity)) { + categoryEntity = new BasicdataCategoryEntity(); + categoryEntity.setName(goodsName); + categoryEntity.setType(1); + categoryEntity.setTenantId(TenantNum.HUITONGCODE); + categoryEntity.setCreateUser(1714696768639311873L); + categoryEntity.setUpdateUser(1714696768639311873L); + categoryEntity.setCreateDept(1649331096241836033L); + Long categoryId = categoryClient.addReturnId(categoryEntity); + warehouseWayBillDetail.setProductId(categoryId); + } else { + warehouseWayBillDetail.setProductId(categoryEntity.getId()); + } + warehouseWayBillDetail.setProductName(goodsName); + warehouseWayBillDetail.setNum(waybillDesEntity.getNum()); + warehouseWayBillDetail.setPrice(waybillDesEntity.getPrice()); + warehouseWayBillDetail.setVolume(waybillDesEntity.getVolume()); + warehouseWayBillDetail.setWeight(waybillDesEntity.getWeight()); + warehouseWayBillDetail.setSubtotalFreight(waybillDesEntity.getTotalDesPrice()); + warehouseWayBillDetail.setChargeType(waybillDesEntity.getPic()); + warehouseWayBillDetails.add(warehouseWayBillDetail); } - warehouseWayBillDetail.setProductName(goodsName); - warehouseWayBillDetail.setNum(waybillDesEntity.getNum()); - warehouseWayBillDetail.setPrice(waybillDesEntity.getPrice()); - warehouseWayBillDetail.setVolume(waybillDesEntity.getVolume()); - warehouseWayBillDetail.setWeight(waybillDesEntity.getWeight()); - warehouseWayBillDetail.setSubtotalFreight(waybillDesEntity.getTotalDesPrice()); - warehouseWayBillDetail.setChargeType(waybillDesEntity.getPic()); - warehouseWayBillDetails.add(warehouseWayBillDetail); + warehouseWaybillDetailClient.addList(warehouseWayBillDetails); } - warehouseWaybillDetailClient.addList(warehouseWayBillDetails); + //暂存单与运单的关联 + saveAdvanceData(warehouseWaybill); + } else { + log.info("##############我走的新增运单 ================================2"); + warehouseWaybill.setStockCount(warehouseWaybill.getStockCount() + 1); + warehouseWaybill.setUpdateTime(new Date()); + warehouseWaybillClient.updateEntity(warehouseWaybill); + aLong = warehouseWaybill.getId(); } - - } else { - warehouseWaybill.setStockCount(warehouseWaybill.getStockCount() + 1); - warehouseWaybill.setUpdateTime(new Date()); - warehouseWaybillClient.updateEntity(warehouseWaybill); + log.info("##############我走的准备解锁 ================================3"); + redisLockClient.unLock(lockKey, LockType.FAIR); + log.info("##############我走的解锁 ================================4 {}",aLong); } - - //暂存单与运单的关联 - saveAdvanceData(warehouseWaybill); - + return aLong; } private void saveAdvanceData(WarehouseWaybillEntity warehouseWaybill) { diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java index 466605527..7c394149b 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java @@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.RabbitConstant; import org.springblade.common.exception.CustomerException; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; @@ -53,6 +54,10 @@ public class HwyOrderStatusHandler { String orderSelfNum = orderStatusDTO.getOrderNo();//订单自编号 String unitNo = orderStatusDTO.getUnitNo(); //通过订单自编号去查询该条订单是属于哪个工厂 + if(StringUtil.isEmpty(orderSelfNum)){ + log.warn(">>>>>>> 订单号是null hwyOrderStatusHandler {}",orderStatusDTO); + return ; + } TrunklineAdvanceEntity advanceLimitOneByOrderCode = trunklineAdvanceClient.findAdvanceLimitOneByOrderCode(orderSelfNum); if (Objects.isNull(advanceLimitOneByOrderCode)) { log.info("##################hwyOrderStatusHandler: 未找到对应订单 orderNo={}", orderSelfNum); diff --git a/blade-service/logpm-factory/src/main/resources/application-dev.yml b/blade-service/logpm-factory/src/main/resources/application-dev.yml index a9a180282..ec7b1d9ce 100644 --- a/blade-service/logpm-factory/src/main/resources/application-dev.yml +++ b/blade-service/logpm-factory/src/main/resources/application-dev.yml @@ -60,14 +60,14 @@ spring: url: ${blade.datasource.factory.master.url} username: ${blade.datasource.factory.master.username} password: ${blade.datasource.factory.master.password} - slave: + 627683: druid: #独立校验配置 validation-query: select 1 #oracle校验 #validation-query: select 1 from dual - url: ${blade.datasource.factory.slave.url} - username: ${blade.datasource.factory.slave.username} - password: ${blade.datasource.factory.slave.password} + url: ${blade.datasource.factory.627683.url} + username: ${blade.datasource.factory.627683.username} + password: ${blade.datasource.factory.627683.password} diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOrderInfoToPlatform.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOrderInfoToPlatform.java index 113479683..09057c645 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOrderInfoToPlatform.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOrderInfoToPlatform.java @@ -408,6 +408,30 @@ public class SyncOrderInfoToPlatform { } + @XxlJob("clearOrderPackageDownAndDelTray") + public ReturnT clearOrderPackageDownAndDelTray(String param) { + log.info("############clearOrderPackageDownAndDelTray: 清理包件数据下架解托 开始"); + + List ls = warehouseMappingDataService.findAllOrderPackage(); + + for (JSONObject l : ls) { + String orderPackageCode = l.getStr("orderPackageCode"); + Long warehouseId = l.getLong("warehouseId"); + + syncOrderInfoService.clearOrderPackageDownAndDelTray(orderPackageCode,warehouseId); + + warehouseMappingDataService.updateClearOrderPackageStatusSignStatus(orderPackageCode,warehouseId,1); + } + + + + log.info("############clearOrderPackageDownAndDelTray: 清理包件数据下架解托 完成"); + + return ReturnT.SUCCESS; + } + + + @XxlJob("syncZeroOrderInfo") public ReturnT syncZeroOrderInfo(String param) { @@ -832,5 +856,25 @@ public class SyncOrderInfoToPlatform { } + @XxlJob("syncWaybillInfo") + public ReturnT syncWaybillInfo(String param) { + log.info("############syncWaybillInfo: 同步运单信息 开始"); + List waybillJSONs = warehouseMappingDataService.findAllWaybillNo(); + + waybillJSONs.forEach(waybillJSON -> { + + Long id = waybillJSON.getLong("id"); + String waybillNo = waybillJSON.getStr("waybillNo"); + + syncOrderInfoService.syncWaybillInfo(waybillNo); + + warehouseMappingDataService.updateStatusById(id,1); + }); + + log.info("############syncWaybillInfo: 同步运单信息 完成"); + + return ReturnT.SUCCESS; + } + } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.java index d2a2bb587..65c6f5d66 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.java @@ -130,5 +130,9 @@ public interface WarehouseMappingDataMapper { * @param remarks */ void updateClearSignforRemarks(@Param("singnforId")Long id,@Param("remarks") String remarks); + + List findAllWaybillNo(); + + void updateStatusById(@Param("id") Long id, @Param("status") int status); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.xml b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.xml index e9b6b11e4..d0df3b2b6 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.xml +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/WarehouseMappingDataMapper.xml @@ -424,4 +424,18 @@ and ldsl.id is not null + + + + update sync_old_waybill_info + set status = #{status} + where id = #{id} + + + diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/ISyncOrderInfoService.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/ISyncOrderInfoService.java index ecf7bfa6e..2e7f892e0 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/ISyncOrderInfoService.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/ISyncOrderInfoService.java @@ -28,4 +28,8 @@ public interface ISyncOrderInfoService { void clearOrderPackageStatusOut(String orderPackageCode, Long warehouseId); void dealWithPackageUpdown(String orderPackageCode, Long allocationId,Long warehouseId); + + void clearOrderPackageDownAndDelTray(String orderPackageCode, Long warehouseId); + + void syncWaybillInfo(String waybillNo); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IWarehouseMappingDataService.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IWarehouseMappingDataService.java index 390d86299..3e10832c6 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IWarehouseMappingDataService.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IWarehouseMappingDataService.java @@ -112,4 +112,7 @@ public interface IWarehouseMappingDataService { List findStockAllocationInfo(); + List findAllWaybillNo(); + + void updateStatusById(Long id, int status); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java index 2df380f45..f0c1203fc 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java @@ -365,6 +365,28 @@ public class SyncOrderInfoServiceImpl implements ISyncOrderInfoService { } + @Override + public void clearOrderPackageDownAndDelTray(String orderPackageCode, Long warehouseId) { + warehouseUpdownTypeClient.downPackageOrDelTray(orderPackageCode,warehouseId,"系统下架解托"); + } + + @Override + public void syncWaybillInfo(String waybillNo) { + + saveWaybillEntity(waybillNo); + + WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); + + if(!Objects.isNull(warehouseWaybillEntity)){ + + Long waybillId = warehouseWaybillEntity.getId(); + //把包件上是这个运单号的没有运单id的加上 + distributionParcelListClient.updateWaybillIdByWaybillNo(waybillId,waybillNo); + + } + + } + @Transactional(rollbackFor = Exception.class) @Override diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/WarehouseMappingDataServiceImpl.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/WarehouseMappingDataServiceImpl.java index 8fe26b650..bfa136608 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/WarehouseMappingDataServiceImpl.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/WarehouseMappingDataServiceImpl.java @@ -265,4 +265,14 @@ public class WarehouseMappingDataServiceImpl implements IWarehouseMappingDataSer public List findStockAllocationInfo() { return warehouseMappingDataMapper.findStockAllocationInfo(); } + + @Override + public List findAllWaybillNo() { + return warehouseMappingDataMapper.findAllWaybillNo(); + } + + @Override + public void updateStatusById(Long id, int status) { + warehouseMappingDataMapper.updateStatusById(id,status); + } } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml index 14f752c76..bae38a2c8 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml @@ -186,7 +186,7 @@ forklift_fee, add_value_fee, amountToFee, - createdTime created_time + created_time from (select obj.pickup_batch, lww.name as warehouse, lww.id as warehouse_id, @@ -223,7 +223,7 @@ fee.addValueFee add_value_fee, fee.collectPaymentFee + fee.transportFee + fee.storageFee + fee.forkliftFee + fee.addValueFee amountToFee, - obj.pick_up_time createdTime + obj.pick_up_time created_time from logpm_distrilbution_bill_lading obj left join logpm_warehouse_warehouse lww on lww.id = obj.warehouse_id left join logpm_distribution_stock_article ldsa on ldsa.id = obj.stock_article_id diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java index 8925195be..bd6a6bacc 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java @@ -68,4 +68,8 @@ public interface ReportDeliverMapeer extends BaseMapper { List getDeliveryTrainLoadSacnByIds(@Param("idBatch") List idBatch); List getDeliveryTrainLoadSacnInvnByIds(@Param("idBatch") List idBatch); + + Long getDetailsPageCount(@Param("ew") Wrapper query); + + List getDetailsPageExport(@Param("ew") Wrapper queryWrapper, @Param("current") Integer current, @Param("size") Integer size); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml index 115015632..e4d158a4a 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml @@ -303,7 +303,7 @@ ) t ${ew.customSqlSegment} - + select @@ -828,4 +831,15 @@ group by t.delivery_id order by null + + + + diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java b/blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java index 7774621c8..978650871 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java @@ -31,14 +31,14 @@ public class DeliveryDetailReader implements ExportReader { @Override public Long getCount(Wrapper query) { Page page = new Page(1, 1); - reportDeliverMapeer.getDetailsPage(page, query); + Long detailsPageCount = reportDeliverMapeer.getDetailsPageCount(query); Long detailsZeroPageCount = reportDeliverMapeer.getDetailsZeroPageCount(query); - return page.getTotal() + detailsZeroPageCount; + return detailsPageCount + detailsZeroPageCount; } @Override public List findList(Page page, Wrapper query) { - return asyncService.getdetailPages(page, query, Convert.toInt(page.getCurrent()), Convert.toInt(page.getSize())); + return asyncService.getdetailPagesExport(page, query, Convert.toInt(page.getCurrent()), Convert.toInt(page.getSize())); } } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/IAsyncService.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IAsyncService.java index 02843e1f4..cb5480546 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/IAsyncService.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IAsyncService.java @@ -21,4 +21,6 @@ public interface IAsyncService { List getDeliveryTrainLoadSacnByIds(List idBatch); List getdetailPages(IPage page, Wrapper queryWrapper, Integer current, Integer size); + + List getdetailPagesExport(IPage page, Wrapper queryWrapper, Integer current, Integer size); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/AsyncServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/AsyncServiceImpl.java index 630a26f66..90bba2334 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/AsyncServiceImpl.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/AsyncServiceImpl.java @@ -52,7 +52,7 @@ public class AsyncServiceImpl implements IAsyncService { }, asyncExecutor); future.thenAccept(list -> { - if(CollUtil.isNotEmpty(list)){ + if (CollUtil.isNotEmpty(list)) { // 获取组装的数据列表 List detailVo = pageMap.get(finalI); // 将查询数据添加到本地缓存 @@ -92,11 +92,11 @@ public class AsyncServiceImpl implements IAsyncService { countDownLatch.countDown(); } - @Override + @Override // @LogpmAsync("asyncExecutor") - public List getDeliveryTrainLoadSacnInvnByIds(List idBatch) { - return reportDeliverMapeer.getDeliveryTrainLoadSacnInvnByIds(idBatch); - } + public List getDeliveryTrainLoadSacnInvnByIds(List idBatch) { + return reportDeliverMapeer.getDeliveryTrainLoadSacnInvnByIds(idBatch); + } @Override // @LogpmAsync("asyncExecutor") @@ -105,8 +105,8 @@ public class AsyncServiceImpl implements IAsyncService { return reportDeliverMapeer.getDeliveryTrainLoadSacnByIds(idBatch); } - @Override - public List getdetailPages(IPage page, Wrapper queryWrapper, Integer current, Integer size) { + @Override + public List getdetailPages(IPage page, Wrapper queryWrapper, Integer current, Integer size) { List detailsPage = reportDeliverMapeer.getDetailsPage(page, queryWrapper); // 包件总数 long total = page.getTotal(); @@ -123,7 +123,7 @@ public class AsyncServiceImpl implements IAsyncService { int zeroSize = zeroTotal % size; long limitA = 0; long limitB = 0; - if(zeroSize == 0){ + if (zeroSize == 0) { zeroSize = size; } if (!NumberUtil.equals(zeroCurrent, 1)) { @@ -132,12 +132,50 @@ public class AsyncServiceImpl implements IAsyncService { } limitB = zeroSize; List zeroPage = reportDeliverMapeer.getDetailsZeroPage(limitA, limitB, queryWrapper); - if(CollUtil.isEmpty(detailsPage)){ + if (CollUtil.isEmpty(detailsPage)) { detailsPage = new ArrayList<>(); } detailsPage.addAll(zeroPage); } page.setTotal(allTotal); return detailsPage; - } + } + + @Override + public List getdetailPagesExport(IPage page, Wrapper queryWrapper, Integer current, Integer size) { + List detailsPage = reportDeliverMapeer.getDetailsPageExport(queryWrapper, (current - 1) * size, size); + // 包件总数 + long total = detailsPage.size(); + // 零件总数 + Long detailsZeroPageCount = reportDeliverMapeer.getDetailsZeroPageCount(queryWrapper); + long allTotal = total + detailsZeroPageCount; + // 包件没数据查零担 + int pageSize = current * size; + if (total < pageSize) { + // 剩余需要查询的数量 + int zeroTotal = Convert.toInt(pageSize - total); + double div = NumberUtil.div(zeroTotal, size.doubleValue()); + long zeroCurrent = (int) Math.ceil(div); + int zeroSize = zeroTotal % size; + long limitA = 0; + long limitB = 0; + if (zeroSize == 0) { + zeroSize = size; + } + if (!NumberUtil.equals(zeroCurrent, 1)) { + limitA = zeroSize + (zeroCurrent - 2) * size; + zeroSize = size; + } + limitB = zeroSize; + List zeroPage = reportDeliverMapeer.getDetailsZeroPage(limitA, limitB, queryWrapper); + if (CollUtil.isEmpty(detailsPage)) { + detailsPage = new ArrayList<>(); + } + detailsPage.addAll(zeroPage); + } + page.setTotal(allTotal); + return detailsPage; + } + + } diff --git a/blade-service/logpm-statisticsdata/pom.xml b/blade-service/logpm-statisticsdata/pom.xml index 85b99c3d2..2ad6ff796 100644 --- a/blade-service/logpm-statisticsdata/pom.xml +++ b/blade-service/logpm-statisticsdata/pom.xml @@ -69,6 +69,18 @@ logpm-distribution-api 3.2.0.RELEASE + + org.springblade + logpm-warehouse-api + 3.2.0.RELEASE + compile + + + org.springblade + logpm-trunkline-api + 3.2.0.RELEASE + compile + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantBalanceController.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantBalanceController.java index 1126c8020..f358baf15 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantBalanceController.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantBalanceController.java @@ -108,7 +108,7 @@ public class MerchantBalanceController { @ResponseBody @PostMapping("/addBalanceRecord") @ApiOperationSupport(order = 1) - @ApiOperation(value = "添加结算揭露", notes = "传入balanceRecordDTO") + @ApiOperation(value = "添加结算记录", notes = "传入balanceRecordDTO") public R addBalanceRecord(@RequestBody StatisticsBalanceRecordDTO balanceRecordDTO) { String method = "############addBalanceRecord: "; log.info(method+"请求参数{}",balanceRecordDTO); diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantStatisticsController.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantStatisticsController.java index 882a270b2..60100695c 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantStatisticsController.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/controller/MerchantStatisticsController.java @@ -1,26 +1,26 @@ package com.logpm.statistics.controller; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.statistics.dto.ChangesRecordDTO; import com.logpm.statistics.dto.MerchantStatisticsDTO; +import com.logpm.statistics.entity.StatisticsReconciliationOrderInfoEntity; import com.logpm.statistics.service.IStatisticsOrderInfoService; +import com.logpm.statistics.service.IStatisticsReconciliationOrderInfoService; import com.logpm.statistics.vo.StatisticsChangesRecordVO; +import com.logpm.statistics.vo.StatisticsOrderInfoExportVO; import com.logpm.statistics.vo.StatisticsOrderInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.exception.CustomerException; +import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.api.R; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Objects; @@ -32,11 +32,12 @@ import java.util.Objects; public class MerchantStatisticsController { private final IStatisticsOrderInfoService statisticsOrderInfoService; + private final IStatisticsReconciliationOrderInfoService reconciliationOrderInfoService; @ResponseBody @PostMapping("/pageList") @ApiOperationSupport(order = 1) - @ApiOperation(value = "运单维度对账单", notes = "传入merchantStatisticsDTO") + @ApiOperation(value = "预对账单列表", notes = "传入merchantStatisticsDTO") public R pageList(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { String method = "############pageList: "; log.info(method + "请求参数{}", merchantStatisticsDTO); @@ -60,21 +61,94 @@ public class MerchantStatisticsController { } } + + @ResponseBody + @PostMapping("/orderInfoListExport") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "预对账单列表导出", notes = "传入merchantStatisticsDTO") + public void orderInfoListExport(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO, HttpServletResponse response) { + String method = "############orderInfoListExport: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + + List ls = statisticsOrderInfoService.orderInfoListExport(merchantStatisticsDTO); + //导出ls + ExcelUtil.export(response, "预对账单数据", "预对账单数据", ls, StatisticsOrderInfoExportVO.class); + } + + @ResponseBody + @PostMapping("/createReconciliationOrder") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "创建对账单", notes = "传入merchantStatisticsDTO") + public R createReconciliationOrder(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############createReconciliationOrder: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + List orderInfoIds = merchantStatisticsDTO.getOrderInfoIds(); + if (CollUtil.isEmpty(orderInfoIds)) { + log.warn(method + "请选择正确的订单 merchantStatisticsDTO={}", merchantStatisticsDTO); + return R.fail(405, "请选择正确的订单"); + } + + return statisticsOrderInfoService.createReconciliationOrder(orderInfoIds); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } + + @ResponseBody + @PostMapping("/pageReconciliationList") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "对账单列表", notes = "传入merchantStatisticsDTO") + public R pageReconciliationList(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############pageReconciliationList: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + + IPage pages = reconciliationOrderInfoService.pageReconciliationList(merchantStatisticsDTO); + + return R.data(pages); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } + + @ResponseBody + @PostMapping("/reconciliationListExport") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "对账单列表导出", notes = "传入merchantStatisticsDTO") + public void reconciliationListExport(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO, HttpServletResponse response) { + String method = "############orderInfoListExport: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + //TODO 做到这个了 +// List ls = reconciliationOrderInfoService.reconciliationListExport(merchantStatisticsDTO); +// //导出ls +// ExcelUtil.export(response, "对账单数据", "对账单数据", ls, StatisticsReconciliationOrderInfoExportVO.class); + } + + @ResponseBody @PostMapping("/findOrderDetail") @ApiOperationSupport(order = 1) - @ApiOperation(value = "查询订单详情", notes = "传入merchantStatisticsDTO") + @ApiOperation(value = "查询对账单订单详情", notes = "传入merchantStatisticsDTO") public R findOrderDetail(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { String method = "############findOrderDetail: "; log.info(method + "请求参数{}", merchantStatisticsDTO); try { - Long orderInfoId = merchantStatisticsDTO.getOrderInfoId(); - if (Objects.isNull(orderInfoId)) { - log.warn(method + "请选择正确的订单 orderInfoId={}", orderInfoId); - return R.fail(405, "请选择正确的订单"); + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + if (Objects.isNull(reconciliationOrderId)) { + log.warn(method + "请选择正确的对账单 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "请选择正确的对账单"); } - StatisticsOrderInfoVO statisticsOrderInfoVO = statisticsOrderInfoService.findOrderDetail(orderInfoId); + List statisticsOrderInfoVO = statisticsOrderInfoService.findOrderDetail(reconciliationOrderId); return R.data(statisticsOrderInfoVO); } catch (CustomerException e) { @@ -86,6 +160,36 @@ public class MerchantStatisticsController { } } + @ResponseBody + @PostMapping("/cancleOrderInfoBindReconcilitionOrder") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "取消订单和对账单的绑定", notes = "传入merchantStatisticsDTO") + public R cancleOrderInfoBindReconcilitionOrder(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############cancleOrderInfoBindReconcilitionOrder: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + List orderInfoIds = merchantStatisticsDTO.getOrderInfoIds(); + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + + if(Objects.isNull(reconciliationOrderId)){ + log.warn(method + "请选择正确的对账单 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "请选择正确的对账单"); + } + + if (CollUtil.isEmpty(orderInfoIds)) { + log.warn(method + "请选择正确的订单 merchantStatisticsDTO={}", merchantStatisticsDTO); + return R.fail(405, "请选择正确的订单"); + } + + return statisticsOrderInfoService.cancleOrderInfoBindReconcilitionOrder(reconciliationOrderId,orderInfoIds); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } @ResponseBody @PostMapping("/findChangesRecordList") @@ -96,10 +200,10 @@ public class MerchantStatisticsController { log.info(method + "请求参数{}", merchantStatisticsDTO); try { - Long orderInfoId = merchantStatisticsDTO.getOrderInfoId(); - if (Objects.isNull(orderInfoId)) { - log.warn(method + "订单id为空 orderInfoId={}", orderInfoId); - return R.fail(405, "订单id为空"); + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + if (Objects.isNull(reconciliationOrderId)) { + log.warn(method + "对账单id为空 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "对账单id为空"); } List list = statisticsOrderInfoService.findChangesRecordList(merchantStatisticsDTO); @@ -123,11 +227,10 @@ public class MerchantStatisticsController { String method = "############addChangesRecord: "; log.info(method + "请求参数{}", changesRecordDTO); try { - - Long orderInfoId = changesRecordDTO.getOrderInfoId(); - if (Objects.isNull(orderInfoId)) { - log.warn(method + "订单id为空 orderInfoId={}", orderInfoId); - return R.fail(405, "订单id为空"); + Long reconciliationOrderId = changesRecordDTO.getReconciliationOrderId(); + if (Objects.isNull(reconciliationOrderId)) { + log.warn(method + "对账单id为空 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "对账单id为空"); } Long statisticsWarehouseId = changesRecordDTO.getStatisticsWarehouseId(); @@ -147,6 +250,77 @@ public class MerchantStatisticsController { } } + @ResponseBody + @PostMapping("/findAftersalesOrderList") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "查询售后单列表", notes = "传入MerchantStatisticsDTO merchantStatisticsDTO") + public R findAftersalesOrderList(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############findAftersalesOrderList: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + Long consigneeId = merchantStatisticsDTO.getConsigneeId(); + if (Objects.isNull(consigneeId)) { + log.warn(method + "商家id为空 consigneeId={}", consigneeId); + return R.fail(405, "商家id为空"); + } + return statisticsOrderInfoService.findAftersalesOrderList(consigneeId); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } + + @ResponseBody + @PostMapping("/addAftersalesToReconciliationOrder") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "查询售后单列表", notes = "传入MerchantStatisticsDTO merchantStatisticsDTO") + public R addAftersalesToReconciliationOrder(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############addAftersalesToReconciliationOrder: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + + if (Objects.isNull(reconciliationOrderId)) { + log.warn(method + "对账单id为空 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "对账单id为空"); + } + return statisticsOrderInfoService.addAftersalesToReconciliationOrder(merchantStatisticsDTO); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } + + + @ResponseBody + @PostMapping("/findReconciliationOrderAftersalesOrder") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "查询对账单的售后单列表", notes = "传入MerchantStatisticsDTO merchantStatisticsDTO") + public R findReconciliationOrderAftersalesOrder(@RequestBody MerchantStatisticsDTO merchantStatisticsDTO) { + String method = "############addAftersalesToReconciliationOrder: "; + log.info(method + "请求参数{}", merchantStatisticsDTO); + try { + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + if (Objects.isNull(reconciliationOrderId)) { + log.warn(method + "对账单id为空 reconciliationOrderId={}", reconciliationOrderId); + return R.fail(405, "对账单id为空"); + } + return statisticsOrderInfoService.findReconciliationOrderAftersalesOrder(merchantStatisticsDTO); + } catch (CustomerException e) { + log.error(e.message, e); + return R.fail(e.code, e.message); + } catch (Exception e) { + log.error(method + "系统异常", e); + return R.fail(500, "系统异常"); + } + } + @ResponseBody @PostMapping("/checkBalance") @@ -157,9 +331,9 @@ public class MerchantStatisticsController { log.info(method + "请求参数{}", merchantStatisticsDTO); try { - List orderInfoIds = merchantStatisticsDTO.getOrderInfoIds(); - if (orderInfoIds.isEmpty()) { - log.warn(method + "订单集合为空 orderInfoIds={}", orderInfoIds); + List reconciliationOrderIds = merchantStatisticsDTO.getReconciliationOrderIds(); + if (CollUtil.isEmpty(reconciliationOrderIds)) { + log.warn(method + "对账单集合为空 reconciliationOrderIds={}", reconciliationOrderIds); return R.fail(405, "订单集合为空"); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/feign/OrderInfoClient.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/feign/OrderInfoClient.java new file mode 100644 index 000000000..590b9204c --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/feign/OrderInfoClient.java @@ -0,0 +1,26 @@ +package com.logpm.statistics.feign; + +import com.logpm.statistics.service.IStatisticsOrderInfoService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +@Slf4j +@ApiIgnore() +@RestController +@AllArgsConstructor +public class OrderInfoClient implements IOrderInfoClient{ + + private final IStatisticsOrderInfoService orderInfoService; + + + @Override + public Integer findCreateRencilitionOrderStatus(Long waybillId) { + + Integer rencilitionStatus = orderInfoService.findCreateRencilitionOrderStatus(waybillId); + + + return rencilitionStatus; + } +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java index 5c5eccb20..69637ae97 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java @@ -92,16 +92,17 @@ public class PackageFanoutListener { } statisticsDistributionPackageEntity.setIsSign(1); statisticsDistributionPackageEntity.setSignTime(new Date()); - String typeService = statisticsDistributionPackageEntity.getTypeService(); - if ("3".equals(typeService)) { - statisticsDistributionPackageEntity.setRealDeliveryFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryDistance(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryCrossingFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryLoadingFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryMoveFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryServiceFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliverySortingFee(BigDecimal.ZERO); - statisticsDistributionPackageEntity.setRealDeliveryUpfloorFee(BigDecimal.ZERO); + Long orderInfoId = statisticsDistributionPackageEntity.getOrderInfoId(); + StatisticsOrderInfoEntity orderInfoEntity = statisticsOrderInfoService.getById(orderInfoId); + Integer typeService = orderInfoEntity.getTypeService(); + if (typeService == 3) { + statisticsDistributionPackageEntity.setDeliveryFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliveryCrossingFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliveryLoadingFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliveryMoveFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliveryServiceFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliverySortingFee(BigDecimal.ZERO); + statisticsDistributionPackageEntity.setDeliveryUpfloorFee(BigDecimal.ZERO); } orderInfoSet.add(statisticsDistributionPackageEntity.getOrderInfoId()); }); @@ -134,6 +135,7 @@ public class PackageFanoutListener { if (unSignSize == 0) { if (signStatus != 2) { statisticsOrderInfoEntity.setSignStatus(2); + } } else { if (unSignSize != allSize) { @@ -142,6 +144,7 @@ public class PackageFanoutListener { } } } + statisticsOrderInfoEntity.setSignDate(new Date()); updateOrderInfoList.add(statisticsOrderInfoEntity); }); diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCancleCheckListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCancleCheckListener.java new file mode 100644 index 000000000..e10fd4560 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCancleCheckListener.java @@ -0,0 +1,60 @@ +package com.logpm.statistics.listener.mq; + +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.statistics.entity.StatisticsOrderInfoEntity; +import com.logpm.statistics.service.IStatisticsDistributionPackageService; +import com.logpm.statistics.service.IStatisticsOrderInfoService; +import com.logpm.statistics.service.IStatisticsTrunklinePackageService; +import com.logpm.statistics.service.IStatisticsWarehousePackageService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.broadcast.FanoutConstants; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Component +@AllArgsConstructor +public class WaybillCancleCheckListener { + + private final IStatisticsOrderInfoService statisticsOrderInfoService; + private final IStatisticsTrunklinePackageService trunklinePackageService; + private final IStatisticsWarehousePackageService warehousePackageService; + private final IStatisticsDistributionPackageService distributionPackageService; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FanoutConstants.trunkline.CANCLECHECKWAYBILL.QUEUE.CANCLECHECKWAYBILL_INCOMINGDATA), + exchange = @Exchange(name = FanoutConstants.trunkline.CANCLECHECKWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) + )) + @Transactional(rollbackFor = Exception.class) + public void cancleCheckWaybillIncomingData(String msg) { + log.info("#########cancleCheckWaybillIncomingData: 运单取消审核处理收入结算数据 开始 msg={}",msg); + JSONObject jsonObject = JSONUtil.parseObj(msg); + Long waybillId = jsonObject.getLong("waybillId"); + + //删除对应运单id的订单信息和包件信息 + List orderInfoEntityList = statisticsOrderInfoService.findListByWaybillId(waybillId); + //把orderInfoEntityList中所有元素的id放入一个集合 + List orderInfoIdsList = orderInfoEntityList.stream().map(StatisticsOrderInfoEntity::getId).collect(Collectors.toList()); + + //删除订单 + statisticsOrderInfoService.deleteListByOrderInfoIds(orderInfoIdsList); + //删除包件 + trunklinePackageService.deleteListByOrderInfoIds(orderInfoIdsList); + warehousePackageService.deleteListByOrderInfoIds(orderInfoIdsList); + distributionPackageService.deleteListByOrderInfoIds(orderInfoIdsList); + + log.info("#########cancleCheckWaybillIncomingData: 运单取消审核处理收入结算数据 结束 waybillId={}",waybillId); + } + + +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java new file mode 100644 index 000000000..fd6ba3e19 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java @@ -0,0 +1,763 @@ +package com.logpm.statistics.listener.mq; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.basicdata.feign.IBasicdataWarehouseClient; +import com.logpm.statistics.entity.*; +import com.logpm.statistics.service.*; +import com.logpm.statistics.vo.StatisticsPackageFeeInfoVO; +import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; +import com.logpm.trunkline.entity.TrunklineAdvanceEntity; +import com.logpm.trunkline.feign.ITrunklineAdvanceClient; +import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient; +import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient; +import com.logpm.warehouse.entity.WarehouseWayBillDetail; +import com.logpm.warehouse.entity.WarehouseWaybillEntity; +import com.logpm.warehouse.feign.IWarehouseWaybillClient; +import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.broadcast.FanoutConstants; +import org.springblade.common.exception.CustomerException; +import org.springblade.core.secure.utils.AuthUtil; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Component +@AllArgsConstructor +public class WaybillCheckListener { + + private final IBasicdataWarehouseClient basicdataWarehouseClient; + private final IWarehouseWaybillClient warehouseWaybillClient; + private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient; + private final ITrunklineAdvanceClient trunklineAdvanceClient; + private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient; + private final IStatisticsOrderInfoService statisticsOrderInfoService; + private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient; + private final IStatisticsTrunklinePackageService trunklinePackageService; + private final IStatisticsWarehousePackageService warehousePackageService; + private final IStatisticsDistributionPackageService distributionPackageService; + private final IStatisticsBalanceOrderInfoService balanceOrderInfoService; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FanoutConstants.trunkline.CHECKWAYBILL.QUEUE.CHECKWAYBILL_INCOMINGDATA), + exchange = @Exchange(name = FanoutConstants.trunkline.CHECKWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) + )) + @Transactional(rollbackFor = Exception.class) + public void checkWaybillIncomingData(String msg) { + log.info("#########checkWaybillIncomingData: 运单审核处理收入结算数据 msg={}",msg); + JSONObject jsonObject = JSONUtil.parseObj(msg); + Long waybillId = jsonObject.getLong("waybillId"); + + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); + if(Objects.isNull(waybillEntity)){ + log.warn("###########checkWaybillIncomingData: 运单信息不存在 waybillId={}",waybillId); + throw new CustomerException(405, "运单信息不存在"); + } + + Integer waybillType = waybillEntity.getWaybillType(); + String payWay = waybillEntity.getPayWay(); + if(waybillType.equals(1)){ + //订制品(包含有数据库存品) + dealwithPackageOrder(waybillEntity); + + }else if(waybillType.equals(2)){ + //零担 + dealwithZeroOrder(waybillEntity); + + }else{ + log.warn("###############checkWaybillIncomingData: 运单类型不正确 waybillId={} waybillType={}",waybillId,waybillType); + } + + if(payWay.equals("1")||payWay.equals("2")){ + //如果是现付和到付需要直接生成结算单 + createBalanceOrder(waybillEntity); + } + log.info("#########checkWaybillIncomingData: 运单审核处理收入结算数据 结束 waybillId={}",waybillId); + } + + private void createBalanceOrder(WarehouseWaybillEntity waybillEntity) { + String waybillNo = waybillEntity.getWaybillNo(); + log.info("####################createBalanceOrder: 创建现付到付的结算单 waybillNo={}",waybillNo); + Long waybillId = waybillEntity.getId(); + +// List wayBillDetailList = warehouseWaybillDetailClient.findByWaybillId(waybillId); + //把wayBillDetailList中所有productName用逗号拼起来 +// String productTypeNum = wayBillDetailList.stream().map(t->t.getProductName()+"("+t.getNum()+")").collect(Collectors.joining(",")); +// String productTypePrice = wayBillDetailList.stream().map(t->t.getProductName()+"("+t.getPrice()+")").collect(Collectors.joining(",")); + + List orderInfoEntityList = statisticsOrderInfoService.findListByWaybillId(waybillId); + //把orderInfoEntityList中所有id放入一个list,以便查询所有包件信息 + List orderInfoIdsList = orderInfoEntityList.stream().map(StatisticsOrderInfoEntity::getId).collect(Collectors.toList()); + + StatisticsPackageFeeInfoVO trunklinePackageFeeVO = statisticsOrderInfoService.findPackageListByOrderIds(orderInfoIdsList); + + String balanceOrderCode = "JSD"+new Date().getTime(); + + BigDecimal freightPrice = trunklinePackageFeeVO.getFreightPrice(); + BigDecimal pickupPrice = trunklinePackageFeeVO.getPickupPrice(); + BigDecimal warehouseServiceFee = trunklinePackageFeeVO.getWarehouseServiceFee(); + BigDecimal deliveryServiceFee = trunklinePackageFeeVO.getDeliveryServiceFee(); + BigDecimal totalFee = freightPrice.add(pickupPrice).add(warehouseServiceFee).add(deliveryServiceFee); + + StatisticsBalanceOrderInfoEntity balanceOrderInfoEntity = new StatisticsBalanceOrderInfoEntity(); + balanceOrderInfoEntity.setBalanceOrderNo(balanceOrderCode); + balanceOrderInfoEntity.setBrand(waybillEntity.getBrand()); + balanceOrderInfoEntity.setWaybillNo(waybillNo); + //把orderInfoEntityList中所有orderCode用逗号拼起来 + balanceOrderInfoEntity.setOrderCode(orderInfoEntityList.stream().map(StatisticsOrderInfoEntity::getOrderCode).collect(Collectors.joining(","))); + balanceOrderInfoEntity.setTypeService(waybillEntity.getServiceType()); + + balanceOrderInfoEntity.setTotalBalanceFee(totalFee); + balanceOrderInfoEntity.setRealTotalFee(totalFee); + balanceOrderInfoEntity.setTotalCount(trunklinePackageFeeVO.getTotalNum()); + balanceOrderInfoEntity.setTotalWeight(trunklinePackageFeeVO.getTotalWeight()); + balanceOrderInfoEntity.setTotalVolume(trunklinePackageFeeVO.getTotalVolume()); + balanceOrderInfoEntity.setConsigneeId(waybillEntity.getConsigneeId()); + balanceOrderInfoEntity.setConsignee(waybillEntity.getConsignee()); + balanceOrderInfoEntity.setPickupFee(pickupPrice); + balanceOrderInfoEntity.setFreightFee(freightPrice); + balanceOrderInfoEntity.setWarehouseServiceFee(warehouseServiceFee); + balanceOrderInfoEntity.setWarehouseFee(trunklinePackageFeeVO.getWarehouseFee()); + balanceOrderInfoEntity.setWarehouseManageFee(trunklinePackageFeeVO.getWarehouseManageFee()); + balanceOrderInfoEntity.setWarehouseSortingFee(trunklinePackageFeeVO.getWarehouseSortingFee()); + balanceOrderInfoEntity.setWarehouseOperatingFee(trunklinePackageFeeVO.getWarehouseOperatingFee()); + balanceOrderInfoEntity.setDeliveryFee(trunklinePackageFeeVO.getDeliveryFee()); + balanceOrderInfoEntity.setDeliveryServiceFee(deliveryServiceFee); + balanceOrderInfoEntity.setDeliveryLoadingFee(trunklinePackageFeeVO.getDeliveryLoadingFee()); + balanceOrderInfoEntity.setDeliverySortingFee(trunklinePackageFeeVO.getDeliverySortingFee()); + balanceOrderInfoEntity.setDeliveryUpfloorFee(trunklinePackageFeeVO.getDeliveryUpfloorFee()); + balanceOrderInfoEntity.setDeliveryMoveFee(trunklinePackageFeeVO.getDeliveryMoveFee()); + balanceOrderInfoEntity.setDeliveryCrossingFee(trunklinePackageFeeVO.getDeliveryCrossingFee()); + balanceOrderInfoEntity.setDeliveryOtherFee(trunklinePackageFeeVO.getDeliveryOtherFee()); + balanceOrderInfoEntity.setOtherFee(BigDecimal.ZERO); + balanceOrderInfoEntity.setInstallFee(BigDecimal.ZERO); + + balanceOrderInfoEntity.setIsAftersale(0); + balanceOrderInfoEntity.setAftersalesFee(BigDecimal.ZERO); + + balanceOrderInfoEntity.setBalanceStatus(0); + + balanceOrderInfoEntity.setHasBalanceFee(BigDecimal.ZERO); + balanceOrderInfoEntity.setNoBalanceFee(totalFee); + balanceOrderInfoEntity.setAbnormalBalanceStatus(0); + balanceOrderInfoEntity.setAbnormalBalanceFee(BigDecimal.ZERO); + + boolean saveFlag = balanceOrderInfoService.save(balanceOrderInfoEntity); + if(saveFlag){ + Long balanceOrderId = balanceOrderInfoEntity.getId(); + List updateOrderInfoList = new ArrayList<>(); + orderInfoEntityList.forEach(orderInfoEntity -> { + StatisticsOrderInfoEntity updateEntity = new StatisticsOrderInfoEntity(); + updateEntity.setId(orderInfoEntity.getId()); + updateEntity.setBalanceOrderId(balanceOrderId); + updateEntity.setBalanceOrderNo(balanceOrderCode); + updateEntity.setCreateReconciliationOrderStatus(1); + updateEntity.setCreateReconciliationUserName(AuthUtil.getNickName()); + updateEntity.setCreateReconciliationDate(new Date()); + updateEntity.setConfirmBalanceOrderStatus(1); + updateEntity.setConfirmBalanceDate(new Date()); + updateEntity.setConfirmBalanceUserName(AuthUtil.getNickName()); + updateOrderInfoList.add(updateEntity); + }); + if(CollUtil.isNotEmpty(updateOrderInfoList)){ + statisticsOrderInfoService.updateBatchById(updateOrderInfoList); + } + } + } + + private void dealwithZeroOrder(WarehouseWaybillEntity waybillEntity) { + String waybillNo = waybillEntity.getWaybillNo(); + log.info("############dealwithZeroOrder: 处理零担信息 waybillNo={}",waybillNo); + Long waybillId = waybillEntity.getId(); + String brand = waybillEntity.getBrand(); + Long brandId = waybillEntity.getBrandId(); + Long consigneeId = waybillEntity.getConsigneeId(); + String consignee = waybillEntity.getConsignee(); + Integer serviceType = waybillEntity.getServiceType(); + String payWay = waybillEntity.getPayWay(); + Long departureWarehouseId = waybillEntity.getDepartureWarehouseId(); + String departureWarehouseName = waybillEntity.getDepartureWarehouseName(); + Long destinationWarehouseId = waybillEntity.getDestinationWarehouseId(); + String destinationWarehouseName = waybillEntity.getDestinationWarehouseName(); + + // BigDecimal pickupFee = Objects.isNull(waybillEntity.getPickupFee())?BigDecimal.ZERO:waybillEntity.getPickupFee(); + BigDecimal warehouseManagementFee = Objects.isNull(waybillEntity.getWarehouseManagementFee())?BigDecimal.ZERO:waybillEntity.getWarehouseManagementFee(); + BigDecimal warehouseFee = Objects.isNull(waybillEntity.getStorageFee())?BigDecimal.ZERO:waybillEntity.getStorageFee(); + BigDecimal handlingFee = Objects.isNull(waybillEntity.getHandlingFee())?BigDecimal.ZERO:waybillEntity.getHandlingFee(); + BigDecimal insuranceFee = Objects.isNull(waybillEntity.getInsuranceFee())?BigDecimal.ZERO:waybillEntity.getInsuranceFee(); + BigDecimal otherFee = Objects.isNull(waybillEntity.getOtherFee())?BigDecimal.ZERO:waybillEntity.getOtherFee(); + BigDecimal thirdOperationFee = Objects.isNull(waybillEntity.getThirdOperationFee())?BigDecimal.ZERO:waybillEntity.getThirdOperationFee(); + Integer totalCount = waybillEntity.getTotalCount(); + +// BigDecimal pickupPrice = pickupFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + + //查询运单明细 + List wayBillDetailList = warehouseWaybillDetailClient.findByWaybillId(waybillId); + + //保存订单信息 + List orderInfoEntities = new ArrayList<>(); + + StatisticsOrderInfoEntity orderInfoEntity = new StatisticsOrderInfoEntity(); + orderInfoEntity.setOrderCode(waybillNo); + orderInfoEntity.setWaybillId(waybillId); + orderInfoEntity.setWaybillNo(waybillNo); + orderInfoEntity.setBrandId(brandId); + orderInfoEntity.setBrand(brand); + orderInfoEntity.setConsigneeId(consigneeId); + orderInfoEntity.setConsignee(consignee); + orderInfoEntity.setTypeService(serviceType); + orderInfoEntity.setSignStatus(0); + orderInfoEntity.setSyncFeeStatus(0); + orderInfoEntity.setCreateReconciliationOrderStatus(0); + orderInfoEntity.setConfirmBalanceOrderStatus(0); + orderInfoEntity.setDepartureWarehouseId(departureWarehouseId); + orderInfoEntity.setDepartureWarehouseName(departureWarehouseName); + orderInfoEntity.setDestinationWarehouseId(destinationWarehouseId); + orderInfoEntity.setDestinationWarehouseName(destinationWarehouseName); + orderInfoEntities.add(orderInfoEntity); + + boolean b = statisticsOrderInfoService.saveBatch(orderInfoEntities); + if(b){ + + Long orderId = orderInfoEntity.getId(); + + List trunklinePackageEntities = new ArrayList<>(); + List warehousePackageEntities = new ArrayList<>(); + List distributionPackageEntities = new ArrayList<>(); + + + wayBillDetailList.forEach(wayBillDetail->{ + Long productId = wayBillDetail.getProductId(); + String productName = wayBillDetail.getProductName(); + Integer num = wayBillDetail.getNum(); + BigDecimal weight = wayBillDetail.getWeight(); + BigDecimal volume = wayBillDetail.getVolume(); + + + //干线信息 + StatisticsTrunklinePackageEntity trunklinePackageEntity = new StatisticsTrunklinePackageEntity(); + trunklinePackageEntity.setWaybillId(waybillId); + trunklinePackageEntity.setWaybillNo(waybillNo); + trunklinePackageEntity.setOrderCode(waybillNo); + trunklinePackageEntity.setNum(num); + trunklinePackageEntity.setWeight(Objects.isNull(weight)?BigDecimal.ZERO:weight); + trunklinePackageEntity.setVolume(Objects.isNull(volume)?BigDecimal.ZERO:volume); + trunklinePackageEntity.setGoodsType(2); + trunklinePackageEntity.setOrderInfoId(orderId); + trunklinePackageEntity.setProductId(productId); + trunklinePackageEntity.setProductName(productName); + trunklinePackageEntity.setInsurancePrice(insurancePrice.multiply(new BigDecimal(num))); + trunklinePackageEntity.setOtherPrice(otherPrice.multiply(new BigDecimal(num))); + trunklinePackageEntity.setThirdOperationPrice(thirdOperationPrice.multiply(new BigDecimal(num))); + + + BigDecimal systemFreightPrice = wayBillDetail.getFreightPrice(); + BigDecimal price = wayBillDetail.getPrice(); + BigDecimal systemPickupPrice = wayBillDetail.getPickupPrice(); + + Integer chargeType = wayBillDetail.getChargeType(); + Integer systemChargeType = wayBillDetail.getSystemChargeType(); + Integer systemPickupChargeType = wayBillDetail.getSystemPickupChargeType(); + Integer systemWarehouseChargeType = wayBillDetail.getSystemWarehouseChargeType(); + Integer systemDeliveryChargeType = wayBillDetail.getSystemDeliveryChargeType(); + + if(systemChargeType == 1){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(new BigDecimal(num))); + }else if(systemChargeType == 2){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(trunklinePackageEntity.getWeight())); + }else if (systemChargeType == 3){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(trunklinePackageEntity.getVolume())); + } + + if(chargeType == 1){ + trunklinePackageEntity.setFreightPrice(price.multiply(new BigDecimal(num))); + }else if(chargeType == 2){ + trunklinePackageEntity.setFreightPrice(price.multiply(trunklinePackageEntity.getWeight())); + }else if (chargeType == 3){ + trunklinePackageEntity.setFreightPrice(price.multiply(trunklinePackageEntity.getVolume())); + } + + if(systemPickupChargeType == 1){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(new BigDecimal(num))); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(new BigDecimal(num))); + }else if(systemPickupChargeType == 2){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(trunklinePackageEntity.getWeight())); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(trunklinePackageEntity.getWeight())); + }else if (systemPickupChargeType == 3){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(trunklinePackageEntity.getVolume())); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(trunklinePackageEntity.getVolume())); + } + + trunklinePackageEntity.setInsurancePrice(insurancePrice.multiply(new BigDecimal(num))); + + BigDecimal systemFreightPriceTotal = trunklinePackageEntity.getSystemFreightPrice(); + BigDecimal freightPriceTotal = trunklinePackageEntity.getFreightPrice(); + BigDecimal systemPickupPriceTotal = trunklinePackageEntity.getSystemPickupPrice(); + BigDecimal pickupPriceTotal = trunklinePackageEntity.getPickupPrice(); + BigDecimal insurancePriceTotal = trunklinePackageEntity.getInsurancePrice(); + BigDecimal otherPriceTotal = trunklinePackageEntity.getOtherPrice(); + BigDecimal thirdOperationPriceTotal = trunklinePackageEntity.getThirdOperationPrice(); + + + BigDecimal totalSystemFee = systemFreightPriceTotal.add(systemPickupPriceTotal).add(insurancePriceTotal).add(otherPriceTotal).add(thirdOperationPriceTotal); + trunklinePackageEntity.setTotalSystemFee(totalSystemFee); + BigDecimal totalRealFee = freightPriceTotal.add(pickupPriceTotal).add(insurancePriceTotal).add(otherPriceTotal).add(thirdOperationPriceTotal); + trunklinePackageEntity.setTotalRealFee(totalRealFee); + trunklinePackageEntity.setBrandId(brandId); + trunklinePackageEntity.setConsigneeId(consigneeId); + trunklinePackageEntities.add(trunklinePackageEntity); + + //仓库收入 + StatisticsWarehousePackageEntity warehousePackageEntity = new StatisticsWarehousePackageEntity(); + warehousePackageEntity.setWaybillId(waybillId); + warehousePackageEntity.setWaybillNo(waybillNo); + warehousePackageEntity.setOrderCode(waybillNo); + warehousePackageEntity.setProductName(productName); + warehousePackageEntity.setProductId(productId); + warehousePackageEntity.setNum(num); + warehousePackageEntity.setWeight(weight); + warehousePackageEntity.setVolume(volume); + warehousePackageEntity.setWarehouseFee(warehousePrice.multiply(new BigDecimal(num))); + warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(new BigDecimal(num))); + warehousePackageEntity.setWarehouseSortingFee(BigDecimal.ZERO); + warehousePackageEntity.setWarehouseOperatingFee(BigDecimal.ZERO); + warehousePackageEntity.setGoodsType(2); + warehousePackageEntity.setOrderInfoId(orderId); + warehousePackageEntity.setBrandId(brandId); + warehousePackageEntity.setConsigneeId(consigneeId); + +// if(systemWarehouseChargeType == 1){ +// warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(new BigDecimal(num))); +// }else if(systemWarehouseChargeType == 2){ +// warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(weight)); +// }else if (systemWarehouseChargeType == 3){ +// warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(volume)); +// } + + BigDecimal warehouseManageFeeTotal = warehousePackageEntity.getWarehouseManageFee(); + BigDecimal warehouseFeeTotal = warehousePackageEntity.getWarehouseFee(); + BigDecimal warehouseSortingFeeTotal = warehousePackageEntity.getWarehouseSortingFee(); + BigDecimal warehouseOperatingFeeTotal = warehousePackageEntity.getWarehouseOperatingFee(); + + BigDecimal warehouseServiceFeeTotal = warehouseManageFeeTotal.add(warehouseFeeTotal).add(warehouseSortingFeeTotal).add(warehouseOperatingFeeTotal); + warehousePackageEntity.setWarehouseServiceFee(warehouseServiceFeeTotal); + warehousePackageEntities.add(warehousePackageEntity); + + //配送包件信息 + StatisticsDistributionPackageEntity distributionPackageEntity = new StatisticsDistributionPackageEntity(); + distributionPackageEntity.setWaybillId(waybillId); + distributionPackageEntity.setWaybillNo(waybillNo); + distributionPackageEntity.setOrderCode(waybillNo); + distributionPackageEntity.setNum(num); + distributionPackageEntity.setWeight(Objects.isNull(weight)?BigDecimal.ZERO:weight); + distributionPackageEntity.setVolume(Objects.isNull(volume)?BigDecimal.ZERO:volume); + distributionPackageEntity.setGoodsType(2); + distributionPackageEntity.setOrderInfoId(orderId); + distributionPackageEntity.setDeliveryLoadingFee(handlingPrice.multiply(new BigDecimal(num))); + distributionPackageEntity.setDeliverySortingFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryUpfloorFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryMoveFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryOtherFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryCrossingFee(BigDecimal.ZERO); + distributionPackageEntity.setSignNum(0); + distributionPackageEntity.setIsSign(0); + distributionPackageEntity.setBrandId(brandId); + distributionPackageEntity.setConsigneeId(consigneeId); + BigDecimal systemDeliveryPrice = wayBillDetail.getDeliveryPrice(); + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice); + + if(systemDeliveryChargeType == 1){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(new BigDecimal(num))); + }else if(systemDeliveryChargeType == 2){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(weight)); + }else if (systemDeliveryChargeType == 3){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(volume)); + } + distributionPackageEntity.setDeliveryFee(BigDecimal.ZERO); + + BigDecimal systemDeliveryFeeTotal = distributionPackageEntity.getSystemDeliveryFee(); + + + if(payWay.equals("1") || payWay.equals("2")){ + distributionPackageEntity.setDeliveryFee(systemDeliveryFeeTotal); + } + BigDecimal deliveryFeeTotal = distributionPackageEntity.getDeliveryFee(); + BigDecimal deliveryLoadingFeeTotal = distributionPackageEntity.getDeliveryLoadingFee(); + BigDecimal deliverySortingFeeTotal = distributionPackageEntity.getDeliverySortingFee(); + BigDecimal deliveryUpfloorFeeTotal = distributionPackageEntity.getDeliveryUpfloorFee(); + BigDecimal deliveryMoveFeeTotal = distributionPackageEntity.getDeliveryMoveFee(); + BigDecimal deliveryOtherFeeTotal = distributionPackageEntity.getDeliveryOtherFee(); + BigDecimal deliveryCrossingFeeTotal = distributionPackageEntity.getDeliveryCrossingFee(); + + BigDecimal deliveryServiceFeeTotal = deliveryLoadingFeeTotal.add(deliveryFeeTotal).add(deliverySortingFeeTotal).add(deliveryUpfloorFeeTotal).add(deliveryMoveFeeTotal).add(deliveryOtherFeeTotal).add(deliveryCrossingFeeTotal); + distributionPackageEntity.setDeliveryServiceFee(deliveryServiceFeeTotal); + distributionPackageEntities.add(distributionPackageEntity); + + }); + if(CollUtil.isNotEmpty(trunklinePackageEntities)){ + trunklinePackageService.saveBatch(trunklinePackageEntities); + } + if(CollUtil.isNotEmpty(warehousePackageEntities)){ + warehousePackageService.saveBatch(warehousePackageEntities); + } + if(CollUtil.isNotEmpty(distributionPackageEntities)){ + distributionPackageService.saveBatch(distributionPackageEntities); + } + + }else{ + log.warn("#############dealwithPackageOrder: 保存订单数据失败 waybillNo={}",waybillNo); + } + } + + private void dealwithPackageOrder(WarehouseWaybillEntity waybillEntity) { + String waybillNo = waybillEntity.getWaybillNo(); + log.info("############dealwithPackageOrder: 处理订制品包件信息 waybillNo={}",waybillNo); + Long waybillId = waybillEntity.getId(); + String brand = waybillEntity.getBrand(); + Long brandId = waybillEntity.getBrandId(); + Long consigneeId = waybillEntity.getConsigneeId(); + String consignee = waybillEntity.getConsignee(); + Integer serviceType = waybillEntity.getServiceType(); + String payWay = waybillEntity.getPayWay(); + Long departureWarehouseId = waybillEntity.getDepartureWarehouseId(); + String departureWarehouseName = waybillEntity.getDepartureWarehouseName(); + Long destinationWarehouseId = waybillEntity.getDestinationWarehouseId(); + String destinationWarehouseName = waybillEntity.getDestinationWarehouseName(); + + //单价计算 +// BigDecimal pickupFee = Objects.isNull(waybillEntity.getPickupFee())?BigDecimal.ZERO:waybillEntity.getPickupFee(); + BigDecimal warehouseManagementFee = Objects.isNull(waybillEntity.getWarehouseManagementFee())?BigDecimal.ZERO:waybillEntity.getWarehouseManagementFee(); + BigDecimal warehouseFee = Objects.isNull(waybillEntity.getStorageFee())?BigDecimal.ZERO:waybillEntity.getStorageFee(); + BigDecimal handlingFee = Objects.isNull(waybillEntity.getHandlingFee())?BigDecimal.ZERO:waybillEntity.getHandlingFee(); + BigDecimal insuranceFee = Objects.isNull(waybillEntity.getInsuranceFee())?BigDecimal.ZERO:waybillEntity.getInsuranceFee(); + BigDecimal otherFee = Objects.isNull(waybillEntity.getOtherFee())?BigDecimal.ZERO:waybillEntity.getOtherFee(); + BigDecimal thirdOperationFee = Objects.isNull(waybillEntity.getThirdOperationFee())?BigDecimal.ZERO:waybillEntity.getThirdOperationFee(); + Integer totalCount = waybillEntity.getTotalCount(); + +// BigDecimal pickupPrice = pickupFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP); + + + + //查询运单下所有的订单 + List advanceEntities =trunklineAdvanceClient.findListByWaybillNo(waybillNo); + //查询包件信息 + List advanceDetailEntities = trunklineAdvanceDetailClient.findListByWaybillId(waybillId); + //查询运单明细 + List wayBillDetailList = warehouseWaybillDetailClient.findByWaybillId(waybillId); + //把wayBillDetailList转为productId为key的Map + Map wayBillDetailMapByProductId = wayBillDetailList.stream() + .collect(Collectors.toMap(WarehouseWayBillDetail::getProductId, wayBillDetail -> wayBillDetail)); + + + //保存订单信息 + List orderInfoEntities = new ArrayList<>(); + + advanceEntities.forEach(advanceEntity->{ + StatisticsOrderInfoEntity orderInfoEntity = new StatisticsOrderInfoEntity(); + orderInfoEntity.setOrderCode(advanceEntity.getOrderCode()); + orderInfoEntity.setWaybillId(waybillId); + orderInfoEntity.setWaybillNo(waybillNo); + orderInfoEntity.setBrandId(brandId); + orderInfoEntity.setBrand(brand); + orderInfoEntity.setConsigneeId(consigneeId); + orderInfoEntity.setConsignee(consignee); + orderInfoEntity.setTypeService(serviceType); + orderInfoEntity.setSignStatus(0); + orderInfoEntity.setSyncFeeStatus(0); + orderInfoEntity.setCreateReconciliationOrderStatus(0); + orderInfoEntity.setConfirmBalanceOrderStatus(0); + orderInfoEntity.setDepartureWarehouseId(departureWarehouseId); + orderInfoEntity.setDepartureWarehouseName(departureWarehouseName); + orderInfoEntity.setDestinationWarehouseId(destinationWarehouseId); + orderInfoEntity.setDestinationWarehouseName(destinationWarehouseName); + orderInfoEntities.add(orderInfoEntity); + }); + + boolean b = statisticsOrderInfoService.saveBatch(orderInfoEntities); + if(b){ + Map> advanceDetailGroupByOrderCode = + advanceDetailEntities.stream() + .collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getOrderCode)); + + List trunklinePackageEntities = new ArrayList<>(); + List warehousePackageEntities = new ArrayList<>(); + List distributionPackageEntities = new ArrayList<>(); + orderInfoEntities.forEach(orderInfoEntity->{ + Long orderId = orderInfoEntity.getId(); + String orderCode = orderInfoEntity.getOrderCode(); + List advanceDetailList = advanceDetailGroupByOrderCode.get(orderCode); + advanceDetailList.forEach(advanceDetailEntity->{ + Long incomeCategoryId = advanceDetailEntity.getIncomeCategoryId(); + String orderPackageCode = advanceDetailEntity.getOrderPackageCode(); + Integer quantity = advanceDetailEntity.getQuantity(); + BigDecimal weight = advanceDetailEntity.getWeight(); + BigDecimal volume = advanceDetailEntity.getVolume(); + Long productId = advanceDetailEntity.getIncomeCategoryId(); + String productName = advanceDetailEntity.getIncomeCategoryName(); + + WarehouseWayBillDetail warehouseWayBillDetail = wayBillDetailMapByProductId.get(incomeCategoryId); + + //干线信息 + StatisticsTrunklinePackageEntity trunklinePackageEntity = new StatisticsTrunklinePackageEntity(); + trunklinePackageEntity.setWaybillId(waybillId); + trunklinePackageEntity.setWaybillNo(waybillNo); + trunklinePackageEntity.setOrderCode(orderCode); + trunklinePackageEntity.setOrderPackageCode(orderPackageCode); + trunklinePackageEntity.setNum(1); + trunklinePackageEntity.setGoodsType(1); + trunklinePackageEntity.setBrandId(brandId); + trunklinePackageEntity.setConsigneeId(consigneeId); + trunklinePackageEntity.setOrderInfoId(orderId); + trunklinePackageEntity.setInsurancePrice(insurancePrice.multiply(BigDecimal.ONE)); + trunklinePackageEntity.setOtherPrice(otherPrice.multiply(BigDecimal.ONE)); + trunklinePackageEntity.setThirdOperationPrice(thirdOperationPrice.multiply(BigDecimal.ONE)); + + if(!Objects.isNull(warehouseWayBillDetail)){ + trunklinePackageEntity.setProductId(incomeCategoryId); + trunklinePackageEntity.setProductName(warehouseWayBillDetail.getProductName()); + + Integer chargeType = warehouseWayBillDetail.getChargeType();//运费实际计算方式 + Integer systemChargeType = warehouseWayBillDetail.getSystemChargeType();//系统运费计算方式 + Integer systemPickupChargeType = warehouseWayBillDetail.getSystemPickupChargeType();//系统提货计算方式 默认案件数分摊 + + BigDecimal productTotalWeight = warehouseWayBillDetail.getWeight();//运单品类的总重量 + Integer num = warehouseWayBillDetail.getNum();//运单品类的总数量 + BigDecimal productTotalVolume = warehouseWayBillDetail.getVolume();//运单品类总体积 + + trunklinePackageEntity.setFreightChargeType(chargeType); + trunklinePackageEntity.setSystemFreightChargeType(systemChargeType); + trunklinePackageEntity.setPickupChargeType(systemPickupChargeType); + trunklinePackageEntity.setSystemPickupChargeType(systemPickupChargeType); + + BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量 + BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积 + + trunklinePackageEntity.setWeight(Objects.isNull(packageWeight)?BigDecimal.ZERO:packageWeight); + trunklinePackageEntity.setVolume(Objects.isNull(packageVolume)?BigDecimal.ZERO:packageVolume); + + BigDecimal systemFreightPrice = warehouseWayBillDetail.getFreightPrice();//系统运费单价 + BigDecimal price = warehouseWayBillDetail.getPrice();//实际运费单价 + BigDecimal systemPickupPrice = warehouseWayBillDetail.getPickupPrice();//系统提货单价 + + //如果系统运费计算方式是按件,则用系统的运费单价乘以包件数量 + //如果系统运费计算方式是按方,则用系统的运费单价乘以包件体积 + //如果系统运费计算方式是按重量,则用系统的运费单价乘以包件重量 + if(systemChargeType == 1){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(BigDecimal.ONE)); + }else if(systemChargeType == 2){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(packageVolume)); + }else if (systemChargeType == 3){ + trunklinePackageEntity.setSystemFreightPrice(systemFreightPrice.multiply(packageWeight)); + } + + //实际包件的运费 + if(chargeType == 1){ + trunklinePackageEntity.setFreightPrice(price.multiply(BigDecimal.ONE)); + }else if(chargeType == 2){ + trunklinePackageEntity.setFreightPrice(price.multiply(packageVolume)); + }else if (chargeType == 3){ + trunklinePackageEntity.setFreightPrice(price.multiply(packageWeight)); + } + + //提货包件单价 + if(systemPickupChargeType == 1){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(BigDecimal.ONE)); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(BigDecimal.ONE)); + }else if(systemPickupChargeType == 2){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(packageVolume)); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(packageVolume)); + }else if (systemPickupChargeType == 3){ + trunklinePackageEntity.setSystemPickupPrice(systemPickupPrice.multiply(packageWeight)); + trunklinePackageEntity.setPickupPrice(systemPickupPrice.multiply(packageWeight)); + } + + }else{ + + + trunklinePackageEntity.setFreightChargeType(1); + trunklinePackageEntity.setSystemFreightChargeType(1); + trunklinePackageEntity.setPickupChargeType(1); + trunklinePackageEntity.setSystemPickupChargeType(1); + trunklinePackageEntity.setWeight(BigDecimal.ZERO); + trunklinePackageEntity.setVolume(BigDecimal.ZERO); + trunklinePackageEntity.setSystemFreightPrice(BigDecimal.ZERO); + trunklinePackageEntity.setFreightPrice(BigDecimal.ZERO); + trunklinePackageEntity.setSystemPickupPrice(BigDecimal.ZERO); + trunklinePackageEntity.setPickupPrice(BigDecimal.ZERO); + } + + BigDecimal systemFreightPriceTotal = trunklinePackageEntity.getSystemFreightPrice(); + BigDecimal systemPickupPriceTotal = trunklinePackageEntity.getSystemPickupPrice(); + BigDecimal freightPriceTotal = trunklinePackageEntity.getFreightPrice(); + BigDecimal pickupPriceTotal = trunklinePackageEntity.getPickupPrice(); + BigDecimal insurancePriceTotal = trunklinePackageEntity.getInsurancePrice(); + BigDecimal otherPriceTotal = trunklinePackageEntity.getOtherPrice(); + BigDecimal thirdOperationPriceTotal = trunklinePackageEntity.getThirdOperationPrice(); + + BigDecimal totalSystemFee = systemFreightPriceTotal.add(systemPickupPriceTotal).add(insurancePriceTotal).add(otherPriceTotal).add(thirdOperationPriceTotal); + trunklinePackageEntity.setTotalSystemFee(totalSystemFee); + BigDecimal totalRealFee = freightPriceTotal.add(pickupPriceTotal).add(insurancePriceTotal).add(otherPriceTotal).add(thirdOperationPriceTotal); + trunklinePackageEntity.setTotalRealFee(totalRealFee); + + trunklinePackageEntities.add(trunklinePackageEntity); + + //仓库收入 + StatisticsWarehousePackageEntity warehousePackageEntity = new StatisticsWarehousePackageEntity(); + warehousePackageEntity.setWaybillId(waybillId); + warehousePackageEntity.setWaybillNo(waybillNo); + warehousePackageEntity.setOrderCode(orderCode); + warehousePackageEntity.setOrderPackageCode(orderPackageCode); + warehousePackageEntity.setProductName(productName); + warehousePackageEntity.setProductId(productId); + warehousePackageEntity.setNum(1); + warehousePackageEntity.setWarehouseFee(warehousePrice.multiply(BigDecimal.ONE)); + warehousePackageEntity.setWarehouseManageFee(warehouseManagementPrice.multiply(BigDecimal.ONE)); + warehousePackageEntity.setWarehouseSortingFee(BigDecimal.ZERO); + warehousePackageEntity.setWarehouseOperatingFee(BigDecimal.ZERO); + warehousePackageEntity.setGoodsType(1); + warehousePackageEntity.setOrderInfoId(orderId); + warehousePackageEntity.setBrandId(brandId); + warehousePackageEntity.setConsigneeId(consigneeId); + warehousePackageEntity.setChargeType(1); + if(!Objects.isNull(warehouseWayBillDetail)){ + Integer systemWarehouseChargeType = warehouseWayBillDetail.getSystemWarehouseChargeType(); + warehousePackageEntity.setChargeType(systemWarehouseChargeType); + + warehousePackageEntity.setProductId(incomeCategoryId); + warehousePackageEntity.setProductName(warehouseWayBillDetail.getProductName()); + + BigDecimal productTotalWeight = warehouseWayBillDetail.getWeight();//运单品类的总重量 + Integer num = warehouseWayBillDetail.getNum();//运单品类的总数量 + BigDecimal productTotalVolume = warehouseWayBillDetail.getVolume();//运单品类总体积 + + BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量 + BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积 + + warehousePackageEntity.setWeight(packageWeight); + warehousePackageEntity.setVolume(packageVolume); + + } + BigDecimal warehouseFeeTotal = warehousePackageEntity.getWarehouseFee(); + BigDecimal warehouseManageFeeTotal = warehousePackageEntity.getWarehouseManageFee(); + BigDecimal warehouseSortingFeeTotal = warehousePackageEntity.getWarehouseSortingFee(); + BigDecimal warehouseOperatingFeeTotal = warehousePackageEntity.getWarehouseOperatingFee(); + + BigDecimal warehouseSerivceFeeTotal = warehouseFeeTotal.add(warehouseManageFeeTotal).add(warehouseSortingFeeTotal).add(warehouseOperatingFeeTotal); + warehousePackageEntity.setWarehouseServiceFee(warehouseSerivceFeeTotal); + + warehousePackageEntities.add(warehousePackageEntity); + + //配送包件信息 + StatisticsDistributionPackageEntity distributionPackageEntity = new StatisticsDistributionPackageEntity(); + distributionPackageEntity.setWaybillId(waybillId); + distributionPackageEntity.setWaybillNo(waybillNo); + distributionPackageEntity.setOrderCode(orderCode); + distributionPackageEntity.setOrderPackageCode(orderPackageCode); + distributionPackageEntity.setNum(quantity); + distributionPackageEntity.setWeight(Objects.isNull(weight)?BigDecimal.ZERO:weight); + distributionPackageEntity.setVolume(Objects.isNull(volume)?BigDecimal.ZERO:volume); + distributionPackageEntity.setGoodsType(1); + distributionPackageEntity.setOrderInfoId(orderId); + distributionPackageEntity.setDeliveryLoadingFee(handlingPrice.multiply(BigDecimal.ONE)); + distributionPackageEntity.setDeliverySortingFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryUpfloorFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryMoveFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryOtherFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryCrossingFee(BigDecimal.ZERO); + distributionPackageEntity.setSignNum(0); + distributionPackageEntity.setIsSign(0); + distributionPackageEntity.setBrandId(brandId); + distributionPackageEntity.setConsigneeId(consigneeId); + distributionPackageEntity.setDeliveryLoadingFee(handlingPrice.multiply(BigDecimal.ONE)); + + if(!Objects.isNull(warehouseWayBillDetail)){ + + Integer systemDeliveryChargeType = warehouseWayBillDetail.getSystemDeliveryChargeType(); + BigDecimal productTotalWeight = warehouseWayBillDetail.getWeight(); + Integer num = warehouseWayBillDetail.getNum(); + BigDecimal productTotalVolume = warehouseWayBillDetail.getVolume(); + + BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP); + BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP); + + distributionPackageEntity.setWeight(packageWeight); + distributionPackageEntity.setVolume(packageVolume); + + distributionPackageEntity.setSystemDeliveryChargeType(systemDeliveryChargeType); + distributionPackageEntity.setDeliveryChargeType(systemDeliveryChargeType); + + BigDecimal systemDeliveryPrice = warehouseWayBillDetail.getDeliveryPrice(); + + if(systemDeliveryChargeType == 1){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(BigDecimal.ONE)); + }else if(systemDeliveryChargeType == 2){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(packageVolume)); + }else if(systemDeliveryChargeType == 3){ + distributionPackageEntity.setSystemDeliveryFee(systemDeliveryPrice.multiply(packageWeight)); + } + distributionPackageEntity.setDeliveryFee(BigDecimal.ZERO); + + }else{ + distributionPackageEntity.setSystemDeliveryChargeType(1); + distributionPackageEntity.setDeliveryChargeType(1); + distributionPackageEntity.setSystemDeliveryFee(BigDecimal.ZERO); + distributionPackageEntity.setDeliveryFee(BigDecimal.ZERO); + } + + if(payWay.equals("1") || payWay.equals("2")){ + distributionPackageEntity.setDeliveryFee(distributionPackageEntity.getSystemDeliveryFee()); + } + BigDecimal deliveryFeeTotal = distributionPackageEntity.getDeliveryFee(); + BigDecimal deliveryLoadingFeeTotal = distributionPackageEntity.getDeliveryLoadingFee(); + BigDecimal deliverySortingFeeTotal = distributionPackageEntity.getDeliverySortingFee(); + BigDecimal deliveryUpfloorFeeTotal = distributionPackageEntity.getDeliveryUpfloorFee(); + BigDecimal deliveryMoveFeeTotal = distributionPackageEntity.getDeliveryMoveFee(); + BigDecimal deliveryOtherFeeTotal = distributionPackageEntity.getDeliveryOtherFee(); + BigDecimal deliveryCrossingFeeTotal = distributionPackageEntity.getDeliveryCrossingFee(); + + BigDecimal deliveryServiceFeeTotal = deliveryFeeTotal.add(deliveryLoadingFeeTotal).add(deliverySortingFeeTotal).add(deliveryUpfloorFeeTotal).add(deliveryMoveFeeTotal).add(deliveryCrossingFeeTotal).add(deliveryOtherFeeTotal); + + distributionPackageEntity.setDeliveryServiceFee(deliveryServiceFeeTotal); + + distributionPackageEntities.add(distributionPackageEntity); + }); + }); + if(CollUtil.isNotEmpty(trunklinePackageEntities)){ + trunklinePackageService.saveBatch(trunklinePackageEntities); + } + if(CollUtil.isNotEmpty(warehousePackageEntities)){ + warehousePackageService.saveBatch(warehousePackageEntities); + } + if(CollUtil.isNotEmpty(distributionPackageEntities)){ + distributionPackageService.saveBatch(distributionPackageEntities); + } + + }else{ + log.warn("#############dealwithPackageOrder: 保存订单数据失败 waybillNo={}",waybillNo); + } + } +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillFanoutListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillFanoutListener.java index b557a40a1..9533fa1cb 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillFanoutListener.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillFanoutListener.java @@ -1,383 +1,361 @@ package com.logpm.statistics.listener.mq; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.logpm.statistics.entity.StatisticsDistributionPackageEntity; -import com.logpm.statistics.entity.StatisticsOrderInfoEntity; -import com.logpm.statistics.entity.StatisticsTrunklinePackageEntity; -import com.logpm.statistics.entity.StatisticsWarehousePackageEntity; -import com.logpm.statistics.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.common.constant.broadcast.FanoutConstants; -import org.springframework.amqp.core.ExchangeTypes; -import org.springframework.amqp.rabbit.annotation.Exchange; -import org.springframework.amqp.rabbit.annotation.Queue; -import org.springframework.amqp.rabbit.annotation.QueueBinding; -import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; @Slf4j @Component @AllArgsConstructor public class WaybillFanoutListener { - private final IStatisticsTrunklinePackageService statisticsTrunklinePackageService; - private final IStatisticsWarehousePackageService statisticsWarehousePackageService; - private final IStatisticsDistributionPackageService statisticsDistributionPackageService; - private final IStatisticsOrderInfoService statisticsOrderInfoService; - private final IStatisticsWaybillInfoService statisticsWaybillInfoService; - - @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.STATISTICSDATA_CREATEPACKAGEINFO), - exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) - )) - @Transactional(rollbackFor = Exception.class) - public void createPackageInfo(String msg) { - - JSONObject jsonObject = JSONUtil.parseObj(msg); - Long warehouseId = jsonObject.getLong("warehouseId"); - String warehouseName = jsonObject.getStr("warehouseName"); - Long waybillId = jsonObject.getLong("waybillId"); - String waybillNo = jsonObject.getStr("waybillNo"); - String typeService = jsonObject.getStr("typeService");//服务类型 - Integer waybillType = jsonObject.getInt("waybillType"); - Long brandId = jsonObject.getLong("brandId"); - Long consigneeId = jsonObject.getLong("consigneeId"); - - List statisticsTrunklinePackageEntities = new ArrayList<>(); - List statisticsWarehousePackageEntities = new ArrayList<>(); - List statisticsDistributionPackageEntities = new ArrayList<>(); - - JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes"); - for (int i = 0; i < orderPackageCodes.size(); i++) { - JSONObject json = orderPackageCodes.getJSONObject(i); - BigDecimal totalWeight = json.getBigDecimal("totalWeight"); - if(Objects.isNull(totalWeight)){ - totalWeight = BigDecimal.ZERO; - } - BigDecimal totalVolume = json.getBigDecimal("totalVolume"); - if(Objects.isNull(totalVolume)){ - totalVolume = BigDecimal.ZERO; - } - - //干线 - StatisticsTrunklinePackageEntity statisticsTrunklinePackageEntity = new StatisticsTrunklinePackageEntity(); - statisticsTrunklinePackageEntity.setWarehouseId(warehouseId); - statisticsTrunklinePackageEntity.setWarehouseName(warehouseName); - statisticsTrunklinePackageEntity.setTypeService(typeService); - statisticsTrunklinePackageEntity.setWaybillId(waybillId); - statisticsTrunklinePackageEntity.setWaybillNo(waybillNo); - if(waybillType.equals(1)){ - statisticsTrunklinePackageEntity.setGoodsType(1); - }else if (waybillType.equals(2)){ - statisticsTrunklinePackageEntity.setGoodsType(2); - }else{ - statisticsTrunklinePackageEntity.setGoodsType(3); - } - statisticsTrunklinePackageEntity.setOrderCode(json.getStr("orderCode")); - statisticsTrunklinePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); - statisticsTrunklinePackageEntity.setProductName(json.getStr("productName")); - statisticsTrunklinePackageEntity.setProductId(json.getStr("productId")); - statisticsTrunklinePackageEntity.setTotalNum(json.getInt("totalNum")); - statisticsTrunklinePackageEntity.setTotalWeight(totalWeight); - statisticsTrunklinePackageEntity.setTotalVolume(totalVolume); - statisticsTrunklinePackageEntity.setOpenPrice(json.getBigDecimal("openPrice")); - statisticsTrunklinePackageEntity.setTotalPrice(json.getBigDecimal("openPrice")); - statisticsTrunklinePackageEntity.setPickupFee(json.getBigDecimal("pickupFee")); - statisticsTrunklinePackageEntity.setRealPickupFee(json.getBigDecimal("pickupFee")); - statisticsTrunklinePackageEntity.setFreightFee(json.getBigDecimal("freightFee")); - statisticsTrunklinePackageEntity.setRealFreightFee(json.getBigDecimal("freightFee")); - statisticsTrunklinePackageEntity.setInstallFee(json.getBigDecimal("installFee")); - statisticsTrunklinePackageEntity.setRealInstallFee(json.getBigDecimal("installFee")); - statisticsTrunklinePackageEntity.setQuotationFee(json.getBigDecimal("quotationFee")); - statisticsTrunklinePackageEntity.setRealQuotationFee(json.getBigDecimal("quotationFee")); - statisticsTrunklinePackageEntity.setClaimingValue(json.getBigDecimal("claimingValue")); - statisticsTrunklinePackageEntity.setRealClaimingValue(json.getBigDecimal("claimingValue")); - statisticsTrunklinePackageEntity.setOtherFee(json.getBigDecimal("otherFee")); - statisticsTrunklinePackageEntity.setRealOtherFee(json.getBigDecimal("otherFee")); - statisticsTrunklinePackageEntity.setReturnFee(json.getBigDecimal("returnFee")); - statisticsTrunklinePackageEntity.setRealReturnFee(json.getBigDecimal("returnFee")); - statisticsTrunklinePackageEntity.setThirdOprationFee(json.getBigDecimal("thirdOprationFee")); - statisticsTrunklinePackageEntity.setRealThirdOprationFee(json.getBigDecimal("thirdOprationFee")); - statisticsTrunklinePackageEntity.setXPay(json.getBigDecimal("xPay")); - statisticsTrunklinePackageEntity.setRealXPay(json.getBigDecimal("xPay")); - statisticsTrunklinePackageEntity.setDPay(json.getBigDecimal("dPay")); - statisticsTrunklinePackageEntity.setRealDPay(json.getBigDecimal("dPay")); - statisticsTrunklinePackageEntity.setHPay(json.getBigDecimal("hPay")); - statisticsTrunklinePackageEntity.setRealHPay(json.getBigDecimal("hPay")); - statisticsTrunklinePackageEntity.setYPay(json.getBigDecimal("yPay")); - statisticsTrunklinePackageEntity.setRealYPay(json.getBigDecimal("yPay")); - statisticsTrunklinePackageEntities.add(statisticsTrunklinePackageEntity); - - //仓库 - StatisticsWarehousePackageEntity statisticsWarehousePackageEntity = new StatisticsWarehousePackageEntity(); - statisticsWarehousePackageEntity.setWarehouseId(warehouseId); - statisticsWarehousePackageEntity.setWarehouseName(warehouseName); - statisticsWarehousePackageEntity.setTypeService(typeService); - statisticsWarehousePackageEntity.setWaybillId(waybillId); - statisticsWarehousePackageEntity.setWaybillNo(waybillNo); - if(waybillType.equals(1)){ - statisticsWarehousePackageEntity.setGoodsType(1); - }else if (waybillType.equals(2)){ - statisticsWarehousePackageEntity.setGoodsType(2); - }else{ - statisticsWarehousePackageEntity.setGoodsType(3); - } - statisticsWarehousePackageEntity.setOrderCode(json.getStr("orderCode")); - statisticsWarehousePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); - statisticsWarehousePackageEntity.setProductName(json.getStr("productName")); - statisticsWarehousePackageEntity.setProductId(json.getStr("productId")); - statisticsWarehousePackageEntity.setTotalNum(json.getInt("totalNum")); - statisticsWarehousePackageEntity.setTotalWeight(totalWeight); - statisticsWarehousePackageEntity.setTotalVolume(totalVolume); - statisticsWarehousePackageEntity.setOpenPrice(json.getBigDecimal("warehouseServiceFee")); - statisticsWarehousePackageEntity.setTotalPrice(json.getBigDecimal("warehouseServiceFee")); - statisticsWarehousePackageEntity.setWarehouseServiceFee(json.getBigDecimal("warehouseServiceFee")); - statisticsWarehousePackageEntity.setRealWarehouseServiceFee(json.getBigDecimal("warehouseServiceFee")); - statisticsWarehousePackageEntity.setWarehouseFee(json.getBigDecimal("warehouseFee")); - statisticsWarehousePackageEntity.setRealWarehouseFee(json.getBigDecimal("warehouseFee")); - statisticsWarehousePackageEntity.setWarehouseManageFee(json.getBigDecimal("warehouseManageFee")); - statisticsWarehousePackageEntity.setRealWarehouseManageFee(json.getBigDecimal("warehouseManageFee")); - statisticsWarehousePackageEntity.setWarehouseSortingFee(json.getBigDecimal("warehouseSortingFee")); - statisticsWarehousePackageEntity.setRealWarehouseSortingFee(json.getBigDecimal("warehouseSortingFee")); - statisticsWarehousePackageEntity.setWarehouseOperatingFee(json.getBigDecimal("warehouseOperatingFee")); - statisticsWarehousePackageEntity.setRealWarehouseOperatingFee(json.getBigDecimal("warehouseOperatingFee")); - statisticsWarehousePackageEntities.add(statisticsWarehousePackageEntity); - - - //配送 - StatisticsDistributionPackageEntity statisticsDistributionPackageEntity = new StatisticsDistributionPackageEntity(); - statisticsDistributionPackageEntity.setWarehouseId(warehouseId); - statisticsDistributionPackageEntity.setWarehouseName(warehouseName); - statisticsDistributionPackageEntity.setBrandId(brandId); - statisticsDistributionPackageEntity.setConsigneeId(consigneeId); - statisticsDistributionPackageEntity.setTypeService(typeService); - statisticsDistributionPackageEntity.setWaybillId(waybillId); - statisticsDistributionPackageEntity.setWaybillNo(waybillNo); - if(waybillType.equals(1)){ - statisticsDistributionPackageEntity.setGoodsType(1); - }else if (waybillType.equals(2)){ - statisticsDistributionPackageEntity.setGoodsType(2); - }else{ - statisticsDistributionPackageEntity.setGoodsType(3); - } - statisticsDistributionPackageEntity.setOrderCode(json.getStr("orderCode")); - statisticsDistributionPackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); - statisticsDistributionPackageEntity.setProductName(json.getStr("productName")); - statisticsDistributionPackageEntity.setProductId(json.getStr("productId")); - statisticsDistributionPackageEntity.setTotalNum(json.getInt("totalNum")); - statisticsDistributionPackageEntity.setTotalWeight(totalWeight); - statisticsDistributionPackageEntity.setTotalVolume(totalVolume); - statisticsDistributionPackageEntity.setOpenPrice(json.getBigDecimal("deliveryServiceFee")); - statisticsDistributionPackageEntity.setTotalPrice(json.getBigDecimal("deliveryServiceFee")); - statisticsDistributionPackageEntity.setDeliveryServiceFee(json.getBigDecimal("deliveryServiceFee")); - statisticsDistributionPackageEntity.setRealDeliveryServiceFee(json.getBigDecimal("deliveryServiceFee")); - statisticsDistributionPackageEntity.setDeliveryFee(json.getBigDecimal("deliveryFee")); - statisticsDistributionPackageEntity.setRealDeliveryFee(json.getBigDecimal("deliveryFee")); - statisticsDistributionPackageEntity.setDeliveryLoadingFee(json.getBigDecimal("deliveryLoadingFee")); - statisticsDistributionPackageEntity.setRealDeliveryLoadingFee(json.getBigDecimal("deliveryLoadingFee")); - statisticsDistributionPackageEntity.setDeliverySortingFee(json.getBigDecimal("deliverySortingFee")); - statisticsDistributionPackageEntity.setRealDeliverySortingFee(json.getBigDecimal("deliverySortingFee")); - statisticsDistributionPackageEntity.setDeliveryUpfloorFee(json.getBigDecimal("deliveryUpfloorFee")); - statisticsDistributionPackageEntity.setRealDeliveryUpfloorFee(json.getBigDecimal("deliveryUpfloorFee")); - statisticsDistributionPackageEntity.setDeliveryMoveFee(json.getBigDecimal("deliveryMoveFee")); - statisticsDistributionPackageEntity.setRealDeliveryMoveFee(json.getBigDecimal("deliveryMoveFee")); - statisticsDistributionPackageEntity.setDeliveryDistance(json.getBigDecimal("deliveryDistance")); - statisticsDistributionPackageEntity.setRealDeliveryDistance(json.getBigDecimal("deliveryDistance")); - statisticsDistributionPackageEntity.setDeliveryCrossingFee(json.getBigDecimal("deliveryCrossingFee")); - statisticsDistributionPackageEntity.setRealDeliveryCrossingFee(json.getBigDecimal("deliveryCrossingFee")); - statisticsDistributionPackageEntities.add(statisticsDistributionPackageEntity); - - } - - -// //生成运单维度 -// if(!"2".equals(typeService)){ -// StatisticsWaybillInfoEntity statisticsWaybillInfoEntity = new StatisticsWaybillInfoEntity(); -// statisticsWaybillInfoEntity.setWaybillNo(waybillNo); -// statisticsWaybillInfoEntity.setWaybillId(waybillId); -// statisticsWaybillInfoEntity.setTypeService(typeService); -// statisticsWaybillInfoEntity.setConfirmStatisticsOrder(0); -// statisticsWaybillInfoService.save(statisticsWaybillInfoEntity); -// waybillInfoId = statisticsWaybillInfoEntity.getId(); +// private final IStatisticsTrunklinePackageService statisticsTrunklinePackageService; +// private final IStatisticsWarehousePackageService statisticsWarehousePackageService; +// private final IStatisticsDistributionPackageService statisticsDistributionPackageService; +// private final IStatisticsOrderInfoService statisticsOrderInfoService; +// private final IStatisticsWaybillInfoService statisticsWaybillInfoService; +// +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.STATISTICSDATA_CREATEPACKAGEINFO), +// exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) +// )) +// @Transactional(rollbackFor = Exception.class) +// public void createPackageInfo(String msg) { +// +// JSONObject jsonObject = JSONUtil.parseObj(msg); +// Long warehouseId = jsonObject.getLong("warehouseId"); +// String warehouseName = jsonObject.getStr("warehouseName"); +// Long waybillId = jsonObject.getLong("waybillId"); +// String waybillNo = jsonObject.getStr("waybillNo"); +// String typeService = jsonObject.getStr("typeService");//服务类型 +// Integer waybillType = jsonObject.getInt("waybillType"); +// Long brandId = jsonObject.getLong("brandId"); +// Long consigneeId = jsonObject.getLong("consigneeId"); +// +// List statisticsTrunklinePackageEntities = new ArrayList<>(); +// List statisticsWarehousePackageEntities = new ArrayList<>(); +// List statisticsDistributionPackageEntities = new ArrayList<>(); +// +// JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes"); +// for (int i = 0; i < orderPackageCodes.size(); i++) { +// JSONObject json = orderPackageCodes.getJSONObject(i); +// BigDecimal totalWeight = json.getBigDecimal("totalWeight"); +// if(Objects.isNull(totalWeight)){ +// totalWeight = BigDecimal.ZERO; +// } +// BigDecimal totalVolume = json.getBigDecimal("totalVolume"); +// if(Objects.isNull(totalVolume)){ +// totalVolume = BigDecimal.ZERO; +// } +// +//// //干线 +//// StatisticsTrunklinePackageEntity statisticsTrunklinePackageEntity = new StatisticsTrunklinePackageEntity(); +//// statisticsTrunklinePackageEntity.setWarehouseId(warehouseId); +//// statisticsTrunklinePackageEntity.setWarehouseName(warehouseName); +//// statisticsTrunklinePackageEntity.setTypeService(typeService); +//// statisticsTrunklinePackageEntity.setWaybillId(waybillId); +//// statisticsTrunklinePackageEntity.setWaybillNo(waybillNo); +//// if(waybillType.equals(1)){ +//// statisticsTrunklinePackageEntity.setGoodsType(1); +//// }else if (waybillType.equals(2)){ +//// statisticsTrunklinePackageEntity.setGoodsType(2); +//// }else{ +//// statisticsTrunklinePackageEntity.setGoodsType(3); +//// } +//// statisticsTrunklinePackageEntity.setOrderCode(json.getStr("orderCode")); +//// statisticsTrunklinePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); +//// statisticsTrunklinePackageEntity.setProductName(json.getStr("productName")); +//// statisticsTrunklinePackageEntity.setProductId(json.getLong("productId")); +//// statisticsTrunklinePackageEntity.setTotalNum(json.getInt("totalNum")); +//// statisticsTrunklinePackageEntity.setTotalWeight(totalWeight); +//// statisticsTrunklinePackageEntity.setTotalVolume(totalVolume); +//// statisticsTrunklinePackageEntity.setOpenPrice(json.getBigDecimal("openPrice")); +//// statisticsTrunklinePackageEntity.setTotalPrice(json.getBigDecimal("openPrice")); +//// statisticsTrunklinePackageEntity.setPickupFee(json.getBigDecimal("pickupFee")); +//// statisticsTrunklinePackageEntity.setRealPickupFee(json.getBigDecimal("pickupFee")); +//// statisticsTrunklinePackageEntity.setFreightFee(json.getBigDecimal("freightFee")); +//// statisticsTrunklinePackageEntity.setRealFreightFee(json.getBigDecimal("freightFee")); +//// statisticsTrunklinePackageEntity.setInstallFee(json.getBigDecimal("installFee")); +//// statisticsTrunklinePackageEntity.setRealInstallFee(json.getBigDecimal("installFee")); +//// statisticsTrunklinePackageEntity.setQuotationFee(json.getBigDecimal("quotationFee")); +//// statisticsTrunklinePackageEntity.setRealQuotationFee(json.getBigDecimal("quotationFee")); +//// statisticsTrunklinePackageEntity.setClaimingValue(json.getBigDecimal("claimingValue")); +//// statisticsTrunklinePackageEntity.setRealClaimingValue(json.getBigDecimal("claimingValue")); +//// statisticsTrunklinePackageEntity.setOtherFee(json.getBigDecimal("otherFee")); +//// statisticsTrunklinePackageEntity.setRealOtherFee(json.getBigDecimal("otherFee")); +//// statisticsTrunklinePackageEntity.setReturnFee(json.getBigDecimal("returnFee")); +//// statisticsTrunklinePackageEntity.setRealReturnFee(json.getBigDecimal("returnFee")); +//// statisticsTrunklinePackageEntity.setThirdOprationFee(json.getBigDecimal("thirdOprationFee")); +//// statisticsTrunklinePackageEntity.setRealThirdOprationFee(json.getBigDecimal("thirdOprationFee")); +//// statisticsTrunklinePackageEntity.setXPay(json.getBigDecimal("xPay")); +//// statisticsTrunklinePackageEntity.setRealXPay(json.getBigDecimal("xPay")); +//// statisticsTrunklinePackageEntity.setDPay(json.getBigDecimal("dPay")); +//// statisticsTrunklinePackageEntity.setRealDPay(json.getBigDecimal("dPay")); +//// statisticsTrunklinePackageEntity.setHPay(json.getBigDecimal("hPay")); +//// statisticsTrunklinePackageEntity.setRealHPay(json.getBigDecimal("hPay")); +//// statisticsTrunklinePackageEntity.setYPay(json.getBigDecimal("yPay")); +//// statisticsTrunklinePackageEntity.setRealYPay(json.getBigDecimal("yPay")); +//// statisticsTrunklinePackageEntities.add(statisticsTrunklinePackageEntity); +// +// //仓库 +// StatisticsWarehousePackageEntity statisticsWarehousePackageEntity = new StatisticsWarehousePackageEntity(); +// statisticsWarehousePackageEntity.setWarehouseId(warehouseId); +// statisticsWarehousePackageEntity.setWarehouseName(warehouseName); +// statisticsWarehousePackageEntity.setTypeService(typeService); +// statisticsWarehousePackageEntity.setWaybillId(waybillId); +// statisticsWarehousePackageEntity.setWaybillNo(waybillNo); +// if(waybillType.equals(1)){ +// statisticsWarehousePackageEntity.setGoodsType(1); +// }else if (waybillType.equals(2)){ +// statisticsWarehousePackageEntity.setGoodsType(2); +// }else{ +// statisticsWarehousePackageEntity.setGoodsType(3); +// } +// statisticsWarehousePackageEntity.setOrderCode(json.getStr("orderCode")); +// statisticsWarehousePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); +// statisticsWarehousePackageEntity.setProductName(json.getStr("productName")); +// statisticsWarehousePackageEntity.setProductId(json.getStr("productId")); +// statisticsWarehousePackageEntity.setTotalNum(json.getInt("totalNum")); +// statisticsWarehousePackageEntity.setTotalWeight(totalWeight); +// statisticsWarehousePackageEntity.setTotalVolume(totalVolume); +// statisticsWarehousePackageEntity.setOpenPrice(json.getBigDecimal("warehouseServiceFee")); +// statisticsWarehousePackageEntity.setTotalPrice(json.getBigDecimal("warehouseServiceFee")); +// statisticsWarehousePackageEntity.setWarehouseServiceFee(json.getBigDecimal("warehouseServiceFee")); +// statisticsWarehousePackageEntity.setRealWarehouseServiceFee(json.getBigDecimal("warehouseServiceFee")); +// statisticsWarehousePackageEntity.setWarehouseFee(json.getBigDecimal("warehouseFee")); +// statisticsWarehousePackageEntity.setRealWarehouseFee(json.getBigDecimal("warehouseFee")); +// statisticsWarehousePackageEntity.setWarehouseManageFee(json.getBigDecimal("warehouseManageFee")); +// statisticsWarehousePackageEntity.setRealWarehouseManageFee(json.getBigDecimal("warehouseManageFee")); +// statisticsWarehousePackageEntity.setWarehouseSortingFee(json.getBigDecimal("warehouseSortingFee")); +// statisticsWarehousePackageEntity.setRealWarehouseSortingFee(json.getBigDecimal("warehouseSortingFee")); +// statisticsWarehousePackageEntity.setWarehouseOperatingFee(json.getBigDecimal("warehouseOperatingFee")); +// statisticsWarehousePackageEntity.setRealWarehouseOperatingFee(json.getBigDecimal("warehouseOperatingFee")); +// statisticsWarehousePackageEntities.add(statisticsWarehousePackageEntity); +// +// +// //配送 +// StatisticsDistributionPackageEntity statisticsDistributionPackageEntity = new StatisticsDistributionPackageEntity(); +// statisticsDistributionPackageEntity.setWarehouseId(warehouseId); +// statisticsDistributionPackageEntity.setWarehouseName(warehouseName); +// statisticsDistributionPackageEntity.setBrandId(brandId); +// statisticsDistributionPackageEntity.setConsigneeId(consigneeId); +// statisticsDistributionPackageEntity.setTypeService(typeService); +// statisticsDistributionPackageEntity.setWaybillId(waybillId); +// statisticsDistributionPackageEntity.setWaybillNo(waybillNo); +// if(waybillType.equals(1)){ +// statisticsDistributionPackageEntity.setGoodsType(1); +// }else if (waybillType.equals(2)){ +// statisticsDistributionPackageEntity.setGoodsType(2); +// }else{ +// statisticsDistributionPackageEntity.setGoodsType(3); +// } +// statisticsDistributionPackageEntity.setOrderCode(json.getStr("orderCode")); +// statisticsDistributionPackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); +// statisticsDistributionPackageEntity.setProductName(json.getStr("productName")); +// statisticsDistributionPackageEntity.setProductId(json.getStr("productId")); +// statisticsDistributionPackageEntity.setTotalNum(json.getInt("totalNum")); +// statisticsDistributionPackageEntity.setTotalWeight(totalWeight); +// statisticsDistributionPackageEntity.setTotalVolume(totalVolume); +// statisticsDistributionPackageEntity.setOpenPrice(json.getBigDecimal("deliveryServiceFee")); +// statisticsDistributionPackageEntity.setTotalPrice(json.getBigDecimal("deliveryServiceFee")); +// statisticsDistributionPackageEntity.setDeliveryServiceFee(json.getBigDecimal("deliveryServiceFee")); +// statisticsDistributionPackageEntity.setRealDeliveryServiceFee(json.getBigDecimal("deliveryServiceFee")); +// statisticsDistributionPackageEntity.setDeliveryFee(json.getBigDecimal("deliveryFee")); +// statisticsDistributionPackageEntity.setRealDeliveryFee(json.getBigDecimal("deliveryFee")); +// statisticsDistributionPackageEntity.setDeliveryLoadingFee(json.getBigDecimal("deliveryLoadingFee")); +// statisticsDistributionPackageEntity.setRealDeliveryLoadingFee(json.getBigDecimal("deliveryLoadingFee")); +// statisticsDistributionPackageEntity.setDeliverySortingFee(json.getBigDecimal("deliverySortingFee")); +// statisticsDistributionPackageEntity.setRealDeliverySortingFee(json.getBigDecimal("deliverySortingFee")); +// statisticsDistributionPackageEntity.setDeliveryUpfloorFee(json.getBigDecimal("deliveryUpfloorFee")); +// statisticsDistributionPackageEntity.setRealDeliveryUpfloorFee(json.getBigDecimal("deliveryUpfloorFee")); +// statisticsDistributionPackageEntity.setDeliveryMoveFee(json.getBigDecimal("deliveryMoveFee")); +// statisticsDistributionPackageEntity.setRealDeliveryMoveFee(json.getBigDecimal("deliveryMoveFee")); +// statisticsDistributionPackageEntity.setDeliveryDistance(json.getBigDecimal("deliveryDistance")); +// statisticsDistributionPackageEntity.setRealDeliveryDistance(json.getBigDecimal("deliveryDistance")); +// statisticsDistributionPackageEntity.setDeliveryCrossingFee(json.getBigDecimal("deliveryCrossingFee")); +// statisticsDistributionPackageEntity.setRealDeliveryCrossingFee(json.getBigDecimal("deliveryCrossingFee")); +// statisticsDistributionPackageEntities.add(statisticsDistributionPackageEntity); +// // } - - - //把statisticsPackageInfoEntities的orderCode作为key进行分组 - Map> trunklineMap = statisticsTrunklinePackageEntities.stream().collect(Collectors.groupingBy(StatisticsTrunklinePackageEntity::getOrderCode)); - Map> warehouseMap = statisticsWarehousePackageEntities.stream().collect(Collectors.groupingBy(StatisticsWarehousePackageEntity::getOrderCode)); - Map> distributionMap = statisticsDistributionPackageEntities.stream().collect(Collectors.groupingBy(StatisticsDistributionPackageEntity::getOrderCode)); - List orderInfoEntities = new ArrayList<>(); - trunklineMap.keySet().forEach(key -> { - - StatisticsOrderInfoEntity statisticsOrderInfoEntity = new StatisticsOrderInfoEntity(); - statisticsOrderInfoEntity.setBrandId(brandId); - statisticsOrderInfoEntity.setConsigneeId(consigneeId); - statisticsOrderInfoEntity.setWaybillId(waybillId); - statisticsOrderInfoEntity.setWaybillNo(waybillNo); - statisticsOrderInfoEntity.setOrderCode(key); - statisticsOrderInfoEntity.setTypeService(typeService); - statisticsOrderInfoEntity.setSignStatus(0); - statisticsOrderInfoEntity.setConfirmStatisticsOrder(0); - statisticsOrderInfoEntity.setChangesFee(BigDecimal.ZERO); - orderInfoEntities.add(statisticsOrderInfoEntity); - }); - - statisticsOrderInfoService.saveBatch(orderInfoEntities); - - List statisticsTrunklinePackageSaveList = new ArrayList<>(); - List statisticsWarehousePackageSaveList = new ArrayList<>(); - List statisticsDistributionPackageSaveList = new ArrayList<>(); - orderInfoEntities.forEach(statisticsOrderInfoEntity -> { - String orderCode = statisticsOrderInfoEntity.getOrderCode(); - Long orderInfoId = statisticsOrderInfoEntity.getId(); - List statisticsTrunklinePackageEntityList= trunklineMap.get(orderCode); - statisticsTrunklinePackageEntityList.forEach(statisticsTrunklinePackageEntity -> { - statisticsTrunklinePackageEntity.setOrderInfoId(orderInfoId); - }); - statisticsTrunklinePackageSaveList.addAll(statisticsTrunklinePackageEntityList); - List statisticsWarehousePackageEntityList= warehouseMap.get(orderCode); - statisticsWarehousePackageEntityList.forEach(statisticsWarehousePackageEntity -> { - statisticsWarehousePackageEntity.setOrderInfoId(orderInfoId); - }); - statisticsWarehousePackageSaveList.addAll(statisticsWarehousePackageEntityList); - List statisticsDistributionPackageEntityList= distributionMap.get(orderCode); - statisticsDistributionPackageEntityList.forEach(statisticsDistributionPackageEntity -> { - statisticsDistributionPackageEntity.setOrderInfoId(orderInfoId); - }); - statisticsDistributionPackageSaveList.addAll(statisticsDistributionPackageEntityList); - - }); - statisticsTrunklinePackageService.saveBatch(statisticsTrunklinePackageSaveList); - statisticsWarehousePackageService.saveBatch(statisticsWarehousePackageSaveList); - statisticsDistributionPackageService.saveBatch(statisticsDistributionPackageSaveList); - +// +// +//// //生成运单维度 +//// if(!"2".equals(typeService)){ +//// StatisticsWaybillInfoEntity statisticsWaybillInfoEntity = new StatisticsWaybillInfoEntity(); +//// statisticsWaybillInfoEntity.setWaybillNo(waybillNo); +//// statisticsWaybillInfoEntity.setWaybillId(waybillId); +//// statisticsWaybillInfoEntity.setTypeService(typeService); +//// statisticsWaybillInfoEntity.setConfirmStatisticsOrder(0); +//// statisticsWaybillInfoService.save(statisticsWaybillInfoEntity); +//// waybillInfoId = statisticsWaybillInfoEntity.getId(); +//// } +// +// +// //把statisticsPackageInfoEntities的orderCode作为key进行分组 +// Map> trunklineMap = statisticsTrunklinePackageEntities.stream().collect(Collectors.groupingBy(StatisticsTrunklinePackageEntity::getOrderCode)); +// Map> warehouseMap = statisticsWarehousePackageEntities.stream().collect(Collectors.groupingBy(StatisticsWarehousePackageEntity::getOrderCode)); +// Map> distributionMap = statisticsDistributionPackageEntities.stream().collect(Collectors.groupingBy(StatisticsDistributionPackageEntity::getOrderCode)); +// List orderInfoEntities = new ArrayList<>(); +// trunklineMap.keySet().forEach(key -> { +// +// StatisticsOrderInfoEntity statisticsOrderInfoEntity = new StatisticsOrderInfoEntity(); +// statisticsOrderInfoEntity.setBrandId(brandId); +// statisticsOrderInfoEntity.setConsigneeId(consigneeId); +// statisticsOrderInfoEntity.setWaybillId(waybillId); +// statisticsOrderInfoEntity.setWaybillNo(waybillNo); +// statisticsOrderInfoEntity.setOrderCode(key); +// statisticsOrderInfoEntity.setTypeService(typeService); +// statisticsOrderInfoEntity.setSignStatus(0); +// statisticsOrderInfoEntity.setConfirmStatisticsOrder(0); +// statisticsOrderInfoEntity.setChangesFee(BigDecimal.ZERO); +// orderInfoEntities.add(statisticsOrderInfoEntity); +// }); +// +// statisticsOrderInfoService.saveBatch(orderInfoEntities); +// +// List statisticsTrunklinePackageSaveList = new ArrayList<>(); +// List statisticsWarehousePackageSaveList = new ArrayList<>(); +// List statisticsDistributionPackageSaveList = new ArrayList<>(); // orderInfoEntities.forEach(statisticsOrderInfoEntity -> { // String orderCode = statisticsOrderInfoEntity.getOrderCode(); // Long orderInfoId = statisticsOrderInfoEntity.getId(); +// List statisticsTrunklinePackageEntityList= trunklineMap.get(orderCode); +// statisticsTrunklinePackageEntityList.forEach(statisticsTrunklinePackageEntity -> { +// statisticsTrunklinePackageEntity.setOrderInfoId(orderInfoId); +// }); +// statisticsTrunklinePackageSaveList.addAll(statisticsTrunklinePackageEntityList); // List statisticsWarehousePackageEntityList= warehouseMap.get(orderCode); // statisticsWarehousePackageEntityList.forEach(statisticsWarehousePackageEntity -> { // statisticsWarehousePackageEntity.setOrderInfoId(orderInfoId); // }); // statisticsWarehousePackageSaveList.addAll(statisticsWarehousePackageEntityList); -// }); -// -// statisticsWarehousePackageService.saveBatch(statisticsWarehousePackageSaveList); -// -// orderInfoEntities.forEach(statisticsOrderInfoEntity -> { -// String orderCode = statisticsOrderInfoEntity.getOrderCode(); -// Long orderInfoId = statisticsOrderInfoEntity.getId(); // List statisticsDistributionPackageEntityList= distributionMap.get(orderCode); // statisticsDistributionPackageEntityList.forEach(statisticsDistributionPackageEntity -> { // statisticsDistributionPackageEntity.setOrderInfoId(orderInfoId); // }); // statisticsDistributionPackageSaveList.addAll(statisticsDistributionPackageEntityList); -// }); // +// }); +// statisticsTrunklinePackageService.saveBatch(statisticsTrunklinePackageSaveList); +// statisticsWarehousePackageService.saveBatch(statisticsWarehousePackageSaveList); // statisticsDistributionPackageService.saveBatch(statisticsDistributionPackageSaveList); - - - log.info("处理完成:{}", msg); - } - - - - @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.STATISTICSDATA_UPDATEPACKAGEINFO), - exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) - )) - @Transactional(rollbackFor = Exception.class) - public void updateWaybillData(String msg) { - log.info("接收到消息:{}", msg); - - JSONObject jsonObject = JSONUtil.parseObj(msg); - Long warehouseId = jsonObject.getLong("warehouseId"); - String warehouseName = jsonObject.getStr("warehouseName"); - Long waybillId = jsonObject.getLong("waybillId"); - String waybillNo = jsonObject.getStr("waybillNo"); - String typeService = jsonObject.getStr("typeService");//服务类型 - - statisticsTrunklinePackageService.deleteListByWaybillId(waybillId); - - List orderInfoEntities = statisticsOrderInfoService.findListByWaybillId(waybillId); - //把orderInfoEntities以orderCode未key,元素本身为value转成Map - Map orderInfoMap = orderInfoEntities.stream() - .collect(Collectors.toMap( - StatisticsOrderInfoEntity::getOrderCode, - entity -> entity - )); - List statisticsTrunklinePackageEntities = new ArrayList<>(); - - JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes"); - for (int i = 0; i < orderPackageCodes.size(); i++) { - JSONObject json = orderPackageCodes.getJSONObject(i); - - //干线 - StatisticsTrunklinePackageEntity statisticsTrunklinePackageEntity = new StatisticsTrunklinePackageEntity(); - statisticsTrunklinePackageEntity.setWarehouseId(warehouseId); - statisticsTrunklinePackageEntity.setWarehouseName(warehouseName); - statisticsTrunklinePackageEntity.setTypeService(typeService); - statisticsTrunklinePackageEntity.setWaybillId(waybillId); - statisticsTrunklinePackageEntity.setWaybillNo(waybillNo); - Integer waybillType = json.getInt("waybillType"); - if(waybillType.equals(1)){ - statisticsTrunklinePackageEntity.setGoodsType(1); - }else if (waybillType.equals(2)){ - statisticsTrunklinePackageEntity.setGoodsType(2); - }else{ - statisticsTrunklinePackageEntity.setGoodsType(3); - } - String orderCode = json.getStr("orderCode"); - StatisticsOrderInfoEntity statisticsOrderInfoEntity = orderInfoMap.get(orderCode); - statisticsTrunklinePackageEntity.setOrderInfoId(statisticsOrderInfoEntity.getId()); - statisticsTrunklinePackageEntity.setOrderCode(orderCode); - statisticsTrunklinePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); - statisticsTrunklinePackageEntity.setProductName(json.getStr("productName")); - statisticsTrunklinePackageEntity.setTotalNum(json.getInt("totalNum")); - statisticsTrunklinePackageEntity.setTotalWeight(json.getBigDecimal("totalWeight")); - statisticsTrunklinePackageEntity.setTotalVolume(json.getBigDecimal("totalVolume")); - statisticsTrunklinePackageEntity.setOpenPrice(json.getBigDecimal("openPrice")); - statisticsTrunklinePackageEntity.setTotalPrice(json.getBigDecimal("openPrice")); - statisticsTrunklinePackageEntity.setPickupFee(json.getBigDecimal("pickupFee")); - statisticsTrunklinePackageEntity.setRealPickupFee(json.getBigDecimal("pickupFee")); - statisticsTrunklinePackageEntity.setFreightFee(json.getBigDecimal("freightFee")); - statisticsTrunklinePackageEntity.setRealFreightFee(json.getBigDecimal("freightFee")); - statisticsTrunklinePackageEntity.setInstallFee(json.getBigDecimal("installFee")); - statisticsTrunklinePackageEntity.setRealInstallFee(json.getBigDecimal("installFee")); - statisticsTrunklinePackageEntity.setQuotationFee(json.getBigDecimal("quotationFee")); - statisticsTrunklinePackageEntity.setRealQuotationFee(json.getBigDecimal("quotationFee")); - statisticsTrunklinePackageEntity.setClaimingValue(json.getBigDecimal("claimingValue")); - statisticsTrunklinePackageEntity.setRealClaimingValue(json.getBigDecimal("claimingValue")); - statisticsTrunklinePackageEntity.setOtherFee(json.getBigDecimal("otherFee")); - statisticsTrunklinePackageEntity.setRealOtherFee(json.getBigDecimal("otherFee")); - statisticsTrunklinePackageEntity.setReturnFee(json.getBigDecimal("returnFee")); - statisticsTrunklinePackageEntity.setRealReturnFee(json.getBigDecimal("returnFee")); - statisticsTrunklinePackageEntity.setThirdOprationFee(json.getBigDecimal("thirdOprationFee")); - statisticsTrunklinePackageEntity.setRealThirdOprationFee(json.getBigDecimal("thirdOprationFee")); - statisticsTrunklinePackageEntity.setXPay(json.getBigDecimal("xPay")); - statisticsTrunklinePackageEntity.setRealXPay(json.getBigDecimal("xPay")); - statisticsTrunklinePackageEntity.setDPay(json.getBigDecimal("dPay")); - statisticsTrunklinePackageEntity.setRealDPay(json.getBigDecimal("dPay")); - statisticsTrunklinePackageEntity.setHPay(json.getBigDecimal("hPay")); - statisticsTrunklinePackageEntity.setRealHPay(json.getBigDecimal("hPay")); - statisticsTrunklinePackageEntity.setYPay(json.getBigDecimal("yPay")); - statisticsTrunklinePackageEntity.setRealYPay(json.getBigDecimal("yPay")); - statisticsTrunklinePackageEntities.add(statisticsTrunklinePackageEntity); - - } - statisticsTrunklinePackageService.saveBatch(statisticsTrunklinePackageEntities); - - } +// +//// orderInfoEntities.forEach(statisticsOrderInfoEntity -> { +//// String orderCode = statisticsOrderInfoEntity.getOrderCode(); +//// Long orderInfoId = statisticsOrderInfoEntity.getId(); +//// List statisticsWarehousePackageEntityList= warehouseMap.get(orderCode); +//// statisticsWarehousePackageEntityList.forEach(statisticsWarehousePackageEntity -> { +//// statisticsWarehousePackageEntity.setOrderInfoId(orderInfoId); +//// }); +//// statisticsWarehousePackageSaveList.addAll(statisticsWarehousePackageEntityList); +//// }); +//// +//// statisticsWarehousePackageService.saveBatch(statisticsWarehousePackageSaveList); +//// +//// orderInfoEntities.forEach(statisticsOrderInfoEntity -> { +//// String orderCode = statisticsOrderInfoEntity.getOrderCode(); +//// Long orderInfoId = statisticsOrderInfoEntity.getId(); +//// List statisticsDistributionPackageEntityList= distributionMap.get(orderCode); +//// statisticsDistributionPackageEntityList.forEach(statisticsDistributionPackageEntity -> { +//// statisticsDistributionPackageEntity.setOrderInfoId(orderInfoId); +//// }); +//// statisticsDistributionPackageSaveList.addAll(statisticsDistributionPackageEntityList); +//// }); +//// +//// statisticsDistributionPackageService.saveBatch(statisticsDistributionPackageSaveList); +// +// +// log.info("处理完成:{}", msg); +// } +// +// +// +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.STATISTICSDATA_UPDATEPACKAGEINFO), +// exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) +// )) +// @Transactional(rollbackFor = Exception.class) +// public void updateWaybillData(String msg) { +// log.info("接收到消息:{}", msg); +// +// JSONObject jsonObject = JSONUtil.parseObj(msg); +// Long warehouseId = jsonObject.getLong("warehouseId"); +// String warehouseName = jsonObject.getStr("warehouseName"); +// Long waybillId = jsonObject.getLong("waybillId"); +// String waybillNo = jsonObject.getStr("waybillNo"); +// String typeService = jsonObject.getStr("typeService");//服务类型 +// +// statisticsTrunklinePackageService.deleteListByWaybillId(waybillId); +// +// List orderInfoEntities = statisticsOrderInfoService.findListByWaybillId(waybillId); +// //把orderInfoEntities以orderCode未key,元素本身为value转成Map +// Map orderInfoMap = orderInfoEntities.stream() +// .collect(Collectors.toMap( +// StatisticsOrderInfoEntity::getOrderCode, +// entity -> entity +// )); +// List statisticsTrunklinePackageEntities = new ArrayList<>(); +// +// JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes"); +// for (int i = 0; i < orderPackageCodes.size(); i++) { +// JSONObject json = orderPackageCodes.getJSONObject(i); +// +// //干线 +// StatisticsTrunklinePackageEntity statisticsTrunklinePackageEntity = new StatisticsTrunklinePackageEntity(); +// statisticsTrunklinePackageEntity.setWarehouseId(warehouseId); +// statisticsTrunklinePackageEntity.setWarehouseName(warehouseName); +// statisticsTrunklinePackageEntity.setTypeService(typeService); +// statisticsTrunklinePackageEntity.setWaybillId(waybillId); +// statisticsTrunklinePackageEntity.setWaybillNo(waybillNo); +// Integer waybillType = json.getInt("waybillType"); +// if(waybillType.equals(1)){ +// statisticsTrunklinePackageEntity.setGoodsType(1); +// }else if (waybillType.equals(2)){ +// statisticsTrunklinePackageEntity.setGoodsType(2); +// }else{ +// statisticsTrunklinePackageEntity.setGoodsType(3); +// } +// String orderCode = json.getStr("orderCode"); +// StatisticsOrderInfoEntity statisticsOrderInfoEntity = orderInfoMap.get(orderCode); +// statisticsTrunklinePackageEntity.setOrderInfoId(statisticsOrderInfoEntity.getId()); +// statisticsTrunklinePackageEntity.setOrderCode(orderCode); +// statisticsTrunklinePackageEntity.setOrderPackageCode(json.getStr("orderPackageCode")); +// statisticsTrunklinePackageEntity.setProductName(json.getStr("productName")); +// statisticsTrunklinePackageEntity.setTotalNum(json.getInt("totalNum")); +// statisticsTrunklinePackageEntity.setTotalWeight(json.getBigDecimal("totalWeight")); +// statisticsTrunklinePackageEntity.setTotalVolume(json.getBigDecimal("totalVolume")); +// statisticsTrunklinePackageEntity.setOpenPrice(json.getBigDecimal("openPrice")); +// statisticsTrunklinePackageEntity.setTotalPrice(json.getBigDecimal("openPrice")); +// statisticsTrunklinePackageEntity.setPickupFee(json.getBigDecimal("pickupFee")); +// statisticsTrunklinePackageEntity.setRealPickupFee(json.getBigDecimal("pickupFee")); +// statisticsTrunklinePackageEntity.setFreightFee(json.getBigDecimal("freightFee")); +// statisticsTrunklinePackageEntity.setRealFreightFee(json.getBigDecimal("freightFee")); +// statisticsTrunklinePackageEntity.setInstallFee(json.getBigDecimal("installFee")); +// statisticsTrunklinePackageEntity.setRealInstallFee(json.getBigDecimal("installFee")); +// statisticsTrunklinePackageEntity.setQuotationFee(json.getBigDecimal("quotationFee")); +// statisticsTrunklinePackageEntity.setRealQuotationFee(json.getBigDecimal("quotationFee")); +// statisticsTrunklinePackageEntity.setClaimingValue(json.getBigDecimal("claimingValue")); +// statisticsTrunklinePackageEntity.setRealClaimingValue(json.getBigDecimal("claimingValue")); +// statisticsTrunklinePackageEntity.setOtherFee(json.getBigDecimal("otherFee")); +// statisticsTrunklinePackageEntity.setRealOtherFee(json.getBigDecimal("otherFee")); +// statisticsTrunklinePackageEntity.setReturnFee(json.getBigDecimal("returnFee")); +// statisticsTrunklinePackageEntity.setRealReturnFee(json.getBigDecimal("returnFee")); +// statisticsTrunklinePackageEntity.setThirdOprationFee(json.getBigDecimal("thirdOprationFee")); +// statisticsTrunklinePackageEntity.setRealThirdOprationFee(json.getBigDecimal("thirdOprationFee")); +// statisticsTrunklinePackageEntity.setXPay(json.getBigDecimal("xPay")); +// statisticsTrunklinePackageEntity.setRealXPay(json.getBigDecimal("xPay")); +// statisticsTrunklinePackageEntity.setDPay(json.getBigDecimal("dPay")); +// statisticsTrunklinePackageEntity.setRealDPay(json.getBigDecimal("dPay")); +// statisticsTrunklinePackageEntity.setHPay(json.getBigDecimal("hPay")); +// statisticsTrunklinePackageEntity.setRealHPay(json.getBigDecimal("hPay")); +// statisticsTrunklinePackageEntity.setYPay(json.getBigDecimal("yPay")); +// statisticsTrunklinePackageEntity.setRealYPay(json.getBigDecimal("yPay")); +// statisticsTrunklinePackageEntities.add(statisticsTrunklinePackageEntity); +// +// } +// statisticsTrunklinePackageService.saveBatch(statisticsTrunklinePackageEntities); +// +// } } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsAftersalesOrderRecordMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsAftersalesOrderRecordMapper.java new file mode 100644 index 000000000..4ee025842 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsAftersalesOrderRecordMapper.java @@ -0,0 +1,9 @@ +package com.logpm.statistics.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.statistics.entity.StatisticsAftersalesOrderRecordEntity; +import org.mapstruct.Mapper; + +@Mapper +public interface StatisticsAftersalesOrderRecordMapper extends BaseMapper { +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.java index 7ee92cc01..cae1f984f 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.java @@ -9,5 +9,5 @@ import java.math.BigDecimal; @Mapper public interface StatisticsChangesRecordMapper extends BaseMapper { - BigDecimal findChangesFeeByOrderInfoId(@Param("orderInfoId") Long orderInfoId); + BigDecimal findChangesFeeByReconciliationOrderId(@Param("reconciliationOrderId") Long reconciliationOrderId); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.xml index a013a59d4..75a866aef 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.xml +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsChangesRecordMapper.xml @@ -2,11 +2,11 @@ - select sum(total_fee) from logpm_statistics_changes_record - where order_info_id = #{orderInfoId} + where reconciliation_order_id = #{reconciliationOrderId} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.java index d77df8e77..2f437dbb4 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.java @@ -3,7 +3,11 @@ package com.logpm.statistics.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.logpm.statistics.entity.StatisticsDistributionPackageEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface StatisticsDistributionPackageMapper extends BaseMapper { + void deleteListByOrderInfoIds(@Param("orderInfoIdsList") List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.xml new file mode 100644 index 000000000..d59101c32 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsDistributionPackageMapper.xml @@ -0,0 +1,13 @@ + + + + + + delete from logpm_statistics_distribution_package + where order_info_id in + + #{orderInfoId} + + + + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.java index 4cdc33d8c..f5fab987a 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.java @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.statistics.dto.MerchantStatisticsDTO; import com.logpm.statistics.entity.StatisticsOrderInfoEntity; +import com.logpm.statistics.vo.StatisticsOrderInfoExportVO; import com.logpm.statistics.vo.StatisticsOrderInfoVO; +import com.logpm.statistics.vo.StatisticsPackageFeeInfoVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; @Mapper @@ -17,5 +20,19 @@ public interface StatisticsOrderInfoMapper extends BaseMapper findStatementListByOrderInfoIds(@Param("orderInfoIds") List orderInfoIds); - StatisticsOrderInfoVO findOrderDetail(@Param("orderInfoId") Long orderInfoId); + List findOrderDetail(@Param("reconciliationOrderId") Long reconciliationOrderId); + + StatisticsPackageFeeInfoVO findPackageListByOrderIds(@Param("orderInfoIds") List orderInfoIdsList); + + List findPackageListByOrderIdsGroupById(@Param("orderInfoIds") List orderInfoIdList); + + List findOrderInfoIdListByReconciliationOrderIds(@Param("reconciliationOrderIds") List reconciliationOrderIds); + + Integer findCreateRencilitionOrderStatus(@Param("waybillId") Long waybillId); + + void deleteListByOrderInfoIds(@Param("orderInfoIdsList") List orderInfoIdsList); + + void clearReconcilitionOrderInfoByOrderInfoIds(@Param("orderInfoIds") List orderInfoIds, @Param("nickName") String nickName, @Param("date") Date date); + + List orderInfoListExport(@Param("param") MerchantStatisticsDTO merchantStatisticsDTO); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.xml index e0663c77c..018fd8233 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.xml +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsOrderInfoMapper.xml @@ -4,9 +4,12 @@ + + + + + + + + + + + + + + + + + + + + delete from logpm_statistics_order_info + where id in + + #{item} + + + + + update logpm_statistics_order_info + set + reconciliation_order_id = null, + reconciliation_order_no = null, + create_reconciliation_order_status = 0, + create_reconciliation_user_name = null, + create_reconciliation_date = null, + cancle_reconciliation_user_name = #{nickName}, + cancle_reconciliation_date = #{date} + where id in + + #{item} + + + + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.java new file mode 100644 index 000000000..df4379184 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.java @@ -0,0 +1,19 @@ +package com.logpm.statistics.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.statistics.dto.MerchantStatisticsDTO; +import com.logpm.statistics.entity.StatisticsReconciliationOrderInfoEntity; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +import java.math.BigDecimal; + +@Mapper +public interface StatisticsReconciliationOrderInfoMapper extends BaseMapper { + + + IPage pageReconciliationList(IPage page, @Param("param")MerchantStatisticsDTO merchantStatisticsDTO); + + void addAftersalesFeeById(@Param("reconciliationOrderId") Long reconciliationOrderId, @Param("aftersalesFee") BigDecimal aftersalesFee); +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.xml new file mode 100644 index 000000000..5fe4aeea7 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsReconciliationOrderInfoMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + update logpm_statistics_reconciliation_order_info + set aftersales_fee = aftersales_fee + #{aftersalesFee} + where id = #{reconciliationOrderId} + + + + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.java index bcfb01986..76add8c28 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.java @@ -5,7 +5,10 @@ import com.logpm.statistics.entity.StatisticsTrunklinePackageEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface StatisticsTrunklinePackageMapper extends BaseMapper { - void deleteListByWaybillId(@Param("waybillId") Long waybillId); + + void deleteListByOrderInfoIds(@Param("orderInfoIdsList") List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.xml index 608fa792e..d616f604c 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.xml +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsTrunklinePackageMapper.xml @@ -2,9 +2,12 @@ - + delete from logpm_statistics_trunkline_package - where waybill_id = #{waybillId} + where order_info_id in + + #{orderInfoId} + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.java index ea64a49fd..9685a7f83 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.java @@ -3,7 +3,11 @@ package com.logpm.statistics.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.logpm.statistics.entity.StatisticsWarehousePackageEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface StatisticsWarehousePackageMapper extends BaseMapper { + void deleteListByOrderInfoIds(@Param("orderInfoIdsList") List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.xml b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.xml new file mode 100644 index 000000000..fd557daf4 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/mapper/StatisticsWarehousePackageMapper.xml @@ -0,0 +1,13 @@ + + + + + + delete from logpm_statistics_warehouse_package + where order_info_id in + + #{orderInfoId} + + + + diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsAftersalesOrderRecordService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsAftersalesOrderRecordService.java new file mode 100644 index 000000000..728cbde86 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsAftersalesOrderRecordService.java @@ -0,0 +1,10 @@ +package com.logpm.statistics.service; + +import com.logpm.statistics.entity.StatisticsAftersalesOrderRecordEntity; +import org.springblade.core.mp.base.BaseService; + +import java.util.List; + +public interface IStatisticsAftersalesOrderRecordService extends BaseService { + List findListByReconciliationOrderId(Long reconciliationOrderId); +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsChangesRecordService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsChangesRecordService.java index f06118813..931a22518 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsChangesRecordService.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsChangesRecordService.java @@ -6,5 +6,5 @@ import org.springblade.core.mp.base.BaseService; import java.math.BigDecimal; public interface IStatisticsChangesRecordService extends BaseService { - BigDecimal findChangesFeeByOrderInfoId(Long orderInfoId); + BigDecimal findChangesFeeByReconciliationOrderId(Long reconciliationOrderId); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsDistributionPackageService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsDistributionPackageService.java index bd1091536..212960be6 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsDistributionPackageService.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsDistributionPackageService.java @@ -10,4 +10,6 @@ public interface IStatisticsDistributionPackageService extends BaseService findListByOrderPackageCodes(List orderPackageCodeList); List findListByOrderInfoSet(Set orderInfoSet); + + void deleteListByOrderInfoIds(List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsOrderInfoService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsOrderInfoService.java index 17c142cf6..4402e4a9d 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsOrderInfoService.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsOrderInfoService.java @@ -5,7 +5,9 @@ import com.logpm.statistics.dto.ChangesRecordDTO; import com.logpm.statistics.dto.MerchantStatisticsDTO; import com.logpm.statistics.entity.StatisticsOrderInfoEntity; import com.logpm.statistics.vo.StatisticsChangesRecordVO; +import com.logpm.statistics.vo.StatisticsOrderInfoExportVO; import com.logpm.statistics.vo.StatisticsOrderInfoVO; +import com.logpm.statistics.vo.StatisticsPackageFeeInfoVO; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; @@ -25,7 +27,7 @@ public interface IStatisticsOrderInfoService extends BaseService findOrderDetail(Long reconciliationOrderId); /** * 计算实际费用 @@ -34,4 +36,22 @@ public interface IStatisticsOrderInfoService extends BaseService orderInfoIdsList); + + R createReconciliationOrder(List orderInfoIds); + + R findAftersalesOrderList(Long consigneeId); + + R addAftersalesToReconciliationOrder(MerchantStatisticsDTO merchantStatisticsDTO); + + R findReconciliationOrderAftersalesOrder(MerchantStatisticsDTO merchantStatisticsDTO); + + Integer findCreateRencilitionOrderStatus(Long waybillId); + + void deleteListByOrderInfoIds(List orderInfoIdsList); + + R cancleOrderInfoBindReconcilitionOrder(Long reconciliationOrderId, List orderInfoIds); + + List orderInfoListExport(MerchantStatisticsDTO merchantStatisticsDTO); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsReconciliationOrderInfoService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsReconciliationOrderInfoService.java new file mode 100644 index 000000000..3a12dff5e --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsReconciliationOrderInfoService.java @@ -0,0 +1,14 @@ +package com.logpm.statistics.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.statistics.dto.MerchantStatisticsDTO; +import com.logpm.statistics.entity.StatisticsReconciliationOrderInfoEntity; +import org.springblade.core.mp.base.BaseService; + +import java.math.BigDecimal; + +public interface IStatisticsReconciliationOrderInfoService extends BaseService { + IPage pageReconciliationList(MerchantStatisticsDTO merchantStatisticsDTO); + + void addAftersalesFeeById(Long reconciliationOrderId, BigDecimal aftersalesFee); +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsTrunklinePackageService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsTrunklinePackageService.java index 48e4c63d1..4995816d0 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsTrunklinePackageService.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsTrunklinePackageService.java @@ -1,8 +1,12 @@ package com.logpm.statistics.service; import com.logpm.statistics.entity.StatisticsTrunklinePackageEntity; +import org.apache.ibatis.annotations.Param; import org.springblade.core.mp.base.BaseService; +import java.util.List; + public interface IStatisticsTrunklinePackageService extends BaseService { - void deleteListByWaybillId(Long waybillId); + + void deleteListByOrderInfoIds(List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsWarehousePackageService.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsWarehousePackageService.java index 548822224..db10e9f75 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsWarehousePackageService.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/IStatisticsWarehousePackageService.java @@ -3,5 +3,8 @@ package com.logpm.statistics.service; import com.logpm.statistics.entity.StatisticsWarehousePackageEntity; import org.springblade.core.mp.base.BaseService; +import java.util.List; + public interface IStatisticsWarehousePackageService extends BaseService { + void deleteListByOrderInfoIds(List orderInfoIdsList); } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsAftersalesOrderRecordServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsAftersalesOrderRecordServiceImpl.java new file mode 100644 index 000000000..2a19c42a8 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsAftersalesOrderRecordServiceImpl.java @@ -0,0 +1,26 @@ +package com.logpm.statistics.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.statistics.entity.StatisticsAftersalesOrderRecordEntity; +import com.logpm.statistics.mapper.StatisticsAftersalesOrderRecordMapper; +import com.logpm.statistics.service.IStatisticsAftersalesOrderRecordService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +@AllArgsConstructor +public class StatisticsAftersalesOrderRecordServiceImpl extends BaseServiceImpl implements IStatisticsAftersalesOrderRecordService { + @Override + public List findListByReconciliationOrderId(Long reconciliationOrderId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("reconciliation_order_id", reconciliationOrderId) + .eq("is_deleted",0); + + return baseMapper.selectList(queryWrapper); + } +} 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 d742108ac..eb2201bd1 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 @@ -15,6 +15,7 @@ import com.logpm.statistics.vo.StatisticsBalanceOrderInfoVO; import com.logpm.statistics.vo.StatisticsBalanceRecordVO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springblade.common.exception.CustomerException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -57,12 +58,12 @@ public class StatisticsBalanceOrderInfoServiceImpl extends BaseServiceImpl abnormalPhotoEntityList = balanceAbnormalDTO.getAbnormalPhotoEntityList(); abnormalPhotoEntityList.forEach(abnormalPhotoEntity -> { - abnormalPhotoEntity.setAbnormalId(balanceAbnormalEntity.getId()); + abnormalPhotoEntity.setAbnormalId(balanceAbnormalId); }); balanceAbnormalPhotoService.saveBatch(abnormalPhotoEntityList); @@ -72,7 +73,7 @@ public class StatisticsBalanceOrderInfoServiceImpl extends BaseServiceImpl implements IStatisticsChangesRecordService { @Override - public BigDecimal findChangesFeeByOrderInfoId(Long orderInfoId) { - return baseMapper.findChangesFeeByOrderInfoId(orderInfoId); + public BigDecimal findChangesFeeByReconciliationOrderId(Long reconciliationOrderId) { + return baseMapper.findChangesFeeByReconciliationOrderId(reconciliationOrderId); } } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsDistributionPackageServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsDistributionPackageServiceImpl.java index fad19ef2b..615dd065a 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsDistributionPackageServiceImpl.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsDistributionPackageServiceImpl.java @@ -31,4 +31,9 @@ public class StatisticsDistributionPackageServiceImpl extends BaseServiceImpl orderInfoIdsList) { + baseMapper.deleteListByOrderInfoIds(orderInfoIdsList); + } } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsOrderInfoServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsOrderInfoServiceImpl.java index ed0658f2e..b47d7e15a 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsOrderInfoServiceImpl.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsOrderInfoServiceImpl.java @@ -4,6 +4,7 @@ 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 com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -11,34 +12,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.logpm.basicdata.entity.BasicdataPriceTemplateEntity; import com.logpm.basicdata.feign.IBasicdataCodeClient; import com.logpm.basicdata.feign.IBasicdataPriceClient; -import com.logpm.basicdata.vo.BasicdatPriceApiVO; -import com.logpm.basicdata.vo.PriceClientVO; -import com.logpm.basicdata.vo.PriceDispatchBasicVO; -import com.logpm.basicdata.vo.PriceDispatchVO; -import com.logpm.basicdata.vo.PriceWarehouseAdditionalVO; -import com.logpm.basicdata.vo.PriceWarehouseBasicVO; -import com.logpm.basicdata.vo.PriceWarehouseVO; +import com.logpm.basicdata.vo.*; +import com.logpm.statistics.dto.AftersalesOrderDTO; import com.logpm.statistics.dto.ChangesRecordDTO; import com.logpm.statistics.dto.MerchantStatisticsDTO; -import com.logpm.statistics.entity.StatisticsBalanceOrderInfoEntity; -import com.logpm.statistics.entity.StatisticsChangesPhotoEntity; -import com.logpm.statistics.entity.StatisticsChangesRecordEntity; -import com.logpm.statistics.entity.StatisticsDistributionPackageEntity; -import com.logpm.statistics.entity.StatisticsOrderInfoEntity; -import com.logpm.statistics.entity.StatisticsWarehousePackageEntity; +import com.logpm.statistics.entity.*; import com.logpm.statistics.mapper.StatisticsOrderInfoMapper; -import com.logpm.statistics.service.IStatisticsBalanceOrderInfoService; -import com.logpm.statistics.service.IStatisticsChangesPhotoService; -import com.logpm.statistics.service.IStatisticsChangesRecordService; -import com.logpm.statistics.service.IStatisticsDistributionPackageService; -import com.logpm.statistics.service.IStatisticsOrderInfoService; -import com.logpm.statistics.service.IStatisticsWarehousePackageService; +import com.logpm.statistics.service.*; import com.logpm.statistics.vo.StatisticsChangesRecordVO; +import com.logpm.statistics.vo.StatisticsOrderInfoExportVO; import com.logpm.statistics.vo.StatisticsOrderInfoVO; +import com.logpm.statistics.vo.StatisticsPackageFeeInfoVO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.common.constant.CodeNumConstant; -import org.springblade.common.constant.DictBizConstant; import org.springblade.common.enums.BooleanZeroOneEnums; import org.springblade.common.exception.CustomerException; import org.springblade.common.utils.CommonUtil; @@ -47,22 +33,12 @@ import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.DateUtil; -import org.springblade.system.cache.DictBizCache; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @Slf4j @@ -77,6 +53,8 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl findListByWaybillId(Long waybillId) { @@ -100,15 +78,32 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl statisticsOrderInfoVOIPage = baseMapper.pageList(page, merchantStatisticsDTO); + List records = statisticsOrderInfoVOIPage.getRecords(); + //把records中所有的orderInfoId放入一个集合 + List orderInfoIdList = records.stream().map(StatisticsOrderInfoVO::getOrderInfoId).collect(Collectors.toList()); + + List orderPackageInfoList = baseMapper.findPackageListByOrderIdsGroupById(orderInfoIdList); + //把orderPackageInfoList转化成以orderInfoId为key的Map + Map orderPackageInfoMap = orderPackageInfoList.stream() + .collect(Collectors.toMap(StatisticsPackageFeeInfoVO::getOrderInfoId, statisticsPackageFeeInfoVO -> statisticsPackageFeeInfoVO)); + + records.forEach(statisticsOrderInfoVO -> { + Long orderInfoId = statisticsOrderInfoVO.getOrderInfoId(); + StatisticsPackageFeeInfoVO statisticsPackageFeeInfoVO = orderPackageInfoMap.get(orderInfoId); + BeanUtil.copy(statisticsPackageFeeInfoVO, statisticsOrderInfoVO); + }); + + statisticsOrderInfoVOIPage.setRecords(records); + return statisticsOrderInfoVOIPage; } @Override public List findChangesRecordList(MerchantStatisticsDTO merchantStatisticsDTO) { - Long orderInfoId = merchantStatisticsDTO.getOrderInfoId(); + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("order_info_id", orderInfoId); + queryWrapper.eq("reconciliation_order_id", reconciliationOrderId); List list = changesRecordService.list(queryWrapper); @@ -163,10 +158,10 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl orderInfoIds = merchantStatisticsDTO.getOrderInfoIds(); - - // 查询对应订单的数据 - List list = baseMapper.findStatementListByOrderInfoIds(orderInfoIds); - - Set brands = new HashSet<>(); - Set waybillNos = new HashSet<>(); - Set orderCodes = new HashSet<>(); - Set typeServices = new HashSet<>(); - Set productGoods = new HashSet<>(); - Set shippers = new HashSet<>(); - Set shipperPersons = new HashSet<>(); - Set shipperMobiles = new HashSet<>(); - Set shipperAddresses = new HashSet<>(); - Set consignees = new HashSet<>(); - Set consigneePersons = new HashSet<>(); - Set consigneeMobiles = new HashSet<>(); - Set consigneeAddresses = new HashSet<>(); - Set departures = new HashSet<>(); - Set destinations = new HashSet<>(); - Set departureWarehouseNames = new HashSet<>(); - Set destinationWarehouseNames = new HashSet<>(); - Set payTypes = new HashSet<>(); - Set payWays = new HashSet<>(); - AtomicReference totalCount = new AtomicReference<>(0);// 总数量 - - List totalWeights = new ArrayList<>();// 总重量 - List totalVolumes = new ArrayList();// 总体积 - List totalFees = new ArrayList(); - List openFees = new ArrayList(); - List pickupFees = new ArrayList();// 提货费 - List freightFees = new ArrayList();// 运费 - List warehouseServiceFees = new ArrayList();// 仓库服务费 - List warehouseFees = new ArrayList();// 仓储费 - List warehouseManageFees = new ArrayList();// 仓储管理费 - List warehouseSortingFees = new ArrayList();// 仓储分拣费 - List warehouseOperatingFees = new ArrayList();// 仓储操作费 - - List deliveryServiceFees = new ArrayList();// 配送服务费 - List deliveryFees = new ArrayList();// 配送费 - List deliveryLoadingFees = new ArrayList();// 配送装卸费 - List deliverySortingFees = new ArrayList();// 配送分拣费 - List deliveryUpfloorFees = new ArrayList();// 配送上楼费 - List deliveryMoveFees = new ArrayList();// 配送平移费 - List deliveryCrossingFees = new ArrayList();// 超区费 - - List installFees = new ArrayList();// 安装费 - List quotationFees = new ArrayList();// 保价费 - List claimingValues = new ArrayList();// 申明价值 - List otherFees = new ArrayList();// 其他费 - List returnFees = new ArrayList();// 回扣 - List thirdOprationFees = new ArrayList();// 三方操作费 - List xPays = new ArrayList();// 现付 - List dPays = new ArrayList();// 到付 - List hPays = new ArrayList();// 回付 - List yPays = new ArrayList();// 月结 - - - list.forEach(statisticsOrderInfoVO -> { - Long orderInfoId = statisticsOrderInfoVO.getOrderInfoId(); - Integer confirmStatisticsOrder = statisticsOrderInfoVO.getConfirmStatisticsOrder(); - if (confirmStatisticsOrder.equals(1)) { - log.warn("############checkBalance: 订单id={} 已经确认对账", orderInfoId); - throw new CustomerException(405, "存在已经确认对账的订单"); - } + List reconciliationOrderIds = merchantStatisticsDTO.getReconciliationOrderIds(); - brands.add(statisticsOrderInfoVO.getBrand()); - waybillNos.add(statisticsOrderInfoVO.getWaybillNo()); - orderCodes.add(statisticsOrderInfoVO.getOrderNo()); - typeServices.add(DictBizCache.getValue(DictBizConstant.BASIC_FREIGHT_TYPE, statisticsOrderInfoVO.getTypeService())); - String goodsName = statisticsOrderInfoVO.getGoodsName(); - if (goodsName.contains(",")) { - String[] split = goodsName.split(","); - for (int i = 0; i < split.length; i++) { - productGoods.add(split[i]); - } - } else { - productGoods.add(goodsName); + // 查询对应对账单的数据 + List statisticsReconciliationOrderInfoEntities = reconciliationOrderInfoService.listByIds(reconciliationOrderIds); + + for (StatisticsReconciliationOrderInfoEntity statisticsReconciliationOrderInfoEntity : statisticsReconciliationOrderInfoEntities) { + Integer checkStatus = statisticsReconciliationOrderInfoEntity.getCheckStatus(); + String reconciliationOrderNo = statisticsReconciliationOrderInfoEntity.getReconciliationOrderNo(); + if(checkStatus == 1){ + log.warn("############checkBalance: 对账单已经确认对账 reconciliationOrderNo={}",reconciliationOrderNo); + return R.fail(405,"对账单["+reconciliationOrderNo+"]已经确认对账"); } - shippers.add(statisticsOrderInfoVO.getShipper()); - shipperPersons.add(statisticsOrderInfoVO.getShipperPerson()); - shipperMobiles.add(statisticsOrderInfoVO.getShipperMobile()); - shipperAddresses.add(statisticsOrderInfoVO.getShipperAddress()); - consignees.add(statisticsOrderInfoVO.getConsignee()); - consigneePersons.add(statisticsOrderInfoVO.getConsigneePerson()); - consigneeMobiles.add(statisticsOrderInfoVO.getConsigneeMobile()); - consigneeAddresses.add(statisticsOrderInfoVO.getConsigneeAddress()); - departures.add(statisticsOrderInfoVO.getDeparture()); - destinations.add(statisticsOrderInfoVO.getDestination()); - departureWarehouseNames.add(statisticsOrderInfoVO.getDepartureWarehouseName()); - destinationWarehouseNames.add(statisticsOrderInfoVO.getDestinationWarehouseName()); - payTypes.add(DictBizCache.getValue(DictBizConstant.OPEN_ORDER_PAY_TYPE, statisticsOrderInfoVO.getPayType())); - payWays.add(DictBizCache.getValue(DictBizConstant.OPEN_ORDER_PAY_WAY, statisticsOrderInfoVO.getPayWay())); - - totalCount.set(totalCount.get() + statisticsOrderInfoVO.getTotalcount()); - - totalWeights.add(statisticsOrderInfoVO.getTotalWeight()); - totalVolumes.add(statisticsOrderInfoVO.getTotalVolume()); - totalFees.add(statisticsOrderInfoVO.getTotalFee()); - openFees.add(statisticsOrderInfoVO.getOpenFee()); - pickupFees.add(statisticsOrderInfoVO.getPickupFee()); - freightFees.add(statisticsOrderInfoVO.getFreightFee()); - warehouseServiceFees.add(statisticsOrderInfoVO.getWarehouseServiceFee()); - warehouseFees.add(statisticsOrderInfoVO.getWarehouseFee()); - warehouseManageFees.add(statisticsOrderInfoVO.getWarehouseManageFee()); - warehouseSortingFees.add(statisticsOrderInfoVO.getWarehouseSortingFee()); - warehouseOperatingFees.add(statisticsOrderInfoVO.getWarehouseOperatingFee()); - deliveryServiceFees.add(statisticsOrderInfoVO.getDeliveryServiceFee()); - deliveryFees.add(statisticsOrderInfoVO.getDeliveryFee()); - deliveryLoadingFees.add(statisticsOrderInfoVO.getDeliveryLoadingFee()); - deliverySortingFees.add(statisticsOrderInfoVO.getDeliverySortingFee()); - deliveryUpfloorFees.add(statisticsOrderInfoVO.getDeliveryUpfloorFee()); - deliveryMoveFees.add(statisticsOrderInfoVO.getDeliveryMoveFee()); - deliveryCrossingFees.add(statisticsOrderInfoVO.getDeliveryCrossingFee()); - installFees.add(statisticsOrderInfoVO.getInstallFee()); - quotationFees.add(statisticsOrderInfoVO.getQuotationFee()); - claimingValues.add(statisticsOrderInfoVO.getClaimingValue()); - otherFees.add(statisticsOrderInfoVO.getOtherFee()); - returnFees.add(statisticsOrderInfoVO.getReturnFee()); - thirdOprationFees.add(statisticsOrderInfoVO.getThirdOprationFee()); - xPays.add(statisticsOrderInfoVO.getXPay()); - dPays.add(statisticsOrderInfoVO.getDPay()); - hPays.add(statisticsOrderInfoVO.getHPay()); - yPays.add(statisticsOrderInfoVO.getYPay()); + } + Set consigneeIdSet = new HashSet<>(); + Set destinationWarehouseIdSet = new HashSet<>(); + Set orderCodeSet = new HashSet<>(); + Set waybillNoSet = new HashSet<>(); + Set brandSet = new HashSet<>(); + Integer isAftersales = 0; + + BigDecimal changesFee = statisticsReconciliationOrderInfoEntities.stream().map(StatisticsReconciliationOrderInfoEntity::getChangesFee).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal aftersalesFee = statisticsReconciliationOrderInfoEntities.stream().map(StatisticsReconciliationOrderInfoEntity::getAftersalesFee).reduce(BigDecimal.ZERO, BigDecimal::add); + + statisticsReconciliationOrderInfoEntities.forEach(statisticsReconciliationOrderInfoEntity -> { + Long consigneeId = statisticsReconciliationOrderInfoEntity.getConsigneeId(); + Long destinationWarehouseId = statisticsReconciliationOrderInfoEntity.getDestinationWarehouseId(); + consigneeIdSet.add(consigneeId); + destinationWarehouseIdSet.add(destinationWarehouseId); + + Integer isAftersale = statisticsReconciliationOrderInfoEntity.getIsAftersale(); + if(isAftersale != 1){ + isAftersale = 1; + } + String orderCode = statisticsReconciliationOrderInfoEntity.getOrderCode(); + String waybillNo = statisticsReconciliationOrderInfoEntity.getWaybillNo(); + String brand = statisticsReconciliationOrderInfoEntity.getBrand(); + + String[] splitOrderCode = orderCode.split(","); + orderCodeSet.addAll(Arrays.asList(splitOrderCode)); + String[] splitWaybillNo = waybillNo.split(","); + waybillNoSet.addAll(Arrays.asList(splitWaybillNo)); + String[] splitBrand = brand.split(","); + brandSet.addAll(Arrays.asList(splitBrand)); }); - // 对totalWeights进行求和 - BigDecimal totalWeight = totalWeights.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal totalVolume = totalVolumes.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 总体积 - BigDecimal totalBalanceFee = totalFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 结算总金额 TODO 这里还需要加上售后的单子金额 - BigDecimal totalFee = totalFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal openFee = openFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal pickupFee = pickupFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 提货费 - BigDecimal freightFee = freightFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 运费 - BigDecimal warehouseServiceFee = warehouseServiceFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 仓库服务费 - BigDecimal warehouseFee = warehouseFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 仓储费 - BigDecimal warehouseManageFee = warehouseManageFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 仓储管理费 - BigDecimal warehouseSortingFee = warehouseSortingFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 仓储分拣费 - BigDecimal warehouseOperatingFee = warehouseOperatingFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 仓储操作费 - - BigDecimal deliveryServiceFee = deliveryServiceFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送服务费 - BigDecimal deliveryFee = deliveryFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送费 - BigDecimal deliveryLoadingFee = deliveryLoadingFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送装卸费 - BigDecimal deliverySortingFee = deliverySortingFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送分拣费 - BigDecimal deliveryUpfloorFee = deliveryUpfloorFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送上楼费 - BigDecimal deliveryMoveFee = deliveryMoveFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 配送平移费 - BigDecimal deliveryCrossingFee = deliveryCrossingFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 超区费 - - BigDecimal installFee = installFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 安装费 - BigDecimal quotationFee = quotationFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 保价费 - BigDecimal claimingValue = claimingValues.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 申明价值 - BigDecimal otherFee = otherFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 其他费 - BigDecimal returnFee = returnFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 回扣 - BigDecimal thirdOprationFee = thirdOprationFees.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 三方操作费 - BigDecimal xPay = xPays.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 现付 - BigDecimal dPay = dPays.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 到付 - BigDecimal hPay = hPays.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 回付 - BigDecimal yPay = yPays.stream().reduce(BigDecimal.ZERO, BigDecimal::add);// 月结 + if(consigneeIdSet.size() > 1){ + log.warn("############checkBalance: 对账单商家不相同={} ", consigneeIdSet); + throw new CustomerException(405, "对账单商家不相同"); + } + + if(destinationWarehouseIdSet.size() > 1){ + log.warn("############checkBalance: destinationWarehouseIdSet={} ", destinationWarehouseIdSet); + throw new CustomerException(405, "对账单目的仓不相同"); + } + + StatisticsReconciliationOrderInfoEntity reconciliationOrderInfo = statisticsReconciliationOrderInfoEntities.get(0); + + List orderInfoIds = baseMapper.findOrderInfoIdListByReconciliationOrderIds(reconciliationOrderIds); + + StatisticsPackageFeeInfoVO packageFeeInfoVO = baseMapper.findPackageListByOrderIds(orderInfoIds); + BigDecimal freightPrice = packageFeeInfoVO.getFreightPrice(); + BigDecimal pickupPrice = packageFeeInfoVO.getPickupPrice(); + BigDecimal deliveryServiceFee = packageFeeInfoVO.getDeliveryServiceFee(); + BigDecimal warehouseServiceFee = packageFeeInfoVO.getWarehouseServiceFee(); + BigDecimal totalFee = freightPrice.add(pickupPrice).add(deliveryServiceFee).add(warehouseServiceFee); + BigDecimal totalFeeAddAfter = freightPrice.add(pickupPrice).add(deliveryServiceFee).add(warehouseServiceFee).add(changesFee).add(aftersalesFee); + + + String balanceOrderNo = "JSD"+new Date().getTime(); StatisticsBalanceOrderInfoEntity statisticsBalanceOrderInfoEntity = new StatisticsBalanceOrderInfoEntity(); + statisticsBalanceOrderInfoEntity.setBalanceOrderNo(balanceOrderNo); + statisticsBalanceOrderInfoEntity.setBrand(brandSet.stream().collect(Collectors.joining(","))); + statisticsBalanceOrderInfoEntity.setOrderCode(orderCodeSet.stream().collect(Collectors.joining(","))); + statisticsBalanceOrderInfoEntity.setWaybillNo(waybillNoSet.stream().collect(Collectors.joining(","))); - String balanceOrder = basicdataCodeClient.getCodeByType(CodeNumConstant.BALANCE_ORDER, "BALANCE_ORDER", ""); - - statisticsBalanceOrderInfoEntity.setBalanceOrderNo(balanceOrder); - statisticsBalanceOrderInfoEntity.setBrand(String.join(",", brands)); - statisticsBalanceOrderInfoEntity.setWaybillNo(String.join(",", waybillNos)); - statisticsBalanceOrderInfoEntity.setOrderCode(String.join(",", orderCodes)); - statisticsBalanceOrderInfoEntity.setTypeService(String.join(",", typeServices)); - statisticsBalanceOrderInfoEntity.setProductGoods(String.join(",", productGoods)); - statisticsBalanceOrderInfoEntity.setTotalCount(totalCount.get()); - statisticsBalanceOrderInfoEntity.setTotalWeight(totalWeight); - statisticsBalanceOrderInfoEntity.setTotalVolume(totalVolume); - statisticsBalanceOrderInfoEntity.setShipper(String.join(",", shippers)); - statisticsBalanceOrderInfoEntity.setShipperPerson(String.join(",", shipperPersons)); - statisticsBalanceOrderInfoEntity.setShipperMobile(String.join(",", shipperMobiles)); - statisticsBalanceOrderInfoEntity.setShipperAddress(String.join(",", shipperAddresses)); - statisticsBalanceOrderInfoEntity.setConsignee(String.join(",", consignees)); - statisticsBalanceOrderInfoEntity.setConsigneePerson(String.join(",", consigneePersons)); - statisticsBalanceOrderInfoEntity.setConsigneeMobile(String.join(",", consigneeMobiles)); - statisticsBalanceOrderInfoEntity.setConsigneeAddress(String.join(",", consigneeAddresses)); - statisticsBalanceOrderInfoEntity.setDeparture(String.join(",", departures)); - statisticsBalanceOrderInfoEntity.setDestination(String.join(",", destinations)); - statisticsBalanceOrderInfoEntity.setDepartureWarehouseName(String.join(",", departureWarehouseNames)); - statisticsBalanceOrderInfoEntity.setDestinationWarehouseName(String.join(",", destinationWarehouseNames)); - statisticsBalanceOrderInfoEntity.setPayType(String.join(",", payTypes)); - statisticsBalanceOrderInfoEntity.setPayWay(String.join(",", payWays)); - - statisticsBalanceOrderInfoEntity.setIsAftersale(0); - statisticsBalanceOrderInfoEntity.setAftersalesFee(BigDecimal.ZERO); - statisticsBalanceOrderInfoEntity.setTotalBalanceFee(totalBalanceFee); - statisticsBalanceOrderInfoEntity.setTotalFee(totalFee); - statisticsBalanceOrderInfoEntity.setOpenFee(openFee); - statisticsBalanceOrderInfoEntity.setPickupFee(pickupFee); - statisticsBalanceOrderInfoEntity.setFreightFee(freightFee); + + statisticsBalanceOrderInfoEntity.setConsigneeId(reconciliationOrderInfo.getConsigneeId()); + statisticsBalanceOrderInfoEntity.setConsignee(reconciliationOrderInfo.getConsignee()); + statisticsBalanceOrderInfoEntity.setDestinationWarehouseId(reconciliationOrderInfo.getDestinationWarehouseId()); + statisticsBalanceOrderInfoEntity.setDestinationWarehouseName(reconciliationOrderInfo.getDestinationWarehouseName()); + + + statisticsBalanceOrderInfoEntity.setTotalBalanceFee(totalFeeAddAfter); + statisticsBalanceOrderInfoEntity.setTotalCount(packageFeeInfoVO.getTotalNum()); + statisticsBalanceOrderInfoEntity.setTotalWeight(packageFeeInfoVO.getTotalWeight()); + statisticsBalanceOrderInfoEntity.setTotalVolume(packageFeeInfoVO.getTotalVolume()); + statisticsBalanceOrderInfoEntity.setRealTotalFee(totalFee); + statisticsBalanceOrderInfoEntity.setPickupFee(pickupPrice); + statisticsBalanceOrderInfoEntity.setFreightFee(freightPrice); statisticsBalanceOrderInfoEntity.setWarehouseServiceFee(warehouseServiceFee); - statisticsBalanceOrderInfoEntity.setWarehouseFee(warehouseFee); - statisticsBalanceOrderInfoEntity.setWarehouseManageFee(warehouseManageFee); - statisticsBalanceOrderInfoEntity.setWarehouseSortingFee(warehouseSortingFee); - statisticsBalanceOrderInfoEntity.setWarehouseOperatingFee(warehouseOperatingFee); + statisticsBalanceOrderInfoEntity.setWarehouseFee(packageFeeInfoVO.getWarehouseFee()); + statisticsBalanceOrderInfoEntity.setWarehouseManageFee(packageFeeInfoVO.getWarehouseManageFee()); + statisticsBalanceOrderInfoEntity.setWarehouseSortingFee(packageFeeInfoVO.getWarehouseSortingFee()); + statisticsBalanceOrderInfoEntity.setWarehouseOperatingFee(packageFeeInfoVO.getWarehouseOperatingFee()); + statisticsBalanceOrderInfoEntity.setDeliveryFee(packageFeeInfoVO.getDeliveryFee()); statisticsBalanceOrderInfoEntity.setDeliveryServiceFee(deliveryServiceFee); - statisticsBalanceOrderInfoEntity.setDeliveryFee(deliveryFee); - statisticsBalanceOrderInfoEntity.setDeliveryLoadingFee(deliveryLoadingFee); - statisticsBalanceOrderInfoEntity.setDeliverySortingFee(deliverySortingFee); - statisticsBalanceOrderInfoEntity.setDeliveryUpfloorFee(deliveryUpfloorFee); - statisticsBalanceOrderInfoEntity.setDeliveryMoveFee(deliveryMoveFee); - statisticsBalanceOrderInfoEntity.setDeliveryCrossingFee(deliveryCrossingFee); - statisticsBalanceOrderInfoEntity.setInstallFee(installFee); - statisticsBalanceOrderInfoEntity.setQuotationFee(quotationFee); - statisticsBalanceOrderInfoEntity.setClaimingValue(claimingValue); - statisticsBalanceOrderInfoEntity.setOtherFee(otherFee); - statisticsBalanceOrderInfoEntity.setReturnFee(returnFee); - statisticsBalanceOrderInfoEntity.setThirdOprationFee(thirdOprationFee); - statisticsBalanceOrderInfoEntity.setXPay(xPay); - statisticsBalanceOrderInfoEntity.setDPay(dPay); - statisticsBalanceOrderInfoEntity.setHPay(hPay); - statisticsBalanceOrderInfoEntity.setYPay(yPay); - - statisticsBalanceOrderInfoEntity.setBalanceStatus(0); - statisticsBalanceOrderInfoEntity.setHasBalanceFee(BigDecimal.ZERO); - statisticsBalanceOrderInfoEntity.setNoBalanceFee(BigDecimal.ZERO); - statisticsBalanceOrderInfoEntity.setAbnormalBalanceStatus(0); - statisticsBalanceOrderInfoEntity.setAbnormalBalanceFee(BigDecimal.ZERO); - + statisticsBalanceOrderInfoEntity.setDeliveryLoadingFee(packageFeeInfoVO.getDeliveryLoadingFee()); + statisticsBalanceOrderInfoEntity.setDeliverySortingFee(packageFeeInfoVO.getDeliverySortingFee()); + statisticsBalanceOrderInfoEntity.setDeliveryUpfloorFee(packageFeeInfoVO.getDeliveryUpfloorFee()); + statisticsBalanceOrderInfoEntity.setDeliveryMoveFee(packageFeeInfoVO.getDeliveryMoveFee()); + statisticsBalanceOrderInfoEntity.setDeliveryOtherFee(packageFeeInfoVO.getDeliveryOtherFee()); + statisticsBalanceOrderInfoEntity.setDeliveryCrossingFee(packageFeeInfoVO.getDeliveryCrossingFee()); + statisticsBalanceOrderInfoEntity.setOtherFee(BigDecimal.ZERO); + statisticsBalanceOrderInfoEntity.setInstallFee(BigDecimal.ZERO); + statisticsBalanceOrderInfoEntity.setIsAftersale(isAftersales); + statisticsBalanceOrderInfoEntity.setAftersalesFee(aftersalesFee); balanceOrderInfoService.save(statisticsBalanceOrderInfoEntity); + Long balanceOrderId = statisticsBalanceOrderInfoEntity.getId(); + // 订单的结算单号生成 List statisticsOrderInfoEntities = baseMapper.selectList(new QueryWrapper().lambda().in(StatisticsOrderInfoEntity::getId, orderInfoIds)); + List updateOrderInfoList = new ArrayList<>(); statisticsOrderInfoEntities.forEach(statisticsOrderInfoEntity -> { - statisticsOrderInfoEntity.setBalanceOrderNo(statisticsBalanceOrderInfoEntity.getBalanceOrderNo()); - statisticsOrderInfoEntity.setBalanceOrderId(statisticsBalanceOrderInfoEntity.getId()); - statisticsOrderInfoEntity.setConfirmStatisticsTime(new Date()); - statisticsOrderInfoEntity.setConfirmStatisticsOrder(1); - statisticsOrderInfoEntity.setConfirmStatisticsUserName(AuthUtil.getNickName()); + StatisticsOrderInfoEntity updateEntity = new StatisticsOrderInfoEntity(); + updateEntity.setId(statisticsOrderInfoEntity.getId()); + updateEntity.setBalanceOrderNo(balanceOrderNo); + updateEntity.setBalanceOrderId(balanceOrderId); + updateEntity.setConfirmBalanceUserName(AuthUtil.getNickName()); + updateEntity.setConfirmBalanceOrderStatus(1); + updateEntity.setConfirmBalanceDate(new Date()); + updateOrderInfoList.add(updateEntity); }); + if(CollUtil.isNotEmpty(updateOrderInfoList)){ + updateBatchById(updateOrderInfoList); + } - updateBatchById(statisticsOrderInfoEntities); + List updateReconciliationInfoList = new ArrayList<>(); + statisticsReconciliationOrderInfoEntities.forEach(statisticsReconciliationOrderInfoEntity -> { + StatisticsReconciliationOrderInfoEntity updateEntity = new StatisticsReconciliationOrderInfoEntity(); + updateEntity.setId(statisticsReconciliationOrderInfoEntity.getId()); + updateEntity.setBalanceOrderNo(balanceOrderNo); + updateEntity.setBalanceOrderId(balanceOrderId); + updateEntity.setCheckStatus(1); + updateEntity.setCheckUserName(AuthUtil.getNickName()); + updateEntity.setCheckTime(new Date()); + updateReconciliationInfoList.add(updateEntity); + }); + if(CollUtil.isNotEmpty(updateReconciliationInfoList)){ + reconciliationOrderInfoService.updateBatchById(updateReconciliationInfoList); + } return R.success("确认成功"); } @Override - public StatisticsOrderInfoVO findOrderDetail(Long orderInfoId) { - List orderInfoIds = new ArrayList<>(); - orderInfoIds.add(orderInfoId); - List statementListByOrderInfoIds = baseMapper.findStatementListByOrderInfoIds(orderInfoIds); - return statementListByOrderInfoIds.get(0); + public List findOrderDetail(Long reconciliationOrderId) { + List records = baseMapper.findOrderDetail(reconciliationOrderId); + //把records中所有的orderInfoId放入一个集合 + List orderInfoIdList = records.stream().map(StatisticsOrderInfoVO::getOrderInfoId).collect(Collectors.toList()); + + List orderPackageInfoList = baseMapper.findPackageListByOrderIdsGroupById(orderInfoIdList); + //把orderPackageInfoList转化成以orderInfoId为key的Map + Map orderPackageInfoMap = orderPackageInfoList.stream() + .collect(Collectors.toMap(StatisticsPackageFeeInfoVO::getOrderInfoId, statisticsPackageFeeInfoVO -> statisticsPackageFeeInfoVO)); + + records.forEach(statisticsOrderInfoVO -> { + Long orderInfoId = statisticsOrderInfoVO.getOrderInfoId(); + StatisticsPackageFeeInfoVO statisticsPackageFeeInfoVO = orderPackageInfoMap.get(orderInfoId); + BeanUtil.copy(statisticsPackageFeeInfoVO, statisticsOrderInfoVO); + }); + return records; } @Override @@ -467,7 +379,7 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl orderInfoIdsList) { + return baseMapper.findPackageListByOrderIds(orderInfoIdsList); + } + + @Override + public R createReconciliationOrder(List orderInfoIds) { + +// StatisticsReconciliationOrderInfoEntity reconciliationOrder = baseMapper.findReconciliationOrderInfoByOrderIds(orderInfoIds); + + List orderInfoEntities = baseMapper.selectBatchIds(orderInfoIds); + if(CollUtil.isEmpty(orderInfoEntities)){ + log.warn("############createReconciliationOrder: 未找到对应订单信息"); + return R.fail(405,"未找到对应订单信息"); + } + + + for (StatisticsOrderInfoEntity orderInfoEntity : orderInfoEntities) { + Integer syncFeeStatus = orderInfoEntity.getSyncFeeStatus(); + Long orderId = orderInfoEntity.getId(); + String orderCode = orderInfoEntity.getOrderCode(); + if(syncFeeStatus == 0){ + log.warn("############createReconciliationOrder: 订单还未同步数据 orderId={}",orderId); + return R.fail(405,"订单["+orderCode+"]还未同步数据"); + } + } + + //判断orderInfoEntities中所有元素通过consigneeId进行分组 + Map> groupByConsigneeId = orderInfoEntities.stream().collect(Collectors.groupingBy(StatisticsOrderInfoEntity::getConsigneeId)); + int consigneeSize = groupByConsigneeId.keySet().size(); + if(consigneeSize > 1){ + log.warn("############createReconciliationOrder: 订单不属于同一个商家"); + return R.fail(405,"订单不属于同一个商家"); + } + Map> groupByDestinationWarehouseId = orderInfoEntities.stream().collect(Collectors.groupingBy(StatisticsOrderInfoEntity::getDestinationWarehouseId)); + int destinationWarehouseIdSize = groupByDestinationWarehouseId.keySet().size(); + if(destinationWarehouseIdSize > 1){ + log.warn("############createReconciliationOrder: 订单不属于同一个目的仓"); + return R.fail(405,"订单不属于同一个目的仓"); + } + StatisticsPackageFeeInfoVO orderPackageTotalVO = baseMapper.findPackageListByOrderIds(orderInfoIds); + BigDecimal freightPrice = orderPackageTotalVO.getFreightPrice(); + BigDecimal pickupPrice = orderPackageTotalVO.getPickupPrice(); + BigDecimal warehouseServiceFee = orderPackageTotalVO.getWarehouseServiceFee(); + BigDecimal deliveryServiceFee = orderPackageTotalVO.getDeliveryServiceFee(); + BigDecimal totalFee = freightPrice.add(pickupPrice).add(warehouseServiceFee).add(deliveryServiceFee); + + StatisticsOrderInfoEntity statisticsOrderInfoEntity = orderInfoEntities.get(0); + Long consigneeId = statisticsOrderInfoEntity.getConsigneeId(); + String consignee = statisticsOrderInfoEntity.getConsignee(); + Long destinationWarehouseId = statisticsOrderInfoEntity.getDestinationWarehouseId(); + String destinationWarehouseName = statisticsOrderInfoEntity.getDestinationWarehouseName(); + + String reconciliationOrdeCode = "DZD"+new Date().getTime(); + + StatisticsReconciliationOrderInfoEntity reconciliationOrder = new StatisticsReconciliationOrderInfoEntity(); + reconciliationOrder.setReconciliationOrderNo(reconciliationOrdeCode); + //把orderInfoEntities中所有waybillNo去重拼接起来 + reconciliationOrder.setWaybillNo(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getWaybillNo).distinct().collect(Collectors.joining(","))); + reconciliationOrder.setOrderCode(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getOrderCode).distinct().collect(Collectors.joining(","))); + reconciliationOrder.setBrand(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getBrand).distinct().collect(Collectors.joining(","))); + reconciliationOrder.setConsigneeId(consigneeId); + reconciliationOrder.setConsignee(consignee); + reconciliationOrder.setDestinationWarehouseName(destinationWarehouseName); + reconciliationOrder.setDestinationWarehouseId(destinationWarehouseId); + reconciliationOrder.setTotalNum(orderPackageTotalVO.getTotalNum()); + reconciliationOrder.setTotalWeight(orderPackageTotalVO.getTotalWeight()); + reconciliationOrder.setTotalVolume(orderPackageTotalVO.getTotalVolume()); + + reconciliationOrder.setRealTotalFee(totalFee); + reconciliationOrder.setPickupFee(pickupPrice); + reconciliationOrder.setFreightFee(freightPrice); + reconciliationOrder.setWarehouseServiceFee(warehouseServiceFee); + reconciliationOrder.setWarehouseFee(orderPackageTotalVO.getWarehouseFee()); + reconciliationOrder.setWarehouseManageFee(orderPackageTotalVO.getWarehouseManageFee()); + reconciliationOrder.setWarehouseSortingFee(orderPackageTotalVO.getWarehouseSortingFee()); + reconciliationOrder.setWarehouseOperatingFee(orderPackageTotalVO.getWarehouseOperatingFee()); + reconciliationOrder.setDeliveryFee(orderPackageTotalVO.getDeliveryFee()); + reconciliationOrder.setDeliveryServiceFee(deliveryServiceFee); + reconciliationOrder.setDeliveryLoadingFee(orderPackageTotalVO.getDeliveryLoadingFee()); + reconciliationOrder.setDeliverySortingFee(orderPackageTotalVO.getDeliverySortingFee()); + reconciliationOrder.setDeliveryUpfloorFee(orderPackageTotalVO.getDeliveryUpfloorFee()); + reconciliationOrder.setDeliveryMoveFee(orderPackageTotalVO.getDeliveryMoveFee()); + reconciliationOrder.setDeliveryOtherFee(orderPackageTotalVO.getDeliveryOtherFee()); + reconciliationOrder.setDeliveryCrossingFee(orderPackageTotalVO.getDeliveryCrossingFee()); + reconciliationOrder.setInstallFee(BigDecimal.ZERO); + reconciliationOrder.setOtherFee(BigDecimal.ZERO); + + reconciliationOrder.setIsAftersale(0); + reconciliationOrder.setAftersalesFee(BigDecimal.ZERO); + + reconciliationOrder.setCreateUserName(AuthUtil.getNickName()); + + reconciliationOrder.setIsChanges(0); + reconciliationOrder.setChangesFee(BigDecimal.ZERO); + + boolean saveFlag = reconciliationOrderInfoService.save(reconciliationOrder); + if(saveFlag){ + Long reconciliationOrderId = reconciliationOrder.getId(); + List updateList = new ArrayList<>(); + orderInfoEntities.forEach(orderInfoEntity -> { + StatisticsOrderInfoEntity updateEntity = new StatisticsOrderInfoEntity(); + updateEntity.setId(orderInfoEntity.getId()); + updateEntity.setCreateReconciliationOrderStatus(1); + updateEntity.setCreateReconciliationUserName(AuthUtil.getNickName()); + updateEntity.setCreateReconciliationDate(new Date()); + updateEntity.setReconciliationOrderId(reconciliationOrderId); + updateEntity.setReconciliationOrderNo(reconciliationOrdeCode); + updateList.add(updateEntity); + }); + updateBatchById(updateList); + } + + return R.success("生成成功"); + } + + @Override + public R findAftersalesOrderList(Long consigneeId) { + + List list = new ArrayList<>(); + + + return R.data(list); + } + + @Override + public R addAftersalesToReconciliationOrder(MerchantStatisticsDTO merchantStatisticsDTO) { + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + + StatisticsReconciliationOrderInfoEntity reconciliationOrderInfo = reconciliationOrderInfoService.getById(reconciliationOrderId); + if(Objects.isNull(reconciliationOrderInfo)){ + log.warn("#########addAftersalesToReconciliationOrder: 对账单信息不存在 reconciliationOrderId={}",reconciliationOrderId); + return R.fail(405,"对账单信息不存在"); + } + + Integer checkStatus = reconciliationOrderInfo.getCheckStatus(); + if(checkStatus == 1){ + log.warn("#########addAftersalesToReconciliationOrder: 对账单已经确认对账 reconciliationOrderId={}",reconciliationOrderId); + return R.fail(405,"对账单已经确认对账"); + } + + List aftersalesOrderDTOS = merchantStatisticsDTO.getAftersalesOrderDTOS(); + if(CollUtil.isEmpty(aftersalesOrderDTOS)){ + log.warn("#########addAftersalesToReconciliationOrder: 请选择售后单 aftersalesOrderDTOS={}",aftersalesOrderDTOS); + return R.fail(405,"请选择售后单"); + } + + //把aftersalesOrderDTOS中所有元素的aftersalesFee 求和 + BigDecimal aftersalesFee = aftersalesOrderDTOS.stream().map(AftersalesOrderDTO::getAftersalesFee).reduce(BigDecimal.ZERO, BigDecimal::add); + + List aftersalesOrderRecordEntities = new ArrayList<>(); + aftersalesOrderDTOS.forEach(aftersalesOrderDTO -> { + StatisticsAftersalesOrderRecordEntity aftersalesOrderRecordEntity = new StatisticsAftersalesOrderRecordEntity(); + aftersalesOrderRecordEntity.setReconciliationOrderId(reconciliationOrderId); + aftersalesOrderRecordEntity.setAftersaleOrderCode(aftersalesOrderDTO.getAftersaleOrder()); + aftersalesOrderRecordEntity.setAftersalesFee(aftersalesOrderDTO.getAftersalesFee()); + aftersalesOrderRecordEntities.add(aftersalesOrderRecordEntity); + }); + + aftersalesOrderRecordService.saveBatch(aftersalesOrderRecordEntities); + + //对账单加上售后金额 + reconciliationOrderInfoService.addAftersalesFeeById(reconciliationOrderId,aftersalesFee); + + + return R.success("添加成功"); + } + + @Override + public R findReconciliationOrderAftersalesOrder(MerchantStatisticsDTO merchantStatisticsDTO) { + Long reconciliationOrderId = merchantStatisticsDTO.getReconciliationOrderId(); + List aftersalesOrderRecordList = aftersalesOrderRecordService.findListByReconciliationOrderId(reconciliationOrderId); + + return R.data(aftersalesOrderRecordList); + } + + @Override + public Integer findCreateRencilitionOrderStatus(Long waybillId) { + return baseMapper.findCreateRencilitionOrderStatus(waybillId); + } + + @Override + public void deleteListByOrderInfoIds(List orderInfoIdsList) { + baseMapper.deleteListByOrderInfoIds(orderInfoIdsList); + } + + @Override + public R cancleOrderInfoBindReconcilitionOrder(Long reconciliationOrderId, List orderInfoIds) { + StatisticsReconciliationOrderInfoEntity reconciliationOrderInfo = reconciliationOrderInfoService.getById(reconciliationOrderId); + if(Objects.isNull(reconciliationOrderInfo)){ + log.warn("#########cancleOrderInfoBindReconcilitionOrder: 对账单信息不存在 reconciliationOrderId={}",reconciliationOrderId); + return R.fail(405,"对账单信息不存在"); + } + Integer checkStatus = reconciliationOrderInfo.getCheckStatus(); + if(checkStatus == 1){ + log.warn("#########cancleOrderInfoBindReconcilitionOrder: 对账单已确认对账 reconciliationOrderId={}",reconciliationOrderId); + return R.fail(405,"对账单已确认对账"); + } + + baseMapper.clearReconcilitionOrderInfoByOrderInfoIds(orderInfoIds,AuthUtil.getNickName(),new Date()); + + //重新计算对账单的数据 + calculateReconcilitionOrder(reconciliationOrderInfo); + + + return R.success("取消成功"); + } + + @Override + public List orderInfoListExport(MerchantStatisticsDTO merchantStatisticsDTO) { + + List records = baseMapper.orderInfoListExport(merchantStatisticsDTO); + //把records中所有的orderInfoId放入一个集合 + List orderInfoIdList = records.stream().map(StatisticsOrderInfoExportVO::getOrderInfoId).collect(Collectors.toList()); + + List orderPackageInfoList = baseMapper.findPackageListByOrderIdsGroupById(orderInfoIdList); + //把orderPackageInfoList转化成以orderInfoId为key的Map + Map orderPackageInfoMap = orderPackageInfoList.stream() + .collect(Collectors.toMap(StatisticsPackageFeeInfoVO::getOrderInfoId, statisticsPackageFeeInfoVO -> statisticsPackageFeeInfoVO)); + + records.forEach(statisticsOrderInfoVO -> { + Long orderInfoId = statisticsOrderInfoVO.getOrderInfoId(); + StatisticsPackageFeeInfoVO statisticsPackageFeeInfoVO = orderPackageInfoMap.get(orderInfoId); + BeanUtil.copy(statisticsPackageFeeInfoVO, statisticsOrderInfoVO); + }); + + + + return Collections.emptyList(); + } + + private void calculateReconcilitionOrder(StatisticsReconciliationOrderInfoEntity reconciliationOrderInfo) { + Long reconciliationOrderId = reconciliationOrderInfo.getId(); + BigDecimal aftersalesFee = reconciliationOrderInfo.getAftersalesFee(); + BigDecimal changesFee = reconciliationOrderInfo.getChangesFee(); + + + List reconciliationOrderIdList = new ArrayList<>(); + reconciliationOrderIdList.add(reconciliationOrderId); + + List orderInfoIds = baseMapper.findOrderInfoIdListByReconciliationOrderIds(reconciliationOrderIdList); + + + List orderInfoEntities = baseMapper.selectBatchIds(orderInfoIds); + if(CollUtil.isEmpty(orderInfoEntities)){ + log.warn("############calculateReconcilitionOrder: 未找到对应订单信息"); + throw new CustomerException(405,"未找到对应订单信息"); + } + + + for (StatisticsOrderInfoEntity orderInfoEntity : orderInfoEntities) { + Integer syncFeeStatus = orderInfoEntity.getSyncFeeStatus(); + Long orderId = orderInfoEntity.getId(); + String orderCode = orderInfoEntity.getOrderCode(); + if(syncFeeStatus == 0){ + log.warn("############calculateReconcilitionOrder: 订单还未同步数据 orderId={}",orderId); + throw new CustomerException(405,"订单["+orderCode+"]还未同步数据"); + } + } + + //判断orderInfoEntities中所有元素通过consigneeId进行分组 + Map> groupByConsigneeId = orderInfoEntities.stream().collect(Collectors.groupingBy(StatisticsOrderInfoEntity::getConsigneeId)); + int consigneeSize = groupByConsigneeId.keySet().size(); + if(consigneeSize > 1){ + log.warn("############calculateReconcilitionOrder: 订单不属于同一个商家"); + throw new CustomerException(405,"订单不属于同一个商家"); + } + Map> groupByDestinationWarehouseId = orderInfoEntities.stream().collect(Collectors.groupingBy(StatisticsOrderInfoEntity::getDestinationWarehouseId)); + int destinationWarehouseIdSize = groupByDestinationWarehouseId.keySet().size(); + if(destinationWarehouseIdSize > 1){ + log.warn("############calculateReconcilitionOrder: 订单不属于同一个目的仓"); + throw new CustomerException(405,"订单不属于同一个目的仓"); + } + StatisticsPackageFeeInfoVO orderPackageTotalVO = baseMapper.findPackageListByOrderIds(orderInfoIds); + BigDecimal freightPrice = orderPackageTotalVO.getFreightPrice(); + BigDecimal pickupPrice = orderPackageTotalVO.getPickupPrice(); + BigDecimal warehouseServiceFee = orderPackageTotalVO.getWarehouseServiceFee(); + BigDecimal deliveryServiceFee = orderPackageTotalVO.getDeliveryServiceFee(); + BigDecimal totalFee = freightPrice.add(pickupPrice).add(warehouseServiceFee).add(deliveryServiceFee).add(changesFee).add(aftersalesFee); + + StatisticsOrderInfoEntity statisticsOrderInfoEntity = orderInfoEntities.get(0); + Long consigneeId = statisticsOrderInfoEntity.getConsigneeId(); + String consignee = statisticsOrderInfoEntity.getConsignee(); + Long destinationWarehouseId = statisticsOrderInfoEntity.getDestinationWarehouseId(); + String destinationWarehouseName = statisticsOrderInfoEntity.getDestinationWarehouseName(); + + //把orderInfoEntities中所有waybillNo去重拼接起来 + reconciliationOrderInfo.setWaybillNo(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getWaybillNo).distinct().collect(Collectors.joining(","))); + reconciliationOrderInfo.setOrderCode(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getOrderCode).distinct().collect(Collectors.joining(","))); + reconciliationOrderInfo.setBrand(orderInfoEntities.stream().map(StatisticsOrderInfoEntity::getBrand).distinct().collect(Collectors.joining(","))); + reconciliationOrderInfo.setConsigneeId(consigneeId); + reconciliationOrderInfo.setConsignee(consignee); + reconciliationOrderInfo.setDestinationWarehouseName(destinationWarehouseName); + reconciliationOrderInfo.setDestinationWarehouseId(destinationWarehouseId); + reconciliationOrderInfo.setTotalNum(orderPackageTotalVO.getTotalNum()); + reconciliationOrderInfo.setTotalWeight(orderPackageTotalVO.getTotalWeight()); + reconciliationOrderInfo.setTotalVolume(orderPackageTotalVO.getTotalVolume()); + + reconciliationOrderInfo.setRealTotalFee(totalFee); + reconciliationOrderInfo.setPickupFee(pickupPrice); + reconciliationOrderInfo.setFreightFee(freightPrice); + reconciliationOrderInfo.setWarehouseServiceFee(warehouseServiceFee); + reconciliationOrderInfo.setWarehouseFee(orderPackageTotalVO.getWarehouseFee()); + reconciliationOrderInfo.setWarehouseManageFee(orderPackageTotalVO.getWarehouseManageFee()); + reconciliationOrderInfo.setWarehouseSortingFee(orderPackageTotalVO.getWarehouseSortingFee()); + reconciliationOrderInfo.setWarehouseOperatingFee(orderPackageTotalVO.getWarehouseOperatingFee()); + reconciliationOrderInfo.setDeliveryFee(orderPackageTotalVO.getDeliveryFee()); + reconciliationOrderInfo.setDeliveryServiceFee(deliveryServiceFee); + reconciliationOrderInfo.setDeliveryLoadingFee(orderPackageTotalVO.getDeliveryLoadingFee()); + reconciliationOrderInfo.setDeliverySortingFee(orderPackageTotalVO.getDeliverySortingFee()); + reconciliationOrderInfo.setDeliveryUpfloorFee(orderPackageTotalVO.getDeliveryUpfloorFee()); + reconciliationOrderInfo.setDeliveryMoveFee(orderPackageTotalVO.getDeliveryMoveFee()); + reconciliationOrderInfo.setDeliveryOtherFee(orderPackageTotalVO.getDeliveryOtherFee()); + reconciliationOrderInfo.setDeliveryCrossingFee(orderPackageTotalVO.getDeliveryCrossingFee()); + reconciliationOrderInfo.setInstallFee(BigDecimal.ZERO); + reconciliationOrderInfo.setOtherFee(BigDecimal.ZERO); + + reconciliationOrderInfo.setAftersalesFee(aftersalesFee); + reconciliationOrderInfo.setChangesFee(changesFee); + + reconciliationOrderInfoService.updateById(reconciliationOrderInfo); + + } + private void calculateWarehouseCost(PriceWarehouseVO warehouse, List warehousePackageEntities, BasicdataPriceTemplateEntity template) { if (ObjectUtil.isNotEmpty(warehouse)) { // 取出 warehousePackageEntities 中的最小的入库时间 warehouseEntryTimeEnd 和最大的签收时间 signTime。两个时间相差的天数为在库周期 @@ -508,10 +744,10 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl { - entity.setRealWarehouseServiceFee(entity.getRealWarehouseFee() - .add(entity.getRealWarehouseManageFee()) - .add(entity.getRealWarehouseSortingFee()) - .add(entity.getRealWarehouseOperatingFee()) + entity.setWarehouseServiceFee(entity.getWarehouseFee() + .add(entity.getWarehouseManageFee()) + .add(entity.getWarehouseSortingFee()) + .add(entity.getWarehouseOperatingFee()) ); }); warehousePackageService.updateBatchById(warehousePackageEntities); @@ -573,13 +809,12 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl { - entity.setRealDeliveryServiceFee(entity.getRealDeliveryFee() - .add(entity.getRealDeliveryLoadingFee()) - .add(entity.getRealDeliveryMoveFee()) - .add(entity.getRealDeliveryCrossingFee()) - .add(entity.getRealDeliverySortingFee()) - .add(entity.getRealDeliveryUpfloorFee()) - .add(entity.getRealDeliveryDistance())); + entity.setDeliveryServiceFee(entity.getDeliveryFee() + .add(entity.getDeliveryLoadingFee()) + .add(entity.getDeliveryMoveFee()) + .add(entity.getDeliveryCrossingFee()) + .add(entity.getDeliverySortingFee()) + .add(entity.getDeliveryUpfloorFee())); }); distributionPackageService.saveOrUpdateBatch(distributionPackageEntities); } @@ -601,7 +836,7 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl pieceList = catergory; if (1 == warehouseIsByCategory) { pieceList = catergory.stream().filter(priceDispatchBasicVO -> { - return StrUtil.equals(String.valueOf(priceDispatchBasicVO.getCategoryId()), statisticsDistributionPackageEntity.getProductId()); + return StrUtil.equals(String.valueOf(priceDispatchBasicVO.getCategoryId()), String.valueOf(statisticsDistributionPackageEntity.getProductId())); }).collect(Collectors.toList()); } if (CollUtil.isNotEmpty(pieceList)) { - BigDecimal totalVolume = statisticsDistributionPackageEntity.getTotalVolume(); - BigDecimal totalWeight = statisticsDistributionPackageEntity.getTotalWeight(); + BigDecimal totalVolume = statisticsDistributionPackageEntity.getVolume(); + BigDecimal totalWeight = statisticsDistributionPackageEntity.getWeight(); PriceWarehouseBasicVO priceDispatchBasicVO = pieceList.get(0); Double withinThirtyPrice = priceDispatchBasicVO.getWithinThirtyPrice(); Double betweenThirtySixtyPrice = priceDispatchBasicVO.getBetweenThirtySixtyPrice(); @@ -710,7 +945,7 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl additionalList = additionalCategory; if (ObjectUtil.equals(BooleanZeroOneEnums.YES.getCode(), warehouseIsCategorySubjoin)) { additionalList = additionalCategory.stream().filter(additionalVO -> { - return StrUtil.equals(String.valueOf(additionalVO.getCategoryId()), statisticsDistributionPackageEntity.getProductId()); + return StrUtil.equals(String.valueOf(additionalVO.getCategoryId()), String.valueOf(statisticsDistributionPackageEntity.getProductId())); }).collect(Collectors.toList()); } if (CollUtil.isNotEmpty(additionalList)) { @@ -719,13 +954,13 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl 90) { realWarehouseFee = NumberUtil.mul(beyondNinetyPrice, diff, number); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("91天以上"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("91天以上"); } - statisticsDistributionPackageEntity.setRealWarehouseFee(realWarehouseFee); + statisticsDistributionPackageEntity.setWarehouseFee(realWarehouseFee); } else if (ObjectUtil.equals(2, warehouseCalculationBasis)) { // 方 最高 月 BigDecimal realWarehouseFee = BigDecimal.ZERO; if (diff <= 30) { realWarehouseFee = NumberUtil.mul(withinThirtyPrice, 1, number); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("30天内"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("30天内"); } else if (diff <= 60) { realWarehouseFee = NumberUtil.mul(betweenThirtySixtyPrice, 2, number); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("31-60天"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("31-60天"); } else if (diff <= 90) { realWarehouseFee = NumberUtil.mul(beyondSixtyPrice, 3, number); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("61-90天"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("61-90天"); } else if (diff > 90) { long time = diff - 90; // time 以 30 天为维度 计算 ,向上取整 Double ceil = Math.ceil(time / 30); realWarehouseFee = NumberUtil.mul(beyondNinetyPrice, NumberUtil.add(ceil, 3, BigDecimal.ZERO), number); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("91天以上"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("91天以上"); } - statisticsDistributionPackageEntity.setRealWarehouseFee(realWarehouseFee); + statisticsDistributionPackageEntity.setWarehouseFee(realWarehouseFee); } } @@ -781,20 +1016,20 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl 90) { realWarehouseFee = NumberUtil.add( NumberUtil.mul(withinThirtyPrice, 30, number), @@ -802,36 +1037,36 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl 90) { long time = diff - 90; // time 以 30 天为维度 计算 ,向上取整 Double ceil = Math.ceil(time / 30); realWarehouseFee = NumberUtil.mul(number, NumberUtil.add(withinThirtyPrice, betweenThirtySixtyPrice, beyondSixtyPrice, NumberUtil.mul(ceil, beyondNinetyPrice))); - statisticsDistributionPackageEntity.setRealWarehouseFeeInterval("91天以上"); + statisticsDistributionPackageEntity.setWarehouseFeeInterval("91天以上"); } - statisticsDistributionPackageEntity.setRealWarehouseFee(realWarehouseFee); + statisticsDistributionPackageEntity.setWarehouseFee(realWarehouseFee); } } private void buildDispatchCostToPackage(Integer dispatchMinCostType, List distributionPackageEntities, Double minCost, Double additionalCost) { if (ObjectUtil.equals(1, dispatchMinCostType)) { // 计算总价 - BigDecimal sumDeliveryFee = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getRealDeliveryFee).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal sumDeliveryFee = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getDeliveryFee).reduce(BigDecimal.ZERO, BigDecimal::add); // 总价和最低价 取大的值 BigDecimal max = NumberUtil.max(sumDeliveryFee, NumberUtil.toBigDecimal(minCost)); // 分摊价格个到包件上 @@ -840,7 +1075,7 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl { - statisticsDistributionPackageEntity.setRealDeliveryFee(statisticsDistributionPackageEntity.getRealDeliveryFee().add(divide)); + statisticsDistributionPackageEntity.setDeliveryFee(statisticsDistributionPackageEntity.getDeliveryFee().add(divide)); }); } } else if (ObjectUtil.equals(2, dispatchMinCostType)) { @@ -851,47 +1086,47 @@ public class StatisticsOrderInfoServiceImpl extends BaseServiceImpl { - statisticsDistributionPackageEntity.setRealDeliveryFee(statisticsDistributionPackageEntity.getRealDeliveryFee().add(divide)); + statisticsDistributionPackageEntity.setDeliveryFee(statisticsDistributionPackageEntity.getDeliveryFee().add(divide)); }); } } else if (ObjectUtil.equals(3, dispatchMinCostType)) { // 总体积 - BigDecimal totalVolume = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getTotalVolume).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalVolume = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getVolume).reduce(BigDecimal.ZERO, BigDecimal::add); // 总件数 < 最低价 则计算保底价 if (NumberUtil.compare(NumberUtil.toDouble(totalVolume), minCost) < 0) { // 分摊到包件上 原单价 + 加算价格/件数 BigDecimal divide = NumberUtil.toBigDecimal(additionalCost).divide(NumberUtil.toBigDecimal(distributionPackageEntities.size()), 2, BigDecimal.ROUND_HALF_UP); distributionPackageEntities.forEach(statisticsDistributionPackageEntity -> { - statisticsDistributionPackageEntity.setRealDeliveryFee(statisticsDistributionPackageEntity.getRealDeliveryFee().add(divide)); + statisticsDistributionPackageEntity.setDeliveryFee(statisticsDistributionPackageEntity.getDeliveryFee().add(divide)); }); } } else if (ObjectUtil.equals(4, dispatchMinCostType)) { // 总重量 - BigDecimal totalWeight = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getTotalWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalWeight = distributionPackageEntities.stream().map(StatisticsDistributionPackageEntity::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); // 总件数 < 最低价 则计算保底价 if (NumberUtil.compare(NumberUtil.toDouble(totalWeight), minCost) < 0) { // 分摊到包件上 原单价 + 加算价格/件数 BigDecimal divide = NumberUtil.toBigDecimal(additionalCost).divide(NumberUtil.toBigDecimal(distributionPackageEntities.size()), 2, BigDecimal.ROUND_HALF_UP); distributionPackageEntities.forEach(statisticsDistributionPackageEntity -> { - statisticsDistributionPackageEntity.setRealDeliveryFee(statisticsDistributionPackageEntity.getRealDeliveryFee().add(divide)); + statisticsDistributionPackageEntity.setDeliveryFee(statisticsDistributionPackageEntity.getDeliveryFee().add(divide)); }); } } } - private void updateOrderChangesFee(Long orderInfoId) { + private void updateOrderChangesFee(Long reconciliationOrderId) { - StatisticsOrderInfoEntity statisticsOrderInfoEntity = baseMapper.selectById(orderInfoId); - if (Objects.isNull(statisticsOrderInfoEntity)) { - log.warn("#############updateOrderChangesFee: 订单信息不存在 statisticsOrderInfoEntity={}", statisticsOrderInfoEntity); + StatisticsReconciliationOrderInfoEntity reconciliationOrderInfo = reconciliationOrderInfoService.getById(reconciliationOrderId); + if (Objects.isNull(reconciliationOrderInfo)) { + log.warn("#############updateOrderChangesFee: 对账单信息不存在 reconciliationOrderInfo={}", reconciliationOrderInfo); throw new CustomerException(405, "订单信息不存在"); } - BigDecimal changesFee = changesRecordService.findChangesFeeByOrderInfoId(orderInfoId); + BigDecimal changesFee = changesRecordService.findChangesFeeByReconciliationOrderId(reconciliationOrderId); - statisticsOrderInfoEntity.setChangesFee(changesFee); + reconciliationOrderInfo.setChangesFee(changesFee); - baseMapper.updateById(statisticsOrderInfoEntity); + reconciliationOrderInfoService.updateById(reconciliationOrderInfo); } 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 new file mode 100644 index 000000000..205a5cbff --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsReconciliationOrderInfoServiceImpl.java @@ -0,0 +1,38 @@ +package com.logpm.statistics.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.logpm.statistics.dto.MerchantStatisticsDTO; +import com.logpm.statistics.entity.StatisticsReconciliationOrderInfoEntity; +import com.logpm.statistics.mapper.StatisticsReconciliationOrderInfoMapper; +import com.logpm.statistics.service.IStatisticsReconciliationOrderInfoService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.utils.CommonUtil; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; + +@Service +@Slf4j +@AllArgsConstructor +public class StatisticsReconciliationOrderInfoServiceImpl extends BaseServiceImpl implements IStatisticsReconciliationOrderInfoService { + @Override + public IPage pageReconciliationList(MerchantStatisticsDTO merchantStatisticsDTO) { + + IPage page = new Page<>(); + page.setCurrent(merchantStatisticsDTO.getPageNum()); + page.setSize(merchantStatisticsDTO.getPageSize()); + + merchantStatisticsDTO.setOpenTimeStart(CommonUtil.getStartByDateStr(merchantStatisticsDTO.getOpenTimeStartStr())); + merchantStatisticsDTO.setOpenTimeEnd(CommonUtil.getEndByDateStr(merchantStatisticsDTO.getOpenTimeEndStr())); + + return baseMapper.pageReconciliationList(page, merchantStatisticsDTO); + } + + @Override + public void addAftersalesFeeById(Long reconciliationOrderId, BigDecimal aftersalesFee) { + baseMapper.addAftersalesFeeById(reconciliationOrderId,aftersalesFee); + } +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsTrunklinePackageServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsTrunklinePackageServiceImpl.java index 35fad7f45..a55b1fde7 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsTrunklinePackageServiceImpl.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsTrunklinePackageServiceImpl.java @@ -8,12 +8,15 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + @Service @AllArgsConstructor @Slf4j public class StatisticsTrunklinePackageServiceImpl extends BaseServiceImpl implements IStatisticsTrunklinePackageService { + @Override - public void deleteListByWaybillId(Long waybillId) { - baseMapper.deleteListByWaybillId(waybillId); + public void deleteListByOrderInfoIds(List orderInfoIdsList) { + baseMapper.deleteListByOrderInfoIds(orderInfoIdsList); } } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsWarehousePackageServiceImpl.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsWarehousePackageServiceImpl.java index 47d6198f0..dd6cf641f 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsWarehousePackageServiceImpl.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/service/impl/StatisticsWarehousePackageServiceImpl.java @@ -8,8 +8,14 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service @AllArgsConstructor public class StatisticsWarehousePackageServiceImpl extends BaseServiceImpl implements IStatisticsWarehousePackageService { + @Override + public void deleteListByOrderInfoIds(List orderInfoIdsList) { + baseMapper.deleteListByOrderInfoIds(orderInfoIdsList); + } } diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoExportVO.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoExportVO.java new file mode 100644 index 000000000..0174a7bb7 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsOrderInfoExportVO.java @@ -0,0 +1,183 @@ +package com.logpm.statistics.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class StatisticsOrderInfoExportVO implements Serializable { + + @ExcelIgnore + private Long orderInfoId; + @ExcelProperty(value = "品牌") + private String brand; // 品牌 + + @ExcelProperty(value = "运单号") + private String waybillNo; // 运单号 + + @ExcelProperty(value = "订单号") + private String orderCode;//订单号 + + @ExcelProperty(value = "商家服务类型") + private String typeService; // 商家服务类型 + + @ExcelProperty(value = "发货单位") + private String shipper; // 发货单位 + + @ExcelProperty(value = "发货人") + private String shipperPerson; // 发货人 + + @ExcelProperty(value = "发货电话") + private String shipperMobile; // 发货电话 + + @ExcelProperty(value = "发货地址") + private String shipperAddress; // 发货地址 + + @ExcelProperty(value = "收货单位") + private String consignee; // 收货单位 + + @ExcelProperty(value = "收货人") + private String consigneePerson; // 收货人 + + @ExcelProperty(value = "收货电话") + private String consigneeMobile; // 收货电话 + + @ExcelProperty(value = "收货地址") + private String consigneeAddress; // 收货地址 + + @ExcelProperty(value = "订单签收状态") + private String signStatus; // 订单签收状态 + + @ExcelProperty(value = "签收时间") + private Date signDate; // 签收时间 + + @ExcelProperty(value = "开单时间") + private Date openTime; // 开单时间 + + @ExcelProperty(value = "发站仓") + private String departureWarehouseName; // 发站仓 + + @ExcelProperty(value = "目的仓") + private String destinationWarehouseName; // 目的仓 + + @ExcelProperty(value = "发站") + private String departure; // 发站 + + @ExcelProperty(value = "到站") + private String destination; // 到站 + + @ExcelProperty(value = "客户车次号") + private String customerTrain; // 客户车次号 + + @ExcelProperty(value = "支付类型") + private String payType; // 支付类型 + + @ExcelProperty(value = "支付方式") + private String payWay; // 支付方式 + + @ExcelProperty(value = "物料品类") + private String goodsName; // 物料品类 + + @ExcelProperty(value = "订单数量") + private Integer totalNum; // 订单数量 + + @ExcelProperty(value = "订单重量") + private BigDecimal totalWeight; // 订单重量 + + @ExcelProperty(value = "订单体积") + private BigDecimal totalVolume; // 订单体积 + + @ExcelProperty(value = "系统运费") + private BigDecimal systemFreightPrice; + + @ExcelProperty(value = "运费") + private BigDecimal freightPrice; + + @ExcelProperty(value = "系统提货费") + private BigDecimal systemPickupPrice; + + @ExcelProperty(value = "提货费") + private BigDecimal pickupPrice; + + @ExcelProperty(value = "仓储服务费") + private BigDecimal warehouseServiceFee; + + @ExcelProperty(value = "仓储费") + private BigDecimal warehouseFee; + + @ExcelProperty(value = "仓储管理费") + private BigDecimal warehouseManageFee; + + @ExcelProperty(value = "仓储分拣费") + private BigDecimal warehouseSortingFee; + + @ExcelProperty(value = "仓储操作费") + private BigDecimal warehouseOperatingFee; + + @ExcelProperty(value = "系统配送费") + private BigDecimal systemDeliveryFee; + + @ExcelProperty(value = "配送费") + private BigDecimal deliveryFee; + + @ExcelProperty(value = "配送服务费") + private BigDecimal deliveryServiceFee; + + @ExcelProperty(value = "配送装车费") + private BigDecimal deliveryLoadingFee; + + @ExcelProperty(value = "配送分拣费") + private BigDecimal deliverySortingFee; + + @ExcelProperty(value = "配送上楼费") + private BigDecimal deliveryUpfloorFee; + + @ExcelProperty(value = "配送搬运费") + private BigDecimal deliveryMoveFee; + + @ExcelProperty(value = "配送其他费") + private BigDecimal deliveryOtherFee; + + @ExcelProperty(value = "配送过路费") + private BigDecimal deliveryCrossingFee; + + @ExcelProperty(value = "在库周期") + private Integer cycle; // 在库周期 + + @ExcelProperty(value = "结算方类型") + private String cleanObjType; // 结算方 + + @ExcelProperty(value = "费用区间") + private String warehouseFeeInterval; // 费用区间 + + @ExcelProperty(value = "安装费") + private BigDecimal installFee = BigDecimal.ZERO; // 安装费 + + @ExcelProperty(value = "其他费") + private BigDecimal otherFee = BigDecimal.ZERO; // 其他费 + + @ExcelProperty(value = "签收次数") + private Integer signNum; + + @ExcelProperty(value = "最后签收时间") + private Date signTime; // 最晚一条 + + @ExcelProperty(value = "同步费用状态") + private Integer syncFeeStatus; + + @ExcelProperty(value = "同步费用时间") + private Date syncFeeDate; + + @ExcelProperty(value = "生成对账单状态") + private Integer createReconciliationOrderStatus; // 0未生成 1已生成 + + @ExcelProperty(value = "生成对账单确认人") + private String createReconciliationUserName; // 生成对账单确认人 + + @ExcelProperty(value = "生成对账单时间") + private Date createReconciliationDate; // 生成对账单时间 +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsPackageFeeInfoVO.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsPackageFeeInfoVO.java new file mode 100644 index 000000000..4a3aa1d4a --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsPackageFeeInfoVO.java @@ -0,0 +1,45 @@ +package com.logpm.statistics.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class StatisticsPackageFeeInfoVO implements Serializable { + + private Long orderInfoId; + + private String goodsName;//物料品类 + + private Integer totalNum; + private BigDecimal totalWeight; + private BigDecimal totalVolume; + + + private BigDecimal systemFreightPrice; + private BigDecimal freightPrice; + private BigDecimal systemPickupPrice; + private BigDecimal pickupPrice; + + private BigDecimal warehouseServiceFee; + private BigDecimal warehouseFee; + private BigDecimal warehouseManageFee; + private BigDecimal warehouseSortingFee; + private BigDecimal warehouseOperatingFee; + + private BigDecimal systemDeliveryFee; + private BigDecimal deliveryFee; + private BigDecimal deliveryServiceFee; + private BigDecimal deliveryLoadingFee; + private BigDecimal deliverySortingFee; + private BigDecimal deliveryUpfloorFee; + private BigDecimal deliveryMoveFee; + private BigDecimal deliveryOtherFee; + private BigDecimal deliveryCrossingFee; + + private Integer signNum; + private Date signTime;//最晚一条 + +} diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsReconciliationOrderInfoExportVO.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsReconciliationOrderInfoExportVO.java new file mode 100644 index 000000000..d07d38b43 --- /dev/null +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/vo/StatisticsReconciliationOrderInfoExportVO.java @@ -0,0 +1,129 @@ +package com.logpm.statistics.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class StatisticsReconciliationOrderInfoExportVO implements Serializable { + + @ExcelProperty(value = "对账单号") + private String reconciliationOrderNo; // 对账单号 + + @ExcelProperty(value = "运单号") + private String waybillNo; // 运单号 + + @ExcelProperty(value = "订单号") + private String orderCode; // 订单号 + + @ExcelProperty(value = "品牌") + private String brand; // 品牌 + + @ExcelProperty(value = "收货单位") + private String consignee; // 收货单位 + + @ExcelProperty(value = "目的仓名称") + private String destinationWarehouseName; // 目的仓名称 + + @ExcelProperty(value = "总数量") + private Integer totalNum; // 总数量 + + @ExcelProperty(value = "总重量") + private BigDecimal totalWeight; // 总重量 + + @ExcelProperty(value = "总体积") + private BigDecimal totalVolume; // 总体积 + + @ExcelProperty(value = "实际费用") + private BigDecimal realTotalFee; // 实际费用 + + @ExcelProperty(value = "提货费") + private BigDecimal pickupFee; // 提货费 + + @ExcelProperty(value = "运费") + private BigDecimal freightFee; // 运费 + + @ExcelProperty(value = "仓库服务费") + private BigDecimal warehouseServiceFee; // 仓库服务费 + + @ExcelProperty(value = "仓储费") + private BigDecimal warehouseFee; // 仓储费 + + @ExcelProperty(value = "仓储管理费") + private BigDecimal warehouseManageFee; // 仓储管理费 + + @ExcelProperty(value = "仓储分拣费") + private BigDecimal warehouseSortingFee; // 仓储分拣费 + + @ExcelProperty(value = "仓储操作费") + private BigDecimal warehouseOperatingFee; // 仓储操作费 + + @ExcelProperty(value = "配送费") + private BigDecimal deliveryFee; // 配送费 + + @ExcelProperty(value = "配送服务费") + private BigDecimal deliveryServiceFee; // 配送服务费 + + @ExcelProperty(value = "配送装卸费") + private BigDecimal deliveryLoadingFee; // 配送装卸费 + + @ExcelProperty(value = "配送分拣费") + private BigDecimal deliverySortingFee; // 配送分拣费 + + @ExcelProperty(value = "配送上楼费") + private BigDecimal deliveryUpfloorFee; // 配送上楼费 + + @ExcelProperty(value = "配送平移费") + private BigDecimal deliveryMoveFee; // 配送平移费 + + @ExcelProperty(value = "配送其他费") + private BigDecimal deliveryOtherFee; // 配送其他费 + + @ExcelProperty(value = "超区费") + private BigDecimal deliveryCrossingFee; // 超区费 + + @ExcelProperty(value = "安装费") + private BigDecimal installFee; // 安装费 + + @ExcelProperty(value = "其他费") + private BigDecimal otherFee; // 其他费 + + @ExcelProperty(value = "是否有售后") + private String isAftersale; // 是否有售后 + + @ExcelProperty(value = "售后单号") + private String aftersaleOrder; // 售后单号 + + @ExcelProperty(value = "售后金额") + private BigDecimal aftersalesFee; // 售后金额 + + @ExcelProperty(value = "创建人") + private String createUserName; // 创建人 + + @ExcelProperty(value = "是否有异动") + private String isChanges; // 是否有异动 0 否 1 是 + + @ExcelProperty(value = "异动金额") + private BigDecimal changesFee; // 异动金额 + + @ExcelProperty(value = "异动栏目") + private String changesItems; // 异动栏目 + + @ExcelProperty(value = "异动备注") + private String changesRemark; // 异动备注 + + @ExcelProperty(value = "异动时间") + private Date changesTime; // 异动时间 + + @ExcelProperty(value = "确认结算状态") + private String checkStatus; // 确认结算状态 0为确认 1已确认 + + @ExcelProperty(value = "确认人") + private String checkUserName; // 确认人 + + @ExcelProperty(value = "确认时间") + private Date checkTime; // 确认时间 +} diff --git a/blade-service/logpm-statisticsdata/src/main/resources/application-test.yml b/blade-service/logpm-statisticsdata/src/main/resources/application-test.yml index ed72a5140..ea213d24f 100644 --- a/blade-service/logpm-statisticsdata/src/main/resources/application-test.yml +++ b/blade-service/logpm-statisticsdata/src/main/resources/application-test.yml @@ -51,11 +51,4 @@ spring: url: ${blade.datasource.statisticsdata.master.url} username: ${blade.datasource.statisticsdata.master.username} password: ${blade.datasource.statisticsdata.master.password} - 627683: - url: ${blade.datasource.statisticsdata.627683.url} - username: ${blade.datasource.statisticsdata.627683.username} - password: ${blade.datasource.statisticsdata.627683.password} - 695224: - url: ${blade.datasource.statisticsdata.695224.url} - username: ${blade.datasource.statisticsdata.695224.username} - password: ${blade.datasource.statisticsdata.695224.password} + diff --git a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.java b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.java index 68b565715..8bfe5793f 100644 --- a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.java +++ b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.java @@ -30,4 +30,6 @@ public interface ClassifyMapper extends BaseMapper { List selectAllClassifyList(@Param("pid") Long pid,@Param("list")List list); List exportList(@Param("param") ClassifyDTO classifyDTO); + + List findAll(); } diff --git a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.xml b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.xml index 7a55b6322..87352026f 100644 --- a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.xml +++ b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/mapper/ClassifyMapper.xml @@ -111,6 +111,10 @@ order by create_time desc + diff --git a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/service/impl/ClassifyServiceImpl.java b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/service/impl/ClassifyServiceImpl.java index 8752d2a22..88483b939 100644 --- a/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/service/impl/ClassifyServiceImpl.java +++ b/blade-service/logpm-supervise/src/main/java/com/logpm/supervise/service/impl/ClassifyServiceImpl.java @@ -119,6 +119,10 @@ public class ClassifyServiceImpl extends BaseServiceImpl all = baseMapper.findAll(); + IPage pages = baseMapper.pageList(page, classifyDTO); List records = pages.getRecords(); @@ -143,22 +147,27 @@ public class ClassifyServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("classify_id", classifyId) - .eq("is_deleted", 0); - List list = pointsService.list(queryWrapper); - String pointStr = ""; - for (PointsEntity pointsEntity : list) { - if(StringUtil.isBlank(pointStr)){ - pointStr = pointStr + pointsEntity.getPoint(); - }else{ - pointStr = pointStr + "," + pointsEntity.getPoint(); + + ClassifyEntity classifyEntity =all.stream().filter(item -> item.getId().equals(pId1)).findFirst().orElse(null); + + if(classifyEntity!=null){ + record.setParentClassifyName(classifyEntity.getName()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("classify_id", classifyId) + .eq("is_deleted", 0); + List list = pointsService.list(queryWrapper); + String pointStr = ""; + for (PointsEntity pointsEntity : list) { + if(StringUtil.isBlank(pointStr)){ + pointStr = pointStr + pointsEntity.getPoint(); + }else{ + pointStr = pointStr + "," + pointsEntity.getPoint(); + } } + record.setPointStr(pointStr); + record.setPointsEntities(list); } - record.setPointStr(pointStr); - record.setPointsEntities(list); + } } diff --git a/blade-service/logpm-supervise/src/main/resources/application-dev.yml b/blade-service/logpm-supervise/src/main/resources/application-dev.yml index c095b463d..73cae6cd9 100644 --- a/blade-service/logpm-supervise/src/main/resources/application-dev.yml +++ b/blade-service/logpm-supervise/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: diff --git a/blade-service/logpm-supervise/src/main/resources/application-test.yml b/blade-service/logpm-supervise/src/main/resources/application-test.yml index 52e792bb7..ea38e3d37 100644 --- a/blade-service/logpm-supervise/src/main/resources/application-test.yml +++ b/blade-service/logpm-supervise/src/main/resources/application-test.yml @@ -12,7 +12,7 @@ server: spring: #排除DruidDataSourceAutoConfigure autoconfigure: - exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration + exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: druid: diff --git a/blade-service/logpm-trunkline/pom.xml b/blade-service/logpm-trunkline/pom.xml index b637c5515..49fedc3b4 100644 --- a/blade-service/logpm-trunkline/pom.xml +++ b/blade-service/logpm-trunkline/pom.xml @@ -75,6 +75,12 @@ org.springframework.boot spring-boot-starter-amqp + + org.springblade + logpm-statisticsdata-api + 3.2.0.RELEASE + compile + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/CarsLoadApiController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/CarsLoadApiController.java index 6dc0915ea..8843461e0 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/CarsLoadApiController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/CarsLoadApiController.java @@ -1,11 +1,13 @@ package com.logpm.trunkline.api; +import cn.hutool.core.collection.CollUtil; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import com.logpm.trunkline.dto.LoadCarsDTO; import com.logpm.trunkline.dto.LoadingPackageDTO; import com.logpm.trunkline.dto.LoadingZeroDTO; +import com.logpm.trunkline.dto.ZeroPackageDTO; import com.logpm.trunkline.service.ITrunklineCarsLoadService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -420,8 +422,7 @@ public class CarsLoadApiController { String trayCode = loadCarsDTO.getTrayCode(); Integer enterNum = loadCarsDTO.getEnterNum(); String orderCode = loadCarsDTO.getOrderCode(); - -// List productInfoList = loadCarsDTO.getProductInfoList(); + List zeroPackageList = loadCarsDTO.getZeroPackageList(); try{ //当前登录人选择的仓库 @@ -457,7 +458,7 @@ public class CarsLoadApiController { // return R.fail(405,"零担品类信息为空"); // } - return carsLoadService.loadingZero(loadId,myCurrentWarehouse.getId(),waybillNo,orderCode,trayCode,enterNum,"正常装车"); + return carsLoadService.loadingZero(loadId,myCurrentWarehouse.getId(),waybillNo,orderCode,trayCode,enterNum,"正常装车",zeroPackageList); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); @@ -585,6 +586,7 @@ public class CarsLoadApiController { String trayCode = loadCarsDTO.getTrayCode(); String orderCode = loadCarsDTO.getOrderCode(); Long carsLoadScanId = loadCarsDTO.getCarsLoadScanId(); + List zeroPackageList = loadCarsDTO.getZeroPackageList(); try{ @@ -607,8 +609,12 @@ public class CarsLoadApiController { log.warn(method+"订单号为空 orderCode={}",orderCode); return R.fail(405,"订单号为空"); } + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn(method+"品类信息为空 zeroPackageList={}",zeroPackageList); + return R.fail(405,"品类信息为空"); + } - return carsLoadService.unloadZero(carsLoadScanId,loadId,waybillNo,enterNum,myCurrentWarehouse.getId(),1,trayCode,orderCode,"零担正常卸车",null,null); + return carsLoadService.unloadZero(carsLoadScanId,loadId,waybillNo,enterNum,myCurrentWarehouse.getId(),1,trayCode,orderCode,"零担正常卸车",null,null,zeroPackageList); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); @@ -925,6 +931,8 @@ public class CarsLoadApiController { Long signOrderId = loadCarsDTO.getSignOrderId(); Long carsLoadScanId = loadCarsDTO.getCarsLoadScanId(); Integer enterNum = loadCarsDTO.getEnterNum(); + List zeroPackageList = loadCarsDTO.getZeroPackageList(); + try{ @@ -945,7 +953,12 @@ public class CarsLoadApiController { return R.fail(405,"签收零担id为空"); } - return carsLoadService.signZeroOrder(signOrderId,carsLoadScanId,enterNum,"PDA录入签收"); + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn(method+"品类信息为空 zeroPackageList={}",zeroPackageList); + return R.fail(405,"品类信息为空"); + } + + return carsLoadService.signZeroOrder(signOrderId,carsLoadScanId,enterNum,"PDA录入签收",zeroPackageList); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/TripartiteTransferApiController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/TripartiteTransferApiController.java index 5195eb533..9e9e6b808 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/TripartiteTransferApiController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/api/TripartiteTransferApiController.java @@ -1,11 +1,13 @@ package com.logpm.trunkline.api; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import com.logpm.trunkline.dto.BatchUnloadDTO; import com.logpm.trunkline.dto.LoadCarsDTO; +import com.logpm.trunkline.dto.ZeroPackageDTO; import com.logpm.trunkline.service.ITrunklineCarsLoadService; import com.logpm.trunkline.vo.TripartiteTransferVO; import io.swagger.annotations.Api; @@ -17,6 +19,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Objects; @Slf4j @@ -135,6 +138,7 @@ public class TripartiteTransferApiController { String trayCode = loadCarsDTO.getTrayCode(); String orderCode = loadCarsDTO.getOrderCode(); Long carsLoadScanId = loadCarsDTO.getCarsLoadScanId(); + List zeroPackageList = loadCarsDTO.getZeroPackageList(); try{ @@ -157,8 +161,12 @@ public class TripartiteTransferApiController { log.warn(method+"订单号为空 orderCode={}",orderCode); return R.fail(405,"订单号为空"); } + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn(method+"品类信息为空 zeroPackageList={}",zeroPackageList); + return R.fail(405,"品类信息为空"); + } - return carsLoadService.transferUnloadZero(carsLoadScanId,loadId,waybillNo,enterNum,myCurrentWarehouse.getId(),1,trayCode,orderCode,"零担正常卸车"); + return carsLoadService.transferUnloadZero(carsLoadScanId,loadId,waybillNo,enterNum,myCurrentWarehouse.getId(),1,trayCode,orderCode,"零担正常卸车",zeroPackageList); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java index aa6ab07af..58c9f1532 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java @@ -1,5 +1,6 @@ package com.logpm.trunkline.controller; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -1214,8 +1215,8 @@ public class CarsLoadController { // loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId()); if(Objects.isNull(loadId)){ - log.warn(method+"三方中转id为空 loadId={}",loadId); - return R.fail(400,"三方中转id为空"); + log.warn(method+"配载id为空 loadId={}",loadId); + return R.fail(400,"配载id为空"); } return carsLoadService.loadingDetail(loadCarsDTO); @@ -1242,6 +1243,40 @@ public class CarsLoadController { } + @ResponseBody + @PostMapping("/findZeroDetailByCarsLoadScanId") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "查询零担品类信息", notes = "传入loadCarsDTO") + public R findZeroDetailByCarsLoadScanId(@RequestBody LoadCarsDTO loadCarsDTO) { + String method = "############findZeroDetailByCarsLoadScanId: "; + log.info(method+"请求参数{}",loadCarsDTO); + Long carsLoadScanId = loadCarsDTO.getCarsLoadScanId(); + try{ + + //当前登录人选择的仓库 +// BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); +// if(Objects.isNull(myCurrentWarehouse)){ +// log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse); +// return R.fail(400,"多仓权限无法操作,请选择仓库"); +// } +// loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId()); + + if(Objects.isNull(carsLoadScanId)){ + log.warn(method+"装车零担id为空 carsLoadScanId={}",carsLoadScanId); + return R.fail(400,"装车零担id为空"); + } + + return carsLoadService.findZeroDetailByCarsLoadScanId(carsLoadScanId); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,"系统异常"); + } + } + + @ResponseBody @PostMapping("/carsLoadDetailInfo") @@ -1407,6 +1442,7 @@ public class CarsLoadController { String orderCode = zeroSuppleVO.getOrderCode(); Integer enterNum = zeroSuppleVO.getEnterNum(); Long finalNodeId = zeroSuppleVO.getFinalNodeId(); + List zeroPackageList = zeroSuppleVO.getZeroPackageList(); if(StringUtil.isBlank(waybillNo)){ log.warn(method+"运单号为空 waybillNo={}",waybillNo); @@ -1427,6 +1463,12 @@ public class CarsLoadController { log.warn(method+"目的仓id为空 finalNodeId={}",finalNodeId); return R.fail(405,"目的仓id为空"); } + + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn(method+"品类信息为空 zeroPackageList={}",zeroPackageList); + return R.fail(405,"品类信息为空"); + } + } return carsLoadService.addZeroSupple(loadCarsDTO); @@ -1976,6 +2018,7 @@ public class CarsLoadController { Long signOrderId = loadCarsDTO.getSignOrderId(); Long carsLoadScanId = loadCarsDTO.getCarsLoadScanId(); Integer enterNum = loadCarsDTO.getEnterNum(); + List zeroPackageList = loadCarsDTO.getZeroPackageList(); try{ @@ -1996,7 +2039,12 @@ public class CarsLoadController { return R.fail(405,"签收零担id为空"); } - return carsLoadService.signZeroOrder(signOrderId,carsLoadScanId,enterNum,"PC录入签收"); + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn(method+"品类信息为空 zeroPackageList={}",zeroPackageList); + return R.fail(405,"品类信息为空"); + } + + return carsLoadService.signZeroOrder(signOrderId,carsLoadScanId,enterNum,"PC录入签收",zeroPackageList); }catch (CustomerException e){ log.error(e.message,e); return R.fail(e.code,e.message); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java index 9058c76e9..80841d122 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java @@ -1433,6 +1433,43 @@ public class OpenOrderController { } } + @ResponseBody + @PostMapping("/cancleCheckWaybill") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "审核运单", notes = "传入openOrderDTO") + public R cancleCheckWaybill(@RequestBody OpenOrderDTO openOrderDTO) { + String method = "############cancleCheckWaybill: "; + log.info(method + "请求参数{}", openOrderDTO); + + Long waybillId = openOrderDTO.getWaybillId(); + + try{ + + //当前登录人选择的仓库 + BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); + if(Objects.isNull(myCurrentWarehouse)){ + log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse); + return R.fail(403,"多仓权限无法操作,请选择仓库"); + } + openOrderDTO.setWarehouseId(myCurrentWarehouse.getId()); + openOrderDTO.setWarehouseName(myCurrentWarehouse.getName()); + + if(Objects.isNull(waybillId)){ + log.warn(method+"运单id为空 waybillId={}",waybillId); + return R.fail(403,"运单id为空"); + } + return openOrderService.cancleCheckWaybill(openOrderDTO); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,"系统异常"); + } + } + + + @ResponseBody @PostMapping("/openNoPackageWaybill") @ApiOperationSupport(order = 1) diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/TripartiteTransferController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/TripartiteTransferController.java index e3a5d7ea8..af225e61c 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/TripartiteTransferController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/TripartiteTransferController.java @@ -175,6 +175,38 @@ public class TripartiteTransferController { } + @ResponseBody + @PostMapping("/startCarsBefore") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "三方中转发车前验证", notes = "传入loadCarsDTO") + public R startCarsBefore(@RequestBody LoadCarsDTO loadCarsDTO) { + String method = "############startCars: "; + log.info(method+"请求参数{}",loadCarsDTO); + Long loadId = loadCarsDTO.getLoadId(); + try{ + + //当前登录人选择的仓库 + BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); + if(Objects.isNull(myCurrentWarehouse)){ + log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse); + return R.fail(400,"多仓权限无法操作,请选择仓库"); + } + if(Objects.isNull(loadId)){ + log.warn(method+"三方中转id为空 loadId={}",loadId); + return R.fail(400,"三方中转id为空"); + } + + + return carsLoadService.startCarsBefore(loadId,myCurrentWarehouse.getId()); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,"系统异常"); + } + } + @ResponseBody @PostMapping("/startCars") @ApiOperationSupport(order = 1) @@ -392,6 +424,7 @@ public class TripartiteTransferController { String carNumber = carsLoadDTO.getCarNumber(); String remark = carsLoadDTO.getRemark(); String loadType = carsLoadDTO.getLoadType(); + String deliveryType = carsLoadDTO.getDeliveryType(); try{ @@ -406,18 +439,26 @@ public class TripartiteTransferController { log.warn(method+"配载id为空 loadId={}",loadId); return R.fail(400,"配载id为空"); } - if(Objects.isNull(driverId)){ - log.warn(method+"司机id为空 driverId={}",driverId); - return R.fail(400,"司机id为空"); - } - if(StringUtil.isBlank(driverName)){ - log.warn(method+"司机名称为空 driverName={}",driverName); - return R.fail(400,"司机名称为空"); + if(StringUtil.isBlank(deliveryType)){ + log.warn(method+"送货方式为空 deliveryType={}",deliveryType); + return R.fail(400,"送货方式为空"); } - if(StringUtil.isBlank(driverMobile)){ - log.warn(method+"司机电话为空 driverMobile={}",driverMobile); - return R.fail(400,"司机电话为空"); + + if(deliveryType.equals("2")){ + if(Objects.isNull(driverId)){ + log.warn(method+"司机id为空 driverId={}",driverId); + return R.fail(400,"司机id为空"); + } + + if(StringUtil.isBlank(driverName)){ + log.warn(method+"司机名称为空 driverName={}",driverName); + return R.fail(400,"司机名称为空"); + } + if(StringUtil.isBlank(driverMobile)){ + log.warn(method+"司机电话为空 driverMobile={}",driverMobile); + return R.fail(400,"司机电话为空"); + } } if(StringUtil.isBlank(chargeType)){ diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/ExtractedDataClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/ExtractedDataClient.java new file mode 100644 index 000000000..490b31964 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/ExtractedDataClient.java @@ -0,0 +1,89 @@ +package com.logpm.trunkline.feign; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.logpm.trunkline.entity.TrunklineAdvanceEntity; +import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; +import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity; +import com.logpm.trunkline.entity.TrunklineWaybillTrackEntity; +import com.logpm.trunkline.service.IAsyncService; +import com.logpm.trunkline.service.ITrunklineWaybillTrackService; +import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO; +import com.logpm.warehouse.entity.WarehouseWayBillDetail; +import com.logpm.warehouse.entity.WarehouseWaybillEntity; +import com.logpm.warehouse.feign.IWarehouseWaybillClient; +import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.system.entity.Tenant; +import org.springblade.system.feign.ISysClient; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +@Slf4j +@ApiIgnore() +@RestController +@AllArgsConstructor +public class ExtractedDataClient implements IExtractedDataClient { + + private final IWarehouseWaybillClient warehouseWaybillClient; + + private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient; + + private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient; + + private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient; + + private final ITrunklineAdvanceClient trunklineAdvanceClient; + + private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient; + + private final IAsyncService asyncService; + + private final ITrunklineWaybillTrackService trunklineWaybillTrackService; + + @Override + public void execute(String tenantId, String wallbillNum) { + + + WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(wallbillNum); + if (byWaybillNo == null) { + log.warn(">>>>>>>>>>>>>>byWaybillNo {} ", byWaybillNo); + return; + } + + List waybillIds = new ArrayList<>(); + waybillIds.add(byWaybillNo.getId()); + + List warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillId(byWaybillNo.getId()); + + List trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillNo(byWaybillNo.getWaybillNo()); + + List trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds); + + // 暂存单ID集合 + List collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList()); + if(!collect.isEmpty()){ + List trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect); + List trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect); + // 获取暂存单明细 + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillId, byWaybillNo.getId()); + queryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10"); + List list = trunklineWaybillTrackService.list(queryWrapper); + TrunklineWaybillTrackEntity trunklineWaybillTrackEntity = list.get(0); + CompletableFuture.supplyAsync(() -> { + asyncService.saveOtherData(tenantId, byWaybillNo, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, trunklineWaybillTrackEntity); + return null; + }); + } + + + + } +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceClient.java index 8b8e6ba8c..d11bf2b4b 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceClient.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceClient.java @@ -49,4 +49,12 @@ public class TrunklineAdvanceClient implements ITrunklineAdvanceClient{ public Boolean cancelOrder(CancelOrderParamVO orderCode) { return advanceService.cancelOrder(orderCode.getOrderCode()); } + + @Override + public List findListByWaybillNo(String waybillNo) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("waybill_no",waybillNo) + .eq("is_deleted",0); + return advanceService.list(queryWrapper); + } } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceDetailClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceDetailClient.java index ff564343c..95f0ff045 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceDetailClient.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineAdvanceDetailClient.java @@ -1,5 +1,6 @@ package com.logpm.trunkline.feign; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; import com.logpm.trunkline.service.ITrunklineAdvanceDetailService; import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO; @@ -32,4 +33,12 @@ public class TrunklineAdvanceDetailClient implements ITrunklineAdvanceDetailClie public TrunklineAdvanceDetailEntity findEntityByOrderPackageCode(String orderPackageCode) { return advanceDetailService.findEntityByOrderPackageCode(orderPackageCode); } + + @Override + public List findListByWaybillId(Long waybillId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("waybill_id",waybillId) + .eq("is_deleted",0); + return advanceDetailService.list(queryWrapper); + } } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineScanZeroDetailClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineScanZeroDetailClient.java new file mode 100644 index 000000000..d1c4da8f8 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineScanZeroDetailClient.java @@ -0,0 +1,32 @@ +package com.logpm.trunkline.feign; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import com.logpm.trunkline.service.ITrunklineScanZeroDetailService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +@Slf4j +@ApiIgnore() +@RestController +@AllArgsConstructor +public class TrunklineScanZeroDetailClient implements ITrunklineScanZeroDetailClient{ + + private final ITrunklineScanZeroDetailService trunklineScanZeroDetailService; + + @Override + public List findListByCarsLoadScanId(Long carsLoadScanId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("scan_id",carsLoadScanId); + return trunklineScanZeroDetailService.list(queryWrapper); + } + + @Override + public void updateBetch(List updateScanZeroDetailEntityList) { + trunklineScanZeroDetailService.updateBatchById(updateScanZeroDetailEntityList); + } +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.java index fed8426ca..1a52258b3 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.java @@ -77,4 +77,8 @@ public interface TrunklineAdvanceDetailMapper extends BaseMapper findAdvanceDetailListByAdvanceIds(@Param("param") AdvanceDTO advanceDTO); List findAdvanceDetailListByWaybillId(@Param("param") AdvanceDTO advanceDTO); + + List findTotalNumByOrderCodes(@Param("orderCodeSet") Set orderCodeSet); + + void clearWaybillInfoByWaybillId(@Param("waybillId") Long waybillId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml index f38eddc76..e625f8b00 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml @@ -361,6 +361,7 @@ left join logpm_basicdata_factory_category lbfc on lbfc.brand = ltad.brand and lbfc.firsts = ltad.first_pack_name and lbfc.seconds = ltad.second_pack_name and lbfc.thirds = ltad.third_pack_name left join logpm_basicdata_category lbc on lbc.id = lbfc.category_id where ltad.is_deleted = 0 + and lbfc.is_deleted=0 and ltad.advance_id in #{item} @@ -480,4 +481,24 @@ + + + + update logpm_trunkline_advance_detail + set waybill_id = null, + waybill_no = null + where waybill_id = #{waybillId} + and is_deleted = 0 + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.java index 26e5c5633..e58e6fa33 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.java @@ -45,4 +45,6 @@ public interface TrunklineAdvanceMapper extends BaseMapper + + update logpm_trunkline_advance + set waybill_id = null, + waybill_no = null, + waybill_status = '0' + where waybill_id = #{waybillId} + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.java index 92a13f4bb..0348ad393 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.java @@ -9,6 +9,7 @@ import com.logpm.trunkline.entity.TrunklineCarsLoadEntity; import com.logpm.trunkline.vo.CarsLoadAllOrderVO; import com.logpm.trunkline.vo.TripartiteTransferVO; import com.logpm.trunkline.vo.TrunklineCarsLoadVO; +import com.logpm.trunkline.vo.ZeroSuppleListVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -38,8 +39,8 @@ public interface TrunklineCarsLoadMapper extends BaseMapper findUseOrderListNoPage(@Param("param") LoadCarsDTO loadCarsDTO); - IPage findZeroListByWarehouseId(IPage page, @Param("param") LoadCarsDTO loadCarsDTO); - IPage findSignOrderZeroListByWarehouseId(IPage page, @Param("param") LoadCarsDTO loadCarsDTO); + IPage findZeroListByWarehouseId(IPage page, @Param("param") LoadCarsDTO loadCarsDTO); + IPage findSignOrderZeroListByWarehouseId(IPage page, @Param("param") LoadCarsDTO loadCarsDTO); IPage useZeroList(IPage page, @Param("param") LoadCarsDTO loadCarsDTO); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml index a9d626ec7..0dfa07ba1 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml @@ -404,6 +404,8 @@ ltcl.cars_no carsNo, ltcl.carrier_name carrierName, ltcl.carrier_time carrierTime, + ltcl.driver_name driverName, + ltcl.driver_mobile driverMobile, ltcl.pay_method payMethod, ltcl.count_transport_cost countTransportCost, ltcl.replace_price replacePrice, @@ -422,7 +424,7 @@ ltcl.settlement_value settlementValue, ltcl.settlement_person settlementPerson, ltcl.sign_time signTime, - IFNULL(sum(ltcls.num),0) signNum + IFNULL(sum(ltcls.unload_num),0) signNum from logpm_trunkline_cars_load ltcl left join logpm_trunkline_cars_load_scan ltcls on ltcls.load_id = ltcl.id and ltcls.scan_status = '3' where ltcl.is_deleted = 0 @@ -466,6 +468,9 @@ and Locate(#{param.settlementPerson},ltcl.settlement_person) > 0 + + and Locate(#{param.customerType},ltcl.customer_type) > 0 + and ltcl.create_time >= #{param.createTimeStart} @@ -550,10 +555,10 @@ - + select ldsa.id orderId, + ldsa.waybill_number waybillNo, ldsa.order_code orderCode, - ldsa.hand_quantity handQuantity, lww.create_time createTime, lww.destination destination, lww.destination_warehouse_name destinationWarehouseName, @@ -568,7 +573,6 @@ ldsa.hand_quantity stockNum, lww.customer_train customerTrain, IFNULL(lww.total_freight,0) totalFreight, - lww.total_count, lww.remark remark, ROUND(lww.total_freight/lww.total_count,2) price, ltlso.load_sign_code loadSignCode, @@ -692,10 +696,10 @@ - + select ldsa.id orderId, + ldsa.waybill_number waybillNo, ldsa.order_code orderCode, - ldsa.hand_quantity handQuantity, lww.create_time createTime, lww.destination destination, lww.destination_warehouse_name destinationWarehouseName, @@ -710,7 +714,6 @@ ldsa.hand_quantity stockNum, lww.customer_train customerTrain, IFNULL(lww.total_freight,0) totalFreight, - lww.total_count, lww.remark remark, ROUND(lww.total_freight/lww.total_count,2) price, ltlso.load_sign_code loadSignCode, diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java index 98db9c039..34d117d7d 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java @@ -171,4 +171,16 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper findAbnormalZeroScanList(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId); List findZeroStartNum(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId); + + List findAllIdListByLoadIdAndNoScanStatus(@Param("loadId") Long loadId, @Param("scanStatus") String scanStatus); + + List findTransferLoadScanWaybillList(@Param("loadId") Long loadId, @Param("nodeId") Long nodeId); + + List findUnloadPackageListByLoadIdAndFinalNodeId(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId); + + List findUnloadZeroListByLoadIdAndFinalNodeId(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId); + + List findSignPackageListBySignOrderId(@Param("signOrderId") Long signOrderId); + + List findAllIdListByLoadIdAndScanStatus(@Param("loadId") Long loadId, @Param("scanStatus") String scanStatus); } 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 a8bf03373..f56bf74a8 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 @@ -80,7 +80,8 @@ + + + + + + + + + + + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.java index 752d79d9a..7e5ebe138 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.java @@ -66,4 +66,8 @@ public interface TrunklineCarsOrderMapper extends BaseMapper findMallOrderList(@Param("carsOrderIdList") List carsOrderIdList); void deleteNoRealNumByLoadIdAndWarehouseId(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId); + + List findSignOrderListBySignOrderId(@Param("signOrderId") Long signOrderId); + + List findSignZeroOrderListBySignOrderId(@Param("signOrderId") Long signOrderId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.xml index d6f4ccaff..0e8a7f3e2 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.xml @@ -109,7 +109,7 @@ wb.create_time createTime, wb.destination destination, wb.destination_warehouse_name destinationWarehouseName, - IF(wb.check_user_id = NULL , 0,1) checkStatus, + IF(wb.check_user_id is null , 0,1) checkStatus, wb.shipper shipper, wb.shipper_name shipperName, wb.consignee consignee, @@ -178,11 +178,15 @@ IFNULL(lww.total_freight/lww.total_count*ltco.unload_num,0) unloadIncome, IFNULL(lww.total_freight/lww.total_count*ltco.plan_num,0) orderLineCost, ltwo.total_number orderNum, - sum(IF(ltcls.scan_status = '3',ltcls.num,0)) signNum + sum(IF(ltcls.scan_status = '3',ltcls.num,0)) signNum, + sum(ltcsr.cost_piece) costPiece, + sum(ltcsr.cost_zhang) costZhang, + sum(ltcsr.income) income from logpm_trunkline_cars_order ltco - left join logpm_trunkline_cars_load_scan ltcls on ltcls.waybill_no = ltco.waybill_no and ltcls.order_code = ltco.order_code - left join logpm_trunkline_waybill_order ltwo on ltwo.order_code = ltco.order_code and ltwo.waybill_no = ltco.waybill_no and ltwo.is_deleted = 0 - left join logpm_warehouse_waybill lww on lww.waybill_no = ltwo.waybill_no + left join logpm_trunkline_cars_load_scan ltcls on ltcls.waybill_no = ltco.waybill_no and ltcls.order_code = ltco.order_code + left join logpm_trunkline_waybill_order ltwo on ltwo.order_code = ltco.order_code and ltwo.waybill_no = ltco.waybill_no and ltwo.is_deleted = 0 + left join logpm_warehouse_waybill lww on lww.waybill_no = ltwo.waybill_no + left join logpm_trunkline_cost_share_record ltcsr on ltco.load_id = ltcsr.load_id and ltco.waybill_no = ltcsr.waybill_no and ltco.order_code = ltcsr.order_code and ltcls.scan_code = ltcsr.product_code where ltco.load_id = #{loadId} and ltco.waybill_no = #{waybillNo} group by ltco.order_code @@ -356,4 +360,26 @@ and real_num = 0 + + + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCostShareRecordMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCostShareRecordMapper.xml index c65016e51..53bcafbd7 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCostShareRecordMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCostShareRecordMapper.xml @@ -12,7 +12,7 @@ diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.java new file mode 100644 index 000000000..bfedd3cd3 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.java @@ -0,0 +1,23 @@ +package com.logpm.trunkline.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import com.logpm.trunkline.vo.GoodsLoadingNumVO; +import com.logpm.trunkline.vo.TrunklineScanZeroDetailVO; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper +public interface TrunklineScanZeroDetailMapper extends BaseMapper { + + List findListByCarsLoadScanId(@Param("carsLoadScanId") Long carsLoadScanId); + + List findListByCarsLoadScanIds(@Param("carsLoadScanIds") List carsLoadScanIds); + + List findGoodsLoadingNum(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId, @Param("waybillNo") String waybillNo, @Param("orderCode") String orderCode); + + void deleteListByCarsLoadScanIds(@Param("carsLoadScanIds") List carsLoadScanIds); + +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.xml new file mode 100644 index 000000000..5a9ce01d6 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineScanZeroDetailMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + delete from logpm_trunkline_scan_zero_detail + where scan_id in + + #{item} + + + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java index 2009edd3c..99f9b8ca8 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java @@ -8,10 +8,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity; import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity; import com.logpm.trunkline.entity.TrunklineWaybillTrackEntity; -import com.logpm.trunkline.feign.ITrunklineAdvanceClient; -import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient; -import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient; -import com.logpm.trunkline.feign.ITrunklineWaybillPackageClient; +import com.logpm.trunkline.feign.*; import com.logpm.trunkline.service.IAsyncService; import com.logpm.trunkline.service.ITrunklineWaybillTrackService; import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO; @@ -58,29 +55,18 @@ import java.util.stream.Collectors; //@RabbitListener(queues = RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_QUEUE) public class OpenWaybillToBusinessListener { - private final IWarehouseWaybillClient warehouseWaybillClient; - private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient; - - private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient; - - private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient; - - private final ITrunklineAdvanceClient trunklineAdvanceClient; - - private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient; private final ISysClient sysClient; - private final IAsyncService asyncService; - private ITrunklineWaybillTrackService trunklineWaybillTrackService; + private final IExtractedDataClient extractedDataClient; - @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_OPENWAYBILL_DATA), - exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) - )) - @Transactional(rollbackFor = Exception.class) +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_OPENWAYBILL_DATA), +// exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) +// )) +// @Transactional(rollbackFor = Exception.class) public void openWaybillToBusinessDataHandler(String message) { @@ -112,11 +98,11 @@ public class OpenWaybillToBusinessListener { } - @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_UPDATEWAYBILL_DATA), - exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) - )) - @Transactional(rollbackFor = Exception.class) +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_UPDATEWAYBILL_DATA), +// exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT) +// )) +// @Transactional(rollbackFor = Exception.class) public void updateWaybillToBusinessDataHandler(String message) { @@ -171,34 +157,7 @@ public class OpenWaybillToBusinessListener { private void extractedTenant(Tenant tenant, WarehouseWaybillEntity byWaybillId) { - List waybillIds = new ArrayList<>(); - waybillIds.add(byWaybillId.getId()); - - List warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillId(byWaybillId.getId()); - - List trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillIds(waybillIds); - - List trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds); - - // 暂存单ID集合 - List collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList()); - - List trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect); - - // 获取暂存单明细 - List trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect); - - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillId, byWaybillId.getId()); - queryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10"); - List list = trunklineWaybillTrackService.list(queryWrapper); - TrunklineWaybillTrackEntity trunklineWaybillTrackEntity = list.get(0); - Tenant finalTenant = tenant; - CompletableFuture.supplyAsync(() -> { - asyncService.saveOtherData(finalTenant.getTenantId(), byWaybillId, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, trunklineWaybillTrackEntity); - return null; - }); + extractedDataClient.execute(tenant.getTenantId(), byWaybillId.getWaybillNo()); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IInComingService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IInComingService.java index 1af3368d7..671c48edd 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IInComingService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IInComingService.java @@ -11,7 +11,6 @@ public interface IInComingService { R incomingPackages(InComingDTO inComingDTO); - @Transactional(rollbackFor = Exception.class) R incomingPackageByTaryCode(InComingDTO inComingDTO); R findIncomingOrderList(InComingDTO inComingDTO); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderAsyncService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderAsyncService.java index d75fcf07d..a7646fa31 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderAsyncService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderAsyncService.java @@ -10,10 +10,12 @@ public interface IOpenOrderAsyncService { void saveLog(Long waybillId, String waybillNo, String trackType, String refer, String operationRemark, String nickName,Long userId,Long warehouseId,String warehouseName); void saveStartCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity,String nickName,Long userId); + void saveTripartiteStartCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity,String nickName,Long userId); void saveCancelStartCarLog(TrunklineCarsLoadLineEntity currentCarsLoadLineEntity, String nickName,Long userId); void saveArriveCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity, String nickName,Long userId); + void saveTripartiteArriveCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity, String nickName,Long userId); void saveCancelArriveCarLog(TrunklineCarsLoadLineEntity currentCarsLoadLineEntity, String nickName,Long userId); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java index c04085ce5..3863dcb02 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java @@ -95,7 +95,7 @@ public interface IOpenOrderService { R findAdvanceDetailListByWaybillId(AdvanceDTO advanceDTO); - + R cancleCheckWaybill(OpenOrderDTO openOrderDTO); // R findWaybillInfo(String waybillNo); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java index 2d097a852..4d003eab1 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java @@ -87,4 +87,8 @@ public interface ITrunklineAdvanceDetailService extends BaseService findAdvanceDetailListByAdvanceIds(AdvanceDTO advanceDTO); List findAdvanceDetailListByWaybillId(AdvanceDTO advanceDTO); + + List findTotalNumByOrderCodes(Set orderCodeSet); + + void clearWaybillInfoByWaybillId(Long waybillId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceService.java index a826cd256..e240361fe 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceService.java @@ -46,4 +46,6 @@ public interface ITrunklineAdvanceService extends BaseService findPackageWithOrderList(Long loadId, Long warehouseId); List findUnloadPackageList(Long loadId, Long warehouseId, String waybillNo, String orderCode); + List findUnloadZeroList(Long loadId, Long warehouseId, String waybillNo, String orderCode); Integer findUnloadNumByLoadId(Long loadId); @@ -166,4 +167,16 @@ public interface ITrunklineCarsLoadScanService extends BaseService findAbnormalZeroScanList(Long loadId, Long warehouseId); List findZeroStartNum(Long loadId, Long warehouseId); + + List findAllIdListByLoadIdAndNoScanStatus(Long loadId, String scanStatus); + + List findTransferLoadScanWaybillList(Long loadId, Long nodeId); + + List findUnloadPackageListByLoadIdAndFinalNodeId(Long loadId, Long warehouseId); + + List findUnloadZeroListByLoadIdAndFinalNodeId(Long loadId, Long warehouseId); + + List findSignPackageListBySignOrderId(Long signOrderId); + + List findAllIdListByLoadIdAndScanStatus(Long loadId, String scanStatus); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java index 183fcd320..0648c2256 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.trunkline.dto.BatchUnloadDTO; import com.logpm.trunkline.dto.LoadCarsDTO; import com.logpm.trunkline.dto.TrunklineCarsLoadDTO; +import com.logpm.trunkline.dto.ZeroPackageDTO; import com.logpm.trunkline.entity.TrunklineCarsLoadEntity; import com.logpm.trunkline.vo.LoadingDetailExportVO; import com.logpm.trunkline.vo.TripartiteTransferVO; @@ -76,7 +77,7 @@ public interface ITrunklineCarsLoadService extends BaseService zeroPackageList); R findZeroAllocation(String orderCode, Long warehouseId); @@ -94,7 +95,7 @@ public interface ITrunklineCarsLoadService extends BaseService zeroPackageList); R findLoadScanWaybillDetailList(Long loadId, String orderCode, Long warehouseId); @@ -138,7 +139,7 @@ public interface ITrunklineCarsLoadService extends BaseService zeroPackageList); R transferUnloadTray(Long loadId, String trayCode, Long warehouseId); @@ -158,7 +159,7 @@ public interface ITrunklineCarsLoadService extends BaseService zeroPackageList); R findSignOrderList(LoadCarsDTO loadCarsDTO); @@ -223,4 +224,8 @@ public interface ITrunklineCarsLoadService extends BaseService findSignOrderListBySignOrderId(Long signOrderId); + + List findSignZeroOrderListBySignOrderId(Long signOrderId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineScanZeroDetailService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineScanZeroDetailService.java new file mode 100644 index 000000000..1175e4959 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineScanZeroDetailService.java @@ -0,0 +1,19 @@ +package com.logpm.trunkline.service; + +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import com.logpm.trunkline.vo.GoodsLoadingNumVO; +import com.logpm.trunkline.vo.TrunklineScanZeroDetailVO; +import org.springblade.core.mp.base.BaseService; + +import java.util.List; + +public interface ITrunklineScanZeroDetailService extends BaseService { + List findListByCarsLoadScanId(Long carsLoadScanId); + + List findListByCarsLoadScanIds(List carsLoadScanIds); + + List findGoodsLoadingNum(Long loadId, Long warehouseId, String waybillNo, String orderCode); + + void deleteListByCarsLoadScanIds(List carsLoadScanIds); + +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java index 0dc5b67d7..482e5be83 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java @@ -4,14 +4,18 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity; +import com.logpm.aftersales.entity.AftersalesAbnormalRecordZeroDetailEntity; import com.logpm.aftersales.feign.IAftersalesAbnormalRecordClient; +import com.logpm.aftersales.feign.IAftersalesAbnormalRecordZeroDetailClient; import com.logpm.aftersales.feign.IAftersalesWorkOrderClient; import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import com.logpm.distribution.entity.DistributionStockArticleEntity; +import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.distribution.feign.IDistributionStockArticleClient; import com.logpm.trunkline.entity.*; import com.logpm.trunkline.service.*; +import com.logpm.trunkline.vo.TrunklineScanZeroDetailVO; import com.logpm.trunkline.vo.UnloadReportVO; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.feign.IWarehouseWaybillClient; @@ -23,6 +27,7 @@ import org.springblade.common.constant.TenantNum; import org.springblade.common.constant.carsload.CarsLoadLogTypeConstant; import org.springblade.common.exception.CustomerException; import org.springblade.common.utils.CommonUtil; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.system.cache.DictBizCache; import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -33,6 +38,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -61,6 +67,14 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService { private ITrunklineCarsUnloadLogService trunklineCarsUnloadLogService; @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private IDistributionParcelListClient distributionParcelListClient; + @Autowired + private ITrunklineScanZeroDetailService trunklineScanZeroDetailService; + @Autowired + private IOpenOrderAsyncService openOrderAsyncService; + @Autowired + private IAftersalesAbnormalRecordZeroDetailClient abnormalRecordZeroDetailClient; @LogpmAsync("asyncExecutor") @Override @@ -271,6 +285,11 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService { BigDecimal countTransportCost = carsLoadEntity.getCountTransportCost(); Integer totalUnloadNum = trunklineCostShareRecordService.findTotalUnloadNumByLoad(loadId); + if(totalUnloadNum.equals(0)){ + log.warn("###############costShareZhang: 分摊件数为0"); + throw new CustomerException(405,"分摊件数为0"); + } + //计算单件成本 BigDecimal costPiece = countTransportCost.divide(new BigDecimal(totalUnloadNum),2, RoundingMode.HALF_UP); @@ -521,6 +540,9 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService { Integer num = carsLoadScanEntity.getNum(); String scanStatus = carsLoadScanEntity.getScanStatus(); Long fromWarehouseId = carsLoadScanEntity.getFromWarehouseId(); + WarehouseWaybillEntity warehouseWaybill = warehouseWaybillClient.findByWaybillNo(waybillNo); + Long waybillId = warehouseWaybill.getId(); + List zeroDetailVOList = trunklineScanZeroDetailService.findListByCarsLoadScanId(scanId); //卸车数量异常 AftersalesAbnormalRecordEntity abnormalRecordEntity = new AftersalesAbnormalRecordEntity(); @@ -547,7 +569,15 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService { DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, fromWarehouseId); if(!Objects.isNull(stockArticleEntity)){ distributionStockArticleClient.addHandQuantity(stockArticleEntity.getId(),num-unloadNum); + zeroDetailVOList.forEach(zeroDetailVO -> { + Long packageId = zeroDetailVO.getPackageId(); + Integer loadingNum = zeroDetailVO.getLoadingNum(); + Integer unloadNum1 = zeroDetailVO.getUnloadNum(); + distributionParcelListClient.addZeroQuantity(packageId,loadingNum-unloadNum1); + }); } + String content = warehouseName+"干线未签收卸车回库,总数/卸车数:"+num+"/"+num+",卸车时间"+ CommonUtil.dateToStringGeneral(new Date());; + openOrderAsyncService.saveLog(waybillId,waybillNo,"80","零担未签收回库",content,AuthUtil.getNickName(),AuthUtil.getUserId(),warehouseId,warehouseName); } abnormalRecordEntity.setSendOrderStatus(0); abnormalRecordEntity.setUpTime(new Date()); @@ -558,7 +588,34 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService { addList.add(abnormalRecordEntity); }); } - abnormalRecordClient.addAbnormalRecordList(addList); + List aftersalesAbnormalRecordEntities = abnormalRecordClient.addAbnormalRecordListReturnList(addList); + //把aftersalesAbnormalRecordEntities只保留isZero等于1的数据 + List abnormalRecordEntities1 = aftersalesAbnormalRecordEntities.stream().filter(abnormalRecordEntity -> abnormalRecordEntity.getIsZero() == 1).collect(Collectors.toList()); + //把abnormalRecordEntities1中所有元素associationId放入一个集合 + List associationIdList = abnormalRecordEntities1.stream().map(AftersalesAbnormalRecordEntity::getAssociationId).collect(Collectors.toList()); + List scanZeroDetailVOList = trunklineScanZeroDetailService.findListByCarsLoadScanIds(associationIdList); + //把scanZeroDetailVOList所有元素通过scanId进行分组 + Map> scanZeroDetailVOMap = scanZeroDetailVOList.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + List abnormalRecordZeroDetailEntityList = new ArrayList<>(); + abnormalRecordEntities1.forEach(abnormalRecordEntity -> { + Long associationId = abnormalRecordEntity.getAssociationId(); + List zeroDetailVOList = scanZeroDetailVOMap.get(associationId); + Long abnormalRecordId = abnormalRecordEntity.getId(); + zeroDetailVOList.forEach(zeroDetailVO -> { + AftersalesAbnormalRecordZeroDetailEntity abnormalRecordZeroDetailEntity = new AftersalesAbnormalRecordZeroDetailEntity(); + abnormalRecordZeroDetailEntity.setAbnormalRecordId(abnormalRecordId); + abnormalRecordZeroDetailEntity.setPackageId(zeroDetailVO.getPackageId()); + abnormalRecordZeroDetailEntity.setGoodsId(zeroDetailVO.getGoodsId()); + abnormalRecordZeroDetailEntity.setGoodsName(zeroDetailVO.getGoodsName()); + abnormalRecordZeroDetailEntity.setAbnormalNum(zeroDetailVO.getLoadingNum()-zeroDetailVO.getUnloadNum()); + abnormalRecordZeroDetailEntity.setReturnNum(0); + abnormalRecordZeroDetailEntity.setIncomingNum(0); + abnormalRecordZeroDetailEntityList.add(abnormalRecordZeroDetailEntity); + }); + }); + if(CollUtil.isNotEmpty(abnormalRecordZeroDetailEntityList)){ + abnormalRecordZeroDetailClient.addAbnormalRecordZeroDetail(abnormalRecordZeroDetailEntityList); + } } @LogpmAsync("asyncExecutor") diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java index 4d66d1aaf..cdfe4007e 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java @@ -170,6 +170,51 @@ public class OpenOrderAsyncServiceImpl implements IOpenOrderAsyncService { } + @LogpmAsync("asyncExecutor") + @Override + public void saveTripartiteStartCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity,String nickName,Long userId) { + Long loadId = carsLoadLineEntity.getLoadId(); + Integer sort = carsLoadLineEntity.getSort(); + + String tenantId = AuthUtil.getTenantId(); + BladeUser user = AuthUtil.getUser(); +// DynamicDataSourceContextHolder.push(tenantId); + + TrunklineCarsLoadEntity carsLoadEntity = trunklineCarsLoadService.getById(loadId); + if(Objects.isNull(carsLoadEntity)){ + log.warn("##############saveStartCarLog: 配载信息不存在 loadId={}",loadId); + return; + } + String carsNo = carsLoadEntity.getCarsNo(); + String carNumber = carsLoadEntity.getCarNumber(); + String driverName = carsLoadEntity.getDriverName(); + String driverMobile = carsLoadEntity.getDriverMobile(); + + Long nodeId = carsLoadLineEntity.getNodeId(); + String nodeName = carsLoadLineEntity.getNodeName(); + + List list = trunklineCarsLoadScanService.findTransferLoadScanWaybillList(loadId,nodeId); + + for (LoadScanWaybillVO loadScanWaybillVO : list) { + String waybillNo = loadScanWaybillVO.getWaybillNo(); + Integer num = loadScanWaybillVO.getNum(); + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); + if(Objects.isNull(waybillEntity)){ + log.warn("##############saveStartCarLog: 运单信息不存在 waybillNo={}",waybillNo); + continue; + } + Long waybillId = waybillEntity.getId(); + + String operationRemark = "运单装车"+num+"件 三方中转批次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+",司机手机:"+driverMobile; + saveLog(waybillId,waybillNo,"30",nodeName+" 三方中转装车",operationRemark,nickName,userId,nodeId,nodeName); + + operationRemark = "三方中转从"+nodeName+"发车,实际发车时间"+ CommonUtil.dateToStringGeneral(new Date()); + saveLog(waybillId,waybillNo,"40",nodeName+"已发车",operationRemark,nickName,userId,nodeId,nodeName); + } + + } + + private void saveTrackLog(Long waybillId, String waybillNo, String trackType, String refer, String operationRemark, String nickName,Long userId,Long warehouseId,String warehouseName) { TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity(); waybillTrackEntity.setWarehouseId(warehouseId); @@ -249,6 +294,36 @@ public class OpenOrderAsyncServiceImpl implements IOpenOrderAsyncService { } } + @LogpmAsync("asyncExecutor") + @Override + public void saveTripartiteArriveCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity, String nickName,Long userId) { + Long loadId = carsLoadLineEntity.getLoadId(); + TrunklineCarsLoadEntity carsLoadEntity = trunklineCarsLoadService.getById(loadId); + if(Objects.isNull(carsLoadEntity)){ + log.warn("##############saveCancelStartCarLog: 配载信息不存在 loadId={}",loadId); + return; + } + + Long nodeId = carsLoadLineEntity.getNodeId(); + String nodeName = carsLoadLineEntity.getNodeName(); + + + List list = trunklineCarsLoadScanService.findArriveLoadScanWaybillList(loadId,nodeId); + + for (LoadScanWaybillVO loadScanWaybillVO : list) { + String waybillNo = loadScanWaybillVO.getWaybillNo(); + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); + if(Objects.isNull(waybillEntity)){ + log.warn("##############saveCancelStartCarLog: 运单信息不存在 waybillNo={}",waybillNo); + continue; + } + Long waybillId = waybillEntity.getId(); + + String operationRemark = "三方中转到达"+nodeName+",到达时间"+ CommonUtil.dateToStringGeneral(new Date()); + saveLog(waybillId,waybillNo,"60",nodeName+" 三方中转到达",operationRemark,nickName,userId,nodeId,nodeName); + } + } + @LogpmAsync("asyncExecutor") @Override public void saveCancelArriveCarLog(TrunklineCarsLoadLineEntity carsLoadLineEntity, String nickName,Long userId) { 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 72a2039c5..043151f81 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 @@ -20,7 +20,9 @@ import com.logpm.distribution.entity.DistributionParcelNumberEntity; import com.logpm.distribution.entity.DistributionStockArticleEntity; import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.distribution.feign.IDistributionParcelNumberClient; +import com.logpm.distribution.feign.IDistributionReservationStockarticleClient; import com.logpm.distribution.feign.IDistributionStockArticleClient; +import com.logpm.statistics.feign.IOrderInfoClient; import com.logpm.trunkline.dto.*; import com.logpm.trunkline.entity.*; import com.logpm.trunkline.service.*; @@ -36,9 +38,10 @@ import org.springblade.common.annotations.RepeatSubmit; import org.springblade.common.constant.CodeNumConstant; import org.springblade.common.constant.DictBizConstant; import org.springblade.common.constant.IncomingTypeEnum; -import org.springblade.common.constant.WorkNodeEnums; +import org.springblade.common.constant.broadcast.FanoutConstants; import org.springblade.common.constant.order.*; import org.springblade.common.exception.CustomerException; +import org.springblade.common.model.FanoutMsg; import org.springblade.common.utils.CommonUtil; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -96,6 +99,9 @@ public class OpenOrderServiceImpl implements IOpenOrderService { private final ITrunklineCarsLoadScanService trunklineCarsLoadScanService; private final IAsyncService asyncService; private final ICarsLoadAsyncService carsLoadAsyncService; + private final IDistributionReservationStockarticleClient reservationStockarticleClient; + private final ISendFanoutService sendFanoutService; + private final IOrderInfoClient orderInfoClient; @Override @@ -155,6 +161,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { } //把list中所有的senderName去重放入一个Set集合 + Set senderFactorySet = list.stream().filter(e -> StringUtil.isNotBlank(e.getSenderFactory())).map(TrunklineAdvanceEntity::getSenderFactory).collect(Collectors.toSet()); Set senderNameSet = list.stream().filter(e -> StringUtil.isNotBlank(e.getSenderName())).map(TrunklineAdvanceEntity::getSenderName).collect(Collectors.toSet()); Set senderPhoneSet = list.stream().filter(e -> StringUtil.isNotBlank(e.getSenderPhone())).map(TrunklineAdvanceEntity::getSenderPhone).collect(Collectors.toSet()); Set senderAddressSet = list.stream().filter(e -> StringUtil.isNotBlank(e.getSenderAddress())).map(TrunklineAdvanceEntity::getSenderAddress).collect(Collectors.toSet()); @@ -202,6 +209,19 @@ public class OpenOrderServiceImpl implements IOpenOrderService { openOrderVO.setDepartureArray(departureArray); } + }else{ + if(CollUtil.isNotEmpty(senderFactorySet) && senderFactorySet.size() == 1){ + openOrderVO.setShipper(senderFactorySet.iterator().next()); + } + if(CollUtil.isNotEmpty(senderNameSet) && senderNameSet.size() == 1){ + openOrderVO.setShipperName(senderNameSet.iterator().next()); + } + if(CollUtil.isNotEmpty(senderPhoneSet) && senderPhoneSet.size() == 1){ + openOrderVO.setShipperMobile(senderPhoneSet.iterator().next()); + } + if(CollUtil.isNotEmpty(senderAddressSet) && senderAddressSet.size() == 1){ + openOrderVO.setShipperAddress(senderAddressSet.iterator().next()); + } } @@ -509,6 +529,10 @@ public class OpenOrderServiceImpl implements IOpenOrderService { waybillEntity.setPickupVehicleType(openOrderDTO.getPickupVehicleType()); waybillEntity.setAbolishStatus(0); waybillEntity.setFreezeStatus(0); + waybillEntity.setSignNum(0); + waybillEntity.setReturnStatus(0); + waybillEntity.setCheckStatus(0); + waybillEntity.setUpdateStatus(0); Long waybillId = warehouseWaybillClient.addEnntity(waybillEntity); waybillEntity.setId(waybillId); @@ -552,6 +576,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { warehouseWayBillDetail.setChargeType(waybillDetailDTO.getChargeType()); warehouseWayBillDetail.setDeliveryPrice(waybillDetailDTO.getDeliveryPrice()); warehouseWayBillDetail.setSubtotalDeliveryFee(waybillDetailDTO.getSubtotalDeliveryFee()); + warehouseWayBillDetail.setPickupPrice(waybillDetailDTO.getPickupPrice()); + warehouseWayBillDetail.setFreightPrice(waybillDetailDTO.getFreightPrice()); + warehouseWayBillDetail.setSystemChargeType(waybillDetailDTO.getSystemChargeType()); + warehouseWayBillDetail.setSystemDeliveryChargeType(waybillDetailDTO.getSystemDeliveryChargeType()); + warehouseWayBillDetail.setSystemPickupChargeType(waybillDetailDTO.getSystemPickupChargeType()); + warehouseWayBillDetail.setSystemWarehouseChargeType(waybillDetailDTO.getSystemWarehouseChargeType()); details.add(warehouseWayBillDetail); } warehouseWaybillDetailClient.addList(details); @@ -632,7 +662,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { carsLoadService.sendRabbitMessageOpenOrder(advanceIds, waybillId); //发布开单广播 - openOrderAsyncService.sendOpenWaybillFanout(waybillEntity, details, advanceIds); +// openOrderAsyncService.sendOpenWaybillFanout(waybillEntity, details, advanceIds); Map map = new HashMap<>(); @@ -753,7 +783,10 @@ public class OpenOrderServiceImpl implements IOpenOrderService { waybillEntity.setAgentId(AuthUtil.getUserId()); waybillEntity.setAbolishStatus(0); waybillEntity.setFreezeStatus(0); - + waybillEntity.setSignNum(0); + waybillEntity.setReturnStatus(0); + waybillEntity.setCheckStatus(0); + waybillEntity.setUpdateStatus(0); Long waybillId = warehouseWaybillClient.addEnntity(waybillEntity); waybillEntity.setId(waybillId); List details = new ArrayList<>(); @@ -781,7 +814,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { if (Objects.isNull(basicdataCategoryEntity)) { basicdataCategoryEntity = new BasicdataCategoryEntity(); basicdataCategoryEntity.setName(goodsName); - basicdataCategoryEntity.setType(1); + basicdataCategoryEntity.setType(10); goodsId = basicdataCategoryClient.addReturnId(basicdataCategoryEntity); } else { goodsId = basicdataCategoryEntity.getId(); @@ -797,6 +830,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { warehouseWayBillDetail.setChargeType(waybillDetailDTO.getChargeType()); warehouseWayBillDetail.setDeliveryPrice(waybillDetailDTO.getDeliveryPrice()); warehouseWayBillDetail.setSubtotalDeliveryFee(waybillDetailDTO.getSubtotalDeliveryFee()); + warehouseWayBillDetail.setPickupPrice(waybillDetailDTO.getPickupPrice()); + warehouseWayBillDetail.setFreightPrice(waybillDetailDTO.getFreightPrice()); + warehouseWayBillDetail.setSystemChargeType(waybillDetailDTO.getSystemChargeType()); + warehouseWayBillDetail.setSystemDeliveryChargeType(waybillDetailDTO.getSystemDeliveryChargeType()); + warehouseWayBillDetail.setSystemPickupChargeType(waybillDetailDTO.getSystemPickupChargeType()); + warehouseWayBillDetail.setSystemWarehouseChargeType(waybillDetailDTO.getSystemWarehouseChargeType()); details.add(warehouseWayBillDetail); } warehouseWaybillDetailClient.addList(details); @@ -2199,6 +2238,18 @@ public class OpenOrderServiceImpl implements IOpenOrderService { log.warn("#############updateWaybill: 运单已作废 waybillId={}", waybillId); return R.fail(405, "运单已作废"); } + + //验证运单是否有配送任务 + //查询运单下所有订单号 + List orderCodes = distributionParcelListClient.findOrderCodeByWaybillId(waybillId); + //判断运单下所有订单是否在预约关联订单表上是否有数据 + List reservationIds = reservationStockarticleClient.findReservationIdsByOrderCodes(orderCodes); + if(CollUtil.isNotEmpty(reservationIds)){ + log.warn("#############updateWaybill: 已创建配送任务无法改单 waybillId={}", waybillId); + return R.fail(405, "已创建配送任务无法改单"); + } + + // 得到改单之前的收货单位 oldConsignee = waybillEntity.getConsignee(); @@ -2238,8 +2289,6 @@ public class OpenOrderServiceImpl implements IOpenOrderService { List parcelListEntityList = distributionParcelListClient.findAllParcelListByAdvanceIds(advanceIds); if(CollUtil.isNotEmpty(parcelListEntityList)){ - - //把parcelListEntityList包件集合中所有元素的orderCode放入一个Set集合 Set orderCodeSet = parcelListEntityList.stream().map(DistributionParcelListEntity::getOrderCode).collect(Collectors.toSet()); List stockArticleEntities = distributionStockArticleClient.findAllStockArticleListByOrderCodes(new ArrayList<>(orderCodeSet)); @@ -2294,7 +2343,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { List trunklineWaybillPackageEntities = trunklineWaybillPackageService.list(queryWrapper); if(!trunklineWaybillPackageEntities.isEmpty()){ for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : trunklineWaybillPackageEntities) { - trunklineWaybillPackageEntity.setPackageStatus(WorkNodeEnums.END_WAREHOUSE_UNLOADING.getCode()); + trunklineWaybillPackageEntity.setPackageStatus(30); } trunklineWaybillPackageService.updateBatchById(trunklineWaybillPackageEntities); } @@ -2779,6 +2828,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService { Long waybillId = openOrderDTO.getWaybillId(); Long warehouseId = openOrderDTO.getWarehouseId(); String warehouseName = openOrderDTO.getWarehouseName(); + String checkReson = openOrderDTO.getCheckReson(); + String checkRemark = openOrderDTO.getCheckRemark(); WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); if (Objects.isNull(warehouseWaybillEntity)) { @@ -2797,18 +2848,33 @@ public class OpenOrderServiceImpl implements IOpenOrderService { return R.fail(405, "运单已经审核"); } - warehouseWaybillEntity.setCheckUserId(AuthUtil.getUserId()); - warehouseWaybillEntity.setCheckUserName(AuthUtil.getNickName()); + Date now = new Date(); - warehouseWaybillClient.updateEntity(warehouseWaybillEntity); + WarehouseWaybillEntity updateEntity = new WarehouseWaybillEntity(); + updateEntity.setId(waybillId); + updateEntity.setCheckUserId(AuthUtil.getUserId()); + updateEntity.setCheckUserName(AuthUtil.getNickName()); + updateEntity.setCheckTime(now); + updateEntity.setCheckStatus(1); + updateEntity.setCheckReson(checkReson); + updateEntity.setCheckRemark(checkRemark); + warehouseWaybillClient.updateEntity(updateEntity); //异步存入日志 String nickName = AuthUtil.getNickName(); Long userId = AuthUtil.getUserId(); String waybillNo = warehouseWaybillEntity.getWaybillNo(); - String createOperationRemark = "审核运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date()) + ", 审核人:" + AuthUtil.getNickName(); + String createOperationRemark = "审核运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(now) + ", 审核人:" + AuthUtil.getNickName(); openOrderAsyncService.saveLog(waybillId, waybillNo, "999", "审核运单", createOperationRemark, nickName, userId, warehouseId, warehouseName); + + //发送运单审核的广播 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("waybillId",waybillId); + FanoutMsg fanoutMsg = FanoutMsg.builder().exchange(FanoutConstants.trunkline.CHECKWAYBILL.EXCHANGE) + .msg(jsonObject.toJSONString()).build(); + sendFanoutService.sendFanoutMsg(fanoutMsg); + return R.success("审核成功"); } @@ -3254,13 +3320,26 @@ public class OpenOrderServiceImpl implements IOpenOrderService { @Override public R saveWaybillReturn(Long waybillId, String url) { + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); + if(Objects.isNull(waybillEntity)){ + log.info("#################openWaybill: 运单信息不存在 waybillId={}", waybillId); + return R.fail(405,"运单信息不存在"); + } + TrunklineWaybillReturnEntity trunklineWaybillReturnEntity = new TrunklineWaybillReturnEntity(); trunklineWaybillReturnEntity.setWaybillId(waybillId); trunklineWaybillReturnEntity.setUrl(url); trunklineWaybillReturnEntity.setCreateUserName(AuthUtil.getNickName()); trunklineWaybillReturnService.save(trunklineWaybillReturnEntity); - return R.success("上床成功"); + Integer receiptNum = waybillEntity.getReceiptNum(); + WarehouseWaybillEntity updateWaybillEntity = new WarehouseWaybillEntity(); + updateWaybillEntity.setId(waybillId); + updateWaybillEntity.setReceiptNum(receiptNum+1); + updateWaybillEntity.setReturnStatus(1); + warehouseWaybillClient.updateEntity(updateWaybillEntity); + + return R.success("上传成功"); } @Override @@ -3368,8 +3447,13 @@ public class OpenOrderServiceImpl implements IOpenOrderService { @Transactional(rollbackFor = Exception.class) @Override public R abolishWaybill(List waybillIds, Long warehouseId, String warehouseName, String abolishReson) { + + List clearWaybillInfoParceListIds = new ArrayList<>(); + List deleteZeroWaybillNoList = new ArrayList<>(); + List waybillList = warehouseWaybillClient.findListByWaybillIds(waybillIds); waybillList.forEach(waybillEntity -> { + Long waybillId = waybillEntity.getId(); String waybillNo = waybillEntity.getWaybillNo(); String waybillStatus = waybillEntity.getWaybillStatus(); if(StringUtil.isBlank(waybillStatus)){ @@ -3386,40 +3470,69 @@ public class OpenOrderServiceImpl implements IOpenOrderService { log.warn("##############abolishWaybill: {}运单已经作废",waybillNo); throw new CustomerException(405,waybillNo+"运单已经作废,不能重复作废"); } + + //判断是否做了配送 + List orderCodes = distributionParcelListClient.findOrderCodeByWaybillId(waybillId); + List reservationIds = reservationStockarticleClient.findReservationIdsByOrderCodes(orderCodes); + if(CollUtil.isNotEmpty(reservationIds)){ + log.warn("##############abolishWaybill: {}运单已经做了配送计划",waybillNo); + throw new CustomerException(405,waybillNo+"运单已经做了配送计划"); + } + + //TODO 还需要加上生成了预存单的无法进行作废 + Integer status = orderInfoClient.findCreateRencilitionOrderStatus(waybillId); + if(status == 1){ + log.warn("##########abolishWaybill: 运单已有预存单确认 waybillId={}",waybillId); + throw new CustomerException(405,"运单已有预存单确认"); + } + waybillEntity.setAbolishStatus(1); waybillEntity.setAbolishUserName(AuthUtil.getNickName()); waybillEntity.setAbolishTime(new Date()); - }); - warehouseWaybillClient.updateList(waybillList); - //把装了车的包件取消装车 - List carsLoadScanIds = trunklineCarsLoadScanService.findCarsLoadScanIdsByWaybillIds(waybillIds); + Integer waybillType = waybillEntity.getWaybillType(); + if(waybillType.equals(1)){ + //订制品 + advanceService.clearWaybillInfoByWaybillId(waybillId); + advanceDetailService.clearWaybillInfoByWaybillId(waybillId); - if(!CollUtil.isEmpty(carsLoadScanIds)){ - carsLoadService.removeCarsLoadScan(carsLoadScanIds,warehouseId); - } + trunklineWaybillOrderService.deleteByWaybillNo(waybillNo); + trunklineWaybillPackageService.deleteByWaybillNo(waybillNo); - List advanceIds = trunklineWaybillOrderService.findAdvanceIdsByWaybillIds(waybillIds); + List parcelListEntityList = distributionParcelListClient.findByWaybillNumber(waybillNo); + parcelListEntityList.forEach(parcelListEntity -> { + clearWaybillInfoParceListIds.add(parcelListEntity.getId()); + }); - trunklineWaybillOrderService.remove(new QueryWrapper().in("waybill_id",waybillIds)); + }else if(waybillType.equals(2)){ + //零担 + trunklineWaybillOrderService.deleteByWaybillNo(waybillNo); + deleteZeroWaybillNoList.add(waybillNo); - if(!advanceIds.isEmpty()){ - List advanceEntities = advanceService.findListByIds(advanceIds); - advanceEntities.forEach(advanceEntity -> { - advanceEntity.setWaybillStatus("0"); - advanceEntity.setWaybillNo(null); - }); - advanceService.updateBatchById(advanceEntities); + } + }); - advanceDetailService.updateWaybillNoIsNullByAdvanceIds(advanceIds); - distributionParcelListClient.clearParceListWaybillByAdvanceIds(advanceIds); + //把装了车的包件取消装车 + List carsLoadScanIds = trunklineCarsLoadScanService.findCarsLoadScanIdsByWaybillIds(waybillIds); + + if(!CollUtil.isEmpty(carsLoadScanIds)){ + carsLoadService.removeCarsLoadScan(carsLoadScanIds,warehouseId); } waybillList.forEach(waybillEntity -> { String createOperationRemark = "作废运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToStringGeneral(new Date()); openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "1000", "作废运单", createOperationRemark+" 原因:"+abolishReson, AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName); }); + + warehouseWaybillClient.updateList(waybillList); + if(CollUtil.isNotEmpty(clearWaybillInfoParceListIds)){ + distributionParcelListClient.clearWaybillInfoByParceListIds(clearWaybillInfoParceListIds); + } + if(CollUtil.isNotEmpty(deleteZeroWaybillNoList)){ + distributionStockArticleClient.deleteZeroOrderByWaybillNoList(deleteZeroWaybillNoList); + } + return R.success("作废成功"); } @@ -3507,7 +3620,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { advanceDetailModel.setPackageStatus("0"); List advanceDetailEntities = new ArrayList<>(); - List orderPackageCodes = basicdataCodeClient.getBatchPackageCodeByType(warehouseCode, advanceEntity.getOrderCode(), totalNum); + List orderPackageCodes = basicdataCodeClient.getBatchPackageCodeByType(warehouseCode, advanceEntity.getOrderCode(), enterNum); orderPackageCodes.forEach(orderPackageCode -> { TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity(); BeanUtil.copy(advanceDetailModel, advanceDetailEntity); @@ -3539,6 +3652,66 @@ public class OpenOrderServiceImpl implements IOpenOrderService { return R.data(advanceDetailVOList); } + @Override + public R cancleCheckWaybill(OpenOrderDTO openOrderDTO) { + Long waybillId = openOrderDTO.getWaybillId(); + String checkRemark = openOrderDTO.getCheckRemark(); + Long warehouseId = openOrderDTO.getWarehouseId(); + String warehouseName = openOrderDTO.getWarehouseName(); + + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); + if(Objects.isNull(waybillEntity)){ + log.warn("##########cancleCheckWaybill: 运单信息不存在 waybillId={}",waybillId); + return R.fail(405,"运单信息不存在"); + } + Integer checkStatus = waybillEntity.getCheckStatus(); + if(checkStatus.equals(0)){ + log.warn("##########cancleCheckWaybill: 运单还未审核 waybillId={} checkStatus={}",waybillId,checkStatus); + return R.fail(405,"运单还未审核"); + } + + List orderCodes = distributionParcelListClient.findOrderCodeByWaybillId(waybillId); + List reservationIds = reservationStockarticleClient.findReservationIdsByOrderCodes(orderCodes); + if(CollUtil.isNotEmpty(reservationIds)){ + log.warn("##########cancleCheckWaybill: 运单已有配送计划 waybillId={}",waybillId); + return R.fail(405,"运单已有配送计划"); + } + + Integer status = orderInfoClient.findCreateRencilitionOrderStatus(waybillId); + if(status == 1){ + log.warn("##########cancleCheckWaybill: 运单已有预存单确认 waybillId={}",waybillId); + return R.fail(405,"运单已有预存单确认"); + } + + + WarehouseWaybillEntity updateWaybillEntity = new WarehouseWaybillEntity(); + updateWaybillEntity.setId(waybillId); + updateWaybillEntity.setCheckStatus(0); + updateWaybillEntity.setCancleCheckRemark(checkRemark); + updateWaybillEntity.setCancleCheckUserId(AuthUtil.getUserId()); + updateWaybillEntity.setCancleCheckUserName(AuthUtil.getNickName()); + updateWaybillEntity.setCancleCheckTime(new Date()); + warehouseWaybillClient.updateEntity(updateWaybillEntity); + + + //异步存入日志 + String nickName = AuthUtil.getNickName(); + Long userId = AuthUtil.getUserId(); + String waybillNo = waybillEntity.getWaybillNo(); + String createOperationRemark = "取消审核运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date()) + ", 取消审核人:" + AuthUtil.getNickName(); + openOrderAsyncService.saveLog(waybillId, waybillNo, "999", "取消审核运单", createOperationRemark, nickName, userId, warehouseId, warehouseName); + + + //发送运单取消审核的广播 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("waybillId",waybillId); + FanoutMsg fanoutMsg = FanoutMsg.builder().exchange(FanoutConstants.trunkline.CANCLECHECKWAYBILL.EXCHANGE) + .msg(jsonObject.toJSONString()).build(); + sendFanoutService.sendFanoutMsg(fanoutMsg); + + return R.success("取消成功"); + } + private List verifyData(OpenOrderDTO openOrderDTO, WarehouseWaybillEntity waybillEntity) { log.info("###################verifyData: 验证改单数据"); // StringBuilder stringBuilder = new StringBuilder(); @@ -4348,6 +4521,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { warehouseWayBillDetail.setWeight(waybillDetailDTO.getWeight()); warehouseWayBillDetail.setPrice(waybillDetailDTO.getPrice()); warehouseWayBillDetail.setSubtotalFreight(waybillDetailDTO.getSubtotalFreight()); + warehouseWayBillDetail.setPickupPrice(waybillDetailDTO.getPickupPrice()); + warehouseWayBillDetail.setFreightPrice(waybillDetailDTO.getFreightPrice()); + warehouseWayBillDetail.setSystemChargeType(waybillDetailDTO.getSystemChargeType()); + warehouseWayBillDetail.setSystemDeliveryChargeType(waybillDetailDTO.getSystemDeliveryChargeType()); + warehouseWayBillDetail.setSystemPickupChargeType(waybillDetailDTO.getSystemPickupChargeType()); + warehouseWayBillDetail.setSystemWarehouseChargeType(waybillDetailDTO.getSystemWarehouseChargeType()); warehouseWaybillDetailClient.addEntity(warehouseWayBillDetail); stringBuilder.append("明细新增:").append(warehouseWayBillDetail.getProductName()).append(" 数量 ").append(waybillDetailDTO.getNum()).append(" 单价 ").append(waybillDetailDTO.getPrice()).append(";"); @@ -4415,6 +4594,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService { warehouseWayBillDetail.setDeliveryPrice(waybillDetailDTO.getDeliveryPrice()); warehouseWayBillDetail.setSubtotalDeliveryFee(waybillDetailDTO.getSubtotalDeliveryFee()); + warehouseWayBillDetail.setPickupPrice(waybillDetailDTO.getPickupPrice()); + warehouseWayBillDetail.setFreightPrice(waybillDetailDTO.getFreightPrice()); + warehouseWayBillDetail.setSystemChargeType(waybillDetailDTO.getSystemChargeType()); + warehouseWayBillDetail.setSystemDeliveryChargeType(waybillDetailDTO.getSystemDeliveryChargeType()); + warehouseWayBillDetail.setSystemPickupChargeType(waybillDetailDTO.getSystemPickupChargeType()); + warehouseWayBillDetail.setSystemWarehouseChargeType(waybillDetailDTO.getSystemWarehouseChargeType()); warehouseWaybillDetailClient.updateEntityById(warehouseWayBillDetail); } @@ -4626,7 +4811,6 @@ public class OpenOrderServiceImpl implements IOpenOrderService { distributionStockArticleEntity.setIncomingNum(warehouseWaybill.getStockCount()); //零担订单默认齐套 distributionStockArticleEntity.setCompleteSet(2); - distributionStockArticleEntity.setBrand(warehouseWaybill.getBrand()); distributionStockArticleEntity.setResource("零担"); @@ -4678,10 +4862,14 @@ public class OpenOrderServiceImpl implements IOpenOrderService { List parcelNumberList = new ArrayList<>(); for (WarehouseWayBillDetail warehouseWayBillDetail : wayBillDetailList) { DistributionParcelListEntity entity = new DistributionParcelListEntity(); + entity.setBrandId(warehouseWaybill.getBrandId()); + entity.setBrandName(warehouseWaybill.getBrand()); + entity.setDealerName(warehouseWaybill.getConsignee()); entity.setFirsts(warehouseWayBillDetail.getProductName()); entity.setWarehouseId(distributionStockArticleEntity.getWarehouseId()); entity.setWarehouse(distributionStockArticleEntity.getWarehouse()); entity.setQuantity(warehouseWayBillDetail.getNum()); + entity.setTrainNumber(warehouseWaybill.getCustomerTrain()); entity.setConditions(1); entity.setStockArticleId(orderId); entity.setOrderCode(distributionStockArticleEntity.getOrderCode()); @@ -4694,6 +4882,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { entity.setWaybillId(warehouseWaybill.getId()); entity.setWaybillNumber(warehouseWaybill.getWaybillNo()); entity.setIsZero("1"); + entity.setAdvanceId(warehouseWayBillDetail.getId()); entity.setWarehouseEntryTimeEnd(date); entity.setSendWarehouseId(departureWarehouseId); entity.setSendWarehouseName(departureWarehouseName); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java index 79f265c73..e0c24cfc7 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java @@ -357,4 +357,14 @@ public class TrunklineAdvanceDetailServiceImpl extends BaseServiceImpl findAdvanceDetailListByWaybillId(AdvanceDTO advanceDTO) { return baseMapper.findAdvanceDetailListByWaybillId(advanceDTO); } + + @Override + public List findTotalNumByOrderCodes(Set orderCodeSet) { + return baseMapper.findTotalNumByOrderCodes(orderCodeSet); + } + + @Override + public void clearWaybillInfoByWaybillId(Long waybillId) { + baseMapper.clearWaybillInfoByWaybillId(waybillId); + } } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java index b59213ea3..a897e89f6 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java @@ -819,8 +819,9 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl implements ITrunklineCarsLoadScanService { + + private final ITrunklineScanZeroDetailService scanZeroDetailService; + @Override public Integer findNumByLoadId(Long loadId) { return baseMapper.findNumByLoadId(loadId); @@ -101,6 +106,27 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl findUnloadZeroList(Long loadId, Long warehouseId, String waybillNo, String orderCode) { + List unloadPackageList = baseMapper.findUnloadPackageList(loadId, warehouseId, waybillNo, orderCode); + //把unloadPackageList中所有元素的carsLoadScanId放入一个集合 + // 创建一个包含所有carsLoadScanId的新列表 + List carsLoadScanIds = unloadPackageList.stream() + .map(UnloadPackageVO::getCarsLoadScanId) + .collect(Collectors.toList()); + List scanZeroDetailList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIds); + //把scanZeroDetailList中所有元素通过id进行分组 + Map> scanZeroDetailMap = scanZeroDetailList.stream() + .collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + + unloadPackageList.forEach(unloadPackageVO -> { + Long carsLoadScanId = unloadPackageVO.getCarsLoadScanId(); + List list = scanZeroDetailMap.get(carsLoadScanId); + unloadPackageVO.setScanZeroDetailList(list); + }); + return unloadPackageList; + } + @Override public Integer findUnloadNumByLoadId(Long loadId) { return baseMapper.findUnloadNumByLoadId(loadId); @@ -404,4 +430,34 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl findAllIdListByLoadIdAndNoScanStatus(Long loadId, String scanStatus) { + return baseMapper.findAllIdListByLoadIdAndNoScanStatus(loadId,scanStatus); + } + + @Override + public List findTransferLoadScanWaybillList(Long loadId, Long nodeId) { + return baseMapper.findTransferLoadScanWaybillList(loadId,nodeId); + } + + @Override + public List findUnloadPackageListByLoadIdAndFinalNodeId(Long loadId, Long warehouseId) { + return baseMapper.findUnloadPackageListByLoadIdAndFinalNodeId(loadId,warehouseId); + } + + @Override + public List findUnloadZeroListByLoadIdAndFinalNodeId(Long loadId, Long warehouseId) { + return baseMapper.findUnloadZeroListByLoadIdAndFinalNodeId(loadId,warehouseId); + } + + @Override + public List findSignPackageListBySignOrderId(Long signOrderId) { + return baseMapper.findSignPackageListBySignOrderId(signOrderId); + } + + @Override + public List findAllIdListByLoadIdAndScanStatus(Long loadId, String scanStatus) { + return baseMapper.findAllIdListByLoadIdAndScanStatus(loadId,scanStatus); + } + } 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 2134603a2..2a771a1dd 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 @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -28,6 +29,8 @@ import com.logpm.distribution.entity.DistributionStockArticleEntity; import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.distribution.feign.IDistributionParcelNumberClient; import com.logpm.distribution.feign.IDistributionStockArticleClient; +import com.logpm.distribution.vo.DistributionParcelListVO; +import com.logpm.distribution.vo.ZeroPackageSupplyVO; import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.feign.IFactoryDataClient; import com.logpm.factorydata.util.FactoryDataMessageSender; @@ -74,6 +77,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -122,6 +126,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadCarsPageList(LoadCarsDTO loadCarsDTO) { @@ -420,7 +425,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl> fromWarehouseIdmap = orderCodeList.stream().collect(Collectors.groupingBy(TrunklineCarsLoadScanEntity::getFromWarehouseId)); fromWarehouseIdmap.keySet().forEach(fromWarehouseId -> { - TrunklineCarsOrderEntity trunklineCarsOrderEntity = trunklineCarsOrderService.findEntityByLoadIdAndWarehouseIdAndOrderCodeAndWaybillNo(loadId, fromWarehouseId, orderCode, orderCode); - if(!Objects.isNull(trunklineCarsOrderEntity)){ - Integer realNum = trunklineCarsOrderEntity.getRealNum(); - List fromWarehouseIdList = fromWarehouseIdmap.get(fromWarehouseId); - //把fromWarehouseIdList中所有元素的unloadNum累加 - int unloadNum = fromWarehouseIdList.stream().mapToInt(TrunklineCarsLoadScanEntity::getUnloadNum).sum(); - DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, fromWarehouseId); - if(!Objects.isNull(stockArticleEntity)){ - Integer handQuantity = stockArticleEntity.getHandQuantity(); - - if(unloadNum > realNum){ - //卸车数大于实际装车数 - throw new CustomerException(405,"零担订单"+orderCode+"卸车件数已大于实际装车件数,请去调整补录"); - }else { -// if(unloadNum < realNum){ -// distributionStockArticleClient.addHandQuantity(stockArticleEntity.getId(),realNum-unloadNum); -// } - - DistributionStockArticleEntity newStockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId); - if (Objects.isNull(newStockArticleEntity)) { - newStockArticleEntity = new DistributionStockArticleEntity(); - BeanUtil.copy(stockArticleEntity, newStockArticleEntity); - newStockArticleEntity.setId(null); + List fromWarehouseIdList = fromWarehouseIdmap.get(fromWarehouseId); + + int realNum = fromWarehouseIdList.stream().mapToInt(TrunklineCarsLoadScanEntity::getNum).sum(); + //把fromWarehouseIdList中所有元素的unloadNum累加 + int unloadNum = fromWarehouseIdList.stream().mapToInt(TrunklineCarsLoadScanEntity::getUnloadNum).sum(); + DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, fromWarehouseId); + if(!Objects.isNull(stockArticleEntity)){ + + if(unloadNum > realNum){ + //卸车数大于实际装车数 + throw new CustomerException(405,"零担订单"+orderCode+"卸车件数已大于实际装车件数,请去调整补录"); + }else { + + //把fromWarehouseIdList中所有元素的id放入一个集合 + List carsLoadScanIds = fromWarehouseIdList.stream().map(TrunklineCarsLoadScanEntity::getId).collect(Collectors.toList()); + + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIds); + //把zeroDetailVOList所有元素通过goodsName进行分组 + Map> goodsNamemap = zeroDetailVOList.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getGoodsName)); + + + DistributionStockArticleEntity newStockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId); + if (Objects.isNull(newStockArticleEntity)) { + newStockArticleEntity = new DistributionStockArticleEntity(); + BeanUtil.copy(stockArticleEntity, newStockArticleEntity); + Integer totalNumber = stockArticleEntity.getTotalNumber(); + newStockArticleEntity.setId(null); + if(totalNumber == unloadNum){ + newStockArticleEntity.setOrderReceiveStatus("30"); + }else{ newStockArticleEntity.setOrderReceiveStatus("20"); - newStockArticleEntity.setOrderStatus("10"); - newStockArticleEntity.setHandQuantity(unloadNum); - newStockArticleEntity.setIncomingNum(unloadNum); - newStockArticleEntity.setWarehouse(warehouseEntity.getName()); - newStockArticleEntity.setWarehouseId(warehouseEntity.getId()); - newStockArticleEntity.setAllocation(null); - newStockArticleEntity.setTrays(null); - newStockArticleEntity.setCarsLoadNum(0); - Long orderId = distributionStockArticleClient.addData(newStockArticleEntity); - if (orderId != 0) { - Integer isTransfer = 1; - List parcelListEntityList = distributionParcelListClient.findEntityListByOrderCode(orderCode, fromWarehouseId); - List ls = new ArrayList<>(); - for (DistributionParcelListEntity parcelListEntity : parcelListEntityList) { - DistributionParcelListEntity newParcelListEntity = new DistributionParcelListEntity(); - BeanUtil.copy(parcelListEntity, newParcelListEntity); - newParcelListEntity.setId(null); - newParcelListEntity.setWarehouseId(warehouseId); - newParcelListEntity.setWarehouse(warehouseEntity.getName()); - newParcelListEntity.setStockArticleId(orderId); - Long acceptWarehouseId = parcelListEntity.getAcceptWarehouseId(); - if(warehouseId.equals(acceptWarehouseId)){ - newParcelListEntity.setIsTransfer(0); - isTransfer = 0; -// String operationRemark = "运单装车"+unloadNum+"件 干线批次号:"+carsLoadEntity.getCarsNo()+",车牌号:"+carsLoadEntity.getCarNumber()+",司机姓名:"+carsLoadEntity.getDriverName()+",司机手机:"+carsLoadEntity.getDriverMobile(); -// openOrderAsyncService.saveLog(waybillId, waybillNo, "30", "干线装车", operationRemark, AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName); - }else{ - newParcelListEntity.setIsTransfer(1); - } - Long orderPackageId = distributionParcelListClient.addReturnId(newParcelListEntity); - - DistributionParcelNumberEntity parcelNumberEntity = new DistributionParcelNumberEntity(); - parcelNumberEntity.setStockArticleId(orderId); - parcelNumberEntity.setParcelListId(orderPackageId); - parcelNumberEntity.setQuantity(newParcelListEntity.getQuantity()); - parcelNumberEntity.setHandQuantity(newParcelListEntity.getQuantity()); - parcelNumberEntity.setDeliveryQuantity(0); - parcelNumberEntity.setSigninQuantity(0); - parcelNumberEntity.setOutboundQuantity(0); - parcelNumberEntity.setWarehouseId(warehouseId); - ls.add(parcelNumberEntity); + } + newStockArticleEntity.setOrderStatus("10"); + newStockArticleEntity.setHandQuantity(unloadNum); + newStockArticleEntity.setIncomingNum(unloadNum); + newStockArticleEntity.setWarehouse(warehouseEntity.getName()); + newStockArticleEntity.setWarehouseId(warehouseEntity.getId()); + newStockArticleEntity.setAllocation(null); + newStockArticleEntity.setTrays(null); + newStockArticleEntity.setCarsLoadNum(0); + Long orderId = distributionStockArticleClient.addData(newStockArticleEntity); + if (orderId != 0) { + + Integer isTransfer = 1; + List parcelListEntityList = distributionParcelListClient.findEntityVOListByOrderCode(orderCode, fromWarehouseId); + List ls = new ArrayList<>(); + for (DistributionParcelListVO parcelListEntity : parcelListEntityList) { + DistributionParcelListEntity newParcelListEntity = new DistributionParcelListEntity(); + String firsts = parcelListEntity.getFirsts(); + List detailVOList = goodsNamemap.get(firsts); + //把detailVOList所有元素的unloadNum求和,如果为空用0代替 + int totalUnloadNum = detailVOList.stream() + .mapToInt(vo -> Optional.ofNullable(vo.getUnloadNum()).orElse(0)) + .sum(); + + BeanUtil.copy(parcelListEntity, newParcelListEntity); + newParcelListEntity.setId(null); + newParcelListEntity.setWarehouseId(warehouseId); + newParcelListEntity.setWarehouse(warehouseEntity.getName()); + newParcelListEntity.setStockArticleId(orderId); + newParcelListEntity.setQuantity(totalUnloadNum); + Long acceptWarehouseId = parcelListEntity.getAcceptWarehouseId(); + if(warehouseId.equals(acceptWarehouseId)){ + newParcelListEntity.setIsTransfer(0); + isTransfer = 0; + }else{ + newParcelListEntity.setIsTransfer(1); } - distributionParcelNumberClient.addBatch(ls); - -// if(isTransfer == 0){ -// //查询零担发车件数 -// List zeroNumVOList = trunklineCarsLoadScanService.findZeroStartNum(loadId,warehouseId); -// if(CollUtil.isNotEmpty(zeroNumVOList)){ -// zeroNumVOList.forEach(zeroNumVO -> { -// String waybillNo = zeroNumVO.getWaybillNo(); -// Integer num = zeroNumVO.getNum(); -// WarehouseWaybillEntity waybill = warehouseWaybillClient.findByWaybillNo(waybillNo); -// Integer totalCount = waybill.getTotalCount(); -// Integer waybillStatusInt = Integer.parseInt(waybill.getWaybillStatus()); -// TrunklineWaybillOrderEntity waybillOrderEntity = trunklineWaybillOrderService.findEntityByWaybillNoAndOrderCode(waybillNo,waybillNo); -// if(!Objects.isNull(waybillOrderEntity)){ -// Integer handleNumber = waybillOrderEntity.getHandleNumber(); -// if(waybillStatusInt <= 40){ -// if(Objects.isNull(handleNumber)){ -// handleNumber = 0; -// } -// int i = handleNumber - num; -// if(i==0){ -// waybill.setWaybillStatus("20"); -// waybillOrderEntity.setHandleNumber(totalCount); -// }else{ -// waybill.setWaybillStatus("30"); -// waybillOrderEntity.setHandleNumber(i); -// } -// -// warehouseWaybillClient.updateEntity(waybill); -// trunklineWaybillOrderService.updateById(waybillOrderEntity); -// } -// -// } -// -// }); -// } -// } + Long orderPackageId = distributionParcelListClient.addReturnId(newParcelListEntity); + + DistributionParcelNumberEntity parcelNumberEntity = new DistributionParcelNumberEntity(); + parcelNumberEntity.setStockArticleId(orderId); + parcelNumberEntity.setParcelListId(orderPackageId); + parcelNumberEntity.setQuantity(parcelListEntity.getZeroPackageTotalNum()); + parcelNumberEntity.setHandQuantity(totalUnloadNum); + parcelNumberEntity.setDeliveryQuantity(0); + parcelNumberEntity.setSigninQuantity(0); + parcelNumberEntity.setOutboundQuantity(0); + parcelNumberEntity.setWarehouseId(warehouseId); + ls.add(parcelNumberEntity); } - } else { - Integer hQuantity = newStockArticleEntity.getHandQuantity() + unloadNum; - Integer incomingNum = newStockArticleEntity.getIncomingNum() + unloadNum; - Integer totalNumber = newStockArticleEntity.getTotalNumber(); - - if (incomingNum.equals(totalNumber)) { - if (hQuantity.equals(totalNumber)) { - newStockArticleEntity.setOrderStatus("20"); - } else { - newStockArticleEntity.setOrderStatus("30"); - } - newStockArticleEntity.setOrderReceiveStatus("30"); + distributionParcelNumberClient.addBatch(ls); + } + } else { + Integer hQuantity = newStockArticleEntity.getHandQuantity() + unloadNum; + Integer incomingNum = newStockArticleEntity.getIncomingNum() + unloadNum; + Integer totalNumber = newStockArticleEntity.getTotalNumber(); + String reservationStatus = newStockArticleEntity.getReservationStatus(); + String orderStatus = newStockArticleEntity.getOrderStatus(); + + + if (incomingNum.equals(totalNumber)) { + if (hQuantity.equals(totalNumber)) { + newStockArticleEntity.setOrderStatus("20"); } else { - if (incomingNum.equals(hQuantity)) { - newStockArticleEntity.setOrderStatus("10"); - } else { - newStockArticleEntity.setOrderStatus("30"); - } - newStockArticleEntity.setOrderReceiveStatus("20"); + newStockArticleEntity.setOrderStatus("30"); } - newStockArticleEntity.setHandQuantity(hQuantity); - newStockArticleEntity.setIncomingNum(incomingNum); - - distributionStockArticleClient.saveOrUpdate(newStockArticleEntity); -// String waybillNumber = newStockArticleEntity.getWaybillNumber(); -// WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNumber); -// Long destinationWarehouseId = warehouseWaybillEntity.getDestinationWarehouseId(); -// if(warehouseId.equals(destinationWarehouseId)){ -// QueryWrapper queryWrapper1 = new QueryWrapper<>(); -// queryWrapper1.eq("waybill_no",stockArticleEntity.getWaybillNumber()) -// .eq("order_code",stockArticleEntity.getWaybillNumber()); -// TrunklineWaybillOrderEntity one = trunklineWaybillOrderService.getOne(queryWrapper1); -// if(!Objects.isNull(one)){ -// Integer totalCount = warehouseWaybillEntity.getTotalCount(); -// Integer waybillStatusInt = Integer.parseInt(warehouseWaybillEntity.getWaybillStatus()); -// if(waybillStatusInt <= 30){ -// Integer handleNumber = one.getHandleNumber(); -// int total = handleNumber + unloadNum; -// if(total < totalCount){ -// warehouseWaybillEntity.setWaybillStatus("50"); -// one.setHandleNumber(total); -// }else{ -// warehouseWaybillEntity.setWaybillStatus("60"); -// one.setHandleNumber(totalCount); -// } -// warehouseWaybillClient.updateEntity(warehouseWaybillEntity); -// trunklineWaybillOrderService.updateById(one); -// } -// } -// } + newStockArticleEntity.setOrderReceiveStatus("30"); + } else { + newStockArticleEntity.setOrderReceiveStatus("20"); + } + if(reservationStatus.equals("30")){ + newStockArticleEntity.setReservationStatus("20"); } + if(orderStatus.equals("80")){ + newStockArticleEntity.setOrderStatus("70"); + } + + newStockArticleEntity.setHandQuantity(hQuantity); + newStockArticleEntity.setIncomingNum(incomingNum); + + List listEntityList = distributionParcelListClient.findEntityListByOrderCode(orderCode, warehouseId); + //把listEntityList中所有元素的id放入一个集合 + List parcelListIds = listEntityList.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList()); + List parceNumberList = distributionParcelNumberClient.findListByParcelListIds(parcelListIds); + //把parceNumberList转化成以parcelListId为key的Map + Map mapByParcelListId = parceNumberList.stream() + .collect(Collectors.toMap( + DistributionParcelNumberEntity::getParcelListId, + entity -> entity, + (entity1, entity2) -> entity1)); // 处理可能的键冲突 + + List updateParceList = new ArrayList<>(); + List updateParceNumberList = new ArrayList<>(); + + listEntityList.forEach(entity -> { + Long parceListId = entity.getId(); + String firsts = entity.getFirsts(); + List detailVOList = goodsNamemap.get(firsts); + //把detailVOList所有元素的unloadNum求和,如果为空用0代替 + int totalUnloadNum = detailVOList.stream() + .mapToInt(vo -> Optional.ofNullable(vo.getUnloadNum()).orElse(0)) + .sum(); + Integer quantity = entity.getQuantity(); + DistributionParcelListEntity updatePaceList = new DistributionParcelListEntity(); + updatePaceList.setId(parceListId); + updatePaceList.setQuantity(quantity+totalUnloadNum); + updatePaceList.setOrderPackageStatus("20"); + updatePaceList.setOrderPackageStockupStatus("10"); + updatePaceList.setOrderPackageReservationStatus("10"); + updatePaceList.setOrderPackageLoadingStatus("10"); + updateParceList.add(updatePaceList); + + DistributionParcelNumberEntity parcelNumberEntity = mapByParcelListId.get(parceListId); + if(!Objects.isNull(parcelNumberEntity)){ + Integer handQuantity = parcelNumberEntity.getHandQuantity(); + DistributionParcelNumberEntity updateParceNumberEntity = new DistributionParcelNumberEntity(); + updateParceNumberEntity.setId(parcelNumberEntity.getId()); + updateParceNumberEntity.setHandQuantity(handQuantity + totalUnloadNum); + updateParceNumberList.add(updateParceNumberEntity); + } + }); + + if(CollUtil.isNotEmpty(updateParceList)){ + distributionParcelListClient.updateList(updateParceList); + } + if(CollUtil.isNotEmpty(updateParceNumberList)){ + distributionParcelNumberClient.updateList(updateParceNumberList); + } + distributionStockArticleClient.saveOrUpdate(newStockArticleEntity); + } } } @@ -1363,48 +1374,12 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl queryWrapper1 = new QueryWrapper<>(); -// queryWrapper1.eq("waybill_no",orderCode) -// .eq("order_code",orderCode); -// TrunklineWaybillOrderEntity one = trunklineWaybillOrderService.getOne(queryWrapper1); -// if(!Objects.isNull(one)){ -// Integer handleNumber = one.getHandleNumber(); -// Integer totalCount = warehouseWaybillEntity.getTotalCount(); -// Integer waybillStatusInt = Integer.parseInt(warehouseWaybillEntity.getWaybillStatus()); -// int total = handleNumber + unloadNum; -// if(waybillStatusInt < 50){ -// if(total != totalCount){ -// warehouseWaybillEntity.setWaybillStatus("50"); -// one.setHandleNumber(total); -// warehouseWaybillClient.updateEntity(warehouseWaybillEntity); -// trunklineWaybillOrderService.updateById(one); -// }else{ -// warehouseWaybillEntity.setWaybillStatus("60"); -// one.setHandleNumber(total); -// warehouseWaybillClient.updateEntity(warehouseWaybillEntity); -// trunklineWaybillOrderService.updateById(one); -// } -// }else if(waybillStatusInt == 50){ -// if(total == totalCount){ -// warehouseWaybillEntity.setWaybillStatus("60"); -// one.setHandleNumber(total); -// warehouseWaybillClient.updateEntity(warehouseWaybillEntity); -// trunklineWaybillOrderService.updateById(one); -// } -// } -// } -// } + }); } //无装车记录异常日志记录 try { -// carsLoadAsyncService. carsLoadAsyncService.abnormalListUnloadCheckByLoadIdAndWarehouseId(loadId, warehouseId, currentCarsLoadLineEntity.getNodeName(), AuthUtil.getTenantId(), AuthUtil.getUserId(), AuthUtil.getNickName(), Func.firstLong(AuthUtil.getDeptId()),currentCarsLoadLineEntity); List orderPackageCodes = trunklineCarsLoadScanService.findUnloadByLoadIdAndWarehouseId(loadId, warehouseId); @@ -1714,11 +1689,51 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl pageList = distributionStockArticleClient.findZeroListByWarehouseId(warehouseId,pageNum,pageSize); - IPage pageList = baseMapper.findSignOrderZeroListByWarehouseId(page, loadCarsDTO); + IPage pageList = baseMapper.findSignOrderZeroListByWarehouseId(page, loadCarsDTO); + List records = pageList.getRecords(); + //把records中所有元素的orderId放入一个集合 + List orderIdList = records.stream().map(ZeroSuppleListVO::getOrderId).collect(Collectors.toList()); + List packageList = distributionParcelListClient.findListByStockArticleIds(orderIdList); + //把packageList中所有元素通过stockArticleId进行分组 + Map> map = packageList.stream().collect(Collectors.groupingBy(ZeroPackageSupplyVO::getStockArticleId)); + records.forEach(zeroSuppleListVO -> { + Long orderId = zeroSuppleListVO.getOrderId(); + List jsonObjectList = new ArrayList<>(); + List zeroPackageSupplyVOS = map.get(orderId); + zeroPackageSupplyVOS.forEach(zeroPackageSupplyVO -> { + jsonObjectList.add(JSONObject.parseObject(JSONObject.toJSONString(zeroPackageSupplyVO))); + }); + zeroSuppleListVO.setZeroPackageSupplyVOS(jsonObjectList); + }); + + pageList.setRecords(records); return R.data(pageList); } + @Override + public R startCarsBefore(Long loadId, Long warehouseId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("load_id",loadId); + + List carsLoadScanEntityList = trunklineCarsLoadScanService.list(queryWrapper); + Integer loadingNum = carsLoadScanEntityList.stream().mapToInt(t -> Objects.nonNull(t.getNum()) ? t.getNum() : 0).sum(); + Integer unloadNum = carsLoadScanEntityList.stream().mapToInt(t -> Objects.nonNull(t.getUnloadNum()) ? t.getUnloadNum() : 0).sum(); + + Map map = new HashMap<>(); + map.put("loadingNum",loadingNum); + map.put("unloadNum",unloadNum); + + return R.data(map); + } + + @Override + public R findZeroDetailByCarsLoadScanId(Long carsLoadScanId) { + + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanId(carsLoadScanId); + + return R.data(zeroDetailVOList); + } + @Transactional(rollbackFor = Exception.class) @Override @@ -1938,29 +1953,32 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("load_id",loadId) + if(!StringUtil.equals("4",loadType)){ + carsLoadEntity.setEndWarehouseIds(endWarehouseIds); + carsLoadEntity.setEndWarehouseNames(endWarehouseNames); + String[] split = endWarehouseIds.split(","); + int length = split.length; + Long lastEndWarehouseId = Long.parseLong(split[length - 1]); + + if(lastEndWarehouseId.equals(warehouseId)){ + //移除当前仓作为目的仓的装车记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("load_id",loadId) .eq("warehouse_id",warehouseId).isNull("final_node_id"); - List carsLoadScanEntityList = trunklineCarsLoadScanService.list(queryWrapper); - if(CollUtil.isNotEmpty(carsLoadScanEntityList)){ - //把carsLoadScanEntityList中所有元素的id放入一个List - List ids = carsLoadScanEntityList.stream().map(TrunklineCarsLoadScanEntity::getId).collect(Collectors.toList()); - removeCarsLoadScan(ids,warehouseId); - } - carsLoadEntity.setLoadStatus("40"); - }else{ - Long startWarehouseId = carsLoadEntity.getStartWarehouseId(); - if(startWarehouseId.equals(warehouseId)){ - carsLoadEntity.setLoadStatus("0"); + List carsLoadScanEntityList = trunklineCarsLoadScanService.list(queryWrapper); + if(CollUtil.isNotEmpty(carsLoadScanEntityList)){ + //把carsLoadScanEntityList中所有元素的id放入一个List + List ids = carsLoadScanEntityList.stream().map(TrunklineCarsLoadScanEntity::getId).collect(Collectors.toList()); + removeCarsLoadScan(ids,warehouseId); + } + carsLoadEntity.setLoadStatus("40"); }else{ - carsLoadEntity.setLoadStatus("20"); + Long startWarehouseId = carsLoadEntity.getStartWarehouseId(); + if(startWarehouseId.equals(warehouseId)){ + carsLoadEntity.setLoadStatus("0"); + }else{ + carsLoadEntity.setLoadStatus("20"); + } } } @@ -2355,10 +2373,88 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderPackageCodes = trunklineCarsLoadScanService.findPackageListByLoadId(loadId); + openOrderAsyncService.saveTripartiteStartCarLog(carsLoadLineEntity, AuthUtil.getNickName(), AuthUtil.getUserId()); - String content = "包件在 " + warehouseEntity.getName() + "三方中转发车"; - packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.TRIPARTITE_TRANSFER_DEPART.getCode(), content); + List orderPackageCodes = new ArrayList<>(); + List noUnloadOrderPackageCodes = new ArrayList<>(); + List noUnloadOrderPackageScanIds = new ArrayList<>(); + + String deliveryType = carsLoadEntity.getDeliveryType(); + //处理三方中转未卸车数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("load_id",loadId); + List carsLoadScanEntityList = trunklineCarsLoadScanService.list(queryWrapper); + //把carsLoadScanEntityList中所有元素通过type进行分组 + //通过type分组区分零担和包件 + Map> carsLoadScanEntityMap = carsLoadScanEntityList.stream().collect(Collectors.groupingBy(TrunklineCarsLoadScanEntity::getType)); + carsLoadScanEntityMap.keySet().forEach(type -> { + List trunklineCarsLoadScanEntities = carsLoadScanEntityMap.get(type); + if(type == 1){ + //包件 + trunklineCarsLoadScanEntities.forEach(trunklineCarsLoadScanEntity -> { + String scanCode = trunklineCarsLoadScanEntity.getScanCode(); + Integer num = trunklineCarsLoadScanEntity.getNum(); + Integer unloadNum = trunklineCarsLoadScanEntity.getUnloadNum(); + String scanStatus = trunklineCarsLoadScanEntity.getScanStatus(); + Long carsLoadScanId = trunklineCarsLoadScanEntity.getId(); + if(unloadNum == num){ + orderPackageCodes.add(scanCode); + }else{ + //未卸车包件 + if(scanStatus.equals("1")){ + if(deliveryType.equals("2")){ + noUnloadOrderPackageCodes.add(scanCode); + noUnloadOrderPackageScanIds.add(carsLoadScanId); + } + } + } + }); + }else if(type == 2){ + //零担 + //把trunklineCarsLoadScanEntities通过orderCode进行分组 + //通过orderCode分组 + Map> orderCodeMap = trunklineCarsLoadScanEntities.stream().collect(Collectors.groupingBy(TrunklineCarsLoadScanEntity::getOrderCode)); + orderCodeMap.keySet().forEach(orderCode -> { + List trunklineCarsLoadScanEntities1 = orderCodeMap.get(orderCode); + Integer loadingNum = trunklineCarsLoadScanEntities1.stream().mapToInt(t -> Objects.nonNull(t.getNum()) ? t.getNum() : 0).sum(); + Integer unloadNum = trunklineCarsLoadScanEntities1.stream().mapToInt(t -> Objects.nonNull(t.getUnloadNum()) ? t.getUnloadNum() : 0).sum(); + int i = loadingNum - unloadNum; + + DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, warehouseId); + if(!Objects.isNull(stockArticleEntity)){ + distributionStockArticleClient.addHandQuantity(stockArticleEntity.getId(), i); + } + + //把trunklineCarsLoadScanEntities1中所有元素的id放入一个List + List scanIds = trunklineCarsLoadScanEntities1.stream().map(TrunklineCarsLoadScanEntity::getId).collect(Collectors.toList()); + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanIds(scanIds); + //把zeroDetailVOList按照packageId进行分组 + Map> zeroDetailVOMap = zeroDetailVOList.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getPackageId)); + zeroDetailVOMap.keySet().forEach(packageId -> { + List zeroDetailVOS = zeroDetailVOMap.get(packageId); + Integer lNum = zeroDetailVOS.stream().mapToInt(t -> Objects.nonNull(t.getLoadingNum()) ? t.getLoadingNum() : 0).sum(); + Integer uNum = zeroDetailVOS.stream().mapToInt(t -> Objects.nonNull(t.getUnloadNum()) ? t.getUnloadNum() : 0).sum(); + if(uNum != lNum){ + int diff = lNum - uNum; + distributionParcelListClient.addZeroQuantity(packageId, diff); + distributionParcelNumberClient.addHandleQuantity(packageId,diff); + } + }); + }); + } + }); + + + if(CollUtil.isNotEmpty(orderPackageCodes)){ + String content = "包件在 " + warehouseEntity.getName() + "三方中转发车"; + packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.TRIPARTITE_TRANSFER_DEPART.getCode(), content); + } + + if(CollUtil.isNotEmpty(noUnloadOrderPackageCodes)){ + String content = "包件在 " + warehouseEntity.getName() + "三方中转取消装车"; + packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), noUnloadOrderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.CANCEL_INITIAL_WAREHOUSE_LOADING.getCode(), content); + removeCarsLoadScan(noUnloadOrderPackageScanIds, warehouseId); + } } catch (Exception e) { log.warn("#############startCarByLoadId: 存入日志失败"); @@ -2493,6 +2589,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderPackageCodes = trunklineCarsLoadScanService.findPackageListByLoadId(loadId); + openOrderAsyncService.saveTripartiteArriveCarLog(carsLoadLineEntity,AuthUtil.getNickName(),AuthUtil.getUserId()); + String content = "包件在 " + warehouseEntity.getName() + "三方中转到达"; packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.ARRICE_TRIPARTITE_TRANSFER_DEPART.getCode(), content); @@ -2535,27 +2633,31 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderPackageCodes = trunklineCarsLoadScanService.findSignListOrderPackageCodes(loadId); - - String content = "包件在" + warehouseEntity.getName() + "被三方中转整车签收"; - packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode(), content); - // 推送签收数据给工厂 - sendFactorySignTriparite(warehouseId, orderPackageCodes, warehouseEntity); - } catch (Exception e) { - log.warn("###########存入日志失败"); - } +// List scanLoadIds = trunklineCarsLoadScanService.findAllIdListByLoadIdAndNoScanStatus(loadId,"3"); + List scanLoadIds = trunklineCarsLoadScanService.findAllIdListByLoadIdAndScanStatus(loadId,"2"); + return signLoadScanByIds(scanLoadIds,warehouseId); - return R.success("签收成功"); +// carsLoadEntity.setSignTime(new Date()); +// carsLoadEntity.setLoadStatus("90"); +// updateById(carsLoadEntity); +// +// trunklineCarsLoadScanService.updateScanStatusByLoadId(loadId, "3", new Date(),AuthUtil.getNickName()); +// +// try { +// trunklineCarsLoadLogService.saveLog(carsLoadEntity, carsLoadLineEntity, CarsLoadLogTypeConstant.TRIPARTITE_TRANSFER_SIGN.getValue()); +// +// List orderPackageCodes = trunklineCarsLoadScanService.findSignListOrderPackageCodes(loadId); +// +// String content = "包件在" + warehouseEntity.getName() + "被三方中转整车签收"; +// packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode(), content); +// // 推送签收数据给工厂 +// sendFactorySignTriparite(warehouseId, orderPackageCodes, warehouseEntity); +// } catch (Exception e) { +// log.warn("###########存入日志失败"); +// } +// return R.success("签收成功"); } @Override @@ -2604,7 +2706,31 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl pageList = trunklineCarsLoadScanService.loadingDetail(page, loadCarsDTO); - + List records = pageList.getRecords(); + //把records中type等于2的id放入一个集合 + List scanLoadIds = records.stream().filter(item -> item.getType() == 2).map(TrunklineCarsLoadScanVO::getCarsLoadScanId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(scanLoadIds)){ + List scanZeroDetailVOS = scanZeroDetailService.findListByCarsLoadScanIds(scanLoadIds); + //把scanZeroDetailVOS通过scanId进行分组 + Map> scanZeroDetailVOMap = scanZeroDetailVOS.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + records.forEach(item -> { + Long scanId = item.getCarsLoadScanId(); + List list = scanZeroDetailVOMap.get(scanId); + if(CollUtil.isNotEmpty(list)){ + //把list中所有元素的goodsName用逗号拼起来 + String loadingGoods = list.stream() + .map(t-> t.getGoodsName()+"("+t.getLoadingNum()+")") + .collect(Collectors.joining(",")); + + String unloadGoods = list.stream() + .map(t-> t.getGoodsName()+"("+t.getUnloadNum()+")") + .collect(Collectors.joining(",")); + item.setLoadingGoods(loadingGoods); + item.setUnloadGoods(unloadGoods); + } + }); + } + pageList.setRecords(records); return R.data(pageList); } @@ -2882,9 +3008,16 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderPackageCodes = new ArrayList<>(); orderPackageCodes.add(orderPackageCode); - String content = "包件在 " + warehouseName + " " + (StringUtil.isBlank(trayName) ? "扫码" : "托盘(" + trayName + ")") + " 装车, 车次号:"+loadCode+" ,配载计划目的仓 " + carsLoadScanEntity.getFinalNodeName() + ",数据来源仓库 " + fromWarehouseName; packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseName, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING.getCode(), content); trunklineCarsLoadingLogService.savaLoadingLog(warehouseId, warehouseName, loadId, loadCode, waybillId, waybillNo, orderCode, orderPackageCode, 1, @@ -2936,8 +3069,9 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList) { TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId); if (Objects.isNull(carsLoadEntity)) { @@ -2992,6 +3126,31 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl parcelListEntities = distributionParcelListClient.findListByStockArticleId(articleId); + //把parcelListEntities转化为id作为key的Map + Map parcelListMapById = parcelListEntities.stream().collect(Collectors.toMap(DistributionParcelListEntity::getId, Function.identity())); + + List parcelNumberEntityList = distributionParcelNumberClient.findListByParcelListIds(new ArrayList<>(parcelListMapById.keySet())); + //把parcelNumberEntityList转化成以parceListId为key的Map + Map parcelNumberMapByParceListId = parcelNumberEntityList.stream().collect(Collectors.toMap(DistributionParcelNumberEntity::getParcelListId, Function.identity())); + + //把parcelListEntities转化成以firsts作为key的map + Map parcelListMap = parcelListEntities.stream().collect(Collectors.toMap(DistributionParcelListEntity::getFirsts, Function.identity())); + if(CollUtil.isNotEmpty(zeroPackageList)){ + for (ZeroPackageDTO zeroPackageDTO : zeroPackageList) { + Integer en = zeroPackageDTO.getEnterNum(); + String gn = zeroPackageDTO.getGoodsName(); + DistributionParcelListEntity parcelList = parcelListMap.get(gn); + if(Objects.isNull(parcelList)){ + log.warn("##################loadingZero: 品类信息不存在 gn={}", gn); + return R.fail(405, "品类信息有误"); + } + } + + } + Long loadScanId = null; Integer isAbnormal = 0; Integer isData = 1; @@ -3073,6 +3232,71 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailList = new ArrayList<>(); + List updateParceList = new ArrayList<>(); + List updateParceNumberList = new ArrayList<>(); + if(CollUtil.isNotEmpty(zeroPackageList)){ + Long finalLoadScanId = loadScanId; + zeroPackageList.forEach(zeroPackageDTO -> { + TrunklineScanZeroDetailEntity scanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + scanZeroDetailEntity.setGoodsId(zeroPackageDTO.getGoodsId()); + scanZeroDetailEntity.setScanId(finalLoadScanId); + scanZeroDetailEntity.setGoodsName(zeroPackageDTO.getGoodsName()); + scanZeroDetailEntity.setPackageId(zeroPackageDTO.getPackageId()); + scanZeroDetailEntity.setLoadingNum(zeroPackageDTO.getEnterNum()); + scanZeroDetailEntity.setUnloadNum(0); + zeroDetailList.add(scanZeroDetailEntity); + DistributionParcelListEntity parcelList = parcelListMap.get(zeroPackageDTO.getGoodsName()); + Integer quantity = parcelList.getQuantity(); + Long parcelListId = parcelList.getId(); + DistributionParcelListEntity updateEntity = new DistributionParcelListEntity(); + updateEntity.setId(parcelListId); + updateEntity.setQuantity(quantity-zeroPackageDTO.getEnterNum()); + updateParceList.add(updateEntity); + DistributionParcelNumberEntity parcelNumberEntity = parcelNumberMapByParceListId.get(parcelListId); + DistributionParcelNumberEntity updateNumberEntity = new DistributionParcelNumberEntity(); + updateNumberEntity.setId(parcelNumberEntity.getId()); + updateNumberEntity.setHandQuantity(parcelNumberEntity.getHandQuantity()-zeroPackageDTO.getEnterNum()); + updateParceNumberList.add(updateNumberEntity); + }); + }else{ + if(NumberUtil.equals(enterNum,handQuantity)){ + Long finalLoadScanId = loadScanId; + parcelListEntities.forEach(entity -> { + Long waybillDetailId = entity.getAdvanceId(); + WarehouseWayBillDetail entityByWaybillDetailId = warehouseWaybillDetailClient.findEntityByWaybillDetailId(waybillDetailId); + TrunklineScanZeroDetailEntity scanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + scanZeroDetailEntity.setGoodsId(entityByWaybillDetailId.getProductId()); + scanZeroDetailEntity.setScanId(finalLoadScanId); + scanZeroDetailEntity.setGoodsName(entityByWaybillDetailId.getProductName()); + scanZeroDetailEntity.setPackageId(entity.getId()); + scanZeroDetailEntity.setLoadingNum(entityByWaybillDetailId.getNum()); + scanZeroDetailEntity.setUnloadNum(0); + zeroDetailList.add(scanZeroDetailEntity); + Integer quantity = entity.getQuantity(); + Long parceListId = entity.getId(); + DistributionParcelListEntity updateEntity = new DistributionParcelListEntity(); + updateEntity.setId(entity.getId()); + updateEntity.setQuantity(quantity-entityByWaybillDetailId.getNum()); + updateParceList.add(updateEntity); + DistributionParcelNumberEntity parcelNumberEntity = parcelNumberMapByParceListId.get(parceListId); + DistributionParcelNumberEntity updateNumberEntity = new DistributionParcelNumberEntity(); + updateNumberEntity.setId(parcelNumberEntity.getId()); + updateNumberEntity.setHandQuantity(parcelNumberEntity.getHandQuantity()-entityByWaybillDetailId.getNum()); + updateParceNumberList.add(updateNumberEntity); + }); + } + } + if(CollUtil.isNotEmpty(zeroDetailList)){ + scanZeroDetailService.saveBatch(zeroDetailList); + } + if(CollUtil.isNotEmpty(updateParceList)){ + distributionParcelListClient.updateList(updateParceList); + } + if(CollUtil.isNotEmpty(updateParceNumberList)){ + distributionParcelNumberClient.updateList(updateParceNumberList); + } + difficult = enterNum; distributionStockArticleClient.submitHandleNumByOrderId(enterNum, articleId); } else { @@ -3099,6 +3323,58 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailList = new ArrayList<>(); + List updateParceList = new ArrayList<>(); + List updateParceNumberList = new ArrayList<>(); + + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("scan_id",loadScanId); + List scanZeroDetailEntities = scanZeroDetailService.list(queryWrapper1); + //把scanZeroDetailEntities中所有元素的scanId作为key转为Map + Map map = scanZeroDetailEntities.stream().collect(Collectors.toMap(TrunklineScanZeroDetailEntity::getPackageId, Function.identity())); + + for (ZeroPackageDTO zeroPackageDTO : zeroPackageList) { + Long packageId = zeroPackageDTO.getPackageId(); + Integer enterNum1 = zeroPackageDTO.getEnterNum(); + TrunklineScanZeroDetailEntity scanZeroDetailEntity = map.get(packageId); + if(Objects.isNull(scanZeroDetailEntity)){ + log.warn("##################loadingZero: 品类信息不存在 packageId={}", packageId); + return R.fail(405, "品类信息有误"); + } + DistributionParcelListEntity parcelList = parcelListMapById.get(packageId); + if(Objects.isNull(parcelList)){ + log.warn("##################loadingZero: 包件信息不存在 packageId={}", packageId); + return R.fail(405, "包件信息不存在"); + } + Integer quantity = parcelList.getQuantity(); + Long parcelListId = parcelList.getId(); + DistributionParcelNumberEntity parcelNumberEntity = parcelNumberMapByParceListId.get(parcelListId); + if(Objects.isNull(parcelNumberEntity)){ + log.warn("##################loadingZero: 包件信息不存在111 packageId={}", packageId); + return R.fail(405, "包件信息不存在"); + } + Integer handQuantity1 = parcelNumberEntity.getHandQuantity(); + + Integer loadingNum = scanZeroDetailEntity.getLoadingNum(); + int i2 = enterNum1 - loadingNum; + parcelList.setQuantity(quantity-i2); + updateParceList.add(parcelList); + parcelNumberEntity.setHandQuantity(handQuantity1-i2); + updateParceNumberList.add(parcelNumberEntity); + scanZeroDetailEntity.setLoadingNum(enterNum1); + zeroDetailList.add(scanZeroDetailEntity); + } + + if(CollUtil.isNotEmpty(zeroDetailList)){ + scanZeroDetailService.updateBatchById(zeroDetailList); + } + if(CollUtil.isNotEmpty(updateParceList)){ + distributionParcelListClient.updateList(updateParceList); + } + if(CollUtil.isNotEmpty(updateParceNumberList)){ + distributionParcelNumberClient.updateList(updateParceNumberList); + } } audio = (enterNum)+"件"; @@ -3443,7 +3719,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderScanDetailList = trunklineCarsLoadScanService.findCarsLoadingOrderDetail(loadId, orderCode, warehouseId); - + if(CollUtil.isNotEmpty(orderScanDetailList)){ + //把orderScanDetailList中所有元素的loadScanId放入一个List + List loadScanIdList = orderScanDetailList.stream().map(OrderScanDetailVO::getLoadScanId).collect(Collectors.toList()); + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanIds(loadScanIdList); + //把zeroDetailVOList中所有元素通过scanId进行分组 + Map> zeroDetailMap = zeroDetailVOList.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + orderScanDetailList.forEach(orderScanDetailVO -> { + Long loadScanId = orderScanDetailVO.getLoadScanId(); + List list = zeroDetailMap.get(loadScanId); + orderScanDetailVO.setZeroDetailList(list); + }); + } return R.data(orderScanDetailList); } @@ -3619,8 +3906,24 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl pageList = distributionStockArticleClient.findZeroListByWarehouseId(warehouseId,pageNum,pageSize); - IPage pageList = baseMapper.findZeroListByWarehouseId(page, loadCarsDTO); + IPage pageList = baseMapper.findZeroListByWarehouseId(page, loadCarsDTO); + List records = pageList.getRecords(); + //把records中所有元素的orderId放入一个集合 + List orderIdList = records.stream().map(ZeroSuppleListVO::getOrderId).collect(Collectors.toList()); + List packageList = distributionParcelListClient.findListByStockArticleIds(orderIdList); + //把packageList中所有元素通过stockArticleId进行分组 + Map> map = packageList.stream().collect(Collectors.groupingBy(ZeroPackageSupplyVO::getStockArticleId)); + records.forEach(zeroSuppleListVO -> { + Long orderId = zeroSuppleListVO.getOrderId(); + List jsonObjectList = new ArrayList<>(); + List zeroPackageSupplyVOS = map.get(orderId); + zeroPackageSupplyVOS.forEach(zeroPackageSupplyVO -> { + jsonObjectList.add(JSONObject.parseObject(JSONObject.toJSONString(zeroPackageSupplyVO))); + }); + zeroSuppleListVO.setZeroPackageSupplyVOS(jsonObjectList); + }); + + pageList.setRecords(records); return R.data(pageList); } @@ -3647,6 +3950,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList = zeroSuppleVO.getZeroPackageList(); WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); if (Objects.isNull(warehouseWaybillEntity)) { log.warn("##########addZeroSupple: 运单信息不存在 loadId={} waybillNo={}", loadId, waybillNo); return R.fail(405, "运单信息不存在"); } + Long waybillId = warehouseWaybillEntity.getId(); DistributionStockArticleEntity zeroStockArticleEntity = distributionStockArticleClient.findZeroByOrderCodeAndWarehouseId(orderCode, warehouseId); if (Objects.isNull(zeroStockArticleEntity)) { @@ -3702,21 +4019,36 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl scanZeroDetailEntityList = new ArrayList<>(); + + zeroPackageList.forEach(zeroPackageDTO -> { + Long packageId = zeroPackageDTO.getPackageId(); + Integer packageNum = zeroPackageDTO.getEnterNum(); + TrunklineScanZeroDetailEntity scanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + scanZeroDetailEntity.setScanId(scanLoadId); + scanZeroDetailEntity.setPackageId(zeroPackageDTO.getPackageId()); + scanZeroDetailEntity.setGoodsId(zeroPackageDTO.getGoodsId()); + scanZeroDetailEntity.setGoodsName(zeroPackageDTO.getGoodsName()); + scanZeroDetailEntity.setLoadingNum(packageNum); + scanZeroDetailEntity.setUnloadNum(0); + scanZeroDetailEntityList.add(scanZeroDetailEntity); + distributionParcelListClient.addZeroQuantity(packageId,-packageNum); + distributionParcelNumberClient.addHandleQuantity(packageId,-packageNum); + }); + scanZeroDetailService.saveBatch(scanZeroDetailEntityList); zeroStockArticleEntity.setHandQuantity(zeroStockArticleEntity.getHandQuantity() - enterNum); distributionStockArticleClient.saveOrUpdate(zeroStockArticleEntity); + waybillPackageService.updateWaybillStatus(warehouseWaybillEntity); + + String operationRemark = "运单 补录装车"+enterNum+"件 干线批次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+",司机手机:"+driverMobile; + openOrderAsyncService.saveLog(waybillId,waybillNo,"30",warehouseName+" 干线补录装车",operationRemark,AuthUtil.getNickName(),AuthUtil.getUserId(),warehouseId,warehouseName); + if(!Objects.isNull(signOrderId)){ updateSignOrderNumBySignOrderId(signOrderId); -// TrunklineLoadSignOrderEntity signOrderEntity = trunklineLoadSignOrderService.getById(signOrderId); -// signOrderEntity.setPlanNum(signOrderEntity.getPlanNum() + enterNum); -// signOrderEntity.setLoadingNum(signOrderEntity.getLoadingNum() + enterNum); -// Integer signNum = signOrderEntity.getSignNum(); -// if(signNum > 0 ){ -// signOrderEntity.setSignStatus("10"); -// } -// trunklineLoadSignOrderService.updateById(signOrderEntity); } } //更新数量 @@ -3830,6 +4162,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList = loadCarsDTO.getZeroPackageList(); BasicdataTrayEntity basicdataTrayEntity = basicdataTrayClient.getTrayByTrayCode(trayCode); if(Objects.isNull(basicdataTrayEntity)){ @@ -3849,7 +4182,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("trayType", trayType); @@ -3957,6 +4295,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList) { log.info("#############transferUnloadZero: 三方中转卸车零担"); TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId); @@ -4235,10 +4574,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl updateScanZeroDetailList = new ArrayList<>(); + zeroPackageList.forEach(zeroPackageDTO -> { + TrunklineScanZeroDetailEntity scanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + scanZeroDetailEntity.setId(zeroPackageDTO.getId()); + scanZeroDetailEntity.setUnloadNum(zeroPackageDTO.getEnterNum()); + updateScanZeroDetailList.add(scanZeroDetailEntity); + }); + scanZeroDetailService.updateBatchById(updateScanZeroDetailList); + trunklineCarsUnloadLogService.savaUnloadLog(warehouseId, warehouseName, loadId, loadCode, waybillId, waybillNo, orderCode, scanCode, enterNum, 2, 1, isAbnormal, trayId, trayCode, trayName, fromWarehouseId, loadScanId, remark); @@ -4293,7 +4641,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanId(carsLoadScanId); + List zeroPackageList = new ArrayList<>(); + zeroDetailVOList.forEach(zeroDetailVO -> { + ZeroPackageDTO zeroPackageDTO = new ZeroPackageDTO(); + zeroPackageDTO.setId(zeroDetailVO.getId()); + zeroPackageDTO.setPackageId(zeroDetailVO.getPackageId()); + zeroPackageDTO.setGoodsId(zeroDetailVO.getGoodsId()); + zeroPackageDTO.setGoodsName(zeroDetailVO.getGoodsName()); + zeroPackageDTO.setEnterNum(zeroDetailVO.getLoadingNum()); + zeroPackageList.add(zeroPackageDTO); + }); + transferUnloadZero(carsLoadScanId,loadId, waybillNo, num, warehouseId, 0, trayCode, orderCode, "三方中装托盘零担正常卸车",zeroPackageList); } } @@ -4358,14 +4717,32 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl unloadPackageList = batchUnloadDTO.getUnloadPackageList(); List unloadZeroList = batchUnloadDTO.getUnloadZeroList(); - - for (UnloadZeroDTO unloadZeroDTO : unloadZeroList) { - Long carsLoadScanId = unloadZeroDTO.getCarsLoadScanId(); - String waybillNo = unloadZeroDTO.getWaybillNo(); - Integer enterNum = unloadZeroDTO.getEnterNum(); - String trayCode = unloadZeroDTO.getTrayCode(); - String orderCode = unloadZeroDTO.getOrderCode(); - unloadZero(carsLoadScanId,loadId, waybillNo, enterNum, warehouseId, 1, trayCode, orderCode, "批量卸车零担正常卸车",null,null); + //把unloadZeroList中所有元素的carsLoadScanId放入一个list中 + List carsLoadScanIdList = unloadZeroList.stream().map(UnloadZeroDTO::getCarsLoadScanId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(carsLoadScanIdList)){ + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIdList); + //把zeroDetailVOList所有元素通过id分组 + Map> zeroDetailVOMap = zeroDetailVOList.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getId)); + + for (UnloadZeroDTO unloadZeroDTO : unloadZeroList) { + Long carsLoadScanId = unloadZeroDTO.getCarsLoadScanId(); + String waybillNo = unloadZeroDTO.getWaybillNo(); + Integer enterNum = unloadZeroDTO.getEnterNum(); + String trayCode = unloadZeroDTO.getTrayCode(); + String orderCode = unloadZeroDTO.getOrderCode(); + + List list = zeroDetailVOMap.get(carsLoadScanId); + List zeroPackageList = new ArrayList<>(); + list.forEach(zeroDetailVO -> { + ZeroPackageDTO zeroPackageDTO = new ZeroPackageDTO(); + zeroPackageDTO.setPackageId(zeroDetailVO.getPackageId()); + zeroPackageDTO.setGoodsId(zeroDetailVO.getGoodsId()); + zeroPackageDTO.setGoodsName(zeroDetailVO.getGoodsName()); + zeroPackageDTO.setEnterNum(zeroDetailVO.getLoadingNum()); + zeroPackageList.add(zeroPackageDTO); + }); + unloadZero(carsLoadScanId,loadId, waybillNo, enterNum, warehouseId, 1, trayCode, orderCode, "批量卸车零担正常卸车",null,null,zeroPackageList); + } } List carsLoadScanIds = new ArrayList<>(); @@ -4395,7 +4772,6 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl stockArticleEntityList = distributionStockArticleClient.findListByOrderCodesAndWarehouseId(findParamterDTO); stockArticleEntities.addAll(stockArticleEntityList); - }); //把stockArticleEntities转成orderCode为键值的map @@ -4841,7 +5217,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanId(carsLoadScanId); + List zeroPackageList = new ArrayList<>(); + zeroDetailVOList.forEach(zeroDetailVO -> { + ZeroPackageDTO zeroPackageDTO = new ZeroPackageDTO(); + zeroPackageDTO.setId(zeroDetailVO.getId()); + zeroPackageDTO.setPackageId(zeroDetailVO.getPackageId()); + zeroPackageDTO.setGoodsId(zeroDetailVO.getGoodsId()); + zeroPackageDTO.setGoodsName(zeroDetailVO.getGoodsName()); + zeroPackageDTO.setEnterNum(zeroDetailVO.getLoadingNum()); + zeroPackageList.add(zeroPackageDTO); + }); + transferUnloadZero(carsLoadScanId,loadId, waybillNo, enterNum, warehouseId, 1, trayCode, orderCode, "批量卸车零担正常卸车",zeroPackageList); } @@ -5149,20 +5536,52 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl signScanOrderList = trunklineCarsOrderService.findSignOrderList(loadId, fromWarehouseId,signOrderId); + List signScanOrderList = trunklineCarsOrderService.findSignOrderListBySignOrderId(signOrderId); + List signPackageList = trunklineCarsLoadScanService.findSignPackageListBySignOrderId(signOrderId); + for (SignScanOrderVO signScanOrderVO : signScanOrderList) { - String waybillNo = signScanOrderVO.getWaybillNo(); - String orderCode = signScanOrderVO.getOrderCode(); - List signPackageList = trunklineCarsLoadScanService.findSignPackageList(loadId, fromWarehouseId, orderCode, waybillNo); - signScanOrderVO.setSignPackageList(signPackageList); - } + String waybillNo = StringUtil.isBlank(signScanOrderVO.getWaybillNo())?"null":signScanOrderVO.getWaybillNo(); + String orderCode = StringUtil.isBlank(signScanOrderVO.getOrderCode())?"null":signScanOrderVO.getOrderCode(); + List ls = new ArrayList<>(); + signPackageList.forEach(e -> { + String waybillNo1 = StringUtil.isBlank(e.getWaybillNo())?"null":e.getWaybillNo(); + String orderCode1 = StringUtil.isBlank(e.getOrderCode())?"null":e.getOrderCode(); + if(waybillNo.equals(waybillNo1) && orderCode.equals(orderCode1)){ + ls.add(e); + } + }); + signScanOrderVO.setSignPackageList(ls); + } + + List signScanZeroOrderList = trunklineCarsOrderService.findSignZeroOrderListBySignOrderId(signOrderId); + List signZeroPackageList = trunklineCarsLoadScanService.findSignPackageListBySignOrderId(signOrderId); + // 创建一个包含所有carsLoadScanId的新列表 + List carsLoadScanIds = signZeroPackageList.stream() + .map(SignPackageVO::getCarsLoadScanId) + .collect(Collectors.toList()); + List scanZeroDetailList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIds); + //把scanZeroDetailList中所有元素通过id进行分组 + Map> scanZeroDetailMap = scanZeroDetailList.stream() + .collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + + signZeroPackageList.forEach(signPackageVO -> { + Long carsLoadScanId = signPackageVO.getCarsLoadScanId(); + List list = scanZeroDetailMap.get(carsLoadScanId); + signPackageVO.setScanZeroDetailList(list); + }); - List signScanZeroOrderList = trunklineCarsOrderService.findSignZeroOrderList(loadId, fromWarehouseId,signOrderId); for (SignScanOrderVO signScanOrderVO : signScanZeroOrderList) { - String waybillNo = signScanOrderVO.getWaybillNo(); - String orderCode = signScanOrderVO.getOrderCode(); - List signPackageList = trunklineCarsLoadScanService.findSignPackageList(loadId, fromWarehouseId, orderCode, waybillNo); - signScanOrderVO.setSignPackageList(signPackageList); + String waybillNo = StringUtil.isBlank(signScanOrderVO.getWaybillNo())?"null":signScanOrderVO.getWaybillNo(); + String orderCode = StringUtil.isBlank(signScanOrderVO.getOrderCode())?"null":signScanOrderVO.getOrderCode(); + List ls = new ArrayList<>(); + signZeroPackageList.forEach(e -> { + String waybillNo1 = StringUtil.isBlank(e.getWaybillNo())?"null":e.getWaybillNo(); + String orderCode1 = StringUtil.isBlank(e.getOrderCode())?"null":e.getOrderCode(); + if(waybillNo.equals(waybillNo1) && orderCode.equals(orderCode1)){ + ls.add(e); + } + }); + signScanOrderVO.setSignPackageList(ls); } //查询异常列表 @@ -5202,6 +5621,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl orderPackageCodes = new ArrayList<>(); try { +// if(!Objects.isNull(waybillId)){ +// WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); +// waybillPackageService.updateWaybillStatus(waybillEntity); +// WaybillLogDTO waybillLogDTO = new WaybillLogDTO(); +// waybillLogDTO.setWarehouseId(warehouseId); +// waybillLogDTO.setWarehouseName(warehouseName); +// waybillLogDTO.setWaybillNo(waybillEntity.getWaybillNo()); +// waybillLogDTO.setTrainNumber(carsLoadEntity.getCarsNo()); +// waybillLogDTO.setCarNumber(carsLoadEntity.getCarNumber()); +// waybillLogDTO.setSignUser(AuthUtil.getNickName()); +// waybillLogDTO.setSignTime(date); +// waybillLogDTO.setDriverName(carsLoadEntity.getDriverName()); +// waybillLogDTO.setNum(unloadNum); +// waybillLogDTO.setSignOrderCode(carsLoadEntity.getCarsNo()); +// waybillLogDTO.setType(1); +// waybillLogDTO.setUserId(AuthUtil.getUserId()); +// waybillLogDTO.setNickName(AuthUtil.getNickName()); +// waybillTrackService.addSignWaybillLog(waybillLogDTO); +// } + orderPackageCodes.add(orderPackageCode); String content = "包件在 " + warehouseEntity.getName() + "直发商家签收"; packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(), AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getNickName(), orderPackageCodes, warehouseId, warehouseEntity.getName(), WorkNodeEnums.SIGN_DIRECT_SHIPPER.getCode(), content); @@ -5474,15 +5923,19 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList) { Date date = new Date(); TrunklineLoadSignOrderEntity signOrderEntity = trunklineLoadSignOrderService.getById(signOrderId); if (Objects.isNull(signOrderEntity)) { @@ -5528,6 +5981,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl updateScanZeroDetailList = new ArrayList<>(); + zeroPackageList.forEach(zeroPackage -> { + TrunklineScanZeroDetailEntity updateEntity = new TrunklineScanZeroDetailEntity(); + updateEntity.setId(zeroPackage.getId()); + updateEntity.setUnloadNum(zeroPackage.getEnterNum()); + updateScanZeroDetailList.add(updateEntity); + }); + + if(CollUtil.isNotEmpty(updateScanZeroDetailList)){ + scanZeroDetailService.updateBatchById(updateScanZeroDetailList); + } + //生成签收记录 trunklineCarsSignLogService.addEntity(carsLoadScanEntity, remark); @@ -5550,6 +6017,12 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl signOrderIds = new ArrayList<>(); List updateCarsLoadScanList = new ArrayList<>(); List updateParcelList = new ArrayList<>(); - + List updateZerpPackageList = new ArrayList<>(); Date date = new Date(); if (!list.isEmpty()) { @@ -5632,7 +6105,9 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl parcelList = parcelListMap.get(scanCode); if (!Objects.isNull(parcelList)) { @@ -5642,6 +6117,16 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanId(carsLoadScanId); + zeroDetailVOList.forEach(p -> { + TrunklineScanZeroDetailEntity scanZeroDetailEntity = new TrunklineScanZeroDetailEntity(); + scanZeroDetailEntity.setId(p.getId()); + scanZeroDetailEntity.setUnloadNum(p.getLoadingNum()); + updateZerpPackageList.add(scanZeroDetailEntity); + }); + } updateCarsLoadScanList.add(entity); loadIds.add(entity.getLoadId()); @@ -5676,6 +6161,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadingZeroFlag = new AtomicReference<>(0); + //查询有哪些在当前仓做计划的订单 List carsOrderEntityList = trunklineCarsOrderService.findListByLoadIdAndNodeId(loadId, warehouseId); //把carsOrderEntityList通过type分组成两个新的集合 @@ -5789,8 +6280,15 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl> map = trunklineCarsLoadScanEntities.stream().filter(t -> Objects.nonNull(t.getWaybillNo())).collect(Collectors.groupingBy(TrunklineCarsLoadScanEntity::getWaybillNo)); map.keySet().forEach(waybillNo -> { List list = map.get(waybillNo); - //把list中所有元素的unloadNum求和,没有值就取0 - Integer unloadNum = list.stream().mapToInt(t -> Objects.nonNull(t.getUnloadNum()) ? t.getUnloadNum() : 0).sum(); - - WaybillLogDTO waybillLogDTO = new WaybillLogDTO(); - waybillLogDTO.setWarehouseId(warehouseId); - waybillLogDTO.setWarehouseName(warehouseName); - waybillLogDTO.setWaybillNo(waybillNo); - waybillLogDTO.setTrainNumber(carsLoadEntity.getCarsNo()); - waybillLogDTO.setCarNumber(carsLoadEntity.getCarNumber()); - waybillLogDTO.setSignUser(AuthUtil.getNickName()); - waybillLogDTO.setSignTime(date); - waybillLogDTO.setDriverName(carsLoadEntity.getDriverName()); - waybillLogDTO.setNum(unloadNum); - waybillLogDTO.setSignOrderCode(carsLoadEntity.getCarsNo()); - waybillLogDTO.setType(1); - waybillLogDTO.setUserId(AuthUtil.getUserId()); - waybillLogDTO.setNickName(AuthUtil.getNickName()); - waybillTrackService.addSignWaybillLog(waybillLogDTO); - }); + Integer signNum = 0; + if("1".equals(deliveryType)){ + signNum = list.stream().mapToInt(t -> Objects.nonNull(t.getNum()) ? t.getNum() : 0).sum(); + }else if("2".equals(deliveryType)){ + signNum = list.stream().mapToInt(t -> Objects.nonNull(t.getUnloadNum()) ? t.getUnloadNum() : 0).sum(); + } + + if(signNum > 0){ + WaybillLogDTO waybillLogDTO = new WaybillLogDTO(); + waybillLogDTO.setWarehouseId(warehouseId); + waybillLogDTO.setWarehouseName(warehouseName); + waybillLogDTO.setWaybillNo(waybillNo); + waybillLogDTO.setTrainNumber(carsLoadEntity.getCarsNo()); + waybillLogDTO.setCarNumber(carsLoadEntity.getCarNumber()); + waybillLogDTO.setSignUser(AuthUtil.getNickName()); + waybillLogDTO.setSignTime(date); + waybillLogDTO.setDriverName(carsLoadEntity.getDriverName()); + waybillLogDTO.setNum(signNum); + waybillLogDTO.setSignOrderCode(carsLoadEntity.getCarsNo()); + waybillLogDTO.setType(1); + waybillLogDTO.setUserId(AuthUtil.getUserId()); + waybillLogDTO.setNickName(AuthUtil.getNickName()); + waybillTrackService.addSignWaybillLog(waybillLogDTO); + } + }); } catch (Exception e) { log.warn("###########存入日志失败"); @@ -6308,8 +6819,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl waybillLogDTOList = new ArrayList<>(); QueryWrapper queryWrapper1 = new QueryWrapper<>(); - queryWrapper1.eq("load_id",warehouseId) + queryWrapper1.eq("load_id",loadId) .eq("sign_order_id",signOrderId) .eq("scan_status","3"); List signCarsLoadScanEntityList = trunklineCarsLoadScanService.list(queryWrapper1); @@ -6575,7 +7087,30 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadingDetailExport(LoadCarsDTO loadCarsDTO) { - return trunklineCarsLoadScanService.loadingDetailExport(loadCarsDTO); + List loadingDetailExportVOS = trunklineCarsLoadScanService.loadingDetailExport(loadCarsDTO); + + //把records中type等于2的id放入一个集合 + List scanLoadIds = loadingDetailExportVOS.stream().filter(item -> item.getType().equals("零担")).map(LoadingDetailExportVO::getId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(scanLoadIds)){ + List scanZeroDetailVOS = scanZeroDetailService.findListByCarsLoadScanIds(scanLoadIds); + //把scanZeroDetailVOS通过scanId进行分组 + Map> scanZeroDetailVOMap = scanZeroDetailVOS.stream().collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + loadingDetailExportVOS.forEach(item -> { + Long scanId = item.getId(); + List list = scanZeroDetailVOMap.get(scanId); + //把list中所有元素的goodsName用逗号拼起来 + String loadingGoods = list.stream() + .map(t-> t.getGoodsName()+"("+t.getLoadingNum()+")") + .collect(Collectors.joining(",")); + + String unloadGoods = list.stream() + .map(t-> t.getGoodsName()+"("+t.getUnloadNum()+")") + .collect(Collectors.joining(",")); + item.setLoadingGoods(loadingGoods); + item.setUnloadGoods(unloadGoods); + }); + } + return loadingDetailExportVOS; } @Override @@ -6792,7 +7327,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroList = trunklineCarsOrderService.findZeroList(loadId, warehouseId); + zeroList.forEach(loadZeroListVO -> { + String waybillNo = loadZeroListVO.getWaybillNo(); + String orderCode = loadZeroListVO.getOrderCode(); + List loadingNumVOList = scanZeroDetailService.findGoodsLoadingNum(loadId,warehouseId,waybillNo,orderCode); + //把loadingNumVOList转化成以goodsId作为key的Map + Map map = loadingNumVOList.stream().collect(Collectors.toMap(GoodsLoadingNumVO::getGoodsId, Function.identity())); + List zeroPackageList = distributionParcelListClient.findPackageGoodsListByWaybillNo(waybillNo); + List ls = new ArrayList<>(); + zeroPackageList.forEach(jsonObject -> { + ZeroPackageVO javaObject = jsonObject.toJavaObject(ZeroPackageVO.class); + Long goodsId = javaObject.getGoodsId(); + GoodsLoadingNumVO goodsLoadingNumVO = map.get(goodsId); + if(Objects.isNull(goodsLoadingNumVO)){ + javaObject.setLoadingNum(0); + }else{ + javaObject.setLoadingNum(goodsLoadingNumVO.getLoadingNum()); + } + ls.add(javaObject); + }); + loadZeroListVO.setZeroPackageList(ls); + }); + //查询异常列表 QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -6867,6 +7424,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadIdSet = groupedByLoadId.keySet(); + List trunklineCarsLoadEntities = baseMapper.selectBatchIds(loadIdSet); + //把trunklineCarsLoadEntities转化成以id为key的Map + Map map = trunklineCarsLoadEntities.stream().collect(Collectors.toMap(TrunklineCarsLoadEntity::getId, Function.identity())); + List updateParceListList = new ArrayList<>(); List updateStockArticleList = new ArrayList<>(); @@ -6897,6 +7458,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl loadScanEntityList2 = groupedByOrderCode.get(orderCode); if(CollUtil.isNotEmpty(loadScanEntityList2)){ + + TrunklineCarsLoadScanEntity carsLoadScanEntity = loadScanEntityList2.get(0); + Long loadId1 = carsLoadScanEntity.getLoadId(); + //把loadScanEntityList2的num进行累加 Integer num = loadScanEntityList2.stream().map(TrunklineCarsLoadScanEntity::getNum).reduce(0, Integer::sum); //把loadScanEntityList2中所有元素的scanCode放入一个List @@ -6926,9 +7491,17 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl carsLoadScanIdList = loadScanEntityList2.stream().map(TrunklineCarsLoadScanEntity::getId).collect(Collectors.toList()); + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIds); + //把zeroDetailVOList所有元素通过packageId进行分组 + Map> groupedByPackageId = zeroDetailVOList.stream().filter(trunklineScanZeroDetailVO-> !Objects.isNull(trunklineScanZeroDetailVO.getPackageId())) + .collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getPackageId)); + groupedByPackageId.keySet().forEach(packageId -> { + List scanZeroDetailVOList = groupedByPackageId.get(packageId); + Integer loadingNum = scanZeroDetailVOList.stream().map(TrunklineScanZeroDetailVO::getLoadingNum).reduce(0, Integer::sum); + distributionParcelListClient.addZeroQuantity(packageId, loadingNum); + }); + if(warehouseId.equals(fromWarehouseId)){ Long waybillId = distributionStockArticle.getWaybillId(); String waybillNo = distributionStockArticle.getWaybillNumber(); @@ -6980,8 +7565,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroPackageList) { log.info("#############unloadZero: 卸车零担"); + if(CollUtil.isEmpty(zeroPackageList)){ + log.warn("#############unloadZero: ;品类信息有误 zeroPackageList={}", zeroPackageList); + return R.fail(405, "品类信息有误"); + } + TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId); if (Objects.isNull(carsLoadEntity)) { log.warn("#############unloadZero: 配载计划信息不存在 loadId={}", loadId); @@ -8707,6 +9299,13 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroDetailMap = zeroPackageList.stream().collect(Collectors.toMap(ZeroPackageDTO::getGoodsId, Function.identity())); + + List zeroDetailVOList = scanZeroDetailService.findListByCarsLoadScanId(carsLoadScanId); + List updateList = new ArrayList<>(); + zeroDetailVOList.forEach(detailVO -> { + Long goodsId = detailVO.getGoodsId(); + Long id = detailVO.getId(); + ZeroPackageDTO zeroPackageDTO = zeroDetailMap.get(goodsId); + if(!Objects.isNull(zeroPackageDTO)){ + TrunklineScanZeroDetailEntity updateEntity = new TrunklineScanZeroDetailEntity(); + updateEntity.setId(id); + updateEntity.setUnloadNum(zeroPackageDTO.getEnterNum()); + updateList.add(updateEntity); + } + }); + if(CollUtil.isNotEmpty(updateList)){ + scanZeroDetailService.updateBatchById(updateList); + } + trunklineCarsUnloadLogService.savaUnloadLog(warehouseId, warehouseName, loadId, loadCode, waybillId, waybillNo, orderCode, scanCode, enterNun, 2, 1, isAbnormal, trayId, trayCode, trayName, fromWarehouseId, loadScanId, remark); @@ -9174,24 +9794,63 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl unloadScanOrderList = trunklineCarsLoadScanService.findPackageWithOrderList(loadId, warehouseId); - for (UnloadScanOrderVO unloadScanOrderVO : unloadScanOrderList) { - Integer loadingNum = unloadScanOrderVO.getLoadingNum(); - String waybillNo = unloadScanOrderVO.getWaybillNo(); - String orderCode = unloadScanOrderVO.getOrderCode(); - Integer totalNumber = trunklineAdvanceDetailService.findTotalNumByOrderCode(orderCode); - unloadScanOrderVO.setTotalNumber(totalNumber); - List unloadPackageList = trunklineCarsLoadScanService.findUnloadPackageList(loadId, warehouseId, waybillNo, orderCode); - unloadScanOrderVO.setUnloadPackageList(unloadPackageList); + if(CollUtil.isNotEmpty(unloadScanOrderList)){ + //把unloadScanOrderList中所有元素转化成以orderCode为key的map + Map unloadScanOrderMap = unloadScanOrderList.stream().collect(Collectors.toMap(UnloadScanOrderVO::getOrderCode, Function.identity())); + Set orderCodeSet = unloadScanOrderMap.keySet(); + List orderCodeNumList = trunklineAdvanceDetailService.findTotalNumByOrderCodes(orderCodeSet); + //把orderCodeNumList中所有元素转化成以orderCode为key的map + Map orderCodeNumMap = orderCodeNumList.stream().collect(Collectors.toMap(OrderCodeNumVO::getOrderCode, Function.identity())); + + List unloadList = trunklineCarsLoadScanService.findUnloadPackageListByLoadIdAndFinalNodeId(loadId,warehouseId); + + for (UnloadScanOrderVO unloadScanOrderVO : unloadScanOrderList) { + String waybillNo = StringUtil.isBlank(unloadScanOrderVO.getWaybillNo())?"null":unloadScanOrderVO.getWaybillNo(); + String orderCode = StringUtil.isBlank(unloadScanOrderVO.getOrderCode())?"null":unloadScanOrderVO.getOrderCode(); + unloadScanOrderVO.setTotalNumber(orderCodeNumMap.get(orderCode).getTotalNum()); + List unloadPackageList = new ArrayList<>(); + unloadList.forEach(unloadPackageVO -> { + String orderCode1 = StringUtil.isBlank(unloadPackageVO.getOrderCode())?"null":unloadPackageVO.getOrderCode(); + String waybillNo1 = StringUtil.isBlank(unloadPackageVO.getWaybillNo())?"null":unloadPackageVO.getWaybillNo(); + if(waybillNo.equals(waybillNo1) && orderCode.equals(orderCode1)){ + unloadPackageList.add(unloadPackageVO); + } + }); + unloadScanOrderVO.setUnloadPackageList(unloadPackageList); + } } + //查询已装车的零担 List zeroList = trunklineCarsLoadScanService.findUnloadZeroList(loadId, warehouseId); + + List unloadPackageList = trunklineCarsLoadScanService.findUnloadZeroListByLoadIdAndFinalNodeId(loadId, warehouseId); + List carsLoadScanIds = unloadPackageList.stream() + .map(UnloadPackageVO::getCarsLoadScanId) + .collect(Collectors.toList()); + List scanZeroDetailList = scanZeroDetailService.findListByCarsLoadScanIds(carsLoadScanIds); + //把scanZeroDetailList中所有元素通过id进行分组 + Map> scanZeroDetailMap = scanZeroDetailList.stream() + .collect(Collectors.groupingBy(TrunklineScanZeroDetailVO::getScanId)); + + unloadPackageList.forEach(unloadPackageVO -> { + Long carsLoadScanId = unloadPackageVO.getCarsLoadScanId(); + List list = scanZeroDetailMap.get(carsLoadScanId); + unloadPackageVO.setScanZeroDetailList(list); + }); + for (UnloadZeroVO unloadZeroVO : zeroList) { - Integer loadingNum = unloadZeroVO.getLoadingNum(); - String waybillNo = unloadZeroVO.getWaybillNo(); - String orderCode = unloadZeroVO.getOrderCode(); - List unloadPackageList = trunklineCarsLoadScanService.findUnloadPackageList(loadId, warehouseId, waybillNo, orderCode); - unloadZeroVO.setUnloadPackageList(unloadPackageList); + String waybillNo = StringUtil.isBlank(unloadZeroVO.getWaybillNo())?"null":unloadZeroVO.getWaybillNo(); + String orderCode = StringUtil.isBlank(unloadZeroVO.getOrderCode())?"null":unloadZeroVO.getOrderCode(); + List unloadLs = new ArrayList<>(); + unloadPackageList.forEach(unloadPackageVO -> { + String orderCode1 = StringUtil.isBlank(unloadPackageVO.getOrderCode())?"null":unloadPackageVO.getOrderCode(); + String waybillNo1 = StringUtil.isBlank(unloadPackageVO.getWaybillNo())?"null":unloadPackageVO.getWaybillNo(); + if(waybillNo.equals(waybillNo1) && orderCode.equals(orderCode1)){ + unloadLs.add(unloadPackageVO); + } + }); + unloadZeroVO.setUnloadPackageList(unloadLs); } //查询异常列表 diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsOrderEntityServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsOrderEntityServiceImpl.java index e0b3a3e39..53d89f456 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsOrderEntityServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsOrderEntityServiceImpl.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; @Slf4j @@ -153,4 +154,14 @@ public class TrunklineCarsOrderEntityServiceImpl extends BaseServiceImpl findSignOrderListBySignOrderId(Long signOrderId) { + return baseMapper.findSignOrderListBySignOrderId(signOrderId); + } + + @Override + public List findSignZeroOrderListBySignOrderId(Long signOrderId) { + return baseMapper.findSignZeroOrderListBySignOrderId(signOrderId); + } + } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineScanZeroDetailServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineScanZeroDetailServiceImpl.java new file mode 100644 index 000000000..350a7d2ec --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineScanZeroDetailServiceImpl.java @@ -0,0 +1,38 @@ +package com.logpm.trunkline.service.impl; + +import com.logpm.trunkline.entity.TrunklineScanZeroDetailEntity; +import com.logpm.trunkline.mapper.TrunklineScanZeroDetailMapper; +import com.logpm.trunkline.service.ITrunklineScanZeroDetailService; +import com.logpm.trunkline.vo.GoodsLoadingNumVO; +import com.logpm.trunkline.vo.TrunklineScanZeroDetailVO; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@AllArgsConstructor +@Slf4j +public class TrunklineScanZeroDetailServiceImpl extends BaseServiceImpl implements ITrunklineScanZeroDetailService { + @Override + public List findListByCarsLoadScanId(Long carsLoadScanId) { + return baseMapper.findListByCarsLoadScanId(carsLoadScanId); + } + + @Override + public List findListByCarsLoadScanIds(List carsLoadScanIds) { + return baseMapper.findListByCarsLoadScanIds(carsLoadScanIds); + } + + @Override + public List findGoodsLoadingNum(Long loadId, Long warehouseId, String waybillNo, String orderCode) { + return baseMapper.findGoodsLoadingNum(loadId,warehouseId,waybillNo,orderCode); + } + + @Override + public void deleteListByCarsLoadScanIds(List carsLoadScanIds) { + baseMapper.deleteListByCarsLoadScanIds(carsLoadScanIds); + } +} 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 0ceabca00..3b282b81a 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 @@ -106,32 +106,37 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl save(WarehouseSettingDTO warehouseSettingDTO) { + return warehouseSettingService.saveSetting(warehouseSettingDTO); + } + +} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java index f6d591937..c318bc02d 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java @@ -29,6 +29,8 @@ import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.excel.WarehouseWaybillExcel; import com.logpm.warehouse.service.IWarehouseWaybillService; import com.logpm.warehouse.vo.ExportWarehouseWaybillVO; +import com.logpm.warehouse.vo.FinanceWaybillExportVO; +import com.logpm.warehouse.vo.FinanceWaybillVO; import com.logpm.warehouse.vo.WarehouseWaybillVO; import com.logpm.warehouse.wrapper.WarehouseWaybillWrapper; import io.swagger.annotations.Api; @@ -315,7 +317,7 @@ public class WarehouseWaybillController extends BladeController { } waybillDTO.setDestinationWarehouseIds(destinationWarehouseIds); - IPage pages = warehouseWaybillService.pageFinanceWaybillList(waybillDTO); + IPage pages = warehouseWaybillService.pageFinanceWaybillList(waybillDTO); return R.data(pages); }catch (CustomerException e){ @@ -327,6 +329,34 @@ public class WarehouseWaybillController extends BladeController { } } + @ResponseBody + @PostMapping("/financeWaybillListExport") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "运单审核列表导出", notes = "传入waybillDTO") + public void financeWaybillListExport(@RequestBody WarehouseWaybillDTO waybillDTO, HttpServletResponse response) { + String method = "############financeWaybillListExport: "; + log.info(method+"请求参数{}",waybillDTO); + List destinationWarehouseIds = new ArrayList<>(); + //当前登录人选择的仓库 + BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse(); + if(Objects.isNull(myCurrentWarehouse)){ + List myWatchWarehouse = warehouseClient.getMyWatchWarehouse(); + if(!myWatchWarehouse.isEmpty()){ + myWatchWarehouse.forEach(warehouseEntity -> { + destinationWarehouseIds.add(warehouseEntity.getId()); + }); + } + }else{ + destinationWarehouseIds.add(myCurrentWarehouse.getId()); + } + waybillDTO.setDestinationWarehouseIds(destinationWarehouseIds); + + List ls = warehouseWaybillService.financeWaybillListExport(waybillDTO); + //导出ls + ExcelUtil.export(response, "运单审核数据", "运单审核数据", ls, FinanceWaybillExportVO.class); + } + + @ResponseBody @PostMapping("/findWaybillInfo") diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseSettingDTO.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseSettingDTO.java new file mode 100644 index 000000000..15ee36b09 --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseSettingDTO.java @@ -0,0 +1,19 @@ +package com.logpm.warehouse.dto; + +import com.logpm.warehouse.entity.WarehouseSettingEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class WarehouseSettingDTO extends WarehouseSettingEntity { + + private static final long serialVersionUID = 1L; + + /** + * 仓库id集合 + */ + List warehouseListIds; +} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseSettingClient.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseSettingClient.java new file mode 100644 index 000000000..421c1cc48 --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/WarehouseSettingClient.java @@ -0,0 +1,24 @@ +package com.logpm.warehouse.feign; + +import com.logpm.warehouse.service.IWarehouseSettingService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +@ApiIgnore() +@RestController +@AllArgsConstructor +public class WarehouseSettingClient implements IWarehouseSettingClient{ + + private final IWarehouseSettingService warehouseSettingService; + + /** + * 是否强制装车 + * @param warehouseId + * @return + */ + @Override + public Boolean isMandatoryLoading(Long warehouseId) { + return warehouseSettingService.isMandatoryLoading(warehouseId); + } +} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java index 6edcc1f82..54cf18c65 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java @@ -203,4 +203,6 @@ public interface TaskQuestMapper extends BaseMapper { List exportAllDataWithPackage(@Param("param") QuestDetailDTO questDetailDTO); List exportPanDataWithPackage(@Param("param") QuestDetailDTO questDetailDTO); + + void deleteGroundingPosition(@Param("questNum") String questNum, @Param("list") List questDetailEntities); } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml index d344c263a..c58ffb8b5 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml @@ -788,4 +788,19 @@ AND quest_status = 1 + + update ${questNum} + set grounding_position_code = null, + grounding_allocation_id = null, + is_new = 0, + is_change = 0, + is_change_at = 0, + quest_status = 0 + where id in + + #{item.id} + + + + diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseSettingMapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseSettingMapper.java new file mode 100644 index 000000000..ed1e59b60 --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseSettingMapper.java @@ -0,0 +1,7 @@ +package com.logpm.warehouse.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.warehouse.entity.WarehouseSettingEntity; + +public interface WarehouseSettingMapper extends BaseMapper { +} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java index 859a96646..38cc0311d 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java @@ -22,6 +22,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.warehouse.dto.WarehouseWaybillDTO; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.vo.ExportWarehouseWaybillVO; +import com.logpm.warehouse.vo.FinanceWaybillExportVO; +import com.logpm.warehouse.vo.FinanceWaybillVO; import com.logpm.warehouse.vo.WarehouseWaybillVO; import org.apache.ibatis.annotations.Param; @@ -62,7 +64,7 @@ public interface WarehouseWaybillMapper extends BaseMapper pageFinanceWaybillList(IPage page, @Param("param") WarehouseWaybillDTO waybillDTO); + IPage pageFinanceWaybillList(IPage page, @Param("param") WarehouseWaybillDTO waybillDTO); List findWaybillBilllByWaybillNos(@Param("waybillNos") List waybillNos); @@ -70,4 +72,6 @@ public interface WarehouseWaybillMapper extends BaseMapper exportWaybillList(@Param("param") WarehouseWaybillDTO waybillDTO); void deleteByWaybillNo(@Param("waybillNo") String waybillNo); + + List financeWaybillListExport(@Param("param") WarehouseWaybillDTO waybillDTO); } 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 2915965be..a0a02983b 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 @@ -327,9 +327,82 @@ - + 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, + lbc.clean_obj_type cleanObjType, + 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.document_making_time openTime, + lww.goods_name goodsName, + lww.total_count totalCount, + lww.total_weight totalWeight, + lww.total_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 freightFee, + lww.storage_fee+lww.warehouse_management_fee warehouseServiceFee, + lww.storage_fee warehouseFee, + 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 deliveryHandlingFee, + 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.rebate rebate, + GROUP_CONCAT(concat(lwwd.product_name,'(',lwwd.num,')')) goodsTypeNum, + GROUP_CONCAT(concat(lwwd.product_name,'(',lwwd.price,')')) goodsTypePrice, + GROUP_CONCAT(concat(lwwd.product_name,'(',IFNULL(lwwd.delivery_price,0),')')) goodsTypeDeliveryPrice, + GROUP_CONCAT(concat(lwwd.product_name,'(',IFNULL(lwwd.pickup_price,0),')')) goodsTypePickupPrice, + GROUP_CONCAT(concat(lwwd.product_name,'(',IFNULL(lwwd.freight_price,0),')')) goodsTypeFreightPrice, + 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 where lww.is_deleted = 0 and lww.waybill_no not in @@ -466,6 +539,263 @@ order by lww.create_time desc + + + +