Browse Source

Merge remote-tracking branch 'origin/master'

master
pref_mail@163.com 9 months ago
parent
commit
0ee4f1232e
  1. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java
  2. 4
      blade-biz-common/src/main/java/org/springblade/common/constant/carsload/CarsLoadLogTypeConstant.java
  3. 7
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataPriceClient.java
  4. 3
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataTripartiteMallClient.java
  5. 5
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/ClientInfoVO.java
  6. 50
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/PriceDispatchAddClientVO.java
  7. 2
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java
  8. 4
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java
  9. 1
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineBillladingWaybillVO.java
  10. 1
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java
  11. 1
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java
  12. 1
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java
  13. 14
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java
  14. 14
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordMapper.xml
  15. 6
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java
  16. 8
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataPriceClient.java
  17. 18
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataTripartiteMallClient.java
  18. 14
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataVehicleClient.java
  19. 8
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataClientMapper.xml
  20. 12
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataPriceService.java
  21. 159
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java
  22. 8
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataStorageServicesServiceImpl.java
  23. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java
  24. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java
  25. 34
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java
  26. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/PushInstallDTO.java
  27. 155
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionParcelListExcel.java
  28. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java
  29. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java
  30. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
  31. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
  32. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  33. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.java
  34. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.xml
  35. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
  36. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockListMapper.xml
  37. 1315
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/WarehouseTrayAllocationListener.java
  38. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java
  39. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java
  40. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java
  41. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  42. 201
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  43. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java
  44. 111
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  45. 68
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  46. 133
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  47. 23
      blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/service/impl/DeliveryNoteServiceImpl.java
  48. 24
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java
  49. 28
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java
  50. 5
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java
  51. 15
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/FactoryNodeEnums.java
  52. 10
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java
  53. 13
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java
  54. 2
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/FactoryOrderListener.java
  55. 6
      blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java
  56. 1
      blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/NodeNeedEnums.java
  57. 6
      blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java
  58. 2
      blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java
  59. 2
      blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NewSystemReceiveInfoHandler.java
  60. 18
      blade-service/logpm-factory/src/main/resources/application-dev.yml
  61. 18
      blade-service/logpm-old-project/src/main/resources/application-dev.yml
  62. 6
      blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java
  63. 7
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/WarehouseIndexMapper.java
  64. 16
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/WarehouseIndexMapper.xml
  65. 17
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/WarehouseIndexServiceImpl.java
  66. 8
      blade-service/logpm-report/src/main/resources/application-prod.yml
  67. 7
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java
  68. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml
  69. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml
  70. 12
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml
  71. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml
  72. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
  73. 43
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  74. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsOrderMapper.xml
  75. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/PackageFanoutListener.java
  76. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
  77. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java
  78. 50
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java
  79. 115
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  80. 16
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java
  81. 84
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java
  82. 86
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java
  83. 37
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadLogServiceImpl.java
  84. 20
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
  85. 724
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  86. 22
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
  87. 69
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseTrayTypeApiController.java
  88. 13
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/DownPackageCodeDTO.java
  89. 2
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/TrayTypeDTO.java
  90. 5
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseTrayTypeService.java
  91. 68
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java

2
blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java

@ -48,6 +48,8 @@ public abstract class FanoutConstants {
String PACKAGE_SIGN = "fanout.trunkline.packagenode.statisticsdata.packagesign" + ModuleNameConstant.DEVAUTH;
String PACKAGE_INCOMING = "fanout.trunkline.packagenode.statisticsdata.packageincoming" + ModuleNameConstant.DEVAUTH;
}
}

4
blade-biz-common/src/main/java/org/springblade/common/constant/carsload/CarsLoadLogTypeConstant.java

@ -24,7 +24,9 @@ public enum CarsLoadLogTypeConstant {
END_UNLOAD_CARS_LOAD("终点卸车",15),
TRIPARTITE_TRANSFER_SIGN("三方中转签收",16),
TRIPARTITE_TRANSFER_SETTLEMENT("三方中转结算",17),
SEND_DIRECTLY_SIGN("直发商家签收",18);
SEND_DIRECTLY_SIGN("直发商家签收",18),
SEND_DIRECTLY_SIGNPHOTO("直发商家签收图片",19),
TRIPARTITE_TRANSFER_SIGNPHOTO("三方中转签收图片",20);
/**
* 描述

7
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataPriceClient.java

@ -18,11 +18,14 @@ package com.logpm.basicdata.feign;
import com.logpm.basicdata.vo.BasicdatPriceApiVO;
import com.logpm.basicdata.vo.PriceClientVO;
import com.logpm.basicdata.vo.PriceDispatchAddClientVO;
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接口类
*
@ -36,8 +39,12 @@ public interface IBasicdataPriceClient {
String API_PREFIX = "/basicdataPrice/client";
String PRICE = API_PREFIX + "/pirce";
String DISPATCH_ADD_PRICE = API_PREFIX + "/dispatchAddPrice";
@PostMapping(PRICE)
PriceClientVO price(@RequestBody BasicdatPriceApiVO param);
@PostMapping(DISPATCH_ADD_PRICE)
List<PriceDispatchAddClientVO> dispatchAddPrice(@RequestBody BasicdatPriceApiVO param);
}

3
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataTripartiteMallClient.java

@ -51,5 +51,6 @@ public interface IBasicdataTripartiteMallClient {
@GetMapping(GETNAMEBRAND)
Long getClientIdByNameAndBrand(@RequestParam String name, @RequestParam String brand);
@GetMapping(API_PREFIX+"/findEntityByDealerNameAndDealerCodeAndBrand")
BasicdataTripartiteMallEntity findEntityByDealerNameAndDealerCodeAndBrand(@RequestParam String dealerName, @RequestParam String dealerCode, @RequestParam String brand);
}

5
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/ClientInfoVO.java

@ -9,8 +9,13 @@ public class ClientInfoVO implements Serializable {
private Long clientId;
private String clientName;
private String provinceId;
private String cityId;
private String areaId;
private String linkMan;
private String linkPhone;
private String linkAddress;
private Integer defaultPayWay;
private Long brandId;
}

50
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/PriceDispatchAddClientVO.java

@ -0,0 +1,50 @@
/*
* 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.basicdata.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* 基础价格按品类计费 视图实体类
*
* @author zqb
* @since 2024-04-02
*/
@Builder
@Data
public class PriceDispatchAddClientVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "品类id")
private Long categoryId;
@ApiModelProperty(value = "分货费")
private Double sortPrice;
@ApiModelProperty(value = "装卸费")
private Double handlingPrice;
@ApiModelProperty(value = "平移费")
private Double relocationPrice;
@ApiModelProperty(value = "上楼费")
private Double upstairsDeliveryPrice;
@ApiModelProperty(value = "配送-上楼费免费楼层")
private Integer dispatchStairsCarryingCharge;
}

2
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java

@ -199,4 +199,6 @@ public interface IDistributionParcelListClient {
@PostMapping(API_PREFIX + "/findALLNoUpShelfPackageByOrderCodeList")
List<DistributionParcelListEntity> findALLNoUpShelfPackageByOrderCodeList(@RequestBody FindParamterDTO findParamterDTO);
@PostMapping(API_PREFIX + "/findAllParcelListByAdvanceIds")
List<DistributionParcelListEntity> findAllParcelListByAdvanceIds(@RequestBody List<Long> advanceIds);
}

4
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java

@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -188,4 +189,7 @@ public interface IDistributionStockArticleClient {
@PostMapping(value = API_PREFIX + "/findOrderTotalNumByOrderPackageCodes",consumes = MediaType.APPLICATION_JSON_VALUE)
Integer findOrderTotalNumByOrderPackageCodes(@RequestBody JSONObject jsonObject);
@PostMapping(value = API_PREFIX + "/findAllStockArticleListByOrderCodes",consumes = MediaType.APPLICATION_JSON_VALUE)
List<DistributionStockArticleEntity> findAllStockArticleListByOrderCodes(@RequestBody List<String> orderCodes);
}

1
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineBillladingWaybillVO.java

@ -33,5 +33,6 @@ public class TrunklineBillladingWaybillVO extends TrunklineBillladingWaybillEnti
private Long billladingWaybillId;
private Integer totalPlanNum;
private Integer scanNum;
}

1
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java

@ -49,5 +49,6 @@ public class TrunklineCarsLoadVO extends TrunklineCarsLoadEntity {
private Integer lastStartCarStatus;
private Integer planUnloadNum;
private Integer totalLoadingNum;
}

1
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java

@ -38,6 +38,7 @@ public class WarehouseWaybillVO extends WarehouseWaybillEntity {
List<WarehouseWayBillDetail> detailList = new ArrayList<>();
private Integer handleNum;
private Integer noBillladingNum;
private Integer planNum;
private Integer totalPlanNum;

1
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesAbnormalRecordController.java

@ -58,7 +58,6 @@ public class AftersalesAbnormalRecordController extends BladeController {
try{
return aftersalesAbnormalRecordService.findPageList(abnormalRecordDTO);
}catch (CustomerException e){
log.error(e.message,e);

14
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AbnormalRecordDTO.java

@ -3,6 +3,8 @@ package com.logpm.aftersales.dto;
import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import lombok.Data;
import java.util.Date;
@Data
public class AbnormalRecordDTO extends AftersalesAbnormalRecordEntity {
@ -13,4 +15,16 @@ public class AbnormalRecordDTO extends AftersalesAbnormalRecordEntity {
private Integer dealType;
private String createDateStartStr;
private String createDateEndStr;
private Date createDateStart;
private Date createDateEnd;
private String dealDateStartStr;
private String dealDateEndStr;
private Date dealDateStart;
private Date dealDateEnd;
}

14
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordMapper.xml

@ -45,6 +45,20 @@
<if test="param.dealUserName !=null and param.dealUserName != ''">
and Locate(#{param.dealUserName},deal_user_name) > 0
</if>
<if test="param.createDateStart !=null">
and create_time &gt;= #{param.createDateStart}
</if>
<if test="param.createDateEnd !=null">
and create_time &lt;= #{param.createDateEnd}
</if>
<if test="param.dealDateStart !=null">
and deal_time &gt;= #{param.dealDateStart}
</if>
<if test="param.dealDateEnd !=null">
and deal_time &lt;= #{param.dealDateEnd}
</if>
order by up_time desc
</select>

6
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java

@ -12,6 +12,7 @@ import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.trunkline.feign.ITrunklineCarsLoadScanClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@ -50,8 +51,11 @@ public class AftersalesAbnormalRecordServiceImpl extends BaseServiceImpl<Aftersa
warehouseIdList = myWarehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList());
}
abnormalRecordDTO.setCreateDateStart(CommonUtil.getStartByDateStr(abnormalRecordDTO.getCreateDateStartStr()));
abnormalRecordDTO.setCreateDateEnd(CommonUtil.getEndByDateStr(abnormalRecordDTO.getCreateDateEndStr()));
abnormalRecordDTO.setDealDateStart(CommonUtil.getStartByDateStr(abnormalRecordDTO.getDealDateStartStr()));
abnormalRecordDTO.setDealDateEnd(CommonUtil.getEndByDateStr(abnormalRecordDTO.getDealDateEndStr()));
IPage<AftersalesAbnormalRecordEntity> pageList = baseMapper.findPageList(page,abnormalRecordDTO,warehouseIdList);

8
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataPriceClient.java

@ -19,10 +19,13 @@ package com.logpm.basicdata.feign;
import com.logpm.basicdata.service.IBasicdataPriceService;
import com.logpm.basicdata.vo.BasicdatPriceApiVO;
import com.logpm.basicdata.vo.PriceClientVO;
import com.logpm.basicdata.vo.PriceDispatchAddClientVO;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
* 基础价格 Feign实现类
*
@ -41,4 +44,9 @@ public class BasicdataPriceClient implements IBasicdataPriceClient {
return basicdataPriceService.price(param);
}
@Override
public List<PriceDispatchAddClientVO> dispatchAddPrice(BasicdatPriceApiVO param) {
return basicdataPriceService.dispatchAddPrice(param);
}
}

18
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataTripartiteMallClient.java

@ -16,6 +16,8 @@
*/
package com.logpm.basicdata.feign;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.basicdata.entity.BasicdataTripartiteMallEntity;
import com.logpm.basicdata.service.IBasicdataTripartiteMallService;
@ -27,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
* 客户三方商城 Feign实现类
*
@ -55,4 +59,18 @@ public class BasicdataTripartiteMallClient implements IBasicdataTripartiteMallCl
return basicdataTripartiteMallService.getClientIdByNameAndBrand(name,brand);
}
@Override
public BasicdataTripartiteMallEntity findEntityByDealerNameAndDealerCodeAndBrand(String dealerName, String dealerCode, String brand) {
QueryWrapper<BasicdataTripartiteMallEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tripartite_mall",dealerName)
.eq("tripartite_coding",dealerCode)
.eq("brand_name",brand);
List<BasicdataTripartiteMallEntity> list = basicdataTripartiteMallService.list(queryWrapper);
if(CollUtil.isEmpty(list)){
return null;
}else{
return list.get(0);
}
}
}

14
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataVehicleClient.java

@ -63,6 +63,20 @@ public class BasicdataVehicleClient implements IBasicdataVehicleClient {
public List<JSONObject> findCarListByName(String carNumber) {
List<BasicdataVehicleEntity> ls = basicdataVehicleService.findCarListByName(carNumber);
List<JSONObject> list = new ArrayList<>();
ls.forEach(vehicleEntity -> {
JSONObject jsonObject = new JSONObject();
jsonObject.put("carId",vehicleEntity.getId());
jsonObject.put("carNumber",vehicleEntity.getVehicleNub());
String vehicleSource = vehicleEntity.getVehicleSource();
if("3".equals(vehicleSource)){
jsonObject.put("isOut",1);
}else{
jsonObject.put("isOut",0);
}
list.add(jsonObject);
});
for (BasicdataVehicleEntity vehicleEntity:ls){
JSONObject jsonObject = new JSONObject();
jsonObject.put("carId",vehicleEntity.getId());

8
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataClientMapper.xml

@ -59,9 +59,15 @@
lbc.client_name clientName,
lbsc.linkman linkMan,
lbsc.phone linkPhone,
lbc.detailedly linkAddress
lbc.detailedly linkAddress,
lbc.blade_region_province_id provinceId,
lbc.blade_region_city_id cityId,
lbc.blade_region_area_id areaId,
lbc.default_payment_methods defaultPayWay,
t.brand_id brandId
from logpm_basicdata_client lbc
left join logpm_basicdata_store_contact lbsc on lbsc.shop_id = lbc.id
left join (select lbsb.client_id,max(lbsb.brand_id) brand_id from logpm_basicdata_store_brand lbsb group by lbsb.client_id) t on t.client_id = lbc.id
where lbc.is_deleted = 0
<if test="clientName != null and clientName != ''">
and lbc.client_name like CONCAT('%',#{clientName},'%')

12
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataPriceService.java

@ -16,19 +16,17 @@
*/
package com.logpm.basicdata.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.basicdata.entity.BasicdataPriceEntity;
import com.logpm.basicdata.excel.BasicdataPriceExcel;
import com.logpm.basicdata.vo.BasicdatPriceApiVO;
import com.logpm.basicdata.vo.BasicdataPriceBasicUpdateVO;
import com.logpm.basicdata.vo.BasicdataPricePageVO;
import com.logpm.basicdata.vo.PriceClientVO;
import com.logpm.basicdata.vo.PriceDispatchAddClientVO;
import com.logpm.basicdata.vo.PriceVO;
import org.springblade.core.mp.base.BaseService;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List;
/**
@ -80,4 +78,12 @@ public interface IBasicdataPriceService extends BaseService<BasicdataPriceEntity
* @return
*/
Boolean deletePrice(String id);
/**
* 根据客户品牌获取配送附加费
* @param param
* @Return com.logpm.basicdata.vo.PriceDispatchAddClientVO
* @Author zqb 2024/7/3
**/
List<PriceDispatchAddClientVO> dispatchAddPrice(BasicdatPriceApiVO param);
}

159
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataPriceServiceImpl.java

@ -80,6 +80,7 @@ import com.logpm.basicdata.vo.BasicdataPriceImportVO;
import com.logpm.basicdata.vo.BasicdataPricePageVO;
import com.logpm.basicdata.vo.PriceBasicVO;
import com.logpm.basicdata.vo.PriceClientVO;
import com.logpm.basicdata.vo.PriceDispatchAddClientVO;
import com.logpm.basicdata.vo.PriceDispatchAdditionalVO;
import com.logpm.basicdata.vo.PriceDispatchBasicVO;
import com.logpm.basicdata.vo.PriceDispatchVO;
@ -92,6 +93,7 @@ import com.logpm.basicdata.vo.PriceWarehouseBasicVO;
import com.logpm.basicdata.vo.PriceWarehouseVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springblade.common.enums.BooleanZeroOneEnums;
import org.springblade.common.model.IDict;
import org.springblade.core.log.exception.ServiceException;
@ -228,6 +230,40 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
}
}
@Override
public List<PriceDispatchAddClientVO> dispatchAddPrice(BasicdatPriceApiVO param) {
BasicdataPriceEntity priceEntity = getBasicdataPriceEntityByParam(param);
if (ObjectUtil.isEmpty(priceEntity)) {
return null;
}
BasicdataPriceTemplateEntity templateEntity = getBasicdataPriceTemplateEntityByPrice(priceEntity);
if (ObjectUtil.isEmpty(templateEntity)) {
return null;
}
Map<Integer, List<BasicdataPriceCategoryDispatchEntity>> dispatchMap = new HashMap<>();
initDispatchMap(priceEntity, dispatchMap);
String serviceType = templateEntity.getServiceType();
// 配送费
if (StrUtil.contains(serviceType, ServiceTypeEnums.DISPATCH.getCode().toString())) {
Integer dispatchIsAddFee = templateEntity.getDispatchIsAddFee();
if (ObjectUtil.equals(dispatchIsAddFee, BooleanZeroOneEnums.YES.getCode())) {
List<PriceDispatchAdditionalVO> priceDispatchAdditionalVOS = buildDispatchAddFee(dispatchMap);
List<PriceDispatchAddClientVO> res = new ArrayList<>();
for (PriceDispatchAdditionalVO priceDispatchAdditionalVO : priceDispatchAdditionalVOS) {
res.add(PriceDispatchAddClientVO.builder()
.categoryId(priceDispatchAdditionalVO.getCategoryId())
.sortPrice(priceDispatchAdditionalVO.getSortPrice())
.handlingPrice(priceDispatchAdditionalVO.getHandlingPrice())
.relocationPrice(priceDispatchAdditionalVO.getRelocationPrice())
.upstairsDeliveryPrice(priceDispatchAdditionalVO.getUpstairsDeliveryPrice())
.dispatchStairsCarryingCharge(priceEntity.getDispatchStairsCarryingCharge()).build());
}
return res;
}
}
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean basicUpdate(BasicdataPriceBasicUpdateVO vo) {
@ -411,38 +447,12 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
@Override
public PriceClientVO price(BasicdatPriceApiVO param) {
PriceClientVO priceClientVO = new PriceClientVO();
// 根据客户信息查找价格
String clientId = param.getClientId();
String brandId = param.getBrandId();
if (!ObjectUtil.isAllNotEmpty(clientId, brandId)) {
return null;
}
BasicdataPriceEntity priceEntity = null;
LambdaQueryWrapper<BasicdataPriceEntity> wrapper = Wrappers.<BasicdataPriceEntity>lambdaQuery()
.eq(BasicdataPriceEntity::getClientId, clientId)
.eq(BasicdataPriceEntity::getBrandId, brandId);
if (StrUtil.isNotEmpty(param.getTime())) {
wrapper.ge(BasicdataPriceEntity::getExpiryTime, DateUtil.parse(param.getTime(), "yyyy-MM-dd"))
.le(BasicdataPriceEntity::getEffectiveTime, DateUtil.parse(param.getTime(), "yyyy-MM-dd"))
;
} else {
wrapper.ge(BasicdataPriceEntity::getExpiryTime, DateUtil.beginOfDay(new Date()))
.le(BasicdataPriceEntity::getEffectiveTime, DateUtil.beginOfDay(new Date()))
;
}
List<BasicdataPriceEntity> priceEntities = this.list(wrapper);
if (CollUtil.isNotEmpty(priceEntities)) {
priceEntity = priceEntities.get(0);
}
BasicdataPriceEntity priceEntity = getBasicdataPriceEntityByParam(param);
if (ObjectUtil.isEmpty(priceEntity)) {
return priceClientVO;
}
// 根据价格获取模板
Long templateId = priceEntity.getTemplateId();
BasicdataPriceTemplateEntity templateEntity = null;
if (ObjectUtil.isNotEmpty(templateId)) {
templateEntity = templateService.getById(templateId);
}
BasicdataPriceTemplateEntity templateEntity = getBasicdataPriceTemplateEntityByPrice(priceEntity);
if (ObjectUtil.isEmpty(templateEntity)) {
return priceClientVO;
}
@ -523,6 +533,42 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
return priceClientVO;
}
private @Nullable BasicdataPriceTemplateEntity getBasicdataPriceTemplateEntityByPrice(BasicdataPriceEntity priceEntity) {
Long templateId = priceEntity.getTemplateId();
BasicdataPriceTemplateEntity templateEntity = null;
if (ObjectUtil.isNotEmpty(templateId)) {
templateEntity = templateService.getById(templateId);
}
return templateEntity;
}
private @Nullable BasicdataPriceEntity getBasicdataPriceEntityByParam(BasicdatPriceApiVO param) {
// 根据客户信息查找价格
String clientId = param.getClientId();
String brandId = param.getBrandId();
if (!ObjectUtil.isAllNotEmpty(clientId, brandId)) {
return null;
}
BasicdataPriceEntity priceEntity = null;
LambdaQueryWrapper<BasicdataPriceEntity> wrapper = Wrappers.<BasicdataPriceEntity>lambdaQuery()
.eq(BasicdataPriceEntity::getClientId, clientId)
.eq(BasicdataPriceEntity::getBrandId, brandId);
if (StrUtil.isNotEmpty(param.getTime())) {
wrapper.ge(BasicdataPriceEntity::getExpiryTime, DateUtil.parse(param.getTime(), "yyyy-MM-dd"))
.le(BasicdataPriceEntity::getEffectiveTime, DateUtil.parse(param.getTime(), "yyyy-MM-dd"))
;
} else {
wrapper.ge(BasicdataPriceEntity::getExpiryTime, DateUtil.beginOfDay(new Date()))
.le(BasicdataPriceEntity::getEffectiveTime, DateUtil.beginOfDay(new Date()))
;
}
List<BasicdataPriceEntity> priceEntities = this.list(wrapper);
if (CollUtil.isNotEmpty(priceEntities)) {
priceEntity = priceEntities.get(0);
}
return priceEntity;
}
@Override
@Transactional(rollbackFor = Exception.class)
public String upload(MultipartFile file) {
@ -3534,20 +3580,7 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
});
}
List<BasicdataPriceCategoryDispatchEntity> dispatchList = categoryDispatchService.list(Wrappers.<BasicdataPriceCategoryDispatchEntity>lambdaQuery()
.eq(BasicdataPriceCategoryDispatchEntity::getBoId, priceEntity.getId()));
if (CollUtil.isNotEmpty(dispatchList)) {
// 按类型分组放到dispatchMap中
dispatchList.forEach(item -> {
Integer type = item.getCostType();
List<BasicdataPriceCategoryDispatchEntity> collect = dispatchMap.get(type);
if (ObjectUtil.isEmpty(collect)) {
collect = new ArrayList<>();
}
collect.add(item);
dispatchMap.put(type, collect);
});
}
initDispatchMap(priceEntity, dispatchMap);
// 获取一般费用
List<BasicdataPriceGeneralEntity> generalList = generalService.list(Wrappers.<BasicdataPriceGeneralEntity>lambdaQuery()
@ -3566,6 +3599,23 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
}
}
private void initDispatchMap(BasicdataPriceEntity priceEntity, Map<Integer, List<BasicdataPriceCategoryDispatchEntity>> dispatchMap) {
List<BasicdataPriceCategoryDispatchEntity> dispatchList = categoryDispatchService.list(Wrappers.<BasicdataPriceCategoryDispatchEntity>lambdaQuery()
.eq(BasicdataPriceCategoryDispatchEntity::getBoId, priceEntity.getId()));
if (CollUtil.isNotEmpty(dispatchList)) {
// 按类型分组放到dispatchMap中
dispatchList.forEach(item -> {
Integer type = item.getCostType();
List<BasicdataPriceCategoryDispatchEntity> collect = dispatchMap.get(type);
if (ObjectUtil.isEmpty(collect)) {
collect = new ArrayList<>();
}
collect.add(item);
dispatchMap.put(type, collect);
});
}
}
private PriceDispatchVO initDispatch(BasicdataPriceEntity priceEntity, BasicdataPriceTemplateEntity templateEntity, List<BasicdataPriceFullVehicleEntity> fullVehicleEntities, Map<Integer, List<BasicdataPriceCategoryDispatchEntity>> dispatchMap, List<BasicdataPriceGeneralEntity> generalEntities, List<BasicdataPriceGeneralEntity> generalEntities1) {
PriceDispatchVO priceDispatchVO = new PriceDispatchVO();
String dispatchPricingType = templateEntity.getDispatchPricingType();
@ -3678,16 +3728,7 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
}
// 附加费
List<BasicdataPriceCategoryDispatchEntity> dispatchEntities1 = dispatchMap.get(CostTypeEnums.ADD.getCode());
if (CollUtil.isNotEmpty(dispatchEntities1)) {
List<PriceDispatchAdditionalVO> basicVOList = new ArrayList<>();
dispatchEntities1.forEach(item -> {
PriceDispatchAdditionalVO basicVO = new PriceDispatchAdditionalVO();
BeanUtil.copyProperties(item, basicVO);
basicVOList.add(basicVO);
});
priceDispatchVO.setAdditionalCategory(basicVOList);
}
priceDispatchVO.setAdditionalCategory(buildDispatchAddFee(dispatchMap));
// 一般费用 generalEntities
if (CollUtil.isNotEmpty(generalEntities)) {
BasicdataPriceGeneralEntity generalEntity = generalEntities.get(0);
@ -3712,6 +3753,20 @@ public class BasicdataPriceServiceImpl extends BaseServiceImpl<BasicdataPriceMap
return priceDispatchVO;
}
private static List<PriceDispatchAdditionalVO> buildDispatchAddFee(Map<Integer, List<BasicdataPriceCategoryDispatchEntity>> dispatchMap) {
List<BasicdataPriceCategoryDispatchEntity> dispatchEntities1 = dispatchMap.get(CostTypeEnums.ADD.getCode());
if (CollUtil.isNotEmpty(dispatchEntities1)) {
List<PriceDispatchAdditionalVO> basicVOList = new ArrayList<>();
dispatchEntities1.forEach(item -> {
PriceDispatchAdditionalVO basicVO = new PriceDispatchAdditionalVO();
BeanUtil.copyProperties(item, basicVO);
basicVOList.add(basicVO);
});
return basicVOList;
}
return null;
}
private PriceWarehouseVO initWarehouse(BasicdataPriceEntity priceEntity, BasicdataPriceTemplateEntity templateEntity, Map<Integer, List<BasicdataPriceCategoryWarehouseEntity>> warehouseMap) {
PriceWarehouseVO priceWarehouseVO = new PriceWarehouseVO();
Integer warehousePricingType = templateEntity.getWarehousePricingType();

8
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataStorageServicesServiceImpl.java

@ -80,9 +80,13 @@ public class BasicdataStorageServicesServiceImpl extends BaseServiceImpl<Basicda
// 获取仓库名称
BasicdataWarehouseEntity sendBasicdataWarehouseEntity = basicdataWarehouseService.getById(basicdataStorageServices.getSendWarehouseId());
basicdataStorageServices.setSendWarehouseName(sendBasicdataWarehouseEntity.getName());
if(sendBasicdataWarehouseEntity!=null){
basicdataStorageServices.setSendWarehouseName(sendBasicdataWarehouseEntity.getName());
}
BasicdataWarehouseEntity serveBasicdataWarehouseEntity = basicdataWarehouseService.getById(basicdataStorageServices.getServeWarehouseId());
basicdataStorageServices.setServeWarehouseName(serveBasicdataWarehouseEntity.getName());
if(serveBasicdataWarehouseEntity!=null){
basicdataStorageServices.setServeWarehouseName(serveBasicdataWarehouseEntity.getName());
}
this.updateById(basicdataStorageServices);
return true;
}else{

9
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java

@ -348,8 +348,13 @@ public class DistributionDeliveryListController extends BladeController {
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "customArgs")
public R<?> updateDeliveryList(@RequestBody DistributionDeliveryListDTO deliveryListDTO) {
R<?> result = distributionDeliveryListService.updateDeliveryListInfo(deliveryListDTO);
return result;
try{
R<?> result = distributionDeliveryListService.updateDeliveryListInfo(deliveryListDTO);
return result;
}catch (CustomerException e){
return R.fail(e.getMessage());
}
}

12
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java

@ -128,6 +128,18 @@ public class DistributionSignforController extends BladeController {
return r;
}
/**
* 异常装车包件列表
*/
@PostMapping("/loadingAbnormalPackageListTurnDown")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入distributionSignfor")
public R loadingAbnormalPackageListTurnDown(@RequestParam("ids") String ids) {
R r = distributionSignforService.loadingAbnormalPackageListTurnDown(ids);
return r;
}
/**
* 签收管理 签收订单统计

34
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java

@ -19,6 +19,7 @@ package com.logpm.distribution.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.basicdata.entity.BasicdataClientUserEntity;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
@ -563,6 +564,29 @@ public class DistributionStockArticleController extends BladeController {
}
@GetMapping("/showOrderCodeByCode")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "展示订单码")
public R showOrderCodeByCode(@ApiIgnore @RequestParam Map<String,Object> params){
OrderCodeDataVO orderCodeDataVO= null;
try {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn("##########showOrderCodeByCode: 仓库信息不存在");
return R.fail(405,"仓库信息不存在");
}
params.put("warehouseId",myCurrentWarehouse.getId());
orderCodeDataVO = distributionStockArticleService.showOrderCodeByCode(params);
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.data(orderCodeDataVO);
}
/**
@ -572,8 +596,14 @@ public class DistributionStockArticleController extends BladeController {
@ApiOperationSupport(order = 2)
@ApiOperation(value = "已签收订单", notes = "传入distributionStockArticle")
public R<IPage<DistributionSignforStockArticleVO>> signforList(@ApiIgnore @RequestParam Map<String, Object> distributionStockArticle, Query query) {
IPage<DistributionSignforStockArticleVO> pages = distributionStockArticleService.pageSignforListtOwe(Condition.getPage(query), distributionStockArticle);
return R.data(pages);
try {
IPage<DistributionSignforStockArticleVO> pages = distributionStockArticleService.pageSignforListtOwe(Condition.getPage(query), distributionStockArticle);
return R.data(pages);
}catch (Exception e){
log.error("已签订单错误e:{}",e);
}
return R.data(null);
}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/PushInstallDTO.java

@ -59,7 +59,7 @@ public class PushInstallDTO implements Serializable {
private String level3_type;
private String materials;
private String order_no;
private String num;
private String number;
}

155
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionParcelListExcel.java

@ -21,6 +21,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import lombok.Data;
import java.io.Serializable;
@ -36,25 +37,99 @@ import java.io.Serializable;
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class DistributionParcelListExcel implements Serializable {
public class DistributionParcelListExcel implements Serializable {
private static final long serialVersionUID = 1L;
@ColumnWidth(20)
@ExcelProperty("仓库")
private String warehouse;
@ExcelProperty("运单号")
private String waybillNumber;
@ColumnWidth(20)
@ExcelProperty("订单自编号")
private String orderCode;
@ColumnWidth(20)
@ExcelProperty("包条码")
private String orderPackageCode;
@ColumnWidth(20)
@ExcelProperty("货位信息")
private String goodsAllocation;
@ExcelProperty("仓库")
private String warehouse;
@ColumnWidth(20)
@ExcelProperty("所在托盘")
private String pallet;
@ExcelProperty("服务类型")
private String typeService;
@ColumnWidth(20)
@ExcelProperty("入库时间")
private String warehouseEntryTimeEnd;
@ColumnWidth(20)
@ExcelProperty("包件类型")
private String conditions;
@ColumnWidth(20)
@ExcelProperty("备货状态")
private String orderPackageStockupStatus;
@ColumnWidth(20)
@ExcelProperty("包件状态")
private String orderPackageStatus;
@ColumnWidth(20)
@ExcelProperty("装车状态")
private String orderPackageLoadingStatus;
@ColumnWidth(20)
@ExcelProperty("预约状态")
private String orderPackageReservationStatus;
@ColumnWidth(20)
@ExcelProperty("上架状态")
private String orderPackageGroundingStatus;
@ColumnWidth(20)
@ExcelProperty("任务号")
private String reservationCode;
@ColumnWidth(20)
@ExcelProperty("配送司机")
private String driverName;
@ColumnWidth(20)
@ExcelProperty("装车时间")
private String loadingTime;
@ColumnWidth(20)
@ExcelProperty("实际装车人")
private String scanUser;
@ColumnWidth(20)
@ExcelProperty("签收时间")
private String signingTime;
@ColumnWidth(20)
@ExcelProperty("实际签收人")
private String signingUser;
@ColumnWidth(20)
@ExcelProperty("车次号")
private String trainNumber;
@ColumnWidth(20)
@ExcelProperty("配送车辆")
private String vehicleName;
@ColumnWidth(20)
@ExcelProperty("一级品")
@ -69,18 +144,70 @@ public class DistributionParcelListExcel implements Serializable {
private String thirdProduct;
@ColumnWidth(20)
@ExcelProperty("上架状态")
private String orderPackageGroundingStatus;
@ExcelProperty("物料编码")
private String materialCode;
@ColumnWidth(20)
@ExcelProperty("物料名称")
private String materialName;
@ColumnWidth(20)
@ExcelProperty("货位信息")
private String goodsAllocation;
@ColumnWidth(20)
@ExcelProperty("所在托盘")
private String pallet;
@ColumnWidth(20)
@ExcelProperty("数量")
private String quantity;
@ColumnWidth(20)
@ExcelProperty("车次号")
private String trainNumber;
// @ColumnWidth(20)
// @ExcelProperty("冻结状态")
// private String orderPackageFreezeStatus;
//
// @ColumnWidth(20)
// @ExcelProperty("服务号")
// private String serviceNumber;
@ColumnWidth(20)
@ExcelProperty("订单自编号")
private String orderCode;
@ExcelProperty("品牌名称")
private String brandName;
}

11
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java

@ -448,4 +448,15 @@ public class DistributionParcelListClient implements IDistributionParcelListClie
public List<DistributionParcelListEntity> findALLNoUpShelfPackageByOrderCodeList(FindParamterDTO findParamterDTO) {
return distributionParcelListService.findALLNoUpShelfPackageByOrderCodeList(findParamterDTO.getOrderCodeList(),findParamterDTO.getWarehouseId());
}
@Override
public List<DistributionParcelListEntity> findAllParcelListByAdvanceIds(List<Long> advanceIds) {
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("advance_id", advanceIds)
.eq("is_deleted", 0);
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper);
return list;
}
}

9
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java

@ -370,4 +370,13 @@ public class DistributionStockArticleClient implements IDistributionStockArticle
return distributionStockArticleService.findOrderTotalNumByOrderPackageCodes(orderPackageCodes,warehouseId);
}
@Override
public List<DistributionStockArticleEntity> findAllStockArticleListByOrderCodes(List<String> orderCodes) {
QueryWrapper<DistributionStockArticleEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("order_code",orderCodes)
.eq("is_deleted",0);
return distributionStockArticleService.list(queryWrapper);
}
}

5
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java

@ -16,11 +16,9 @@
*/
package com.logpm.distribution.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.dto.DistributionDeliveryInfoDTO;
import com.logpm.distribution.dto.DistributionDeliveryListDTO;
import com.logpm.distribution.dto.DistributionLoadingNumDTO;
import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO;
@ -496,8 +494,9 @@ public interface DistributionDeliveryListMapper extends BaseMapper<DistributionD
/**
* 检查配送任务是否进行发车
* @param deliveryListEntityId
* @return
*/
Boolean checkDeliveryStart(@Param("deliveryId")Long deliveryId);
}

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml

@ -888,7 +888,11 @@
ldpl.warehouse_id warehouseId,
ldpl.id id,
lww.name warehouse,
ldpl.conditions conditions,
CASE ldpl.conditions
WHEN 1 THEN '订制品'
WHEN 2 THEN '库存品'
WHEN 3 THEN '零担'
END conditions,
ldpl.order_package_code orderPackageCode,
ldpl.firsts firsts,
ldpl.second second,
@ -915,7 +919,7 @@
IF(c.reservation_code is not null,c.reservation_code,IF(b.pickup_batch is not null,b.pickup_batch,a.reservation_code)) AS reservationCode,
IF(c.driver_name is not null,c.driver_name,IF(b.consignee is not null,b.consignee,a.driver_name)) AS driverName,
IF(c.vehicle_name is not null,c.vehicle_name,IF(b.pick_up_plate is not null,b.pick_up_plate,a.vehicle_name)) AS vehicleName,
IF(c.train_number is not null,c.train_number,IF(b.train_number is not null,b.train_number,a.train_number)) AS dvehicleName,
IF(c.train_number is not null,c.train_number,IF(b.train_number is not null,b.train_number,a.train_number)) AS trainNumber,
IF(c.scan_user is not null,c.scan_user,IF(b.scan_user is not null,b.scan_user,a.scan_user)) AS scanUser,
IF(c.signing_user is not null,c.signing_user,IF(b.signing_user is not null,b.signing_user,a.signing_user)) AS signingUser,
IF(c.scan_time is not null,c.scan_time,IF(b.scan_time is not null,b.scan_time,a.scan_time)) AS loadingTime,

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml

@ -463,6 +463,7 @@
INNER JOIN logpm_distribution_reservation AS ldr ON ldr.id = lds.reservation_id
<where>
ldr.reservation_status != '40'
AND ldr.is_deleted = 0
<if test="id!='' and id != null">
and lddl.id = #{id}
</if>

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.java

@ -118,6 +118,7 @@ public interface DistributionSignforMapper extends BaseMapper<DistributionSignfo
Long selectIdByOrderId(Long id);
Integer updateloadByReservationId(@Param("deliveryId") Long deliveryId,@Param("reservationId") Long reservationId,@Param("nub") Integer nub);
Integer updateLnumAndSnumByReservationId(@Param("deliveryId") Long deliveryId,@Param("reservationId") Long reservationId,@Param("nub1") Integer nub1,@Param("nub2") Integer nub2);
Integer updateloadreduceByReservationId(@Param("deliveryId") Long deliveryId,@Param("reservationId") Long reservationId,@Param("nub") Integer nub);
/**
@ -375,4 +376,7 @@ public interface DistributionSignforMapper extends BaseMapper<DistributionSignfo
* @param parceListId
*/
Integer cancelOld(@Param("reservationId") Long reservationId,@Param("stockArticleId") Long stockArticleId,@Param("packageId") Long parceListId);
void deductionLoadingAndSignforPacjageNum(@Param("reservationId")Long reservationId,@Param("deliveryId") Long deliveryId,@Param("loadingNum") int loadingNum,@Param("signforNum") int signforNum);
}

11
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.xml

@ -46,6 +46,12 @@
UPDATE logpm_distribution_signfor lds set lds.loaded_number = ( lds.loaded_number + #{nub} ) WHERE
lds.is_deleted =0 and lds.reservation_id = #{reservationId} and lds.delivery_id = #{deliveryId}
</update>
<update id="updateLnumAndSnumByReservationId">
UPDATE logpm_distribution_signfor lds set lds.loaded_number = ( lds.loaded_number + #{nub1} ),lds.received_quantity = ( lds.received_quantity + #{nub2}
) WHERE
lds.is_deleted =0 and lds.reservation_id = #{reservationId} and lds.delivery_id = #{deliveryId}
</update>
<update id="updateloadByinvn">
UPDATE logpm_distribution_signfor lds set lds.loadedin_number = ( lds.loadedin_number + #{nub} ) WHERE
lds.is_deleted =0 and lds.reservation_id = #{reservationId} and lds.delivery_id = #{deliveryId}
@ -87,6 +93,11 @@
UPDATE logpm_distribution_signfor SET signee_name = #{user.nickName},signee_id = #{user.userId} WHERE
signee_name is null and delivery_id = #{deliveryId} and reservation_id = #{reservationId}
</update>
<update id="deductionLoadingAndSignforPacjageNum">
UPDATE logpm_distribution_signfor lds set lds.loaded_number = ( lds.loaded_number - #{loadingNum} ),received_quantity = (lds.received_quantity - #{signforNum}) WHERE
lds.is_deleted =0 and lds.reservation_id = #{reservationId} and loaded_number !=0 and lds.delivery_id =
#{deliveryId}
</update>
<delete id="deleteByReservationAndDeliveryId">
DELETE FROM logpm_distribution_signfor
<where>

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml

@ -1260,10 +1260,6 @@
and ldsa.order_status in ('70','80')
<if test="collect != null and @org.apache.commons.collections4.CollectionUtils@isNotEmpty(collect)">
and ldsa.warehouse_id in
<foreach collection="collect" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and ldl.warehouse_id in
<foreach collection="collect" item="item" open="(" close=")" separator=",">
#{item}
@ -1386,6 +1382,10 @@
LEFT JOIN logpm_distrilbution_bill_lading AS ldbl ON ldbls.bill_lading_id = ldbl.id
<where>
ldsa.order_status in ('70','80')
and ldbls.warehouse_id in
<foreach collection="collect" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="param.waybillNumber != null and param.waybillNumber != ''">
AND ldsa.waybill_number like concat(#{param.waybillNumber},"%")
</if>

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockListMapper.xml

@ -39,10 +39,10 @@
CASE WHEN ldsi.pid is null THEN
(select sum(l.quantity_stock)
from logpm_distribution_stock_list l
where l.market_id = ldsi.market_id and l.material_id = ldsi.material_id and l.pid is null and ldsi.incoming_batch = l.incoming_batch )
where l.is_deleted =0 AND l.market_id = ldsi.market_id and l.material_id = ldsi.material_id and l.pid is null and ldsi.incoming_batch = l.incoming_batch )
ELSE (select sum(l.quantity_stock)
from logpm_distribution_stock_list l
where l.market_id = ldsi.market_id and l.material_id = ldsi.material_id and l.pid = ldsi.pid and l.pid is not null and ldsi.incoming_batch = l.incoming_batch )
where l.is_deleted =0 AND l.market_id = ldsi.market_id and l.material_id = ldsi.material_id and l.pid = ldsi.pid and l.pid is not null and ldsi.incoming_batch = l.incoming_batch )
END 'quantityStock',
CASE WHEN ldsi.pid is null THEN
(select sum(l.outbound_quantity)

1315
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/WarehouseTrayAllocationListener.java

File diff suppressed because it is too large Load Diff

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java

@ -21,7 +21,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.aftersales.vo.AftersalesAbnormalPackageVO;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.dto.DistributionDeliveryExcelDTO;
import com.logpm.distribution.dto.DistributionDeliveryInfoDTO;
import com.logpm.distribution.dto.DistributionDeliveryListDTO;
import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO;
import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO;
@ -257,7 +256,6 @@ public interface IDistributionDeliveryListService extends BaseService<Distributi
/**
* 查询托盘详情
* @param page
* @param distributionDeliveryList
* @return
*/
@ -465,6 +463,8 @@ public interface IDistributionDeliveryListService extends BaseService<Distributi
/**
* 查询签收预约客户包件信息
* @param reservationId

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionSignforService.java

@ -357,4 +357,12 @@ public interface IDistributionSignforService extends BaseService<DistributionSig
* @return
*/
List<DistributionSignforInventoryExcel> exportDistributionSignforInventoryList(Long id);
/**
* 异常驳回
* @param ids
* @return
*/
R loadingAbnormalPackageListTurnDown(String ids);
}

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java

@ -303,4 +303,5 @@ public interface IDistributionStockArticleService extends BaseService<Distributi
void clearAllocationByIds(List<Long> clearAllocationStockArticleIdList);
OrderCodeDataVO showOrderCodeByCode(Map<String, Object> params) throws Exception;
}

15
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java

@ -3038,13 +3038,13 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
order.setWaybill_no(distributionStockArticleEntity.getWaybillNumber());
order.setOrder_no(distributionStockArticleEntity.getOrderCode());
order.setAll_num(distributionStockArticleEntity.getTotalNumber() + "");
order.setAll_num("0");
order.setEnd_num("0");
//查询签收数量
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanMapper.selectList(Wrappers.<DistributionLoadscanEntity>query().lambda()
.eq(DistributionLoadscanEntity::getReservationId, reservationEntity.getId())
.eq(DistributionLoadscanEntity::getOrderId, distributionStockArticleEntity.getId())
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
.ne(DistributionLoadscanEntity::getSignforState, 2)
.eq(DistributionLoadscanEntity::getSignforState, 2)
);
if (!loadscanEntityList.isEmpty()) {
order.setEnd_num(loadscanEntityList.stream().mapToInt(DistributionLoadscanEntity::getReceivedQuantity).sum() + "");
@ -3064,7 +3064,8 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
orderDetail.setLevel1_type(distributionParcelListEntity.getFirsts());
orderDetail.setLevel2_type(distributionParcelListEntity.getSecond());
orderDetail.setLevel3_type(distributionParcelListEntity.getThirdProduct());
orderDetail.setNum(distributionParcelListEntity.getQuantity() + "");
orderDetail.setPackage_code(distributionParcelListEntity.getOrderPackageCode());
orderDetail.setNumber(distributionParcelListEntity.getQuantity() + "");
orderDetailList.add(orderDetail);
}
}
@ -3081,7 +3082,8 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
orderDetail.setLevel1_type(distributionParcelNumberVO.getFirsts());
// orderDetail.setLevel2_type(distributionParcelListEntity.getSecond());
// orderDetail.setLevel3_type(distributionParcelListEntity.getThirdProduct());
orderDetail.setNum(distributionParcelNumberVO.getReservationNum() + "");
orderDetail.setNumber(distributionParcelNumberVO.getReservationNum() + "");
orderDetail.setPackage_code(distributionStockArticleEntity.getOrderCode());
orderDetailList.add(orderDetail);
}
}
@ -3132,7 +3134,8 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
// orderDetail.setLevel2_type(distributionParcelListEntity.getSecond());
// orderDetail.setLevel3_type(distributionParcelListEntity.getThirdProduct());
// orderDetail.setLevel3_type(distributionParcelListEntity.getThirdProduct());
orderDetail.setNum(disStockListDetailEntity.getNum() + "");
orderDetail.setNumber(disStockListDetailEntity.getNum() + "");
orderDetail.setPackage_code(disStockListDetailEntity.getStockPackageCode());
orderDetailList.add(orderDetail);
}
}
@ -3142,7 +3145,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
pushInstallDTO.setOrder(orderList);
pushInstallDTO.setOrder_detail(orderDetailList);
log.info(">>>>>>>>>>>>>>安装推送整理数据",JSONObject.toJSON(pushInstallDTO));
log.info(">>>>>>>>>>>>>>安装推送整理数据:{}",JSONObject.toJSON(pushInstallDTO));
String jsonString = JSONObject.toJSONString(pushInstallDTO);
rabbitTemplate.convertAndSend(RabbitConstant.PUSH_INSTALL_PLATFORM_EXCHANGE, RabbitConstant.PUSH_INSTALL_PLATFORM_ROUTING, jsonString);

201
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java

@ -656,18 +656,14 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (parcelList.getConditions().equals(2)) {
return Resp.scanFail("此包件不是订制品", "此包件不是订制品");
}
if (!Objects.isNull(parcelList)) {
if (OrderPackageStatusConstant.yiqianshou.getValue().equals(parcelList.getOrderPackageStatus())) {
return Resp.scanFail("包件已签收", "包件已签收");
}
}
if (!Objects.isNull(parcelList)) {
if (OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(parcelList.getOrderPackageLoadingStatus())) {
return Resp.scanFail("包件已装车", "包件已装车");
}
}
List<DistributionLoadscanAbnormalEntity> abnormalEntities = distributionLoadscanAbnormalService.list(Wrappers.<DistributionLoadscanAbnormalEntity>query().lambda()
if (OrderPackageStatusConstant.yiqianshou.getValue().equals(parcelList.getOrderPackageStatus())) {
return Resp.scanFail("包件已签收", "包件已签收");
}
if (OrderPackageLoadingStatusConstant.yizhuangche.getValue().equals(parcelList.getOrderPackageLoadingStatus())) {
return Resp.scanFail("包件已装车", "包件已装车");
}
List<DistributionLoadscanAbnormalEntity> abnormalEntities = distributionLoadscanAbnormalService.list(Wrappers.<DistributionLoadscanAbnormalEntity>query().lambda()
.eq(DistributionLoadscanAbnormalEntity::getPackageCode, distrilbutionloadingscanDTO.getBarcode())
.eq(DistributionLoadscanAbnormalEntity::getPackageId, parcelList.getId())
);
@ -680,6 +676,19 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
String collect = abnormalEntities.stream().map(DistributionLoadscanAbnormalEntity::getTrainNumber).collect(Collectors.joining(","));
log.info("包件已在其他车次存在异常 >>>>当前车次:{},其他车次:{}", distributionDeliveryListEntity.getTrainNumber(), collect);
return Resp.scanFail("包件已在其他车次存在异常", "包件已在其他车次存在异常");
}else {
//这里需要判定文员是否对该异常进行驳回操作
List<DistributionLoadscanAbnormalEntity> collect = abnormalEntities.stream().filter(f -> distributionDeliveryListEntity.getId().equals(f.getDeliveryListId()) && distrilbutionloadingscanDTO.getReservationId().equals(f.getReservationId())).collect(Collectors.toList());
if (!collect.isEmpty()) {
//存在异常操作
if (collect.size() == 1){
//判断是否进行审核以及驳货操作
DistributionLoadscanAbnormalEntity distributionLoadscanAbnormalEntity = collect.get(0);
if (distributionLoadscanAbnormalEntity.getAuditingStatus().equals(3)){
return Resp.scanFail("包件异常已驳回", "包件异常已驳回");
}
}
}
}
}
@ -2650,28 +2659,21 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return disStockListDetailVOS;
}
@Override
@Transactional
public R<?> updateDeliveryListInfo(DistributionDeliveryListDTO deliveryListDTO) {
private void checkArgs(DistributionDeliveryListDTO deliveryListDTO,BasicdataWarehouseEntity myCurrentWarehouse ){
if (Func.isEmpty(deliveryListDTO)) {
log.error("deliveryListDTO参数异常+{" + deliveryListDTO + "}");
return R.fail("服务器正忙!!");
throw new CustomerException("请求参数异常");
}
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)) {
return R.fail("无仓库信息!!!");
throw new CustomerException("无仓库信息");
}
DistributionDeliveryListEntity deliveryListEntity = this.getById(deliveryListDTO.getId());
Long deliveryListEntityId = deliveryListEntity.getId();
if (deliveryListEntity.getDeliveryStatus().equals(DeliveryStatusConstant.yiwancheng.getValue())) {
return R.fail("配送已完成...");
throw new CustomerException("配送任务已完成");
}
//检测是否进行发车
Boolean isStrat = baseMapper.checkDeliveryStart(deliveryListEntityId);
//TODO 发车校验
// if (isStrat){
// return R.fail("配送已发车,请取消发车后进行任务编辑...");
// }
if (IsOrNoConstant.yes.getValue().equals(deliveryListDTO.getIsDeliveryDriverUpdate())) {
//查看是否满足进行司机修改
//查询是否存在有装车数据,存在装车则不满足司机切换
@ -2682,9 +2684,22 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (Func.isNotEmpty(loadscanEntityList) && loadscanEntityList.size() > 0) {
//此配送任务存在装车 无法进行司机切换
log.error("配送任务存在装车数据,无法进行司机切换");
return R.fail("任务已装车联系司机滞留货物后进行司机切换...");
throw new CustomerException("任务已装车联系司机滞留货物后进行司机切换...");
}
}
}
@Override
@Transactional
public R<?> updateDeliveryListInfo(DistributionDeliveryListDTO deliveryListDTO) {
DistributionDeliveryListEntity deliveryListEntity = this.getById(deliveryListDTO.getId());
Long deliveryListEntityId = deliveryListEntity.getId();
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
checkArgs(deliveryListDTO,myCurrentWarehouse);
List<JSONObject> logs = new ArrayList<>();
List<JSONObject> pushDatas = new ArrayList<>();
//查询出原来配送信息的备货任务
@ -2882,13 +2897,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
packageLockIds.add(dp.getId());
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:新增订单无包件操作,构建新的预约计划,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), dp.getOrderPackageCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", dp.getOrderPackageCode());
JSONObject jsonObject = getJsonObject(deliveryListEntity, reservationEntity, dp.getOrderPackageCode());
pushDatas.add(jsonObject);
logs.add(js);
}
@ -2910,13 +2919,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//这里根据包件进行订单状态的改变
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:新增订单勾选包件,构建新的预约计划,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), p.getOrderPackageCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", p.getOrderPackageCode());
JSONObject jsonObject = getJsonObject(deliveryListEntity, reservationEntity, p.getOrderPackageCode());
pushDatas.add(jsonObject);
logs.add(js);
});
@ -3116,13 +3119,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//这里根据包件进行订单状态的改变
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:勾选订单包件,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), p.getOrderPackageCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", p.getOrderPackageCode());
JSONObject jsonObject = getJsonObject(deliveryListEntity, reservationEntity, p.getOrderPackageCode());
pushDatas.add(jsonObject);
logs.add(js);
});
@ -3163,13 +3160,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
packageLockIds.add(dp.getId());
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:无勾选包件操作,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), dp.getOrderPackageCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", dp.getOrderPackageCode());
JSONObject jsonObject = getJsonObject(deliveryListEntity, reservationEntity, dp.getOrderPackageCode());
pushDatas.add(jsonObject);
logs.add(js);
@ -3255,12 +3246,15 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
log.error("###########################查询错误预约Id:{}", reservationEntity.getId());
throw new RuntimeException("服务器正忙...");
}
Map<Long, List<DistributionReservationPackageEntity>> oldPackageList = list.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getParceListId));
//list 对这个集合 按照getParceListId 进行分组
Map<String, List<DistributionReservationPackageEntity>> oldPackageList = list.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getPacketBarCode));
//查看订单包件是否发生变化
//此订单包件数量统计
//此订单包件数量统计l
if (Func.isNotEmpty(packageListInfo)) {
packageListInfo.forEach(p -> {
if (Func.isEmpty(oldPackageList.get(p.getId()))) {
if (Func.isEmpty(oldPackageList.get(p.getOrderPackageCode()))) {
if (Func.isNotEmpty(signforEntity) && signforEntity.getSigningStatus().equals(SignforStatusConstant.yiqianshou.getValue())) {
log.error("#############商配文员对已复核预约进行订单追加reservationId:{}", reservationEntity.getId());
throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "文员完成复核,无法追加订单");
@ -3276,26 +3270,30 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
reservationPackageEntity.setPacketBarCode(p.getOrderPackageCode());
reservationPackageEntity.setParceListId(p.getId());
distributionReservationPackageService.save(reservationPackageEntity);
distributionAsyncService.checkStockArticleReservationStatus(p);
packageLockIds.add(p.getId());
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:对已有计划订单进行包件勾选新增操作,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), reservationPackageEntity.getPacketBarCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", reservationPackageEntity.getPacketBarCode());
pushDatas.add(jsonObject);
logs.add(js);
// 对当前保存的包件再次进行验证
boolean isExit = checkList(list,reservationEntity.getId(),reservationStockarticleEntity.getStockArticleId(),p.getOrderPackageCode());
log.info(">>>>> 修改计划 验证包件是否存在 {}",isExit);
if(!isExit){
distributionReservationPackageService.save(reservationPackageEntity);
distributionAsyncService.checkStockArticleReservationStatus(p);
packageLockIds.add(p.getId());
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getUser().getNickName() + "商配计划配车,操作方式:对已有计划订单进行包件勾选新增操作,预约任务号:" + reservationEntity.getReservationCode();
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), reservationPackageEntity.getPacketBarCode(), content, WorkNodeEnums.PLAN_DISTRIBUTION.getCode());
JSONObject jsonObject = getJsonObject(deliveryListEntity, reservationEntity, reservationPackageEntity.getPacketBarCode());
pushDatas.add(jsonObject);
logs.add(js);
//包件数量累加
packageNum.getAndAdd(p.getQuantity());
}
} else {
//依然存在包件,
oldPackageList.remove(p.getId());
oldPackageList.remove(p.getOrderPackageCode());
//包件数量累加
packageNum.getAndAdd(p.getQuantity());
}
//包件数量累加
packageNum.getAndAdd(p.getQuantity());
});
//进行取消包件的数据清理
if (!oldPackageList.isEmpty()) {
@ -3620,6 +3618,25 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
private boolean checkList(List<DistributionReservationPackageEntity> list, Long id, Long stockArticleId, String orderPackageCode) {
return list.stream().anyMatch(e -> e.getStockArticleId().equals(stockArticleId) && e.getPacketBarCode().equals(orderPackageCode) && e.getReservationId().equals(id));
}
@NotNull
private static JSONObject getJsonObject(DistributionDeliveryListEntity deliveryListEntity, DistributionReservationEntity reservationEntity, String reservationPackageEntity) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", deliveryListEntity.getTrainNumber());
jsonObject.put("receiver", reservationEntity.getConsignee());
jsonObject.put("receiveAddr", reservationEntity.getDeliveryAddress());
jsonObject.put("receiveTel", reservationEntity.getDeliveryPhone());
jsonObject.put("planDeliveryDate", deliveryListEntity.getTaskTime());
jsonObject.put("packageCode", reservationPackageEntity);
return jsonObject;
}
@Override
public R loadinginventoryDe(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) {
//库存品
@ -4855,7 +4872,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
List<DistributionParcelListEntity> distributionParcelListEntities = new ArrayList<>();
if (!distrilbutionBillPackageEntities.isEmpty()) {
List<Long> ids = distrilbutionBillPackageEntities.stream().map(DistrilbutionBillPackageEntity::getParceListId).collect(Collectors.toList());
distributionParcelListEntities = distributionParcelListMapper.selectBatchIds(ids);
if (!ids.isEmpty()) {
distributionParcelListEntities = distributionParcelListMapper.selectBatchIds(ids);
}
}
@ -5072,13 +5091,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
lambdaQueryWrapper.eq(DistributionStockEntity::getBillLadingId, distrilbutionBillLadingEntity.getId())
.in(DistributionStockEntity::getParcelListId, orderPackageIds);
List<DistributionStockEntity> distributionStockEntities = distributionStockMapper.selectList(lambdaQueryWrapper);
if (!distributionStockEntities.isEmpty()) {
Set<String> stockupAreaStrList = distributionStockEntities.stream().map(DistributionStockEntity::getStockupArea).collect(Collectors.toSet());
Set<String> stockupAreaStrList = distributionStockEntities.stream().map(DistributionStockEntity::getStockupArea).collect(Collectors.toSet());
String stockupAreaStr = StringUtils.join(stockupAreaStrList, ",");
tempMap.put("备货区", stockupAreaStr);
String stockupAreaStr = StringUtils.join(stockupAreaStrList, ",");
tempMap.put("备货区", stockupAreaStr);
}
ls.add(tempMap);
a++;
@ -5187,7 +5205,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
} else {
//查询该客户下的相关保健信息
List<DistributionReservationPackageEntity> reservationPackageEntityList = distributionReservationPackageMapper.selectList(Wrappers.<DistributionReservationPackageEntity>query().lambda().eq(DistributionReservationPackageEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()).like(DistributionReservationPackageEntity::getPacketBarCode, distrilbutionloadingscanDTO.getBarcode()));
if (Func.isNotEmpty(reservationPackageEntityList) && reservationPackageEntityList.size() > 0) {
if (Func.isNotEmpty(reservationPackageEntityList) && !reservationPackageEntityList.isEmpty()) {
List<Long> longs = reservationPackageEntityList.stream().map(DistributionReservationPackageEntity::getParceListId).collect(Collectors.toList());
collect = distributionParcelListService.listByIds(longs);
}
@ -5878,14 +5896,21 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
@Override
public R retentionScan(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) {
if (distrilbutionloadingscanDTO.getBarcode().isEmpty()) {
log.error("参数缺失Barcode:{}",distrilbutionloadingscanDTO.getBarcode());
}
Integer retentionType = distrilbutionloadingscanDTO.getRetentionType();
DistributionDeliveryListEntity deliveryListEntity = this.getById(distrilbutionloadingscanDTO.getDeliveryId());
List<DistributionRetentionScanVo> retentionScanVos = new ArrayList<>();
//查询包件
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)){
return Resp.scanFail("未授权!!!","未授权!!!");
}
switch (retentionType) {
case 1:
//包件--库存品 和包件
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
.eq(DistributionLoadscanEntity::getDeliveryId, distrilbutionloadingscanDTO.getDeliveryId())
.eq(DistributionLoadscanEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode())
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
@ -5895,6 +5920,10 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//包件存在装车才能进行滞留
//通过配送任务和包件确定预约信息
DistributionLoadscanEntity distributionLoadscanEntity = loadscanEntityList.get(0);
if (2 == distributionLoadscanEntity.getIsAbnormalLoading()){
//异常装车未进行审核
return Resp.scanFail("包件存在异常", "包件存在异常");
}
if (2 == distributionLoadscanEntity.getSignforState()) {
log.info("滞留扫描失败,包件已签收>>>>>>>>>>>>>>>>>>>>>>>reservationId:{},packageCode:{}", distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getOrderPackageCode());
return Resp.scanFail("包件已签收", "包件已签收");
@ -5904,7 +5933,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
} else {
List<DistributionLoadscaninvnEntity> loadscaninvnEntityList = distributionLoadscaninvnService.list(Wrappers.<DistributionLoadscaninvnEntity>query().lambda()
.eq(DistributionLoadscaninvnEntity::getDeliveryId, distrilbutionloadingscanDTO.getDeliveryId())
.eq(DistributionLoadscaninvnEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode())
.ne(DistributionLoadscaninvnEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
@ -5952,7 +5980,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return Resp.scanFail("包件未装车", "包件未装车");
} else {
//该配送任务查询无该包件信息
return Resp.scanFail("此配送无该包件", "此配送无该包件信息");
return Resp.scanFail("系统无编码", "系统无编码");
}
}
@ -7637,6 +7665,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
@Override
@Transactional
public void maintenanceDeliveryInfo(Long deliveryId) {

6
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java

@ -700,6 +700,12 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
List<DistributionParcelListExcel> list = baseMapper.exportDistributionParcelList(paramMap, idArr);
list.forEach(li -> {
li.setOrderPackageGroundingStatus(DictBizCache.getValue(DictBizConstant.ORDER_PACKAGE_GROUNDING_STATUS, li.getOrderPackageGroundingStatus()));
li.setOrderPackageStatus(DictBizCache.getValue(DictBizConstant.ORDER_PACKAGE_STATUS, li.getOrderPackageStatus()));
li.setOrderPackageReservationStatus(DictBizCache.getValue(DictBizConstant.ORDER_RESERVATION_STATUS, li.getOrderPackageReservationStatus()));
// li.setOrderPackageFreezeStatus(DictBizCache.getValue(DictBizConstant.ORDER_PACKAGE_FREEZE_STATUS, li.getOrderPackageFreezeStatus()));
li.setOrderPackageStockupStatus(DictBizCache.getValue(DictBizConstant.ORDER_PACKAGE_STOCKUP_STATUS, li.getOrderPackageStockupStatus()));
li.setOrderPackageLoadingStatus(DictBizCache.getValue(DictBizConstant.ORDER_PACKAGE_LOADING_STATUS, li.getOrderPackageLoadingStatus()));
li.setTypeService(DictBizCache.getValue(DictBizConstant.DISTRIBUTION_TYPE, li.getTypeService()));
});
return list;
}

111
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -1069,6 +1069,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.in(DistributionLoadscanEntity::getPackageId, reservationZeroPackageEntity.getParcelListId())
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");
if (Func.isEmpty(loadscanEntity)) {
if ("1".equals(deliveryListEntity.getKind())) {
//自主配送
@ -1089,7 +1090,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
d = distributionParcelNumberEntity.getDeliveryQuantity() - reservationZeroPackageEntity.getQuantity();
//未进行装车操作
DistributionLoadscanEntity unLoadscanEntity = new DistributionLoadscanEntity();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss");
unLoadscanEntity.setScanStatus(LoadingStatusConstant.buluzhuangche.getValue());
unLoadscanEntity.setIsInsert(2);
unLoadscanEntity.setLoadingId(loadingId.toString());
@ -1140,7 +1140,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
c = distributionParcelNumberEntity.getOutboundQuantity() - loadscanEntity.getReceivedQuantity() + reservationZeroPackageEntity.getQuantity();
d = distributionParcelNumberEntity.getDeliveryQuantity() + loadscanEntity.getReceivedQuantity() - reservationZeroPackageEntity.getQuantity();
//存在装车操作
//计算差值
int i1 = reservationZeroPackageEntity.getQuantity() - loadscanEntity.getLoadedNub();
loadscanEntity.setSigningUser(user.getNickName());
loadscanEntity.setSigningUserId(user.getUserId());
loadscanEntity.setSigningTime(simpleDateFormat.format(new Date()));
loadscanEntity.setIsSignfor(2);
loadscanEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
// loadscanEntity.setSigningTime(new Date().toString());
@ -1153,6 +1157,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionParcelNumberEntity.setSigninQuantity(b);
distributionParcelNumberEntity.setOutboundQuantity(c);
distributionParcelNumberEntity.setDeliveryQuantity(d);
//更新装车信息
//获取计划和当前装车的差值
//更新装车数量
distributionSignforMapper.updateLnumAndSnumByReservationId(loadscanEntity.getDeliveryId(),loadscanEntity.getReservationId(),i1,reservationZeroPackageEntity.getQuantity());
}
distributionParcelListService.maintenanceZeroPackageInfo(distributionParcelNumberEntity.getParcelListId(), stockArticleEntity.getWarehouseId());
@ -1332,6 +1340,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//存在装车操作
loadscanEntity.setSigningUser(user.getNickName());
loadscanEntity.setIsSignfor(2);
loadscanEntity.setIsZero(1);
loadscanEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
// loadscanEntity.setSigningTime(new Date().toString());
loadscanEntity.setReceivedQuantity(reservationZeroPackageEntities.getQuantity());
@ -2497,6 +2506,19 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
String info = abnormalEntities.stream().map(DistributionLoadscanAbnormalEntity::getTrainNumber).collect(Collectors.joining(","));
log.info("包件已在其他车次存在异常 >>>>当前车次:{},其他车次:{}",deliveryListEntity.getTrainNumber(),info);
return Resp.scanFail("包件已在其他车次存在异常", "包件已在其他车次存在异常");
}else {
//这里需要判定文员是否对该异常进行驳回操作
List<DistributionLoadscanAbnormalEntity> LoadscanAbnormalEntityList = abnormalEntities.stream().filter(f -> deliveryListEntity.getId().equals(f.getDeliveryListId()) && distrilbutionloadingscanDTO.getReservationId().equals(f.getReservationId())).collect(Collectors.toList());
if (!LoadscanAbnormalEntityList.isEmpty()) {
//存在异常操作
if (LoadscanAbnormalEntityList.size() == 1){
//判断是否进行审核以及驳货操作
DistributionLoadscanAbnormalEntity distributionLoadscanAbnormalEntity = LoadscanAbnormalEntityList.get(0);
if (distributionLoadscanAbnormalEntity.getAuditingStatus().equals(3)){
return Resp.scanFail("包件异常已驳回", "包件异常已驳回");
}
}
}
}
//判断具体的装车信息
}
@ -6470,6 +6492,93 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return baseMapper.getDistributionSignforInventoryList(id);
}
@Override
public R loadingAbnormalPackageListTurnDown(String ids) {
//异常驳回进行异常信息的删除,对于装车记录的清理,对于已装车和签收的数量扣减
String method = "####################异常驳回loadingAbnormalPackageListTurnDown";
if (Func.isEmpty(ids)){
log.error(method+"ids参数缺失:{}",ids);
}
List<Long> list = Func.toLongList(ids);
List<DistributionLoadscanAbnormalEntity> abnormalEntities = distributionLoadscanAbnormalService.listByIds(list);
int loadingNum = 0;
int signforNum = 0;
List<Long> packageIdList = new ArrayList<>();
List<Long> orderIds = new ArrayList<>();
Long reservationId = null;
Long deliveryId = null;
if (!abnormalEntities.isEmpty()) {
List<Long> rIds = abnormalEntities.stream().map(DistributionLoadscanAbnormalEntity::getReservationId).distinct().collect(Collectors.toList());
List<Long> dIds = abnormalEntities.stream().map(DistributionLoadscanAbnormalEntity::getDeliveryListId).distinct().collect(Collectors.toList());
List<Long> packageIds = abnormalEntities.stream().map(DistributionLoadscanAbnormalEntity::getPackageId).distinct().collect(Collectors.toList());
if (rIds.size()>1){
log.error(method+"查询出多个reservatyionId:{}",rIds);
return R.fail("数据错误,请联系管理员");
}
if (dIds.size()>1){
log.error(method+"查询出多个deliveryId:{}",dIds);
return R.fail("数据错误,请联系管理员");
}
reservationId = rIds.get(0);
deliveryId = dIds.get(0);
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
.in(DistributionLoadscanEntity::getPackageId, packageIds)
.eq(DistributionLoadscanEntity::getReservationId, reservationId)
.eq(DistributionLoadscanEntity::getDeliveryId, deliveryId)
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
List<DistributionLoadscanAbnormalEntity> updateList = new ArrayList<>();
if (!loadscanEntityList.isEmpty()) {
Map<Long, DistributionLoadscanEntity> loadscanMap = loadscanEntityList.stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k, v) -> k));
//存在异常列表
//进行异常列表的清理
for (DistributionLoadscanAbnormalEntity abnormalEntity : abnormalEntities) {
//存在异常操作为进行审核操作才可进行驳回
if (Objects.isNull(abnormalEntity.getAuditingStatus())){
//驳回视为进行审核,审核结果为驳回
abnormalEntity.setAuditingStatus(3);
abnormalEntity.setAuditingUser(AuthUtil.getNickName());
abnormalEntity.setAuditingTime(new Date());
updateList.add(abnormalEntity);
//收集需要进行维护的包件
packageIdList.add(abnormalEntity.getPackageId());
//查询是否进行签收
// 统计需要进行扣减的签收数量
if (Func.isNotEmpty(loadscanMap.get(abnormalEntity.getPackageId()))){
//获取装车记录
DistributionLoadscanEntity distributionLoadscanEntity = loadscanMap.get(abnormalEntity.getPackageId());
orderIds.add(distributionLoadscanEntity.getOrderId());
if (distributionLoadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())){
signforNum++;
}
}else {
//异常驳回无装车记录
log.error(method+"异常驳回无装车记录");
throw new RuntimeException("异常驳货列表存在无装车信息");
}
loadingNum++;
}
}
}
//进行装车记录的统计
}
//扣减装车和签收数
distributionSignforMapper.deductionLoadingAndSignforPacjageNum(reservationId,deliveryId,loadingNum,signforNum);
//恢复包件数据
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update().lambda()
.in(DistributionParcelListEntity::getId,packageIdList)
.set(DistributionParcelListEntity::getOrderPackageReservationStatus,OrderPackageReservationStatusConstant.daiyuyue.getValue())
.set(DistributionParcelListEntity::getOrderPackageLoadingStatus,OrderPackageLoadingStatusConstant.weizhuancghe.getValue())
.set(DistributionParcelListEntity::getOrderPackageStatus,OrderPackageStatusConstant.yiruku.getValue())
.set(DistributionParcelListEntity::getOrderPackageStockupStatus,OrderPackageStockupStatusConstant.daibeihuo.getValue())
);
//维护相关的订单信息
distributionStockArticleService.maintenanceOrderInfoByIds(orderIds);
return R.success("异常驳回成功");
}
private void buildNameAndPhone(List<SignPushDataUnitDTO> pushOldPackageSigning) {
for (SignPushDataUnitDTO signPushDataUnitDTO : pushOldPackageSigning) {
User user = bladeRedis.get(RedisKeyConstant.USER_NAME_PHONE_KEY + signPushDataUnitDTO.getAdministratorsId());

68
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java

@ -2503,6 +2503,71 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
return orderCodeDataVO;
}
@Override
public OrderCodeDataVO showOrderCodeByCode(Map<String, Object> params) throws Exception {
OrderCodeDataVO orderCodeDataVO = new OrderCodeDataVO();
List<Map<String, Object>> data = new ArrayList<>();
BasicPrintTemplateEntity template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.daiqueren_14.getValue());
if (ObjectUtil.isEmpty(template)) {
throw new ServiceException("模板内容未找到");
}
String html = TemplateUtil.getTemplateByUrl(template.getTemplateUrl());
orderCodeDataVO.setTemplateHtml(html);
orderCodeDataVO.setTemplateId(template.getId());
Long warehouseId = (Long) params.get("warehouseId");
String orderCodes = (String) params.get("orderCodes");
String[] orderCodesArray = orderCodes.split(",");
if (ObjectUtils.isNull(orderCodesArray)) {
throw new ServiceException("参数错误");
}
for (String orderCode : orderCodesArray) {
DistributionStockArticleEntity stockArticleEntity = findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId);
if(Objects.isNull(stockArticleEntity)){
continue;
}
Long orderId = stockArticleEntity.getId();
String waybillNo = stockArticleEntity.getWaybillNumber();
String descriptionGoods = stockArticleEntity.getDescriptionGoods();
Integer totalNumber = stockArticleEntity.getTotalNumber();
Map<String, Object> map = new HashMap<>();
map.put("id", orderId);
String filename = QRCodeUtil.createCodeToFile(orderCode);
map.put("orderCodeImage", QRCodeUtil.getEmpAutograph(filename));
// 订单号 生成二维码
String fileTypeName = QRCodeUtil.createCodeToFile(orderCode);
map.put("imgType", QRCodeUtil.getEmpAutograph(fileTypeName));
if (orderCode.equals(waybillNo)) {
map.put("product", descriptionGoods + "(" + totalNumber + ")");
} else {
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("stock_article_id", orderId);
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper);
StringBuilder product = new StringBuilder();
for (DistributionParcelListEntity parcelListEntity : list) {
String firsts = parcelListEntity.getFirsts();
Integer quantity = parcelListEntity.getQuantity();
if (StringUtils.isBlank(product)) {
product.append(firsts).append("(").append(quantity).append(")");
} else {
product.append(",").append(firsts).append("(").append(quantity).append(")");
}
}
map.put("product", product.toString());
}
data.add(map);
}
orderCodeDataVO.setDataList(data);
return orderCodeDataVO;
}
/**
* @param page
* @param distributionSignforStockArticle
@ -2546,12 +2611,13 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
BasicdataWarehouseEntity currentWarehouse = warehouseClient.getMyCurrentWarehouse();
List<Long> collect = null;
if(ObjectUtils.isNotNull(myWarehouseList)){
if(ObjectUtils.isNotNull(currentWarehouse)){
collect = new ArrayList<>();
collect.add(currentWarehouse.getId());
}else{
collect = myWarehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList());
}
log.info(">>>>>>>>>>>>>当前仓库:{}",collect);
IPage<DistributionSignforStockArticleVO> distributionStockArticleEntityIPage = baseMapper.pageSignforListOwe(page, stockArticleEntity,collect);
//处理创建人
distributionStockArticleEntityIPage.getRecords().forEach(a -> {

133
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -18,7 +18,6 @@ package com.logpm.distribution.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -33,26 +32,72 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.dto.DistributionBillLadingExcelDTO;
import com.logpm.distribution.dto.DistributionParcelListDTO;
import com.logpm.distribution.dto.DistributionStockListDTO;
import com.logpm.distribution.dto.DistrilbutionBillLadingDTO;
import com.logpm.distribution.dto.OrderStatusDTO;
import com.logpm.distribution.dto.app.BillLadingAppDTO;
import com.logpm.distribution.dto.DistributionBillLadingExcelDTO;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.entity.DisStockListDetailEntity;
import com.logpm.distribution.entity.DistributionBillLadingScanEntity;
import com.logpm.distribution.entity.DistributionDeliveryChargeEntity;
import com.logpm.distribution.entity.DistributionDeliveryDetailsEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionParcelNumberEntity;
import com.logpm.distribution.entity.DistributionPrintEntity;
import com.logpm.distribution.entity.DistributionReservationZeroPackageEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.entity.DistributionStockEntity;
import com.logpm.distribution.entity.DistributionStockListEntity;
import com.logpm.distribution.entity.DistributionStockupEntity;
import com.logpm.distribution.entity.DistributionStockupInfoEntity;
import com.logpm.distribution.entity.DistributionStockupScanEntity;
import com.logpm.distribution.entity.DistrilbutionBillLadingEntity;
import com.logpm.distribution.entity.DistrilbutionBillPackageEntity;
import com.logpm.distribution.entity.DistrilbutionBillStockEntity;
import com.logpm.distribution.excel.DistributionBillInventoryExcel;
import com.logpm.distribution.excel.DistributionBillOrderExcel;
import com.logpm.distribution.excel.DistributionBillOrderPackExcel;
import com.logpm.distribution.excel.DistrilbutionBillLadingExcel;
import com.logpm.distribution.mapper.DistributionStockListMapper;
import com.logpm.distribution.mapper.DistrilbutionBillLadingMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.app.*;
import com.logpm.distribution.service.IDisStockListDetailService;
import com.logpm.distribution.service.IDistributionAsyncService;
import com.logpm.distribution.service.IDistributionBillLadingScanService;
import com.logpm.distribution.service.IDistributionDeliveryChargeService;
import com.logpm.distribution.service.IDistributionDeliveryDetailsService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionParcelNumberService;
import com.logpm.distribution.service.IDistributionPrintService;
import com.logpm.distribution.service.IDistributionReservationService;
import com.logpm.distribution.service.IDistributionReservationZeroPackageService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.service.IDistributionStockListService;
import com.logpm.distribution.service.IDistributionStockService;
import com.logpm.distribution.service.IDistributionStockupInfoService;
import com.logpm.distribution.service.IDistributionStockupScanService;
import com.logpm.distribution.service.IDistributionStockupService;
import com.logpm.distribution.service.IDistrilbutionBillLadingService;
import com.logpm.distribution.service.IDistrilbutionBillPackageService;
import com.logpm.distribution.service.IDistrilbutionBillStockService;
import com.logpm.distribution.vo.DistributionDeliveryDetailsVO;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.DistributionStockListVO;
import com.logpm.distribution.vo.DistributionStockupOrderListVO;
import com.logpm.distribution.vo.DistrilbutionBillLadingAppVO;
import com.logpm.distribution.vo.DistrilbutionBillLadingDetailsVO;
import com.logpm.distribution.vo.DistrilbutionBillLadingOwnVO;
import com.logpm.distribution.vo.DistrilbutionBillLadingVO;
import com.logpm.distribution.vo.DistrilbutionBillLadingViewVO;
import com.logpm.distribution.vo.DistrilbutionBillStockVO;
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingDetailVO;
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderMainVO;
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderVO;
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingZeroOrderVO;
import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingZeroVO;
import com.logpm.distribution.vo.app.DistrilbutionBillLadingInventoryAppVO;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
import com.logpm.factory.mt.dto.MtReceiveContentDTO;
import com.logpm.factory.mt.dto.MtReceiveDTO;
import com.logpm.factory.mt.dto.MtReceiveImagesDTO;
import com.logpm.factorydata.enums.BrandEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
@ -100,7 +145,6 @@ import org.springblade.system.feign.IUserClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -109,7 +153,18 @@ import javax.annotation.Resource;
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -398,7 +453,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
.eq(DistributionDeliveryDetailsEntity::getBillLadingId, distrilbutionBillLading.getId())
.ne(DistributionDeliveryDetailsEntity::getInventoryStatus, "2")
);
Map<Long, List<DistributionDeliveryDetailsEntity>> map = null;
Map<Long, List<DistributionDeliveryDetailsEntity>> map = new HashMap<>();
if (!listDetails.isEmpty()) {
map = listDetails.stream().collect(Collectors.groupingBy(DistributionDeliveryDetailsEntity::getStockListId));
}
@ -636,6 +691,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), distrilbutionBillPackageEntity.getOrderPackageCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
logs.add(js);
}
sendFactoryPlan(packageMap.get(Long.parseLong(s)),myCurrentWarehouse, distrilbutionBillLading);
} else {
//没有进行包件的勾选,默认添加所有可用包件至计划下
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
@ -656,6 +712,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), parcelListEntity.getOrderPackageCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
logs.add(js);
}
// 推送工厂
sendFactoryPlan(parcelListEntities, myCurrentWarehouse, distrilbutionBillLading);
} else {
log.error("#####################自提计划订单无可用包件:{}", s);
throw new ServiceException(stockArticleEntity.getOrderCode() + "订单无可用包件!!!");
@ -681,6 +739,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), parcelListEntity.getOrderPackageCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
logs.add(js);
}
sendFactoryPlan(parcelListEntities, myCurrentWarehouse, distrilbutionBillLading);
} else {
log.error("#####################自提计划订单无可用包件:{}", s);
throw new ServiceException(stockArticleEntity.getOrderCode() + "订单无可用包件!!!");
@ -861,6 +920,44 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return true;
}
private void sendFactoryPlan(List<DistributionParcelListEntity> parcelListEntities, BasicdataWarehouseEntity myCurrentWarehouse, DistrilbutionBillLadingDTO distrilbutionBillLading) {
// 包件按品牌分组
try {
Map<String, List<DistributionParcelListEntity>> parcelListMap = parcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getBrandName));
if(CollUtil.isNotEmpty(parcelListMap)){
for (Map.Entry<String, List<DistributionParcelListEntity>> entry : parcelListMap.entrySet()) {
String key = entry.getKey();
JSONObject jsonObject = new JSONObject();
jsonObject.put("trainNumber", distrilbutionBillLading.getPickupBatch());
jsonObject.put("receiver", distrilbutionBillLading.getConsignee());
jsonObject.put("receiveAddr", myCurrentWarehouse.getName());
jsonObject.put("receiveTel", distrilbutionBillLading.getCustomerTelephone());
jsonObject.put("planDeliveryDate", DateUtil.formatDateTime(distrilbutionBillLading.getPickUpTime()));
List<DistributionParcelListEntity> listEntities = entry.getValue();
NodePushMsg msg = new NodePushMsg();
msg.setNode(WorkNodeEnums.PLAN_BILLOFLADING);
msg.setBrand(BrandEnums.getByValue(key));
msg.setOperator(AuthUtil.getNickName());
msg.setOperatorTime(new Date());
msg.setMain(jsonObject.toString());
msg.setContent(listEntities.stream().map(item->{
return PushData.builder()
.orderCode(item.getOrderCode())
.packageCode(item.getOrderPackageCode())
.warehouseName(myCurrentWarehouse.getName())
.waybillNumber(item.getWaybillNumber())
.build();
}).collect(Collectors.toList()));
log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg));
factoryDataMessageSender.sendNodeDataByBrand(msg);
}
}
} catch (Exception e) {
log.error("推送签收数据给工厂失败 {}", e);
}
}
@NotNull
private static DistrilbutionBillPackageEntity getDistrilbutionBillPackageEntity(DistrilbutionBillLadingDTO distrilbutionBillLading, DistributionParcelListEntity parcelListEntity) {
DistrilbutionBillPackageEntity billPackageEntity = new DistrilbutionBillPackageEntity();
@ -1583,6 +1680,13 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
.in("id", collect)
.set("order_package_reservation_status", OrderPackageReservationStatusConstant.yiyueyue.getValue())
);
// 推送工厂
if(CollUtil.isNotEmpty(collect)){
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(collect);
if(CollUtil.isNotEmpty(distributionParcelListEntities)){
sendFactoryPlan(distributionParcelListEntities, warehouse, distrilbutionBillLading);
}
}
}
});
@ -1600,7 +1704,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(collect);
for (DistributionParcelListEntity distributionParcelListEntity : distributionParcelListEntities) {
String content = "包件在" + warehouse.getName() + "由" + AuthUtil.getNickName() + "取消计划自提,操作方式:订单取消勾选包件,自提批次号:" + pickupBatch;
JSONObject js = handleLogJSONObject(warehouse, AuthUtil.getUser(), distributionParcelListEntity.getOrderPackageCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
JSONObject js = handleLogJSONObject(warehouse, AuthUtil.getUser(), distributionParcelListEntity.getOrderPackageCode(), content, WorkNodeEnums.CANCEL_BILLOFLADING.getCode());
aaa.add(js);
}
packageIds.addAll(collect);
@ -1813,7 +1917,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if (!list.isEmpty()) {
for (DistrilbutionBillPackageEntity billPackageEntity : list) {
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "取消计划自提,操作方式:移除订单,自提批次号:" + pickupBatch;
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), billPackageEntity.getPacketBarCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), billPackageEntity.getPacketBarCode(), content, WorkNodeEnums.CANCEL_BILLOFLADING.getCode());
aaa.add(js);
billPackageEntity.setPacketBarStatus(2);
@ -1908,6 +2012,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), billPackageEntity.getPacketBarCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
aaa.add(js);
});
sendFactoryPlan(parcelListEntities, myCurrentWarehouse, distrilbutionBillLading);
//修改包件数量为预约状态
List<Long> collect = parcelListEntities.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList());
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update()

23
blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/service/impl/DeliveryNoteServiceImpl.java

@ -127,11 +127,11 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
advanceDetailEntity.setOrderCode(vo.getBillCode());
advanceDetailEntity.setBrand(BrandEnums.LINSY.getValue());
advanceDetailEntity.setSystemType("线上");
advanceDetailEntity.setFirstPackName(orderPackageDTO.getMaterialName());
advanceDetailEntity.setFirstPackName(orderPackageDTO.getMaterialCode());
// 二级品类名称
advanceDetailEntity.setSecondPackName(orderPackageDTO.getMaterialName());
advanceDetailEntity.setSecondPackName(orderPackageDTO.getMaterialCode());
// 三级品类名称
advanceDetailEntity.setThirdPackName(orderPackageDTO.getMaterialName());
advanceDetailEntity.setThirdPackName(orderPackageDTO.getMaterialCode());
advanceDetailEntity.setMaterialName(orderPackageDTO.getMaterialName());
advanceDetailEntity.setMaterialCode(orderPackageDTO.getMaterialCode());
advanceDetailEntity.setSiteName(vo.getSupplierName());
@ -200,6 +200,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
String startWarehouseName = null;
// 获取工厂基地绑定的始发仓信息
R<FactoryWarehouseBindVO> warehouseByBrandAndSiteName = baseClient.getWarehouseByBrandAndSiteName(BrandEnums.LINSY.getValue(), vo.getSupplierName());
log.info("工厂基地绑定的始发仓信息:{}", JSONUtil.toJsonStr(warehouseByBrandAndSiteName));
if (ObjectUtil.equal(HttpConstants.HTTP.HTTP_RESOURCE_CODE.SUCCESS_CODE, warehouseByBrandAndSiteName.getCode())) {
FactoryWarehouseBindVO data = warehouseByBrandAndSiteName.getData();
if (ObjectUtil.isNotNull(data)) {
@ -253,22 +254,22 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper,
JSONArray packageList = new JSONArray();
for (PackageInfoVO orderPackageDTO : packages) {
advance.set("firstPackName", orderPackageDTO.getMaterialName());
advance.set("firstPackCode", orderPackageDTO.getMaterialCode());
advance.set("firstPackName", orderPackageDTO.getMaterialCode());
// advance.set("firstPackCode", orderPackageDTO.getMaterialCode());
// 封装包件
JSONObject advanceDetailEntity = new JSONObject();
advanceDetailEntity.set("orderSelfNum", vo.getBillCode());
advanceDetailEntity.set("serviceNum", vo.getCustomizedBillCode());
advanceDetailEntity.set("type", BrandEnums.LINSY.getValue());
advanceDetailEntity.set("systemType", "线上");
advanceDetailEntity.set("firstPackName", orderPackageDTO.getMaterialName());
advanceDetailEntity.set("firstPackName", orderPackageDTO.getMaterialCode());
// 二级品类名称
advanceDetailEntity.set("secondPackName", orderPackageDTO.getMaterialName());
advanceDetailEntity.set("secondPackName", orderPackageDTO.getMaterialCode());
// 三级品类名称
advanceDetailEntity.set("thirdPackName", orderPackageDTO.getMaterialName());
advanceDetailEntity.set("firstPackCode", orderPackageDTO.getMaterialCode());
advanceDetailEntity.set("secondPackCode", orderPackageDTO.getMaterialCode());
advanceDetailEntity.set("thirdPackCode", orderPackageDTO.getMaterialCode());
advanceDetailEntity.set("thirdPackName", orderPackageDTO.getMaterialCode());
// advanceDetailEntity.set("firstPackCode", orderPackageDTO.getMaterialCode());
// advanceDetailEntity.set("secondPackCode", orderPackageDTO.getMaterialCode());
// advanceDetailEntity.set("thirdPackCode", orderPackageDTO.getMaterialCode());
advanceDetailEntity.set("siteName", vo.getSupplierName());
advanceDetailEntity.set("unitNo", orderPackageDTO.getBarcode());
advanceDetailEntity.set("mctsTruck", StrUtil.replace(DateUtil.today(), "-", ""));

24
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/FactoryNodeEnums.java

@ -12,20 +12,16 @@ import org.springblade.common.model.IDict;
@Getter
public enum FactoryNodeEnums implements IDict<Integer> {
INITIAL_WAREHOUSE_ENTRY(101020, "已入库"),
UNLOAD_INCOMING_WAREHOUSE(105010,"已入库"),
INITIAL_WAREHOUSE_LOADING(103020, "已出库"),
INITIAL_WAREHOUSE_DEPART(103040, "已发车"),
TRANSFER_WAREHOUSE_DEPART(103080, "已发车"),
/**
* 配送装车
*/
DISTRIBUTION_LOADING(302010, "配送"),
/**
* 文员复核
*/
CLERK_REVIEW(303010, "已签收"),
/** 已入库 */
ALREADY_IN_STOCK(101020, "已入库"),
/** 已出库 */
SHIPPED(103020, "已出库"),
/** 已发车 */
DISPATCHED(103040, "已发车"),
/** 配送 */
DISTRIBUTION(302010, "配送"),
/** 已签收 */
SIGNED_FOR(303010, "已签收"),
;
FactoryNodeEnums(Integer code, String text) {

28
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeMappingEnums.java

@ -13,19 +13,21 @@ import org.springblade.common.constant.WorkNodeEnums;
@Getter
public enum NodeMappingEnums {
INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.INITIAL_WAREHOUSE_ENTRY, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1),
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.UNLOAD_INCOMING_WAREHOUSE, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
INITIAL_WAREHOUSE_LOADING(FactoryNodeEnums.INITIAL_WAREHOUSE_LOADING, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING, 1),
INITIAL_WAREHOUSE_DEPART(FactoryNodeEnums.INITIAL_WAREHOUSE_DEPART, WorkNodeEnums.INITIAL_WAREHOUSE_DEPART, 1),
TRANSFER_WAREHOUSE_DEPART(FactoryNodeEnums.TRANSFER_WAREHOUSE_DEPART, WorkNodeEnums.TRANSFER_WAREHOUSE_DEPART, 1),
/**
* 已交接
*/
DISTRIBUTION_LOADING(FactoryNodeEnums.DISTRIBUTION_LOADING, WorkNodeEnums.DISTRIBUTION_LOADING, 1),
/**
* 收货完成
*/
CLERK_REVIEW(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.CLERK_REVIEW, 1);
INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1),
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
INITIAL_WAREHOUSE_LOADING(FactoryNodeEnums.SHIPPED, WorkNodeEnums.INITIAL_WAREHOUSE_LOADING, 1),
INITIAL_WAREHOUSE_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.INITIAL_WAREHOUSE_DEPART, 1),
TRANSFER_WAREHOUSE_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.TRANSFER_WAREHOUSE_DEPART, 1),
TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.DISPATCHED, WorkNodeEnums.TRIPARTITE_TRANSFER_DEPART, 1),
DISTRIBUTION_LOADING(FactoryNodeEnums.DISTRIBUTION, WorkNodeEnums.DISTRIBUTION_LOADING, 1),
SIGN_DIRECT_SHIPPER(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 1),
SIGN_TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 1),
CLERK_REVIEW(FactoryNodeEnums.SIGNED_FOR, WorkNodeEnums.CLERK_REVIEW, 1),
;
/**
* 系统作业节点

5
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/enums/NodeNeedEnums.java

@ -15,9 +15,12 @@ public enum NodeNeedEnums implements Serializable {
INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"),
UNLOAD_INCOMING_WAREHOUSE(105010,"卸车入库"),
INITIAL_WAREHOUSE_LOADING(103020, "装车"),
INITIAL_WAREHOUSE_DEPART(103040, "始发仓发车"),
TRANSFER_WAREHOUSE_DEPART(103080, "网点发车"),
TRIPARTITE_TRANSFER_DEPART(104010, "三方中转发车"),
/**
* 配送装车
*/
@ -25,6 +28,8 @@ public enum NodeNeedEnums implements Serializable {
/**
* 文员复核
*/
SIGN_DIRECT_SHIPPER(105030,"直发商家签收"),
SIGN_TRIPARTITE_TRANSFER_DEPART(104040, "三方中转签收"),
CLERK_REVIEW(303010, "文员复核"),
;

15
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/FactoryNodeEnums.java

@ -12,18 +12,15 @@ import org.springblade.common.model.IDict;
@Getter
public enum FactoryNodeEnums implements IDict<Integer> {
INITIAL_WAREHOUSE_ENTRY(101020, "入库"),
UNLOAD_INCOMING_WAREHOUSE(105010,"入库"),
/** 入库 */
ALREADY_IN_STOCK(101020, "入库"),
/** 出库 */
INITIAL_WAREHOUSE_LOADING(103020, "出库"),
/** 计划配车 */
PLAN_DISTRIBUTION(301060, "计划配车"),
/**
* 配送装车
*/
/** 配送 */
DISTRIBUTION_LOADING(302010, "配送"),
/**
* 文员复核
*/
/** 签收 */
CLERK_REVIEW(303010, "签收"),
;

10
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeMappingEnums.java

@ -16,11 +16,11 @@ public enum NodeMappingEnums {
/**
* 始发仓入库
*/
INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.INITIAL_WAREHOUSE_ENTRY, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1),
INITIAL_WAREHOUSE_ENTRY(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY, 1),
/**
* 卸车入库
*/
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.UNLOAD_INCOMING_WAREHOUSE, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
UNLOAD_INCOMING_WAREHOUSE(FactoryNodeEnums.ALREADY_IN_STOCK, WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE, 1),
/**
* 装车
*/
@ -29,6 +29,7 @@ public enum NodeMappingEnums {
* 计划配车
*/
PLAN_DISTRIBUTION(FactoryNodeEnums.PLAN_DISTRIBUTION, WorkNodeEnums.PLAN_DISTRIBUTION, 1),
PLAN_BILLOFLADING(FactoryNodeEnums.PLAN_DISTRIBUTION, WorkNodeEnums.PLAN_BILLOFLADING, 1),
/**
* 已交接
@ -37,7 +38,10 @@ public enum NodeMappingEnums {
/**
* 收货完成
*/
CLERK_REVIEW(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.CLERK_REVIEW, 1);
CLERK_REVIEW(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.CLERK_REVIEW, 1),
CLERK_REVIEW_DIRECT_SHIPPER(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 1),
CLERK_REVIEW_TRIPARTITE_TRANSFER_DEPART(FactoryNodeEnums.CLERK_REVIEW, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 1),
;
/**
* 系统作业节点

13
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/enums/NodeNeedEnums.java

@ -15,15 +15,16 @@ public enum NodeNeedEnums implements Serializable {
INITIAL_WAREHOUSE_ENTRY(101020, "始发仓入库"),
UNLOAD_INCOMING_WAREHOUSE(105010,"卸车入库"),
INITIAL_WAREHOUSE_LOADING(103020, "装车"),
PLAN_BILLOFLADING(301040, "计划自提"),
PLAN_DISTRIBUTION(301060, "计划配车"),
/**
* 配送装车
*/
DISTRIBUTION_LOADING(302010, "配送装车"),
/**
* 文员复核
*/
SIGN_DIRECT_SHIPPER(105030,"直发商家签收"),
SIGN_TRIPARTITE_TRANSFER_DEPART(104040, "三方中转签收"),
CLERK_REVIEW(303010, "文员复核"),
;

2
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/FactoryOrderListener.java

@ -264,7 +264,7 @@ public class FactoryOrderListener {
advanceDetailEntity.setSiteCode("");
advanceDetailEntity.setQuantity(1);
advanceDetailEntity.setOrderPackageCode(orderPackageDTO.getPaNo());
advanceDetailEntity.setTrainNumber("");
advanceDetailEntity.setTrainNumber(vo.getLogisticID());
advanceDetailEntity.setServiceNum(orderInfoVO.getMainOrderNo());
advanceDetailEntity.setWaybillNo("");
advanceDetailEntity.setPackageStatus("0");

6
blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mq/NodeDataPushListener.java

@ -45,9 +45,9 @@ public class NodeDataPushListener {
private final OldProperties oldProperties;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FactoryDataConstants.Mq.Queues.OLO_NODE_DATA_PUSH, durable = "true"),
value = @Queue(name = FactoryDataConstants.Mq.Queues.SFY_NODE_DATA_PUSH, durable = "true"),
exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC),
key = FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH
key = FactoryDataConstants.Mq.RoutingKeys.SFY_NODE_DATA_PUSH
))
@Transactional(rollbackFor = Exception.class)
public void nodeDataPush(String msg) {
@ -63,7 +63,7 @@ public class NodeDataPushListener {
FactoryNodeEnums factoryNode = NodeMappingEnums.getFactoryByNodeAndStatus(workNodeEnums);
// 2 获取业务数据
List<PushData> content = entries.getBeanList("content", PushData.class);
if (!ObjectUtil.equal(workNodeEnums.getCode(), NodeNeedEnums.PLAN_DISTRIBUTION.getCode())) {
if (!ObjectUtil.equal(workNodeEnums.getCode(), NodeNeedEnums.PLAN_DISTRIBUTION.getCode()) || !ObjectUtil.equal(workNodeEnums.getCode(), NodeNeedEnums.PLAN_BILLOFLADING.getCode()) ) {
// 推送入库出库数据
// 按订单号和运单号进行分组
if (CollUtil.isNotEmpty(content)) {

1
blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/NodeNeedEnums.java

@ -19,6 +19,7 @@ public enum NodeNeedEnums implements Serializable {
TRANSFER_WAREHOUSE_DEPART(103080, "中转仓发车"),
SIGN_DIRECT_SHIPPER(105030,"直发商家签收"),
END_WAREHOUSE_UNLOADING(105040, "末端仓卸车确认"),
SIGN_TRIPARTITE_TRANSFER_DEPART(104040, "三方中转签收"),
CLERK_REVIEW(303010, "文员复核");
private Integer code;

6
blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java

@ -40,10 +40,14 @@ public enum ZbomNodeMappingEnums {
* 全部签收 -- 文员复核
*/
SIGN_FOR(ZbomNodeEnums.SIGN_FOR, WorkNodeEnums.CLERK_REVIEW, 1),
SIGN_FOR_DIRECT_SHIPPER(ZbomNodeEnums.SIGN_FOR, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 1),
SIGN_FOR_TRIPARTITE_TRANSFER_DEPART(ZbomNodeEnums.SIGN_FOR, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 1),
/**
* 部分签收 -- 文员复核
*/
PARTIAL_RECEIPT(ZbomNodeEnums.PARTIAL_RECEIPT, WorkNodeEnums.CLERK_REVIEW, 2);
PARTIAL_RECEIPT(ZbomNodeEnums.PARTIAL_RECEIPT, WorkNodeEnums.CLERK_REVIEW, 2),
PARTIAL_RECEIPT_DIRECT_SHIPPER(ZbomNodeEnums.PARTIAL_RECEIPT, WorkNodeEnums.SIGN_DIRECT_SHIPPER, 2),
PARTIAL_RECEIPT_TRIPARTITE_TRANSFER_DEPART(ZbomNodeEnums.PARTIAL_RECEIPT, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, 2);
/**
* 系统作业节点

2
blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java

@ -261,7 +261,7 @@ public class ZbomNodeDataPushListener {
nodeOrderEntity = new ZbFactoryNodeOrderEntity();
}
// 如果是签收节点,需要判断是否为全部签收和部分签收
if (EnumUtil.equals(WorkNodeEnums.CLERK_REVIEW, node)) {
if (EnumUtil.equals(WorkNodeEnums.CLERK_REVIEW, node) || EnumUtil.equals(WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART, node) || EnumUtil.equals(WorkNodeEnums.SIGN_DIRECT_SHIPPER, node)) {
// 签收节点设置签收数量
Integer signNumber = Convert.toInt(nodeData.getSignQty());
log.info("key:{},签收数量:{}", departCode + "_" + platformOrderCode, signNumber);

2
blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NewSystemReceiveInfoHandler.java

@ -40,7 +40,7 @@ public class NewSystemReceiveInfoHandler {
// 欧派的订单会进来进行推送
String json = (String) map.get("messageData");
OrderStatusDTO orderStatusDTO = JSON.parseObject(json, OrderStatusDTO.class);
log.info("##################receiveInfoHandler:处理签收信息数据 {}",orderStatusDTO);
log.info("##################receiveInfoHandler:处理签收信息数据 {}",orderStatusDTO);
try {
ouPaiFactoryService.newSystemHandleStatusData(orderStatusDTO);
} catch (Exception e) {

18
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}
# 627683:
# druid:
# #独立校验配置
# validation-query: select 1
# #oracle校验
# #validation-query: select 1 from dual
# url: ${blade.datasource.factory.627683.url}
# username: ${blade.datasource.factory.627683.username}
# password: ${blade.datasource.factory.627683.password}
slave:
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}

18
blade-service/logpm-old-project/src/main/resources/application-dev.yml

@ -34,12 +34,12 @@ spring:
url: ${blade.datasource.oldproject.master.url}
username: ${blade.datasource.oldproject.master.username}
password: ${blade.datasource.oldproject.master.password}
# 627683:
# druid:
# #独立校验配置
# validation-query: select 1
# #oracle校验
# #validation-query: select 1 from dual
# url: ${blade.datasource.oldproject.627683.url}
# username: ${blade.datasource.oldproject.627683.username}
# password: ${blade.datasource.oldproject.627683.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.oldproject.slave.url}
username: ${blade.datasource.oldproject.slave.username}
password: ${blade.datasource.oldproject.slave.password}

6
blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java

@ -1460,6 +1460,12 @@ public class SyncOrderInfoServiceImpl implements ISyncOrderInfoService {
log.warn("#################saveOrderInfo: 运单信息为空 orderCode={}",orderCode);
throw new CustomerException(403,"运单信息为空");
}
Integer warehouseId = wayBillEntity.getWarehouseId();
if(!warehouseId.equals(oldWarehouseId)){
log.warn("#################saveOrderInfo: 包件还未到达目的仓,不同步 warehouseId={} oldWarehouseId={}",warehouseId,oldWarehouseId);
throw new CustomerException(403,"包件还未到达目的仓,不同步");
}
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(newWarehouseId);
if(Objects.isNull(basicdataWarehouseEntity)){

7
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/WarehouseIndexMapper.java

@ -287,4 +287,11 @@ public interface WarehouseIndexMapper {
* @return
*/
String findBillLadingPlanNumByDay(@Param("param")IndexDTO indexDTO);
/**
*查询当月自提计划数
* @param indexDTO
* @return
*/
String findBillLadingPlanNumByMonth(@Param("param")IndexDTO indexDTO);
}

16
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/WarehouseIndexMapper.xml

@ -887,6 +887,22 @@
</where>
</select>
<select id="findBillLadingPlanNumByDay" resultType="java.lang.String">
SELECT
count(1) AS num
FROM
logpm_distrilbution_bill_lading
<where>
is_deleted = 0
AND DATE_FORMAT( create_time, '%y%m%d' ) = DATE_FORMAT( #{param.dayStr}, '%y%m%d' )
<if test="param.warehouseIds != null">
AND warehouse_id
<foreach collection="param.warehouseIds" item="item" open="in (" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
<select id="findBillLadingPlanNumByMonth" resultType="java.lang.String">
SELECT
count(1) AS num
FROM

17
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/WarehouseIndexServiceImpl.java

@ -408,10 +408,21 @@ public class WarehouseIndexServiceImpl implements IWarehouseIndexService {
String signScale = multiply.toString();
indexBillLadingSignforDayDataVO.setClerkSignforScale(signScale);
}
//查询当天计划数
String dayBillLadingPlanNum = warehouseIndexMapper.findBillLadingPlanNumByDay(indexDTO);
//查询当天文员复核数
String dayBillLadingSignforNum = warehouseIndexMapper.findBillLadingSignForNumByDay(indexDTO);
indexBillLadingSignforDayDataVO.setClerkSignNum(dayBillLadingSignforNum);
if (!"0".equals(dayBillLadingPlanNum) && !"0".equals(dayBillLadingSignforNum) ) {
//计算当月的超时签收率
BigDecimal bd1 = new BigDecimal(dayBillLadingSignforNum);
BigDecimal bd2 = new BigDecimal(dayBillLadingPlanNum);
BigDecimal multiply = bd1.divide(bd1.add(bd2),1, BigDecimal.ROUND_CEILING);
String signScale = multiply.toString();
indexBillLadingSignforDayDataVO.setClerkOverTimeScale(signScale);
}
//查询当天签收超时数
String dayBillLadingverTimeNum = warehouseIndexMapper.findBillLadingOverTimeNumByDay(indexDTO);
indexBillLadingSignforDayDataVO.setClerkOverTimeSignfoNum(dayBillLadingverTimeNum);
@ -443,12 +454,12 @@ public class WarehouseIndexServiceImpl implements IWarehouseIndexService {
String monthBillLadingOverTimeNum = warehouseIndexMapper.findBillLadingOverTimeNumByDay(indexDTO);
indexBillLadingSignforMonthDataVO.setClerkOverTimeSignfoNum(monthBillLadingOverTimeNum);
//查询当月计划总数
String monthBillLadingPlanNum = warehouseIndexMapper.findBillLadingPlanNumByDay(indexDTO);
String monthBillLadingPlanNum = warehouseIndexMapper.findBillLadingPlanNumByMonth(indexDTO);
if (!"0".equals(monthBillLadingOverTimeNum) && !"0".equals(monthBillLadingPlanNum) ) {
//计算当月的超时签收率
BigDecimal bd1 = new BigDecimal(monthBillLadingOverTimeNum);
BigDecimal bd2 = new BigDecimal(monthBillLadingPlanNum);
BigDecimal multiply = bd1.divide(bd1.add(bd2),1, BigDecimal.ROUND_CEILING);
BigDecimal multiply = bd1.divide(bd1.add(bd2),4, BigDecimal.ROUND_CEILING);
String signScale = multiply.toString();
indexBillLadingSignforMonthDataVO.setClerkOverTimeScale(signScale);
}

8
blade-service/logpm-report/src/main/resources/application-prod.yml

@ -33,13 +33,13 @@ spring:
url: ${blade.datasource.report.master.url}
username: ${blade.datasource.report.master.username}
password: ${blade.datasource.report.master.password}
slave:
627683:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.report.slave.url}
username: ${blade.datasource.report.slave.username}
password: ${blade.datasource.report.slave.password}
url: ${blade.datasource.report.627683.url}
username: ${blade.datasource.report.627683.username}
password: ${blade.datasource.report.627683.password}

7
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java

@ -574,6 +574,13 @@ public class OpenOrderController {
throw new CustomerException(405,"发站仓不属于当前仓");
}
Long brandId = openOrderDTO.getBrandId();
String brand = openOrderDTO.getBrand();
if(Objects.isNull(brandId) || StringUtil.isBlank(brand)){
log.warn("#################openZeroOrderParamVerify: 品牌不能为空 brandId={} brand={}",brandId,brand);
throw new CustomerException(405,"品牌不能为空");
}
Long destinationWarehouseId = openOrderDTO.getDestinationWarehouseId();
String destinationWarehouseName = openOrderDTO.getDestinationWarehouseName();
if(Objects.isNull(destinationWarehouseId) && StringUtil.isBlank(destinationWarehouseName)){

4
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml

@ -260,8 +260,8 @@
max(cls.update_time) cupdateTime
from logpm_trunkline_cars_load_scan cls
group by cls.scan_code
) cmax on cmax.scan_code = ltcls.scan_code and cmax.cupdateTime = ltcls.update_time) m on m.scan_code = t.order_package_code
left join logpm_distribution_loadscan ldl on ldl.order_package_code = t.order_package_code and ldl.scan_status != 1 and ldl.is_deleted = 0
) cmax on cmax.scan_code = ltcls.scan_code and cmax.cupdateTime = ltcls.update_time) m on m.scan_code = ltad.order_package_code
left join logpm_distribution_loadscan ldl on ldl.order_package_code = ltad.order_package_code and ldl.scan_status != 1 and ldl.is_deleted = 0
left join logpm_distribution_delivery_list lddl on lddl.id = ldl.delivery_id
where 1=1
<if test="param.orderCode != null and param.orderCode != '' ">

5
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml

@ -94,6 +94,7 @@
lww.customer_train customerTrain,
lww.shipper shipper,
lww.total_count totalCount,
lww.total_count-lww.billlading_num noBillladingNum,
lww.total_count-lww.billlading_num totalPlanNum,
lww.total_weight totalWeight,
lww.total_volume totalVolume,
@ -106,9 +107,9 @@
lww.destination_warehouse_name destinationWarehouseName,
lww.remark remark
from logpm_warehouse_waybill lww
where lww.billlading_num != lww.total_count
where lww.billlading_num &lt; lww.total_count
and lww.departure_warehouse_id = #{param.warehouseId}
<if test="param.waybillNos != null and @org.apache.commons.collections4.CollectionUtils@isNotEmpty(param.waybillNos)">
<if test="param.waybillNos != null and param.waybillNos.size() > 0">
and lww.waybill_no not in
<foreach collection="param.waybillNos" item="item" open="(" separator="," close=")">
#{item}

12
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingWaybillMapper.xml

@ -22,8 +22,8 @@
<select id="findWaybillInfoListByBillladingId" resultType="com.logpm.trunkline.vo.TrunklineBillladingWaybillVO">
select ltb.billlading_code billadingCode,
ltbw.waybill_id waybillId,
ltbw.waybill_no waybillNo,
ltad.waybill_id waybillId,
ltad.waybill_no waybillNo,
ltbw.id billladingWaybillId,
lww.create_time openOrderTime,
lww.goods_name goodsName,
@ -44,12 +44,18 @@
ltbw.plan_num planNum,
ltbw.real_num realNum,
ltbw.billlading_fee billladingFee,
lww.collect_pay collectPay
lww.collect_pay collectPay,
count(ltad.id) scanNum
from logpm_trunkline_billlading_waybill ltbw
left join logpm_trunkline_billlading_package ltbp on ltbw.billlading_id = ltbp.billlading_id
left join logpm_trunkline_advance_detail ltad on ltad.order_package_code = ltbp.order_package_code and ltad.waybill_id = ltbw.waybill_id
left join logpm_trunkline_billlading ltb on ltb.id = ltbw.billlading_id
left join logpm_warehouse_waybill lww on lww.waybill_no = ltbw.waybill_no
where ltbw.billlading_id = #{billladingId}
and ltbw.is_deleted = 0
group by ltb.billlading_code,
ltbw.waybill_id,
ltbw.waybill_no
</select>
<update id="updateDataByBillladingWaybillId" >

4
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml

@ -423,10 +423,10 @@
and ltcll.sort != 1
and ltcl.load_status != '0'
and ltcl.load_type != '4'
<if test="param.startDate != null and param.startDate != ''">
<if test="param.startTime != null">
and ltcl.start_time &gt;= #{param.startDate}
</if>
<if test="param.endDate != null and param.endDate != ''">
<if test="param.endTime != null">
and ltcl.start_time &lt;= #{param.endDate}
</if>
</select>

9
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.entity.DistributionParcelListEntity;
@ -91,7 +92,7 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper<TrunklineCarsLoa
List<LoadingListGoodsVO> findUnloadGoods(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId, @Param("orderCode") String orderCode, @Param("waybillNo") String waybillNo);
void updateScanStatusAndTime(@Param("loadScanIds") List<Long> loadScanIds, @Param("scanStatus") String scanStatus, @Param("unloadTime") Date unloadTime,@Param("signUserName") String signUserName);
void updateScanStatusAndTime(@Param("loadScanIds") List<Long> loadScanIds, @Param("scanStatus") String scanStatus, @Param("unloadTime") Date unloadTime,@Param("signUserName") String signUserName,@Param("warehouseId") Long warehouseId,@Param("warehouseName") String warehouseName);
List<LoadScanWaybillVO> findLoadScanWaybillList(@Param("loadId") Long loadId, @Param("nodeId") Long nodeId);
@ -152,4 +153,10 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper<TrunklineCarsLoa
List<Long> findCarsLoadScanIdsByWaybillIds(@Param("waybillIds") List<Long> waybillIds);
List<CarsLoadScanAbnormalVO> findAbnormalData(@Param("loadId") Long loadId);
List<UnloadZeroVO> findUnloadZeroList(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId);
JSONObject findUnloadNumAudio(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId);
void updateFinalNodeIdAndFinalNodeNameByLoadIdNoData(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId, @Param("warehouseName") String warehouseName);
}

43
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml

@ -56,7 +56,6 @@
from logpm_trunkline_cars_load_scan
where scan_code = #{orderPackageCode}
and load_id = #{loadId}
and scan_status = '1'
</select>
@ -372,7 +371,7 @@
<select id="findPlanUnloadNumByLoadIdAndFinalNodeId" resultType="int">
select sum(IFNULL(num,0))
select sum(IFNULL(num-IFNULL(unload_num,0),0))
from logpm_trunkline_cars_load_scan
where load_id = #{loadId}
and final_node_id = #{warehouseId}
@ -398,6 +397,7 @@
left join logpm_warehouse_waybill lww on ltcls.waybill_no = lww.waybill_no
where ltcls.load_id = #{loadId}
and ltcls.warehouse_id = #{warehouseId}
and ltcls.order_code is not null
group by ltcls.order_code,
ltcls.waybill_no,
ltcls.type,
@ -472,7 +472,13 @@
update logpm_trunkline_cars_load_scan
set scan_status = #{scanStatus},
sign_time = #{unloadTime},
sign_user_name = #{signUserName}
sign_user_name = #{signUserName},
unload_abnormal = 0,
unload_num = num,
unload_user_name = #{signUserName},
unload_time = #{unloadTime},
unload_node_id = #{warehouseId},
unload_node_name = #{warehouseName}
where 1=1
<if test="loadScanIds != null and loadScanIds.size() > 0">
and id in
@ -506,7 +512,7 @@
<select id="findUnloadLoadScanWaybillList" resultType="com.logpm.trunkline.vo.LoadScanWaybillVO">
select waybill_no waybillNo,
sum(num) num,
sum(IF(unload_node_id = null,0,num)) unloadNum
sum(IF(unload_node_id = null,0,unload_num)) unloadNum
from logpm_trunkline_cars_load_scan
where load_id = #{loadId}
and final_node_id = #{nodeId}
@ -812,5 +818,34 @@
order by IFNULL(ltcls.waybill_no,'--') desc, ltcls.order_code desc
</select>
<select id="findUnloadZeroList" resultType="com.logpm.trunkline.vo.UnloadZeroVO">
select ltcls.waybill_no waybillNo,
ltcls.order_code orderCode,
IFNULL(sum(ltcls.num),0) loadingNum,
IFNULL(sum(ltcls.unload_num),0) unloadNum
from logpm_trunkline_cars_load_scan ltcls
where ltcls.load_id = #{loadId}
and ltcls.final_node_id = #{warehouseId}
and ltcls.type = '2'
group by ltcls.waybill_no,
ltcls.order_code
</select>
<select id="findUnloadNumAudio" resultType="com.alibaba.fastjson.JSONObject">
select IFNULL(sum(unload_num),0) totalUnloadNum,
IFNULL(sum(IF(unload_abnormal = 1,unload_num,0)),0) abnormalUnloadNum
from logpm_trunkline_cars_load_scan
where load_id = #{loadId}
and unload_node_id = #{warehouseId}
and scan_status != '1'
</select>
<update id="updateFinalNodeIdAndFinalNodeNameByLoadIdNoData" >
update logpm_trunkline_cars_load_scan
set final_node_id = #{warehouseId},
final_node_name = #{warehouseName}
where load_id = #{loadId}
and final_node_id is null
</update>
</mapper>

4
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 IS NULL , 0,1) checkStatus,
IF(wb.check_user_id = NULL , 0,1) checkStatus,
wb.shipper shipper,
wb.shipper_name shipperName,
wb.consignee consignee,
@ -177,7 +177,7 @@
IFNULL(lww.total_freight/lww.total_count*ltwo.total_number,0) orderFreight,
IFNULL(lww.total_freight/lww.total_count*ltco.unload_num,0) unloadIncome,
IFNULL(lww.total_freight/lww.total_count*ltco.plan_num,0) orderLineCost,
sum(ltwo.total_number) orderNum,
ltwo.total_number orderNum,
sum(IF(ltcls.scan_status = '3',ltcls.num,0)) signNum
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

4
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/PackageFanoutListener.java

@ -33,11 +33,11 @@ public class PackageFanoutListener {
private final IBasicdataWarehouseClient warehouseClient;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.trunkline.PACKAGNODE.QUEUE.PACKAGE_SIGN),
value = @Queue(name = FanoutConstants.trunkline.PACKAGNODE.QUEUE.PACKAGE_INCOMING),
exchange = @Exchange(name = FanoutConstants.trunkline.PACKAGNODE.EXCHANGE, type = ExchangeTypes.FANOUT)
))
@Transactional(rollbackFor = Exception.class)
public void packageSignFanout(String msg) {
public void packageIncomingFanout(String msg) {
JSONObject jsonObject = JSONUtil.parseObj(msg);
Integer workNode = jsonObject.getInt("workNode");
if(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode().equals(workNode)

9
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
@ -86,7 +87,7 @@ public interface ITrunklineCarsLoadScanService extends BaseService<TrunklineCars
List<LoadingListGoodsVO> findUnloadGoods(Long loadId, Long warehouseId, String orderCode, String waybillNo);
void updateScanStatusAndTime(List<Long> loadScanIds, String scanStatus,Date unloadTime,String signUserName);
void updateScanStatusAndTime(List<Long> loadScanIds, String scanStatus,Date unloadTime,String signUserName,Long warehouseId,String warehouseName);
List<LoadScanWaybillVO> findLoadScanWaybillList(Long loadId, Long nodeId);
@ -147,4 +148,10 @@ public interface ITrunklineCarsLoadScanService extends BaseService<TrunklineCars
List<Long> findCarsLoadScanIdsByWaybillIds(List<Long> waybillIds);
List<CarsLoadScanAbnormalVO> findAbnormalData(Long loadId);
List<UnloadZeroVO> findUnloadZeroList(Long loadId, Long warehouseId);
JSONObject findUnloadNumAudio(Long loadId, Long warehouseId);
void updateFinalNodeIdAndFinalNodeNameByLoadIdNoData(Long loadId, Long warehouseId, String warehouseName);
}

9
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/CarsLoadAsyncServiceImpl.java

@ -404,11 +404,14 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService {
abnormalRecordEntity.setOrderPackageCode(scanCode);
abnormalRecordEntity.setUpUserId(userId);
abnormalRecordEntity.setUpUserName(nickName);
abnormalRecordEntity.setAbnormalStatus(0);
abnormalRecordEntity.setDealTime(new Date());
abnormalRecordEntity.setDealUserId(userId);
abnormalRecordEntity.setDealUserName(nickName);
abnormalRecordEntity.setAbnormalStatus(1);
abnormalRecordEntity.setUpTime(new Date());
abnormalRecordEntity.setAssociationId(loadScanId);
abnormalRecordEntity.setAssociationType(1);
abnormalRecordEntity.setRemark("无装车记录");
abnormalRecordEntity.setRemark("无装车记录 系统自动完结");
abnormalRecordClient.addAbnormalRecord(abnormalRecordEntity);
}
}
@ -436,7 +439,7 @@ public class CarsLoadAsyncServiceImpl implements ICarsLoadAsyncService {
String orderCode = trunklineCarsLoadScanEntity.getOrderCode();
String scanCode = trunklineCarsLoadScanEntity.getScanCode();
Long scanId = trunklineCarsLoadScanEntity.getId();
//无车计划
//无车计划
AftersalesAbnormalRecordEntity abnormalRecordEntity = new AftersalesAbnormalRecordEntity();
abnormalRecordEntity.setTenantId(tenantId);
abnormalRecordEntity.setCreateUser(userId);

50
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java

@ -4,7 +4,11 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.basicdata.entity.BasicdataStorageServicesEntity;
import com.logpm.basicdata.entity.BasicdataTripartiteMallEntity;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataStorageServicesClient;
import com.logpm.basicdata.feign.IBasicdataTripartiteMallClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.factorydata.enums.BrandEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
@ -14,6 +18,7 @@ import com.logpm.trunkline.bean.Resp;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.dto.OrderStatusDTO;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineBillladingPackageEntity;
import com.logpm.trunkline.service.*;
import com.logpm.trunkline.vo.TrunklineAdvanceVO;
@ -58,6 +63,8 @@ public class InComingServiceImpl implements IInComingService {
private final ISysClient sysClient;
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IOpenOrderAsyncService openOrderAsyncService;
private final IBasicdataTripartiteMallClient tripartiteMallClient;
private final IBasicdataStorageServicesClient storageServicesClient;
@Override
@ -389,8 +396,6 @@ public class InComingServiceImpl implements IInComingService {
});
} catch (Exception e) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 预入库消息推送失败~ 请联系管理员! ", e);
// throw new CustomerException("服务器异常");
}
@ -400,13 +405,13 @@ public class InComingServiceImpl implements IInComingService {
log.warn("############incomingPackage: 包件已入库 orderPackageCodes={} warehouseId={}", orderPackageCodes, warehouseId);
throw new CustomerException(405, "包件" + orderPackageCodes + "已入库");
} else {
if (!Objects.isNull(billladingId)) {
//先判断该包件是否已经有提货记录了
List<String> noOrderPackageCodes = billladingPackageServicie.findBillladingPackages(orderPackageCodes);
if (!noOrderPackageCodes.isEmpty()) {
billladingPackageServicie.saveEntityBatch(noOrderPackageCodes, billladingId, warehouseId, incomingType);
}
}
// if (!Objects.isNull(billladingId)) {
// //先判断该包件是否已经有提货记录了
// List<String> noOrderPackageCodes = billladingPackageServicie.findBillladingPackages(orderPackageCodes);
// if (!noOrderPackageCodes.isEmpty()) {
// billladingPackageServicie.saveEntityBatch(noOrderPackageCodes, billladingId, warehouseId, incomingType);
// }
// }
//4.如果有托盘码
orderPackageCodes.forEach(packageCode -> {
@ -423,10 +428,33 @@ public class InComingServiceImpl implements IInComingService {
}
}
});
int size = packageCodes.size();
if(size == 1){
if(incomingType == 2){
//只有扫码入库才报服务仓库
String packageCode = packageCodes.get(0);
TrunklineAdvanceDetailEntity advanceDetailEntity = advanceDetailService.findEntityByOrderPackageCode(packageCode);
Long advanceId = advanceDetailEntity.getAdvanceId();
TrunklineAdvanceEntity advanceEntity = advanceService.getById(advanceId);
String dealerName = advanceEntity.getDealerName();
String dealerCode = advanceEntity.getDealerCode();
String brand = advanceEntity.getBrand();
BasicdataTripartiteMallEntity tripartiteMallEntity = tripartiteMallClient.findEntityByDealerNameAndDealerCodeAndBrand(dealerName,dealerCode,brand);
if(!Objects.isNull(tripartiteMallEntity)){
Long clientId = tripartiteMallEntity.getClientId();
BasicdataStorageServicesEntity storageServicesEntity = storageServicesClient.findEntityBySendWarehouseIdAndClientId(warehouseId, clientId);
if(!Objects.isNull(storageServicesEntity)){
String serveWarehouseName = storageServicesEntity.getServeWarehouseName();
return Resp.scanSuccess(dealerName+"的服务仓库为"+serveWarehouseName,dealerName+"的服务仓库为"+serveWarehouseName);
}
}
}
}
}catch (Exception e){
e.printStackTrace();
log.error("入库异常",e);
throw new CustomerException("系统异常,请联系管理员");
throw e;
}
return R.success("入库成功");

115
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java

@ -924,6 +924,25 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
openOrderVO.setShipperName(basicdataClientEntity.getLinkman());
openOrderVO.setShipperMobile(basicdataClientEntity.getPhone());
openOrderVO.setShipperAddress(basicdataClientEntity.getDetailedly());
List<String> departureArray = new ArrayList<>();
String badeRegionAreaId = basicdataClientEntity.getBladeRegionAreaId();
String bladeRegionProvinceId = basicdataClientEntity.getBladeRegionProvinceId();
String bladeRegionCityId = basicdataClientEntity.getBladeRegionCityId();
departureArray.add(bladeRegionProvinceId);
departureArray.add(bladeRegionCityId);
String name = regionFeign.getName(bladeRegionCityId);
String areaId = bladeRegionCityId;
if (!StringUtil.isBlank(badeRegionAreaId)) {
departureArray.add(badeRegionAreaId);
name = regionFeign.getName(badeRegionAreaId);
areaId = badeRegionAreaId;
}
openOrderVO.setDeparture(name);
openOrderVO.setDepartureCode(areaId);
openOrderVO.setDepartureArray(departureArray);
}
}
@ -957,6 +976,14 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
@Override
public R findClientInfo(String clientName, String linkMan, String linkPhone) {
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn("###########findClientInfo: 仓库信息不存在 myCurrentWarehouse={}",myCurrentWarehouse);
return R.fail(405,"仓库信息不存在");
}
Long warehouseId = myCurrentWarehouse.getId();
if (clientName == null) {
clientName = "";
}
@ -969,6 +996,37 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<JSONObject> ls = basicdataClientClient.findListByClientName(clientName, linkMan, linkPhone);
ls.forEach(basicdataClientJson -> {
Long clientId = basicdataClientJson.getLong("clientId");
List<String> destinationArray = new ArrayList<>();
String badeRegionAreaId = basicdataClientJson.getString("areaId");
String bladeRegionProvinceId = basicdataClientJson.getString("provinceId");
String bladeRegionCityId = basicdataClientJson.getString("cityId");
basicdataClientJson.put("provinceId", bladeRegionProvinceId);
basicdataClientJson.put("cityId", bladeRegionCityId);
basicdataClientJson.put("areaId", badeRegionAreaId);
basicdataClientJson.put("defaultDeliveryWay","2");
String typeService = "1";
BasicdataStoreBusinessEntity storeBusinessEntity = basicdataStoreBusinessClient.findByClientIdAndTypeService(clientId, 3);
if(!Objects.isNull(storeBusinessEntity)){
typeService = storeBusinessEntity.getMold();
}
if ("1".equals(typeService)){
basicdataClientJson.put("defaultDeliveryWay","2");
}else if("2".equals(typeService)){
basicdataClientJson.put("defaultDeliveryWay","3");
}else if("3".equals(typeService)){
basicdataClientJson.put("defaultDeliveryWay","1");
}
//查询目的仓数据
BasicdataStorageServicesEntity basicdataStorageServicesEntity = basicdataStorageServicesClient.findEntityBySendWarehouseIdAndClientId(warehouseId, clientId);
if (!Objects.isNull(basicdataStorageServicesEntity)) {
basicdataClientJson.put("destinationWarehouseId",basicdataStorageServicesEntity.getServeWarehouseId());
basicdataClientJson.put("destinationWarehouseName",basicdataStorageServicesEntity.getServeWarehouseName());
}
});
return R.data(ls);
}
@ -2082,9 +2140,62 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<Long> waybillIds = new ArrayList<>();
waybillIds.add(waybillId);
List<Long> advanceIds = trunklineWaybillOrderService.findAdvanceIdsByWaybillIds(waybillIds);
openOrderAsyncService.sendUpdateWaybillFanout(waybillEntity,wayBillDetailList,advanceIds);
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListClient.findAllParcelListByAdvanceIds(advanceIds);
if(CollUtil.isNotEmpty(parcelListEntityList)){
Long consigneeId = waybillEntity.getConsigneeId();
String consignee = waybillEntity.getConsignee();
String consigneeName = waybillEntity.getConsigneeName();
String consigneeAddress = waybillEntity.getConsigneeAddress();
String consigneeMobile = waybillEntity.getConsigneeMobile();
Long departureWarehouseId = waybillEntity.getDepartureWarehouseId();
Long destinationWarehouseId = waybillEntity.getDestinationWarehouseId();
String departureWarehouseName = waybillEntity.getDepartureWarehouseName();
String destinationWarehouseName = waybillEntity.getDestinationWarehouseName();
BasicdataClientEntity basicdataClientEntity = basicdataClientClient.findEntityById(consigneeId);
//把parcelListEntityList包件集合中所有元素的orderCode放入一个Set集合
Set<String> orderCodeSet = parcelListEntityList.stream().map(DistributionParcelListEntity::getOrderCode).collect(Collectors.toSet());
List<DistributionStockArticleEntity> stockArticleEntities = distributionStockArticleClient.findAllStockArticleListByOrderCodes(new ArrayList<>(orderCodeSet));
stockArticleEntities.forEach(stockArticleEntity -> {
stockArticleEntity.setMallId(consigneeId);
if(!Objects.isNull(basicdataClientEntity)){
stockArticleEntity.setMallCode(basicdataClientEntity.getClientCode());
}else{
stockArticleEntity.setMallCode("");
}
stockArticleEntity.setMallName(consignee);
stockArticleEntity.setConsigneeUnit(consignee);
stockArticleEntity.setConsigneePerson(consigneeName);
stockArticleEntity.setConsigneeAddress(consigneeAddress);
stockArticleEntity.setConsigneeMobile(consigneeMobile);
});
parcelListEntityList.forEach(parcelListEntity -> {
parcelListEntity.setSendWarehouseId(departureWarehouseId);
parcelListEntity.setSendWarehouseName(departureWarehouseName);
parcelListEntity.setAcceptWarehouseId(destinationWarehouseId);
parcelListEntity.setAcceptWarehouseName(destinationWarehouseName);
if(departureWarehouseId.equals(destinationWarehouseId)){
parcelListEntity.setIsTransfer(0);
}else{
parcelListEntity.setIsTransfer(1);
}
});
if(CollUtil.isNotEmpty(stockArticleEntities)){
distributionStockArticleClient.updateByBatchId(stockArticleEntities);
}
if(CollUtil.isNotEmpty(parcelListEntityList)){
distributionParcelListClient.updateList(parcelListEntityList);
}
}
return R.success("改单成功");
}
@ -3838,7 +3949,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String newConsigneeMobile = openOrderDTO.getConsigneeMobile();
String consigneeMobile = waybillEntity.getConsigneeMobile();
if (!ObjectUtil.equals(consigneeMobile,newConsigneeName)) {
if (!ObjectUtil.equals(consigneeMobile,newConsigneeMobile)) {
stringBuilder.append("收货人电话:").append(consigneeMobile).append("-->").append(newConsigneeMobile).append(";");
waybillEntity.setConsigneeMobile(newConsigneeMobile);
}

16
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java

@ -734,10 +734,13 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
//把advanceDetailEntities中所有元素的waybillId提取到一个Set中
Set<Long> waybillIdSet = advanceDetailEntities.stream().map(TrunklineAdvanceDetailEntity::getWaybillId).collect(Collectors.toSet());
Map<String, WarehouseWaybillEntity> waybillEntityMap = new HashMap<>();
if(!waybillIdSet.isEmpty()){
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet));
//把waybillEntityList转化成以id为key的Map
waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getWaybillNo, Function.identity()));
}
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet));
//把waybillEntityList转化成以id为key的Map
Map<String, WarehouseWaybillEntity> waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getWaybillNo, Function.identity()));
//提取出advanceDetailEntities所有元素的advanceId存入Set
Set<Long> advanceIdSet = advanceDetailEntities.stream().map(TrunklineAdvanceDetailEntity::getAdvanceId).collect(Collectors.toSet());
@ -778,6 +781,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
List<DistributionStockArticleEntity> addStockArticleEntities = new ArrayList<>();
List<DistributionStockArticleEntity> updateStockArticleEntities = new ArrayList<>();
Map<String, WarehouseWaybillEntity> finalWaybillEntityMap = waybillEntityMap;
orderCodeSet.forEach(orderCode -> {
int total = baseMapper.getAllTotalNum(orderCode);
@ -812,7 +816,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
stockArticleEntity.setTypeService("1");//默认商配
if(!StringUtil.isBlank(waybillNo)){
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
WarehouseWaybillEntity waybillEntity = finalWaybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
Long consigneeId = waybillEntity.getConsigneeId();
@ -925,7 +929,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
parcelList.setIsTransfer(1);
String waybillNo = ad.getWaybillNo();
if(StringUtil.isNotBlank(waybillNo)){
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
WarehouseWaybillEntity waybillEntity = finalWaybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
parcelList.setWaybillId(waybillEntity.getId());
parcelList.setWaybillNumber(waybillEntity.getWaybillNo());
@ -1000,7 +1004,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
List<WarehouseWaybillEntity> updateWaybillList = new ArrayList<>();
parcelListEntityMap.keySet().forEach(waybillNo->{
WarehouseWaybillEntity updateWaybill = new WarehouseWaybillEntity();
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
WarehouseWaybillEntity waybillEntity = finalWaybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
List<DistributionParcelListEntity> pl = parcelListEntityMap.get(waybillNo);

84
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
@ -250,9 +251,13 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl<Trunk
List<TrunklineAdvanceEntity> advanceEntities = trunklineAdvanceService.list(advanceEntityQueryWrapper);
//把advanceEntities所有元素的waybillNo放入一个Set<String>
Set<String> waybillNoSet = advanceEntities.stream().map(TrunklineAdvanceEntity::getWaybillNo).collect(Collectors.toSet());
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findWaybillBilllByWaybillNos(new ArrayList<>(waybillNoSet));
//把waybillEntityList转化成waybillNo为key的Map
Map<String, WarehouseWaybillEntity> waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getWaybillNo, Function.identity()));
Map<String, WarehouseWaybillEntity> waybillEntityMap = new HashMap<>();
if(!waybillNoSet.isEmpty()){
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findWaybillBilllByWaybillNos(new ArrayList<>(waybillNoSet));
//把waybillEntityList转化成waybillNo为key的Map
waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getWaybillNo, Function.identity()));
}
//把advanceEntities转成以id为key的Map
Map<Long, TrunklineAdvanceEntity> advanceEntityMap = advanceEntities.stream().collect(Collectors.toMap(TrunklineAdvanceEntity::getId, Function.identity()));
@ -262,47 +267,57 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl<Trunk
.collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getAdvanceId));
Map<String,Integer> waybillNoMNumMap = new HashMap<>();
Map<String, WarehouseWaybillEntity> finalWaybillEntityMap = waybillEntityMap;
advanceEntityMap.keySet().forEach(advanceId -> {
TrunklineAdvanceEntity advanceEntity = advanceEntityMap.get(advanceId);
String waybillNo = advanceEntity.getWaybillNo();
if(StringUtil.isNotBlank(waybillNo)){
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = advanceIdGroupedEntities.get(advanceId);
int size = advanceDetailEntities.size();
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
Integer stockCount = waybillEntity.getStockCount();
Integer totalCount = waybillEntity.getTotalCount();
if(Objects.isNull(stockCount)){
stockCount = 0;
}
int diff = 0;
int all = stockCount + size;
if(all > totalCount){
WarehouseWaybillEntity waybillEntity = finalWaybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
Integer stockCount = waybillEntity.getStockCount();
Integer totalCount = waybillEntity.getTotalCount();
Integer billladingNum = waybillEntity.getBillladingNum();
if(Objects.isNull(stockCount)){
stockCount = 0;
}
int diff = 0;
int all = stockCount + size;
int allBillladingNum = billladingNum + size;
waybillEntity.setBillladingNum(allBillladingNum);
if(all > totalCount){
// waybillEntity.setStockCount(totalCount);
diff = totalCount - stockCount;
}else{
diff = totalCount - stockCount;
}else{
// waybillEntity.setStockCount(all);
diff = size;
}
Integer integer = waybillNoMNumMap.get(waybillNo);
if(Objects.isNull(integer)){
waybillNoMNumMap.put(waybillNo,diff);
}else{
waybillNoMNumMap.put(waybillNo,diff+integer);
}
diff = size;
}
Integer integer = waybillNoMNumMap.get(waybillNo);
if(Objects.isNull(integer)){
waybillNoMNumMap.put(waybillNo,diff);
}else{
waybillNoMNumMap.put(waybillNo,diff+integer);
}
waybillEntityMap.put(waybillNo,waybillEntity);
finalWaybillEntityMap.put(waybillNo,waybillEntity);
}
}
});
QueryWrapper<TrunklineBillladingWaybillEntity> billladingWaybillEntityQueryWrapper = new QueryWrapper<>();
billladingWaybillEntityQueryWrapper.in("waybill_no",waybillNoSet)
.eq("billlading_id",billladingId)
.eq("is_deleted",0);
Map<String, TrunklineBillladingWaybillEntity> billladingWaybillEntityMap = new HashMap<>();
if(!waybillNoSet.isEmpty()){
QueryWrapper<TrunklineBillladingWaybillEntity> billladingWaybillEntityQueryWrapper = new QueryWrapper<>();
billladingWaybillEntityQueryWrapper.in("waybill_no",waybillNoSet)
.eq("billlading_id",billladingId)
.eq("is_deleted",0);
List<TrunklineBillladingWaybillEntity> billladingWaybillEntityList = trunklineBillladingWaybillService.list(billladingWaybillEntityQueryWrapper);
List<TrunklineBillladingWaybillEntity> billladingWaybillEntityList = trunklineBillladingWaybillService.list(billladingWaybillEntityQueryWrapper);
//把billladingWaybillEntityList转化成waybillNo为key的Map
billladingWaybillEntityMap = billladingWaybillEntityList.stream().collect(Collectors.toMap(TrunklineBillladingWaybillEntity::getWaybillNo, Function.identity()));
}
//把billladingWaybillEntityList转化成waybillNo为key的Map
Map<String, TrunklineBillladingWaybillEntity> billladingWaybillEntityMap = billladingWaybillEntityList.stream().collect(Collectors.toMap(TrunklineBillladingWaybillEntity::getWaybillNo, Function.identity()));
List<TrunklineBillladingWaybillEntity> addList = new ArrayList<>();
List<TrunklineBillladingWaybillEntity> updateList = new ArrayList<>();
@ -348,14 +363,17 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl<Trunk
TrunklineBillladingEntity billladingEntity = trunklineBillladingService.getById(billladingId);
if(!Objects.isNull(billladingEntity)){
int realNum = billladingEntity.getRealNum();
Integer all = waybillNoMNumMap.values().stream().reduce(Integer::sum).get();
Integer all = 0;
if(CollUtil.isNotEmpty(waybillNoMNumMap)){
all = waybillNoMNumMap.values().stream().reduce(Integer::sum).get();
}
billladingEntity.setRealNum(realNum+all);
trunklineBillladingService.updateById(billladingEntity);
}
List<WarehouseWaybillEntity> warehouseWaybillEntities = new ArrayList<>();
waybillEntityMap.keySet().forEach(waybillNo -> {
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
finalWaybillEntityMap.keySet().forEach(waybillNo -> {
WarehouseWaybillEntity waybillEntity = finalWaybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
Integer totalCount = waybillEntity.getTotalCount();
Integer stockCount = waybillEntity.getStockCount();

86
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -106,7 +107,7 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
updateById(trunklineBillladingEntity);
List<TrunklineBillladingWaybillEntity> saveBillladingWaybillList = new ArrayList<>();
Map<Long, Integer> waybillBillladingNumMap = new HashMap<>();
// Map<Long, Integer> waybillBillladingNumMap = new HashMap<>();
//保存提货运单
List<TrunklineBillladingWaybillVO> billladingWaybillList = billladingDTO.getBillladingWaybillList();
for (TrunklineBillladingWaybillVO billladingWaybillVO:billladingWaybillList){
@ -118,29 +119,29 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
billladingWaybillEntity.setRealWeight(BigDecimal.ZERO);
billladingWaybillEntity.setRealVolume(BigDecimal.ZERO);
billladingWaybillEntity.setBillladingFee(BigDecimal.ZERO);
billladingWaybillEntity.setPlanNum(billladingWaybillVO.getPlanNum());
// billladingWaybillEntity.setPlanNum(billladingWaybillVO.getPlanNum());
saveBillladingWaybillList.add(billladingWaybillEntity);
waybillBillladingNumMap.put(billladingWaybillVO.getWaybillId(),billladingWaybillVO.getPlanNum());
// waybillBillladingNumMap.put(billladingWaybillVO.getWaybillId(),billladingWaybillVO.getPlanNum());
}
billladingWaybillService.saveBatch(saveBillladingWaybillList);
Set<Long> waybillIds = waybillBillladingNumMap.keySet();
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIds));
waybillEntityList.forEach(waybillEntity -> {
Long waybillEntityId = waybillEntity.getId();
Integer planNum = waybillBillladingNumMap.get(waybillEntityId);
if(Objects.isNull(planNum)){
planNum = 0;
}
Integer billladingNum = waybillEntity.getBillladingNum();
if(Objects.isNull(billladingNum)){
billladingNum = 0;
}
waybillEntity.setBillladingNum(billladingNum+planNum);
});
warehouseWaybillClient.updateList(waybillEntityList);
// Set<Long> waybillIds = waybillBillladingNumMap.keySet();
//
// List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIds));
// waybillEntityList.forEach(waybillEntity -> {
// Long waybillEntityId = waybillEntity.getId();
// Integer planNum = waybillBillladingNumMap.get(waybillEntityId);
// if(Objects.isNull(planNum)){
// planNum = 0;
// }
// Integer billladingNum = waybillEntity.getBillladingNum();
// if(Objects.isNull(billladingNum)){
// billladingNum = 0;
// }
// waybillEntity.setBillladingNum(billladingNum+planNum);
// });
//
// warehouseWaybillClient.updateList(waybillEntityList);
TrunklineBillladingLogEntity logEntity = new TrunklineBillladingLogEntity();
@ -536,6 +537,10 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
Integer stockNum = 0;
BigDecimal stockWeight = BigDecimal.ZERO;
BigDecimal stockVolume = BigDecimal.ZERO;
List<TrunklineBillladingWaybillEntity> updateBillladingWaybillList = new ArrayList<>();
List<WarehouseWaybillEntity> updateWaybillList = new ArrayList<>();
for (BillladingWaybillDTO billladingWaybillDTO:billladingWaybillEnterList){
Long billladingWaybillId = billladingWaybillDTO.getBillladingWaybillId();
@ -551,19 +556,39 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
BigDecimal enterWeight = billladingWaybillDTO.getEnterWeight();
BigDecimal enterVolume = billladingWaybillDTO.getEnterVolume();
//查询运单信息
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
if(Objects.isNull(waybillEntity)){
log.warn("#############updateBillladingWaybillNum: 运单信息不存在 waybillId={}",waybillId);
throw new CustomerException(405,"运单"+waybillNo+"信息不存在");
}
Integer billladingNum = waybillEntity.getBillladingNum();
int totalCount = waybillEntity.getTotalCount();
int tNum =billladingNum+(enterNum-realNum);//最终的提货件数
if(tNum > totalCount){
log.warn("#############updateBillladingWaybillNum: 运单{}提货件数已超过总件数 waybillId={}",waybillNo,waybillId);
throw new CustomerException(405,"运单"+waybillNo+"提货件数已超过总件数");
}
TrunklineBillladingWaybillEntity updateBillladingWaybillEntity = new TrunklineBillladingWaybillEntity();
updateBillladingWaybillEntity.setId(billladingWaybillId);
updateBillladingWaybillEntity.setRealNum(enterNum);
updateBillladingWaybillEntity.setRealWeight(enterWeight);
updateBillladingWaybillEntity.setRealVolume(enterVolume);
updateBillladingWaybillList.add(updateBillladingWaybillEntity);
WarehouseWaybillEntity updateWaybillEntity = new WarehouseWaybillEntity();
updateWaybillEntity.setId(waybillId);
updateWaybillEntity.setBillladingNum(tNum);
updateWaybillList.add(updateWaybillEntity);
// Integer tNum = billladingWaybillService.getFinishNumByWaybillIdNotBillladingWaybillId(waybillId,billladingWaybillId);
//这个运单总件数不应该查询运单上的总件数,应该取统计运单下暂存单的包件数量,因为运单可能会涉及到改单 总数会变
// Integer totalCount = trunklineWaybillOrderService.getOrderPackageNumByWaybillId(waybillId);
if(enterNum > planNum){
log.warn("###############updateBillladingWaybillNum: 运单提货数量已经大于计划数 waybillId={} planNum={}",waybillId,planNum);
throw new CustomerException(405,"【"+waybillNo+"】运单提货数量已经大于计划数");
}
billladingWaybillService.updateDataByBillladingWaybillId(billladingWaybillId,enterNum,enterWeight,enterVolume);
// Integer diffNum = enterNum-realNum;
// BigDecimal diffWeight = realWeight.subtract(enterWeight);
// BigDecimal diffVolume = realVolume.subtract(enterVolume);
@ -595,6 +620,13 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
// warehouseWaybillClient.updateEntity(waybillEntity);
}
if(CollUtil.isNotEmpty(updateBillladingWaybillList)){
billladingWaybillService.updateBatchById(updateBillladingWaybillList);
}
if(CollUtil.isNotEmpty(updateWaybillList)){
warehouseWaybillClient.updateList(updateWaybillList);
}
TrunklineBillladingNumVO numVO = billladingWaybillService.getNumVOByBillladingId(billladingId);
billladingEntity.setRealNum(numVO.getNum());

37
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadLogServiceImpl.java

@ -134,7 +134,7 @@ public class TrunklineCarsLoadLogServiceImpl extends BaseServiceImpl<TrunklineCa
if(!list.isEmpty()){
signNum = list.size();
}
content = "【"+nodeName+"】三方中转签收,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
content = "【"+nodeName+"】三方中转【整车】签收,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
",司机手机号:"+driverMobile+",签收件数:"+ signNum + "/" + realLoadingNumber + "件";
break;
case 17:
@ -145,6 +145,14 @@ public class TrunklineCarsLoadLogServiceImpl extends BaseServiceImpl<TrunklineCa
content = "【"+nodeName+"】直发商家签收,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
",司机手机号:"+driverMobile+",签收时间:"+ now;
break;
case 19:
content = "【"+nodeName+"】直发商家签收图片上传,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
",司机手机号:"+driverMobile+",上传时间:"+ now;
break;
case 20:
content = "【"+nodeName+"】三方中转签收图片上传,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
",司机手机号:"+driverMobile+",上传时间:"+ now;
break;
default:
content = "【"+nodeName+"】其他日志,车次号:"+carsNo+",车牌号:"+carNumber+",司机姓名:"+driverName+
",司机手机号:"+driverMobile;
@ -153,7 +161,8 @@ public class TrunklineCarsLoadLogServiceImpl extends BaseServiceImpl<TrunklineCa
carsLoadLogEntity.setType(cardLoadType);
carsLoadLogEntity.setCreateUserName(AuthUtil.getNickName());
if(CarsLoadLogTypeConstant.TRIPARTITE_TRANSFER_SIGN.getValue().equals(cardLoadType)){
if(CarsLoadLogTypeConstant.TRIPARTITE_TRANSFER_SIGN.getValue().equals(cardLoadType)
|| CarsLoadLogTypeConstant.SEND_DIRECTLY_SIGN.getValue().equals(cardLoadType)){
QueryWrapper<TrunklineCarsLoadLogEntity> qw = new QueryWrapper<>();
qw.eq("node_id",nodeId)
.eq("load_id",loadId)
@ -161,12 +170,32 @@ public class TrunklineCarsLoadLogServiceImpl extends BaseServiceImpl<TrunklineCa
TrunklineCarsLoadLogEntity carsLoadLogEntity1 = baseMapper.selectOne(qw);
if(Objects.isNull(carsLoadLogEntity1)){
save(carsLoadLogEntity);
return;
}else{
carsLoadLogEntity1.setContent(content);
updateById(carsLoadLogEntity1);
return;
}
}else{
save(carsLoadLogEntity);
}
if(CarsLoadLogTypeConstant.SEND_DIRECTLY_SIGNPHOTO.getValue().equals(cardLoadType)
|| CarsLoadLogTypeConstant.TRIPARTITE_TRANSFER_SIGNPHOTO.getValue().equals(cardLoadType)){
QueryWrapper<TrunklineCarsLoadLogEntity> qw = new QueryWrapper<>();
qw.eq("node_id",nodeId)
.eq("load_id",loadId)
.eq("type",cardLoadType);
TrunklineCarsLoadLogEntity carsLoadLogEntity1 = baseMapper.selectOne(qw);
if(Objects.isNull(carsLoadLogEntity1)){
save(carsLoadLogEntity);
return;
}else{
carsLoadLogEntity1.setContent(content);
updateById(carsLoadLogEntity1);
return;
}
}
save(carsLoadLogEntity);
}
}

20
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
@ -203,8 +204,8 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl<TrunklineC
}
@Override
public void updateScanStatusAndTime(List<Long> loadScanIds, String scanStatus,Date unloadTime,String signUserName) {
baseMapper.updateScanStatusAndTime(loadScanIds,scanStatus,unloadTime,signUserName);
public void updateScanStatusAndTime(List<Long> loadScanIds, String scanStatus,Date unloadTime,String signUserName,Long warehouseId,String warehouseName) {
baseMapper.updateScanStatusAndTime(loadScanIds,scanStatus,unloadTime,signUserName,warehouseId,warehouseName);
}
@Override
@ -357,4 +358,19 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl<TrunklineC
return baseMapper.findAbnormalData(loadId);
}
@Override
public List<UnloadZeroVO> findUnloadZeroList(Long loadId, Long warehouseId) {
return baseMapper.findUnloadZeroList(loadId,warehouseId);
}
@Override
public JSONObject findUnloadNumAudio(Long loadId, Long warehouseId) {
return baseMapper.findUnloadNumAudio(loadId,warehouseId);
}
@Override
public void updateFinalNodeIdAndFinalNodeNameByLoadIdNoData(Long loadId, Long warehouseId, String warehouseName) {
baseMapper.updateFinalNodeIdAndFinalNodeNameByLoadIdNoData(loadId,warehouseId,warehouseName);
}
}

724
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java

File diff suppressed because it is too large Load Diff

22
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java

@ -173,21 +173,19 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
queryWrapper.in("order_package_code",orderPackageCodes)
.eq("is_deleted",0);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = baseMapper.selectList(queryWrapper);
if(trunklineWaybillPackageEntities.isEmpty()){
return;
}
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : trunklineWaybillPackageEntities) {
trunklineWaybillPackageEntity.setPackageStatus(packageStatus);
waybillIds.add(trunklineWaybillPackageEntity.getWaybillId());
}
if(!trunklineWaybillPackageEntities.isEmpty()){
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : trunklineWaybillPackageEntities) {
trunklineWaybillPackageEntity.setPackageStatus(packageStatus);
waybillIds.add(trunklineWaybillPackageEntity.getWaybillId());
}
updateBatchById(trunklineWaybillPackageEntities);
updateBatchById(trunklineWaybillPackageEntities);
for (Long waybillId : waybillIds) {
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
updateWaybillStatus(waybillEntity);
for (Long waybillId : waybillIds) {
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
updateWaybillStatus(waybillEntity);
}
}
}
packageTrackLogAsyncService.sendPackageWorkNodeFanout(orderPackageCodes,workNode,warehouseId, map);

69
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseTrayTypeApiController.java

@ -1,5 +1,6 @@
package com.logpm.warehouse.api;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -8,6 +9,7 @@ import com.logpm.basicdata.entity.BasicdataTrayEntity;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataTrayClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.warehouse.dto.DownPackageCodeDTO;
import com.logpm.warehouse.dto.TrayTypeDTO;
import com.logpm.warehouse.dto.ZeroOrderVO;
import com.logpm.warehouse.service.IWarehouseTaryAllocationService;
@ -1438,4 +1440,71 @@ public class WarehouseTrayTypeApiController {
}
}
@ResponseBody
@PostMapping("/findPackageTrayInfo")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "查询包件所在托盘", notes = "传入trayTypeDTO")
public R findPackageTrayInfo(@RequestBody TrayTypeDTO trayTypeDTO) {
String method = "###########findPackageTrayInfo: ";
log.info(method + "查询包件所在托盘 trayTypeDTO={}", trayTypeDTO);
String orderPackageCode = trayTypeDTO.getOrderPackageCode();
try{
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn(method+"仓库信息不能为空");
return R.fail(403,"仓库信息不能为空");
}
if(StringUtil.isBlank(orderPackageCode)){
log.warn(method+"包件码不能为空 orderPackageCode={}",orderPackageCode);
return R.fail(403,"包件码不能为空");
}
return warehouseTrayTypeService.findPackageTrayInfo(orderPackageCode,myCurrentWarehouse.getId());
}catch (CustomerException e){
log.warn(e.message);
return R.fail(e.code,e.message);
}catch (Exception e){
log.error(method+"系统异常,联系管理员",e);
return R.fail(500,"系统异常,联系管理员");
}
}
@ResponseBody
@PostMapping("/downPackageCodes")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "解托包件", notes = "传入trayTypeDTO")
public R downPackageCodes(@RequestBody TrayTypeDTO trayTypeDTO) {
String method = "###########downPackageCodes: ";
log.info(method + "查询包件所在托盘 trayTypeDTO={}", trayTypeDTO);
List<DownPackageCodeDTO> downPackageCodeDTOS = trayTypeDTO.getDownPackageCodeDTOS();
try{
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn(method+"仓库信息不能为空");
return R.fail(403,"仓库信息不能为空");
}
if(CollUtil.isEmpty(downPackageCodeDTOS)){
log.warn(method+"解托数据不能为空");
return R.fail(403,"解托数据不能为空");
}
return warehouseTrayTypeService.downPackageCodes(downPackageCodeDTOS,myCurrentWarehouse.getId());
}catch (CustomerException e){
log.warn(e.message);
return R.fail(e.code,e.message);
}catch (Exception e){
log.error(method+"系统异常,联系管理员",e);
return R.fail(500,"系统异常,联系管理员");
}
}
}

13
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/DownPackageCodeDTO.java

@ -0,0 +1,13 @@
package com.logpm.warehouse.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class DownPackageCodeDTO implements Serializable {
private String orderPackageCode;
private Long warehouseId;
}

2
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/TrayTypeDTO.java

@ -57,4 +57,6 @@ public class TrayTypeDTO implements Serializable {
private List<Long> trayGoodsIds = new ArrayList<>();
private List<DownPackageCodeDTO> downPackageCodeDTOS = new ArrayList<>();
}

5
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseTrayTypeService.java

@ -3,6 +3,7 @@ package com.logpm.warehouse.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.warehouse.dto.DownPackageCodeDTO;
import com.logpm.warehouse.dto.TrayTypeDTO;
import com.logpm.warehouse.dto.ZeroOrderVO;
import com.logpm.warehouse.entity.WarehouseTrayTypeEntity;
@ -118,4 +119,8 @@ public interface IWarehouseTrayTypeService extends BaseService<WarehouseTrayType
void orderScanOrderPackageCodeList(WarehouseTrayTypeEntity trayTypeEntity, List<DistributionParcelListEntity> parcelListEntityList, Long warehouseId, String remark);
R findPackageTrayInfo(String orderPackageCode, Long warehouseId);
R downPackageCodes(List<DownPackageCodeDTO> downPackageCodeDTOS, Long warehouseId);
}

68
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java

@ -1,5 +1,6 @@
package com.logpm.warehouse.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;
@ -28,6 +29,7 @@ import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient;
import com.logpm.trunkline.feign.ITrunklineDetailProductClient;
import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient;
import com.logpm.warehouse.bean.Resp;
import com.logpm.warehouse.dto.DownPackageCodeDTO;
import com.logpm.warehouse.dto.TrayTypeDTO;
import com.logpm.warehouse.dto.ZeroOrderVO;
import com.logpm.warehouse.entity.*;
@ -937,6 +939,72 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
}
@Override
public R findPackageTrayInfo(String orderPackageCode, Long warehouseId) {
QueryWrapper<WarehouseTrayGoodsEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("association_value",orderPackageCode)
.eq("association_type","3");
WarehouseTrayGoodsEntity trayGoodsEntity = warehouseTrayGoodsService.getOne(queryWrapper);
if(Objects.isNull(trayGoodsEntity)){
log.warn("##########findPackageTrayInfo: 包件暂未打托 orderPackageCode={}",orderPackageCode);
return R.fail(405,"包件暂未打托");
}
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCodeAndWarehouseId(orderPackageCode, warehouseId);
if(Objects.isNull(parcelListEntity)){
log.warn("##########findPackageTrayInfo: 包件暂未入库 orderPackageCode={}",orderPackageCode);
return R.fail(405,"包件暂未入库");
}
Long trayWarehouseId = trayGoodsEntity.getWarehouseId();//打托仓库
BasicdataWarehouseEntity trayWarehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(trayWarehouseId);
if(Objects.isNull(trayWarehouseEntity)){
log.warn("##########findPackageTrayInfo: 仓库信息为空 trayWarehouseId={}",trayWarehouseId);
return R.fail(405,"仓库信息为空");
}
String trayWarehouseName = trayWarehouseEntity.getName();
String trayCode = trayGoodsEntity.getTrayCode();
Long trayId = trayGoodsEntity.getTrayId();
BasicdataTrayEntity trayEntity = basicdataTrayClient.getTrayByTrayCode(trayCode);
if(Objects.isNull(trayEntity)){
log.warn("##########findPackageTrayInfo: 托盘信息不存在 trayCode={}",trayCode);
return R.fail(405,"托盘信息不存在");
}
String trayName = trayEntity.getPalletName();
Long trayAllocationId = warehouseTaryAllocationService.getAllocationIdByTrayId(trayId);
if(!Objects.isNull(trayAllocationId)){
log.warn("##########findPackageTrayInfo: 包件已在 {} 上架",trayWarehouseName);
return R.fail(405,"包件已在"+trayWarehouseName+"上架");
}
Map<String,Object> map = new HashMap<>();
map.put("waybillNo",parcelListEntity.getWaybillNumber());
map.put("orderCode",parcelListEntity.getOrderCode());
map.put("orderPackageCode",orderPackageCode);
map.put("trayName",trayName);
map.put("trayWarehouseId",trayWarehouseId);
map.put("trayWarehouseName",trayWarehouseName);
return R.data(map);
}
@Override
public R downPackageCodes(List<DownPackageCodeDTO> downPackageCodeDTOS, Long warehouseId) {
//把downPackageCodeDTOS中元素通过warehouseId进行分组
Map<Long,List<DownPackageCodeDTO>> downPackageCodeDTOSMap = downPackageCodeDTOS.stream().collect(Collectors.groupingBy(DownPackageCodeDTO::getWarehouseId));
downPackageCodeDTOSMap.keySet().forEach(trayWarehouseId -> {
List<DownPackageCodeDTO> downPackageCodeDTOSList = downPackageCodeDTOSMap.get(trayWarehouseId);
if(CollUtil.isNotEmpty(downPackageCodeDTOSList)){
//把downPackageCodeDTOSList中所有元素的orderPackageCode放入一个List
List<String> orderPackageCodeList = downPackageCodeDTOSList.stream().map(DownPackageCodeDTO::getOrderPackageCode).collect(Collectors.toList());
downPackageByOrderPackageCodeList(orderPackageCodeList,"手动远程批量解托",trayWarehouseId);
}
});
return R.success("解绑成功");
}
@Override

Loading…
Cancel
Save