Browse Source

Merge branch 'pre-production'

master
pref_mail@163.com 11 months ago
parent
commit
dc5d5479ee
  1. 12
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 24
      blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java
  3. 2
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalPackageEntity.java
  4. 4
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalRecordEntity.java
  5. 5
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesWorkOrderEntity.java
  6. 10
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java
  7. 10
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesWorkOrderClient.java
  8. 3
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionDeliveryListClient.java
  9. 6
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderVO.java
  10. 5
      blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/dto/SignPushDataDTO.java
  11. 13
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java
  12. 19
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineCarsLoadClient.java
  13. 1
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadAllOrderVO.java
  14. 14
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java
  15. 7
      blade-service/logpm-aftersales/pom.xml
  16. 19
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java
  17. 15
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesWorkOrderClient.java
  18. 241
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/jobhandler/AftersalesXxlJob.java
  19. 2
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalPackageMapper.java
  20. 3
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalPackageMapper.xml
  21. 5
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordMapper.java
  22. 6
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalRecordMapper.xml
  23. 3
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.java
  24. 14
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.xml
  25. 5
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java
  26. 11
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesWorkOrderService.java
  27. 4
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesAbnormalRecordServiceImpl.java
  28. 42
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java
  29. 3
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataBrandMapper.xml
  30. 1
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataBrandServiceImpl.java
  31. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistrilbutionBillLadingDTO.java
  32. 41
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/PushNotificationDTO.java
  33. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionStockArticleExcel.java
  34. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionDeliveryListClient.java
  35. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
  36. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  37. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.java
  38. 24
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.xml
  39. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml
  40. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml
  41. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml
  42. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java
  43. 57
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  44. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java
  45. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  46. 13
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  47. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillStockServiceImpl.java
  48. 14
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/Dockerfile
  49. 97
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/pom.xml
  50. 20
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/FactoryDataJinPaiApplication.java
  51. 40
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/config/FactoryDataSuoFeiYaConfiguration.java
  52. 89
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/controller/OrderController.java
  53. 126
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/DeliveryNoteEntity.java
  54. 63
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/FactoryOrderLogEntity.java
  55. 94
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/OrderInfoEntity.java
  56. 62
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/PackageInfoEntity.java
  57. 60
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/launcher/FactoryDataBaseLauncherServiceImpl.java
  58. 16
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/DeliveryNoteMapper.java
  59. 5
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryNodeOrderMapper.xml
  60. 16
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryOrderLogMapper.java
  61. 5
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryOrderLogMapper.xml
  62. 16
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/OrderInfoMapper.java
  63. 5
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/OrderInfoMapper.xml
  64. 16
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/PackageInfoMapper.java
  65. 5
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/PackageInfoMapper.xml
  66. 334
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/FactoryOrderListener.java
  67. 20
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/pros/FactoryDataJinPaiProperties.java
  68. 22
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/DeliveryNoteService.java
  69. 14
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/FactoryOrderLogService.java
  70. 14
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/OrderInfoService.java
  71. 14
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/PackageInfoService.java
  72. 146
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/DeliveryNoteServiceImpl.java
  73. 22
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/FactoryOrderLogServiceImpl.java
  74. 22
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/OrderInfoServiceImpl.java
  75. 22
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/PackageInfoServiceImpl.java
  76. 43
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/util/ThreadPoolUtil.java
  77. 24
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/DeliveryNoteVO.java
  78. 21
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/OrderInfoVO.java
  79. 18
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/PackageInfoVO.java
  80. 71
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-dev.yml
  81. 45
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-prod.yml
  82. 71
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-test.yml
  83. 31
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application.yml
  84. 40
      blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/logback.xml
  85. 14
      blade-service/logpm-factory-data/logpm-factory-data-olo/Dockerfile
  86. 97
      blade-service/logpm-factory-data/logpm-factory-data-olo/pom.xml
  87. 20
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/FactoryDataOloApplication.java
  88. 40
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/config/FactoryDataOloConfiguration.java
  89. 54
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/controller/OrderController.java
  90. 92
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/DeliveryNoteEntity.java
  91. 58
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryOrderLogEntity.java
  92. 60
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/launcher/FactoryDataBaseLauncherServiceImpl.java
  93. 16
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/DeliveryNoteMapper.java
  94. 5
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodeOrderMapper.xml
  95. 16
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryOrderLogMapper.java
  96. 5
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryOrderLogMapper.xml
  97. 337
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java
  98. 20
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/pros/FactoryDataOloProperties.java
  99. 17
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/DeliveryNoteService.java
  100. 14
      blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryOrderLogService.java
  101. Some files were not shown because too many files have changed in this diff Show More

12
blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java

@ -97,6 +97,18 @@ public interface ModuleNameConstant {
* 志邦工厂数据模块
*/
String LOGPM_FACTORY_DATA_ZBOM_NAME = "logpm-factory-data-zbom" + DEVAUTH;
/**
* 索菲亚工厂数据模块
*/
String LOGPM_FACTORY_DATA_SUOFEIYA_NAME = "logpm-factory-data-suofeiya" + DEVAUTH;
/**
* 我乐工厂数据模块
*/
String LOGPM_FACTORY_DATA_OLO_NAME = "logpm-factory-data-olo" + DEVAUTH;
/**
* 金牌工厂数据模块
*/
String LOGPM_FACTORY_DATA_JINPAI_NAME = "logpm-factory-data-jinpai" + DEVAUTH;
/**
* 诗尼曼工厂数据模块
*/

24
blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java

@ -49,6 +49,18 @@ public abstract class FactoryDataConstants {
*/
String ZBOM_NODE_DATA_PUSH = "factory.data.queue.zbom.nodeDataPush";
String ZBOM_FACTORY_ORDER = "factory.data.queue.zbom.factoryOrder";
/**
* 索菲亚工厂订单
*/
String SFY_FACTORY_ORDER = "factory.data.queue.sfy.factoryOrder";
/**
* 我乐工厂订单
*/
String OLO_FACTORY_ORDER = "factory.data.queue.olo.factoryOrder";
/**
* 金牌工厂订单
*/
String JP_FACTORY_ORDER = "factory.data.queue.jp.factoryOrder";
/**
* 皮阿诺作业节点数据推送
*/
@ -76,6 +88,18 @@ public abstract class FactoryDataConstants {
*/
String ZBOM_NODE_DATA_PUSH = "zbom.nodeDataPush";
String ZBOM_FACTORY_ORDER = "zbom.factoryOrder";
/**
* 索菲亚工厂订单
*/
String SFY_FACTORY_ORDER = "sfy.factoryOrder";
/**
* 我乐工厂订单
*/
String OLO_FACTORY_ORDER = "olo.factoryOrder";
/**
* 金牌工厂订单
*/
String JP_FACTORY_ORDER = "jp.factoryOrder";
/**
* 皮阿诺作业节点数据推送
*/

2
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalPackageEntity.java

@ -143,4 +143,6 @@ public class AftersalesAbnormalPackageEntity extends TenantEntity {
@ApiModelProperty(value = "关联工单ID")
private Long relatedWorkOrdersId;
private Integer packageFinish;
}

4
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesAbnormalRecordEntity.java

@ -70,6 +70,9 @@ public class AftersalesAbnormalRecordEntity extends TenantEntity {
@ApiModelProperty(name = "异常状态 0待处理 1完结",notes = "")
private Integer abnormalStatus;
@ApiModelProperty(name = "发起工单状态 0未发起 1已发起",notes = "")
private Integer sendOrderStatus;
@ApiModelProperty(name = "上报时间",notes = "")
private Date upTime;
@ -94,4 +97,5 @@ public class AftersalesAbnormalRecordEntity extends TenantEntity {
private Integer associationType;
}

5
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesWorkOrderEntity.java

@ -293,6 +293,11 @@ public class AftersalesWorkOrderEntity extends TenantEntity {
* 离职状态
*/
private boolean departStatus;
private Integer packageFinish;
/**
* 金额总和
*/

10
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesAbnormalRecordClient.java

@ -16,6 +16,7 @@
*/
package com.logpm.aftersales.feign;
import com.alibaba.fastjson.JSONObject;
import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import org.springblade.common.constant.ModuleNameConstant;
import org.springframework.cloud.openfeign.FeignClient;
@ -48,5 +49,12 @@ public interface IAftersalesAbnormalRecordClient {
List<AftersalesAbnormalRecordEntity> findAbnormalList(@RequestParam("carsNo") String carsNo);
@GetMapping(API_PREFIX+"/findListByCarsNoAndUpWarehouseId")
Map<String, Integer> findListByCarsNoAndUpWarehouseId(@RequestParam("carsNo") String carsNo, @RequestParam("warehouseId") Long warehouseId);
JSONObject findListByCarsNoAndUpWarehouseId(@RequestParam("carsNo") String carsNo, @RequestParam("warehouseId") Long warehouseId);
@GetMapping(API_PREFIX+"/findOrderPackageAndAbnormalStatus")
List<AftersalesAbnormalRecordEntity> findOrderPackageAndAbnormalStatus(@RequestParam("orderPackageCode") String orderPackageCode, @RequestParam("abnormalStatus") String abnormalStatus);
@PostMapping(API_PREFIX+"/updateList")
void updateList(@RequestBody List<AftersalesAbnormalRecordEntity> abnormalRecordEntities);
}

10
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/feign/IAftersalesWorkOrderClient.java

@ -36,6 +36,7 @@ public interface IAftersalesWorkOrderClient {
String API_PREFIX = "/work/client";
String TOP = API_PREFIX + "/top";
String UPDATEWORKORDERSTATUS = API_PREFIX + "/updateWorkOrderStatus";
/**
* 获取客服异常工单列表
@ -47,4 +48,13 @@ public interface IAftersalesWorkOrderClient {
@GetMapping(TOP)
BladePage<AftersalesWorkOrderEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
/**
* 修改异常工单上的数据
* @param orderPackageCode 包件码
* @param packageFinish 目前默认传 1
* @return
*/
@GetMapping(UPDATEWORKORDERSTATUS)
Boolean updateWorkOrderStatus(@RequestParam("warehouseId") Long warehouseId,@RequestParam("orderPackageCode") String orderPackageCode, @RequestParam("packageFinish") Integer packageFinish);
}

3
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionDeliveryListClient.java

@ -128,6 +128,9 @@ public interface IDistributionDeliveryListClient {
@GetMapping(TOP+"/maintenanceDeliveryInfoByWarehouseId")
void maintenanceDeliveryInfoByWarehouseId(@RequestParam("warehouseId")String params);
@GetMapping(TOP+"/pushNotification")
void pushNotification(String params);
// /**
// * 根据配送任务ID查询配送司机信息

6
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderVO.java

@ -2,6 +2,8 @@ package com.logpm.distribution.vo;
import lombok.Data;
import java.util.Date;
/**
* 提货的订单列表
* @program: LogisticsPlatform-Service
@ -48,7 +50,7 @@ public class DistributionBillOrderVO {
*/
private String conditions;
/**
* 提货状态名稱
* 签收时间
*/
private String conditionsName;
private Date signingTime;
}

5
blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/dto/SignPushDataDTO.java

@ -125,6 +125,11 @@ public class SignPushDataDTO {
*/
private String kind;
/**
* 复核时间
*/
private Date reviewTime;
/**
* 签收客户集合
*/

13
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java

@ -1,5 +1,6 @@
package com.logpm.trunkline.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ -28,8 +29,8 @@ public class OpenOrderDTO implements Serializable {
private List<Long> advanceIds;//暂存单ids
private String orderCode;//订单号
private String openOrderDate;//开单时间
private String dearCode;//商场编码
private String dearName;//商场名称
private String dealerCode;//商场编码
private String dealerName;//商场名称
private Long shipperId;//发货单位id
private String shipper;//发货单位
@ -106,4 +107,12 @@ public class OpenOrderDTO implements Serializable {
private String editResonCode;//改单原因编码
private String editReson;//改单原因
private Integer pickupCompleteOrNot;//提货是否整车 0否 1是
private Integer trunklineCompleteOrNot;//干线是否整车 0否 1是
private String trunklineVehicleType;//提货车型
private String pickupVehicleType;//提货车型
}

19
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklineCarsLoadClient.java

@ -0,0 +1,19 @@
package com.logpm.trunkline.feign;
import com.logpm.trunkline.entity.TrunklineCarsLoadEntity;
import org.springblade.common.constant.ModuleNameConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(
value = ModuleNameConstant.APPLICATION_TRUNKLINE_NAME
)
public interface ITrunklineCarsLoadClient {
String API_PREFIX = "trunklineCarsLoad/client";
@GetMapping(API_PREFIX+"/findEntityByCarsNo")
TrunklineCarsLoadEntity findEntityByCarsNo(@RequestParam String carsNo);
}

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

@ -11,6 +11,7 @@ public class CarsLoadAllOrderVO implements Serializable {
private Long carsOrderId;//id
private String orderCode;//订单号
private Long waybillId;//运单id
private String waybillNo;//运单号
private Date createTime;//创建时间
private String destination;//到站

14
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWaybillEntity.java

@ -452,11 +452,21 @@ public class WarehouseWaybillEntity extends TenantEntity {
private String departureCode;
@ApiModelProperty(value = "商场编码")
private String dearCode;
private String dealerCode;
@ApiModelProperty(value = "商场名称")
private String dearName;
private String dealerName;
@ApiModelProperty(value = "提货是否整车 0否 1是")
private Integer pickupCompleteOrNot;
@ApiModelProperty(value = "干线是否整车 0否 1是")
private Integer trunklineCompleteOrNot;
@ApiModelProperty(value = "干线车型 ")
private String trunklineVehicleType;
@ApiModelProperty(value = "提货车型 ")
private String pickupVehicleType;
}

7
blade-service/logpm-aftersales/pom.xml

@ -83,6 +83,13 @@
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-warehouse-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>

19
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesAbnormalRecordClient.java

@ -1,5 +1,6 @@
package com.logpm.aftersales.feign;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import com.logpm.aftersales.service.IAftersalesAbnormalRecordService;
@ -8,7 +9,6 @@ import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
@ApiIgnore()
@RestController
@ -31,7 +31,22 @@ public class AftersalesAbnormalRecordClient implements IAftersalesAbnormalRecord
}
@Override
public Map<String, Integer> findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId) {
public JSONObject findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId) {
return aftersalesAbnormalRecordService.findListByCarsNoAndUpWarehouseId(carsNo,warehouseId);
}
@Override
public List<AftersalesAbnormalRecordEntity> findOrderPackageAndAbnormalStatus(String orderPackageCode, String abnormalStatus) {
//查询AftersalesAbnormalRecordEntity的list通过aftersalesAbnormalRecordService使用orderPackageCode和abnormalStatus
//返回list
QueryWrapper<AftersalesAbnormalRecordEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_package_code",orderPackageCode)
.eq("abnormal_status",abnormalStatus);
return aftersalesAbnormalRecordService.list(queryWrapper);
}
@Override
public void updateList(List<AftersalesAbnormalRecordEntity> abnormalRecordEntities) {
aftersalesAbnormalRecordService.updateBatchById(abnormalRecordEntities);
}
}

15
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/feign/AftersalesWorkOrderClient.java

@ -17,6 +17,7 @@
package com.logpm.aftersales.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.aftersales.service.IAftersalesAbnormalPackageService;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
@ -40,6 +41,8 @@ public class AftersalesWorkOrderClient implements IAftersalesWorkOrderClient {
private final IAftersalesWorkOrderService aftersalesWorkOrderService;
private final IAftersalesAbnormalPackageService aftersalesAbnormalPackageService;
@Override
@GetMapping(TOP)
public BladePage<AftersalesWorkOrderEntity> top(Integer current, Integer size) {
@ -50,4 +53,16 @@ public class AftersalesWorkOrderClient implements IAftersalesWorkOrderClient {
return BladePage.of(page);
}
@Override
@GetMapping(UPDATEWORKORDERSTATUS)
public Boolean updateWorkOrderStatus(Long warehouseId ,String orderPackageCode, Integer packageFinish) {
// 需要根据包件码和卸车作业节点找到异常工单的ID 0-F0BU 0-F0BO
aftersalesWorkOrderService.updateWorkOrderPackagFinish(warehouseId,orderPackageCode,packageFinish);
return null;
}
}

241
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/jobhandler/AftersalesXxlJob.java

@ -1,14 +1,40 @@
package com.logpm.aftersales.jobhandler;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.logpm.aftersales.dto.AftersalesPersonResponsibleDTO;
import com.logpm.aftersales.dto.AftersalesWorkOrderDTO;
import com.logpm.aftersales.entity.AftersalesAbnormalPackageEntity;
import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import com.logpm.aftersales.entity.AftersalesProcessorEntity;
import com.logpm.aftersales.service.IAftersalesAbnormalRecordService;
import com.logpm.aftersales.service.IAftersalesWorkOrderService;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.trunkline.entity.TrunklineCarsLoadEntity;
import com.logpm.trunkline.feign.ITrunklineCarsLoadClient;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.entity.Dept;
import org.springblade.system.entity.User;
import org.springblade.system.feign.IDeptClient;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.feign.IUserClient;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* @author 12702
*/
@ -19,18 +45,227 @@ public class AftersalesXxlJob {
private final IAftersalesWorkOrderService aftersalesWorkOrderService;
private final IAftersalesAbnormalRecordService aftersalesAbnormalRecordService;
private final IUserClient userClient;
private final ISysClient sysClient;
private final IDeptClient deptClient;
private final IBasicdataWarehouseClient basicdataWarehouseClient;
private final IWarehouseWaybillClient wallBillOrderService;
private final ITrunklineCarsLoadClient trunklineCarsLoadClient;
@XxlJob("syncWarehouseToNew")
public ReturnT<String> getIsItTimeout(String param) throws Exception {
logger.info("查询处理超时的数据>>>>>>>>{}",param);
logger.info("查询处理超时的数据>>>>>>>>{}", param);
aftersalesWorkOrderService.getIsItTimeout();
return ReturnT.SUCCESS;
}
@XxlJob("modifyClaimStatus")
public ReturnT<String> updateModifyClaimStatus(String param) throws Exception {
logger.info("修改预账单工单是否可以申述>>>>>>>>{}",param);
public ReturnT<String> updateModifyClaimStatus(String param) throws Exception {
logger.info("修改预账单工单是否可以申述>>>>>>>>{}", param);
aftersalesWorkOrderService.updateModifyClaimStatus();
return ReturnT.SUCCESS;
}
/**
* 根据异常列表创建异常工单
*
* @param param
* @return
* @throws Exception
*/
@XxlJob("autoCreateWorkOrder")
public ReturnT<String> autoCreateWorkOrder(String param) throws Exception {
LambdaQueryWrapper<AftersalesAbnormalRecordEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AftersalesAbnormalRecordEntity::getAbnormalType, 4);
queryWrapper.eq(AftersalesAbnormalRecordEntity::getAbnormalStatus, 0);
queryWrapper.eq(AftersalesAbnormalRecordEntity::getSendOrderStatus, 0);
//当前时间 减少72个小时
queryWrapper.lt(AftersalesAbnormalRecordEntity::getCreateTime, new Date(System.currentTimeMillis() - 72 * 60 * 60 * 1000L));
List<AftersalesAbnormalRecordEntity> list = aftersalesAbnormalRecordService.list(queryWrapper);
for (AftersalesAbnormalRecordEntity aftersalesAbnormalRecordEntity : list) {
// 创建异常工单
logger.info("创建异常工单>>>>>>>>{}", aftersalesAbnormalRecordEntity);
AftersalesWorkOrderDTO aftersalesWorkOrder = BeanUtil.copy(aftersalesAbnormalRecordEntity, AftersalesWorkOrderDTO.class);
aftersalesWorkOrder.setId(null);
// 构建创建异常工单VO
BladeUser bladeUser = new BladeUser();
bladeUser.setUserId(aftersalesAbnormalRecordEntity.getCreateUser());
R<User> userR = userClient.userInfoById(bladeUser.getUserId());
if (userR.isSuccess()) {
if (userR.getData() != null) {
bladeUser.setUserName(userR.getData().getRealName());
}
}
bladeUser.setTenantId(aftersalesAbnormalRecordEntity.getTenantId());
bladeUser.setDeptId(aftersalesAbnormalRecordEntity.getCreateDept() + "");
BasicdataWarehouseEntity basicdataWarehouseEntity = new BasicdataWarehouseEntity();
basicdataWarehouseEntity.setId(aftersalesAbnormalRecordEntity.getUpWarehouseId());
basicdataWarehouseEntity.setName(aftersalesAbnormalRecordEntity.getUpWarehouseName());
BasicdataWarehouseEntity warehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(basicdataWarehouseEntity.getId());
if (ObjectUtil.isNotEmpty(warehouseEntity)) {
basicdataWarehouseEntity.setWarehouseCode(warehouseEntity.getWarehouseCode());
}
// 完善数据
List<AftersalesAbnormalPackageEntity> packageEntityList = new ArrayList<>();
AftersalesAbnormalPackageEntity aftersalesAbnormalPackageEntity = new AftersalesAbnormalPackageEntity();
aftersalesAbnormalPackageEntity.setTenantId(bladeUser.getTenantId());
aftersalesAbnormalPackageEntity.setCreateUser(bladeUser.getUserId());
aftersalesAbnormalPackageEntity.setPackageCode(aftersalesAbnormalRecordEntity.getOrderPackageCode());
aftersalesAbnormalPackageEntity.setWaybillNumber(aftersalesAbnormalRecordEntity.getWaybillNo());
aftersalesAbnormalPackageEntity.setOrderCode(aftersalesAbnormalRecordEntity.getOrderCode());
packageEntityList.add(aftersalesAbnormalPackageEntity);
aftersalesWorkOrder.setPackageEntityList(packageEntityList);
TrunklineCarsLoadEntity entityByCarsNo = trunklineCarsLoadClient.findEntityByCarsNo(aftersalesAbnormalRecordEntity.getCarsNo());
aftersalesWorkOrder.setTrainNumber(aftersalesAbnormalRecordEntity.getCarsNo());
if (ObjectUtil.isNotEmpty(entityByCarsNo)) {
aftersalesWorkOrder.setVehicleRoute(entityByCarsNo.getCarsLineName());
}
aftersalesWorkOrder.setInitiationIdentification("PC");
aftersalesWorkOrder.setWorkOrderType("2");
aftersalesWorkOrder.setDiscoveryNode("3");
aftersalesWorkOrder.setWaybillNumber(aftersalesAbnormalRecordEntity.getWaybillNo());
aftersalesWorkOrder.setOrderCode(aftersalesAbnormalRecordEntity.getOrderCode());
WarehouseWaybillEntity byWaybillNo = wallBillOrderService.findByWaybillNo(aftersalesWorkOrder.getWaybillNumber());
if (byWaybillNo != null) {
aftersalesWorkOrder.setWaybillMall(byWaybillNo.getConsignee());
}
// 添加责任方
// 默认为干线创建运输的始发仓的仓库
List<AftersalesProcessorEntity> processorEntityList = new ArrayList<>();
//责任方
AftersalesProcessorEntity aftersalesProcessorEntity = new AftersalesProcessorEntity();
aftersalesProcessorEntity.setWarehouseId(warehouseEntity.getId());
aftersalesProcessorEntity.setBusinessId(entityByCarsNo.getStartWarehouseId());
BasicdataWarehouseEntity entityWarehouseId = basicdataWarehouseClient.getEntityWarehouseId(entityByCarsNo.getStartWarehouseId());
if(entityWarehouseId!=null){
aftersalesProcessorEntity.setBusinessName(entityWarehouseId.getName());
}
aftersalesProcessorEntity.setTypesOf("1");
aftersalesProcessorEntity.setTenantId(bladeUser.getTenantId());
aftersalesProcessorEntity.setCreateUser(bladeUser.getUserId());
aftersalesProcessorEntity.setConditions("1");
processorEntityList.add(aftersalesProcessorEntity);
// 处理方
AftersalesProcessorEntity aftersalesProcessorEntity1 = new AftersalesProcessorEntity();
aftersalesProcessorEntity1.setWarehouseId(warehouseEntity.getId());
aftersalesProcessorEntity1.setBusinessName(warehouseEntity.getName());
aftersalesProcessorEntity1.setBusinessId(warehouseEntity.getId());
aftersalesProcessorEntity1.setTypesOf("2");
aftersalesProcessorEntity1.setTenantId(bladeUser.getTenantId());
aftersalesProcessorEntity1.setCreateUser(bladeUser.getUserId());
aftersalesProcessorEntity1.setConditions("1");
processorEntityList.add(aftersalesProcessorEntity1);
aftersalesWorkOrder.setProcessorEntityList(processorEntityList);
//责任人
List<AftersalesPersonResponsibleDTO> personResponsibleDTO = new ArrayList<>();
AftersalesPersonResponsibleDTO aftersalesPersonResponsibleDTO = new AftersalesPersonResponsibleDTO();
aftersalesPersonResponsibleDTO.setTenantId(bladeUser.getTenantId());
aftersalesPersonResponsibleDTO.setCreateUser(aftersalesAbnormalRecordEntity.getCreateUser());
aftersalesPersonResponsibleDTO.setTypesOf("1");
// 需要获取到仓库的负责人
Map<String, Object> wareManagerUser = findWareManagerUser(bladeUser.getTenantId(), warehouseEntity.getDepartment());
if (wareManagerUser != null) {
aftersalesPersonResponsibleDTO.setPersonResponsibleId(wareManagerUser.get("userId").toString());
aftersalesPersonResponsibleDTO.setPersonResponsibleName(wareManagerUser.get("userName").toString());
}
// warehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(aftersalesProcessorEntity.getWarehouseId());
aftersalesPersonResponsibleDTO.setResponsibilityRatio("100");
aftersalesPersonResponsibleDTO.setTypesOf("1");
aftersalesPersonResponsibleDTO.setDifference("1");
aftersalesPersonResponsibleDTO.setBusinessId(warehouseEntity.getId());
aftersalesPersonResponsibleDTO.setBusinessName(warehouseEntity.getName());
personResponsibleDTO.add(aftersalesPersonResponsibleDTO);
aftersalesWorkOrder.setPersonResponsibleDTO(personResponsibleDTO);
aftersalesWorkOrderService.extractedSaveAndUpdate(aftersalesWorkOrder, bladeUser, basicdataWarehouseEntity);
// 更新状态
aftersalesAbnormalRecordEntity.setSendOrderStatus(1);
aftersalesAbnormalRecordService.updateById(aftersalesAbnormalRecordEntity);
}
return ReturnT.SUCCESS;
}
private Map<String, Object> findWareManagerUser(String teandId, Long deptId) {
Map<String, Object> map = null;
R<List<User>> listR = userClient.userInfoByDept(teandId, deptId);
Long userId = null;
String userName = null;
if (listR.isSuccess()) {
Dept dept = deptClient.findEntityById(deptId);
List<User> data = listR.getData();
R<String> roleIs;
if (dept.getDeptCategory() == 4) {
// 获取仓库经理ID
roleIs = sysClient.getRoleIds(teandId, "仓库经理");
} else if (dept.getDeptCategory() == 5) {
roleIs = sysClient.getRoleIds(teandId, "总部职能");
} else {
roleIs = new R<>();
roleIs.setSuccess(false);
}
if (roleIs.isSuccess()) {
String roleId = roleIs.getData();
for (User datum : data) {
if (datum.getRoleId().contains(roleId)) {
userId = datum.getId();
userName = datum.getRealName();
map = new HashMap<>();
map.put("userId", userId);
map.put("userName", userName);
}
}
}
}
return map;
}
}

2
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalPackageMapper.java

@ -61,4 +61,6 @@ public interface AftersalesAbnormalPackageMapper extends BaseMapper<AftersalesAb
List<AftersalesAbnormalPackageVO> getAbnormalPackage(@Param("param") AftersalesAbnormalPackageEntity aftersalesAbnormalPackageEntity);
List<AftersalesTrunklineVO> getTrunklines(@Param("orderPackageCode") String orderPackageCode);
List<AftersalesDeliverVO> getDeliver(@Param("orderPackageCode") String orderPackageCode);
void updateAftersalesAbnormalPackageByWorkOrderIdAndPackCodeAndOtherNodex(@Param("workId") Long workId,@Param("orderPackageCode") String orderPackageCode, @Param("packageFinish") Integer packageFinish);
}

3
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAbnormalPackageMapper.xml

@ -25,6 +25,9 @@
<result column="package_image" property="packageImage"/>
<result column="types_of" property="typesOf"/>
</resultMap>
<update id="updateAftersalesAbnormalPackageByWorkOrderIdAndPackCodeAndOtherNodex">
update logpm_aftersales_abnormal_package set package_finish = #{packageFinish} where work_order_id = #{workId} and package_code = #{orderPackageCode}
</update>
<select id="selectAftersalesAbnormalPackagePage" resultMap="aftersalesAbnormalPackageResultMap">

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

@ -1,5 +1,6 @@
package com.logpm.aftersales.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.aftersales.dto.AbnormalRecordDTO;
@ -7,13 +8,11 @@ import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
@Mapper
public interface AftersalesAbnormalRecordMapper extends BaseMapper<AftersalesAbnormalRecordEntity> {
IPage<AftersalesAbnormalRecordEntity> findPageList(IPage<Object> page, @Param("param") AbnormalRecordDTO abnormalRecordDTO);
Map<String, Integer> findListByCarsNoAndUpWarehouseId(@Param("carsNo") String carsNo, @Param("warehouseId") Long warehouseId);
JSONObject findListByCarsNoAndUpWarehouseId(@Param("carsNo") String carsNo, @Param("warehouseId") Long warehouseId);
}

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

@ -42,9 +42,9 @@
order by up_time desc
</select>
<select id="findListByCarsNoAndUpWarehouseId" resultType="java.util.Map">
select sum(IF(abnormal_status != 1,1,0)) dealwithNum,
sum(IF(abnormal_status = 1,1,0)) noDealwithNum
<select id="findListByCarsNoAndUpWarehouseId" resultType="com.alibaba.fastjson.JSONObject">
select IFNULL(sum(IF(abnormal_status != 1,1,0)),0) dealwithNum,
IFNULL(sum(IF(abnormal_status = 1,1,0)),0) noDealwithNum
from logpm_aftersales_abnormal_record
where cars_no = #{carsNo}
and up_warehouse_id = #{warehouseId}

3
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.java

@ -96,4 +96,7 @@ public interface AftersalesWorkOrderMapper extends BaseMapper<AftersalesWorkOrde
* @return
*/
String getAbnormalPackage(@Param("orderCode") String orderCode);
List<AftersalesWorkOrderEntity> findWorkOrderByOrderPackageCodeAndWarehouseIdAndOtherNodex(@Param("warehouseId") Long warehouseId, @Param("orderPackageCode") String orderPackageCode,
@Param("workOrderType")int workOrderType, @Param("discoveryNode")int discoveryNode);
}

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

@ -422,6 +422,20 @@
WHERE ldpl.is_deleted = 0
AND ldpl.order_package_code = #{orderCode}
</select>
<select id="findWorkOrderByOrderPackageCodeAndWarehouseIdAndOtherNodex"
resultType="com.logpm.aftersales.entity.AftersalesWorkOrderEntity">
SELECT
lawo.*
FROM
logpm_aftersales_work_order lawo
LEFT JOIN logpm_aftersales_abnormal_package laap on laap.work_order_id=lawo.id
WHERE
laap.package_code = #{orderPackageCode}
AND lawo.warehouse_id = #{warehouseId}
AND lawo.discovery_node = #{discoveryNode}
AND lawo.work_order_type = #{workOrderType}
AND lawo.is_deleted = 0;
</select>
<update id="updateFinanceTime">

5
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesAbnormalRecordService.java

@ -1,16 +1,15 @@
package com.logpm.aftersales.service;
import com.alibaba.fastjson.JSONObject;
import com.logpm.aftersales.dto.AbnormalRecordDTO;
import com.logpm.aftersales.entity.AftersalesAbnormalRecordEntity;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import java.util.Map;
public interface IAftersalesAbnormalRecordService extends BaseService<AftersalesAbnormalRecordEntity> {
R findPageList(AbnormalRecordDTO abnormalRecordDTO);
R dealAbnormal(AbnormalRecordDTO abnormalRecordDTO);
Map<String, Integer> findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId);
JSONObject findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId);
}

11
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesWorkOrderService.java

@ -25,6 +25,7 @@ import com.logpm.aftersales.vo.AftersalesAbnormalPackageVO;
import com.logpm.aftersales.vo.AftersalesWorkOrderVO;
import com.logpm.aftersales.excel.AftersalesWorkOrderExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
@ -65,6 +66,8 @@ public interface IAftersalesWorkOrderService extends BaseService<AftersalesWorkO
*/
boolean saveOrUpdateOwn(AftersalesWorkOrderDTO aftersalesWorkOrder);
boolean extractedSaveAndUpdate(AftersalesWorkOrderDTO aftersalesWorkOrder, BladeUser user, BasicdataWarehouseEntity myCurrentWarehouse);
/**
* 查询待处理的异常工单数据
* @param aftersalesWorkOrder
@ -284,4 +287,12 @@ public interface IAftersalesWorkOrderService extends BaseService<AftersalesWorkO
R updateFinanceTime(String ids, Date entryTime,String operator);
/**
* 更新包件的干线卸车标识
* @param warehouseId
* @param orderPackageCode
* @param packageFinish
*/
void updateWorkOrderPackagFinish(Long warehouseId, String orderPackageCode, Integer packageFinish);
}

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

@ -1,5 +1,6 @@
package com.logpm.aftersales.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.aftersales.dto.AbnormalRecordDTO;
@ -15,7 +16,6 @@ import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
@Slf4j
@ -78,7 +78,7 @@ public class AftersalesAbnormalRecordServiceImpl extends BaseServiceImpl<Aftersa
}
@Override
public Map<String, Integer> findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId) {
public JSONObject findListByCarsNoAndUpWarehouseId(String carsNo, Long warehouseId) {
return baseMapper.findListByCarsNoAndUpWarehouseId(carsNo,warehouseId);
}
}

42
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java

@ -18,7 +18,6 @@ package com.logpm.aftersales.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@ -30,17 +29,16 @@ import com.logpm.aftersales.dto.AftersaleSurveyRecordDTO;
import com.logpm.aftersales.dto.AftersalesPersonResponsibleDTO;
import com.logpm.aftersales.dto.AftersalesWorkOrderDTO;
import com.logpm.aftersales.entity.*;
import com.logpm.aftersales.mapper.AftersalesAbnormalPackageMapper;
import com.logpm.aftersales.mapper.AftersalesAppealMapper;
import com.logpm.aftersales.mapper.AftersalesCustomerMallMapper;
import com.logpm.aftersales.service.*;
import com.logpm.aftersales.vo.*;
import com.logpm.aftersales.excel.AftersalesWorkOrderExcel;
import com.logpm.aftersales.mapper.AftersalesWorkOrderMapper;
import com.logpm.basicdata.entity.BasicdataStoreBusinessEntity;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataStoreBusinessClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.feign.IDistributionDeliveryListClient;
import com.logpm.distribution.vo.DistributionDeliveryListVO;
import lombok.AllArgsConstructor;
@ -50,11 +48,9 @@ import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.DictTimeoutEnum;
import org.springblade.common.constant.aftersales.*;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.DictBizCache;
@ -62,7 +58,6 @@ import org.springblade.system.entity.DictBiz;
import org.springblade.system.entity.User;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.feign.IUserSearchClient;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -90,6 +85,7 @@ import java.util.stream.Collectors;
public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWorkOrderMapper, AftersalesWorkOrderEntity> implements IAftersalesWorkOrderService {
private final IAftersalesAbnormalPackageService aftersalesAbnormalPackageService;
private final AftersalesAbnormalPackageMapper aftersalesAbnormalPackageMapper;
private final IAftersalesDecreaseImageService aftersalesDecreaseImageService;
private final IAftersalesProcessorService aftersalesProcessorService;
private final IAftersalesCompletionRecordService completionRecordService;
@ -323,6 +319,11 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
throw new ServiceException("请选择仓库!!");
}
BladeUser user = AuthUtil.getUser();
return this.extractedSaveAndUpdate(aftersalesWorkOrder, user, myCurrentWarehouse);
}
@Override
public boolean extractedSaveAndUpdate(AftersalesWorkOrderDTO aftersalesWorkOrder, BladeUser user, BasicdataWarehouseEntity myCurrentWarehouse) {
if (ObjectUtils.isNull(aftersalesWorkOrder.getId())) {
//新增
// aftersalesWorkOrder.setInitiationIdentification("PC");
@ -2279,10 +2280,39 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
@Override
public R updateFinanceTime(String ids, Date entryTime, String operator) {
String[] split = ids.split(",");
for (String id : split) {
baseMapper.updateFinanceTime(id, entryTime, operator);
}
return R.success("操作成功");
}
@Override
public void updateWorkOrderPackagFinish(Long warehouseId, String orderPackageCode, Integer packageFinish) {
// 查询处当前的异常工单
List<AftersalesWorkOrderEntity> workOrderByOrderPackageCodeAndWarehouseIdAndOtherNodex = baseMapper.findWorkOrderByOrderPackageCodeAndWarehouseIdAndOtherNodex(warehouseId, orderPackageCode, 2, 3);
// 对异常工单进行标识
for (AftersalesWorkOrderEntity orderByOrderPackageCodeAndWarehouseIdAndOtherNodex : workOrderByOrderPackageCodeAndWarehouseIdAndOtherNodex) {
// 更新这个异常工单下面的包件
aftersalesAbnormalPackageMapper.updateAftersalesAbnormalPackageByWorkOrderIdAndPackCodeAndOtherNodex(orderByOrderPackageCodeAndWarehouseIdAndOtherNodex.getId(),orderPackageCode, packageFinish);
orderByOrderPackageCodeAndWarehouseIdAndOtherNodex.setPackageFinish(packageFinish);
baseMapper.updateById(orderByOrderPackageCodeAndWarehouseIdAndOtherNodex);
}
}
}

3
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataBrandMapper.xml

@ -17,7 +17,8 @@
</select>
<select id="findAllList" resultType="com.alibaba.fastjson.JSONObject">
select brand_name brandName
select brand_name brandName,
id brandId
from logpm_basicdata_brand
</select>

1
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataBrandServiceImpl.java

@ -57,6 +57,7 @@ public class BasicdataBrandServiceImpl extends BaseServiceImpl<BasicdataBrandMap
public List<JSONObject> findAllList() {
List<JSONObject> allList = baseMapper.findAllList();
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",0);
jsonObject.put("brandName","零担");
allList.add(0,jsonObject);
return allList;

5
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistrilbutionBillLadingDTO.java

@ -51,6 +51,11 @@ public class DistrilbutionBillLadingDTO extends DistrilbutionBillLadingEntity {
* 提货批次
*/
private String pickupBatch;
/**
* 多个提货批次
*/
private List<String> pickupBatchs;
/**
* 服务号
*/

41
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/PushNotificationDTO.java

@ -0,0 +1,41 @@
/*
* 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.distribution.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 签收管理 数据传输对象实体类
*
* @author lmy
* @since 2023-06-13
*/
@Data
public class PushNotificationDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long id ;
private Long warehouseId;
private String warehouseName;
}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionStockArticleExcel.java

@ -78,7 +78,7 @@ public class DistributionStockArticleExcel implements Serializable {
* 仓库
*/
@ColumnWidth(20)
@ExcelProperty("仓库")
@ExcelProperty("所在仓库")
private String warehouse;
/**
* 仓库

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

@ -16,6 +16,7 @@
*/
package com.logpm.distribution.feign;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.aftersales.vo.AftersalesAbnormalPackageVO;
@ -25,6 +26,7 @@ import com.logpm.distribution.vo.DistributionDeliveryListVO;
import com.logpm.distribution.vo.DistributionDeliverySelfVO;
import com.logpm.distribution.vo.DistributionRetentionScanVo;
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -114,5 +116,14 @@ public class DistributionDeliveryListClient implements IDistributionDeliveryList
}
/**
* @param params
*/
@Override
public void pushNotification(String params) {
distributionDeliveryListService.pushNotification(params);
}
}

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

@ -366,12 +366,12 @@
GROUP_CONCAT( lddl.loading_team_name, lddl.unloading_team_name ) AS handlingCrew
FROM
logpm_distribution_delivery_list AS lddl
LEFT JOIN logpm_distribution_signfor AS lds ON lddl.id = lds.delivery_id
LEFT JOIN logpm_distribution_reservation AS ldr ON lds.reservation_id = ldr.id
LEFT JOIN logpm_distribution_delivery_self AS ldds ON ldds.delivery_id = lddl.id
LEFT JOIN logpm_distribution_delivery_tripartite AS lddt ON ldds.delivery_id = lddl.id
<where>
lddl.is_deleted = 0 and lds.is_deleted = 0 and ldr.is_deleted = 0 and ldds.is_deleted = 0 and lddt.is_deleted = 0
LEFT JOIN logpm_distribution_signfor AS lds ON lddl.id = lds.delivery_id AND lds.is_deleted = 0
LEFT JOIN logpm_distribution_reservation AS ldr ON lds.reservation_id = ldr.id AND ldr.is_deleted = 0
LEFT JOIN logpm_distribution_delivery_self AS ldds ON ldds.delivery_id = lddl.id AND ldds.is_deleted = 0
LEFT JOIN logpm_distribution_delivery_tripartite AS lddt ON ldds.delivery_id = lddl.id AND lddt.is_deleted = 0
<where>
lddl.is_deleted = 0
<if test=" params.ids != ''">
AND lddl.id in
<foreach collection="params.ids" item="item" index="index" open="(" separator="," close=")">
@ -415,7 +415,7 @@
<select id="selectBycommercialNub" resultType="java.lang.Integer">
SELECT COALESCE(COUNT(*), 0) FROM logpm_distribution_delivery_list lddl
<where>
lddl.type = '1'
lddl.type = '1' AND lddl.customers_number > 0
<if test="param.trainNumber != null and param.trainNumber!=''">
and lddl.train_number like concat('%',#{param.trainNumber},'%')
</if>
@ -1905,6 +1905,7 @@
lddl.kind AS kind,
lddl.warehouse_id AS warehouseId,
lddl.warehouse_name AS warehouseName,
lds.signing_time AS reviewTime,
CASE lddl.type
WHEN 1 THEN 2
WHEN 2 THEN 1

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

@ -1216,6 +1216,7 @@
where 1=1
and ldrp.reservation_id = #{reservationId}
and ldrp.stock_article_id = #{stockArticleId}
and ldrp.packet_bar_status in (1,3)
group by ldpl.material_name
</select>
@ -1230,6 +1231,7 @@
where 1=1
and ldrp.reservation_id = #{reservationId}
and ldrp.stock_article_id = #{stockArticleId}
and ldrp.packet_bar_status in (1,3)
group by IFNULL(ldpl.third_product,'其他')
</select>
<select id="selectOrderInfoByReservationId"
@ -1362,7 +1364,7 @@
ldr.delivery_phone AS phone,
(ldr.reservation_num + ldr.reservation_stock_list_num) AS plan,
(lds.loaded_number + lds.loadedin_number) AS actualPlan,
lddl.delivery_number AS delivery,
ldr.reservation_num AS delivery,
(lds.received_quantity + lds.receivedin_quantity) AS sign,
lds.signing_status AS state,
lds.create_time AS createTime,

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

@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.dto.DistributionSignforDTO;
import com.logpm.distribution.dto.PushNotificationDTO;
import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionReservationEntity;
@ -350,4 +351,10 @@ public interface DistributionSignforMapper extends BaseMapper<DistributionSignfo
List<Map<String, Object>> getByReservationIds(@Param("reservationIds") List<Long> longList);
/**
* 查询需要推送老系统的签收信息
* @param warehouseIds
* @return
*/
List<PushNotificationDTO> pushNotification(@Param("warehouseIds") List<String> warehouseIds);
}

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

@ -1381,4 +1381,28 @@
</foreach>
</select>
<select id="pushNotification" resultType="com.logpm.distribution.dto.PushNotificationDTO">
SELECT
lds.id AS id, ldr.warehouse_id AS warehouseId,ldr.warehouse_name AS warehouseName
FROM
logpm_distribution_reservation AS ldr
LEFT JOIN logpm_distribution_signfor AS lds ON ldr.id = lds.reservation_id
<where>
ldr.is_deleted = 0
AND lds.is_deleted = 0
AND ( ldr.reservation_num + ldr.reservation_stock_list_num ) > 0
AND date_format( lds.signing_time, '%y%m%d%' ) &lt;= date_format(
'2024-04-28',
'%y%m%d%')
AND lds.signing_status = 2
<if test="warehouseIds != null and warehouseIds.size > 0" >
AND ldr.warehouse_id in
<foreach collection="warehouseIds" item="warehouseId" index="index" open="(" close=")" separator=",">
#{warehouseId}
</foreach>
</if>
</where>
GROUP BY ldr.warehouse_id
</select>
</mapper>

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

@ -487,7 +487,7 @@
where ds.id = lds.id AND ldsi.stock_status != 4
) inventoryNub
from logpm_distribution_stockup lds
LEFT JOIN logpm_distribution_stockup_info ldsi on lds.id = ldsi.stockup_id
LEFT JOIN logpm_distribution_stockup_info ldsi on lds.id = ldsi.stockup_id AND ldsi.is_deleted = 0
LEFT JOIN logpm_distribution_reservation_stockarticle ldrs on ldrs.reservation_id = ldsi.reservation_id
LEFT JOIN logpm_distribution_parcel_list ldpl on ldpl.stock_article_id = ldrs.stock_article_id
<where>
@ -593,7 +593,7 @@
LEFT JOIN logpm_distribution_stockup_info ldsi on ldsi.reservation_id = ldr.id
LEFT JOIN logpm_distribution_stockup lds on lds.id = ldsi.stockup_id
LEFT JOIN logpm_distribution_reservation_stockarticle ldrs
on ldrs.reservation_id = ldr.id and ldrs.stock_article_status in (1, 3)
on ldrs.reservation_id = ldr.id and ldrs.stock_article_status in (1, 3)
where ldr.id = #{param.reservationId}
</select>

6
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml

@ -135,6 +135,12 @@
<if test="param.warehouseId != null and param.warehouseId != ''">and dbl.warehouse_id =
#{param.warehouseId}
</if>
<if test="param.pickupBatchs != null and param.warehouseId != ''">
and dbl.pickup_batch IN
<foreach collection="param.pickupBatchs" item="batch" index="index" separator="," open="(" close=")">
#{batch}
</foreach>
</if>
</where>
GROUP BY dbl.id,dsa.warehouse,dsa.type_service

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

@ -142,12 +142,13 @@
LEFT JOIN logpm_warehouse_goods_allocation AS lwga ON lwug.allocation_id = lwga.id
where ldpl.stock_article_id = ldbs.stock_article_id) goodsAllocation,
ldsa.service_number serviceNumber,ldsa.waybill_number waybillNumber,ldsa.train_number trainNumber,ldsa.send_warehouse_name sendWarehouseName,
t.scan_user AS scanUser
t.scan_user AS scanUser,
t.aaa AS signingTime
from logpm_distrilbution_bill_stock ldbs
LEFT JOIN logpm_distribution_stock_article ldsa on ldbs.stock_article_id = ldsa.id
LEFT JOIN logpm_distribution_stock lds on lds.stock_article = ldbs.stock_article_id
LEFT JOIN logpm_distrilbution_bill_lading ldbl ON lds.stock_article = ldbl.stock_article_id
LEFT JOIN (SELECT ldbs.stock_article_id,GROUP_CONCAT(ldbls.scan_user) AS scan_user FROM logpm_distrilbution_bill_stock AS ldbs LEFT JOIN logpm_distribution_bill_lading_scan AS ldbls ON ldbs.stock_article_id = ldbls.stock_article_id WHERE ldbs.order_status IN (
LEFT JOIN (SELECT ldbs.stock_article_id,GROUP_CONCAT(DISTINCT ldbls.scan_user) AS scan_user,MAX(ldbls.create_time) AS aaa FROM logpm_distrilbution_bill_stock AS ldbs LEFT JOIN logpm_distribution_bill_lading_scan AS ldbls ON ldbs.stock_article_id = ldbls.stock_article_id WHERE ldbs.order_status IN (
1,
3) AND ldbs.is_deleted = 0 AND ldbls.is_deleted = 0 GROUP BY ldbs.stock_article_id) AS t ON ldbs.stock_article_id = t.stock_article_id
<where>

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

@ -337,7 +337,7 @@ public interface IDistributionDeliveryListService extends BaseService<Distributi
* @param conditions
* @return
*/
boolean retentionDeliveryReservationPackage(Long deliveryId, Long reservationId, Long orderPackageId, Integer conditions);
boolean retentionDeliveryReservationPackage(Long deliveryId, Long reservationId, Long orderPackageId, Integer conditions);
/**
* 滞留取消库存品包件
@ -442,6 +442,12 @@ public interface IDistributionDeliveryListService extends BaseService<Distributi
*/
DistributionDeliveryExcelDTO exportDistributionDeliveryListDetail(Long deliveryId);
/**
* 推送老系统
* @param params
*/
void pushNotification(String params);
/**
* 查询签收预约客户包件信息

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

@ -53,6 +53,7 @@ import com.logpm.warehouse.feign.*;
import com.logpm.warehouse.vo.TrayTypeDataVO;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.jetbrains.annotations.NotNull;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.InventoryLoadingStatusConstant;
@ -734,7 +735,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (shangpeiFlag) {
List<DistributionReservationEntity> reservationEntities = reservationEntityList.stream().filter(r -> Func.isNotEmpty(r.getConsignee()) && r.getConsignee().equals(stockArticleEntity.getCustomerName()) && r.getDeliveryAddress().equals(stockArticleEntity.getCustomerAddress()) && r.getDeliveryPhone().equals(stockArticleEntity.getCustomerTelephone()) && r.getMallName().equals(stockArticleEntity.getMallName())).collect(Collectors.toList());
//查看是否存在满足条件的预约单
if (reservationEntities.size() == 1) {
//存在多个,操作人指定具体客户即可
if (!reservationEntities.isEmpty()) {
if (Func.isEmpty(distrilbutionloadingscanDTO.getReservationId())) {
log.info("异常装车未指定客户");
return Resp.scanFail("请指定客户进行异常装车", "请指定客户进行异常装车");
@ -937,7 +939,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
// String str = getLoadingMsg(distrilbutionloadingscanDTO);
Integer carLaodNum = getCarLaodNum(distrilbutionloadingscanDTO.getDeliveryId());
return Resp.scanSuccessWithData("装车成功", "装车" + carLaodNum + "件", carLaodNum);
return Resp.scanSuccessWithData("装车成功", carLaodNum + "件", carLaodNum);
}
private void extracteOrderPackageStatus(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionParcelListEntity parcelListEntity, BasicdataWarehouseEntity myCurrentWarehouse, DistributionReservationEntity reservationEntity) {
@ -1120,7 +1122,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
@NotNull
private String getLoadingMsg(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO) {
return "装车" + getCarLaodNum(distrilbutionloadingscanDTO.getDeliveryId()) + "件";
return getCarLaodNum(distrilbutionloadingscanDTO.getDeliveryId()) + "件";
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -4130,9 +4132,11 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
List<Long> newReservationIds = reservationInfos.stream().map(DistributionReservationDTO::getId).collect(Collectors.toList());
List<DistributionReservationEntity> distributionReservationEntities = distributionReservationMapper.selectList(Wrappers.<DistributionReservationEntity>query().lambda().in(DistributionReservationEntity::getId, newReservationIds));
List<DistributionReservationEntity> needStockUpReservationList = distributionReservationEntities.stream().filter(r -> r.getStockupStatus().equals(ReservationStockupStatusConstant.weibeihuo.getValue())).collect(Collectors.toList());
DistributionStockupEntity stockupEntity = null;
BladeUser user = AuthUtil.getUser();
if (Func.isNotEmpty(needStockUpReservationList)) {
log.info("修改市配配送任务需要进行备货的预约计划>>>reservationCodes:{}",needStockUpReservationList.stream().map(DistributionReservationEntity::getReservationCode).collect(Collectors.joining(",")));
//需要进行备货的预约列表
stockupEntity = new DistributionStockupEntity();
stockupEntity.setAssignStatus(StockAssignStatusConstant.weizhipai.getValue());
@ -4158,6 +4162,11 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionStockupInfoEntity.setStockupId(stockupEntity.getId());
distributionStockupInfoEntity.setStockUpType(distributionReservationEntity.getDeliveryType());
distributionStockupInfoService.save(distributionStockupInfoEntity);
distributionReservationService.update(Wrappers.<DistributionReservationEntity>update().lambda()
.eq(DistributionReservationEntity::getId,distributionReservationEntity.getId())
.set(DistributionReservationEntity::getStockupStatus,ReservationStockupStatusConstant.daibeihuo.getValue())
);
log.info("编辑配送车次维护预约备货状态 reservationId>>>>>>>>>>>>>>>>>:{}",distributionReservationEntity.getId());
}
}
//这里暂时不考虑出现新增的情况
@ -4193,8 +4202,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionSignforEntity.setSigningStatus(SignforStatusConstant.daiqianshou.getValue());
distributionSignforEntity.setDriverSigning(SignforStatusConstant.daiqianshou.getValue());
distributionSignforService.save(distributionSignforEntity);
distributionReservationEntity.setReservationStatus(ReservationStatusConstant.daipeisong.getValue());
distributionReservationMapper.updateById(distributionReservationEntity);
}
});
@ -6651,6 +6658,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
List<Map<String, Object>> mapList = distributionReservationMapper.getCategoryByStockArticleIdAndReservationId(stockArticleId, reservationId);
Map<String, Object> numObj = new HashMap<>();
Integer tn = 0;
Integer sn = 0;
Set<String> set = totalDetail.keySet();
for (String key : set) {
if (!"合计数量".equals(key)) {
@ -6660,6 +6668,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
Long num = (Long) m.get("num");
Long signNum = (Long) m.get("aaa");
if (thirdProduct.equals(key)) {
sn += num.intValue();
numObj.put(key, num);
tn = tn + num.intValue();
}
@ -6669,11 +6678,10 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
orderMap.put("合计数量", tn);
orderMap.put("小计", sn);
orderMap.put("产品明细", numObj);
orderMap.put("产品明细长度", numObj.size());
Map<String, Object> info = (Map<String, Object>) total.get("产品明细");
//通过订单id和预约id查询对应包件的物料信息
List<String> materialNameStrList = distributionReservationMapper.getMaterialNameByStockArticleIdAndReservationId(stockArticleId, reservationId);
String materialNameStr = StringUtils.join(materialNameStrList, ",");
@ -6893,7 +6901,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
String orderCode = distributionStockArticleEntity.getOrderCode();
temp.put("合同号", orderCode);
temp.put("批次号", orderCode);
//查询产品名称拼接
String productName = distributionReservationPackageService.getConcatThirdProductByOrderId(reservationId, stockArticleId);
@ -6940,7 +6948,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
continue;
}
Integer reservationNum = reservationStocklistEntity.getReservationNum();
temp.put("合同号", distributionStockListEntity.getOrderCode());
temp.put("批次号", distributionStockListEntity.getIncomingBatch());
temp.put("产品名称", distributionStockListEntity.getDescriptionGoods() + "(" + reservationNum + ")");
//todo 单位是否需要查询物料表
temp.put("单位", Optional.ofNullable(distributionStockListEntity.getCargoUnit()).orElse(null));
@ -7212,6 +7220,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
log.info(method + "存在装车数据:{}", reservationCodes);
return R.fail(deliveryListEntity.getTrainNumber() + "存在装车包件!!!");
}
DistributionLoadingNumDTO deliveryLoadingNum = distributionDeliveryListMapper.selectDeliveryLoadingNum(deliveryId);
if (deliveryLoadingNum.getPackageLoadingQuantity()+deliveryLoadingNum.getInventoryLoadingQuantity() > 0){
log.info(method + "存在装车数据 装车件数>>>>>>>>>>:{}", (deliveryLoadingNum.getPackageLoadingQuantity()+deliveryLoadingNum.getInventoryLoadingQuantity()));
return R.fail(deliveryListEntity.getTrainNumber() + "存在装车包件!!!");
}
List<Long> ids = reservationEntities.stream().map(DistributionReservationEntity::getId).collect(Collectors.toList());
List<DistributionLoadscanEntity> packageList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda()
@ -7319,6 +7333,29 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return distributionDeliveryExcelDTO;
}
/**
* @param params
*/
@Override
public void pushNotification(String params) {
List<String> warehouseIds = null;
if (Strings.isNotBlank(params)){
warehouseIds = Arrays.stream(params.split(",")).collect(Collectors.toList());
}
List<DistributionReservationEntity> reservationEntityList = distributionReservationService.list(Wrappers.<DistributionReservationEntity>query().lambda()
.in(DistributionReservationEntity::getWarehouseId, warehouseIds)
.ne(DistributionReservationEntity::getReservationStatus, ReservationStatusConstant.yiquexiao.getValue())
.apply("(reservation_num + reservation_stock_list_num) > 0")
.apply("date_format(create_time,'%y%m%d%') <= date_format('2024-04-28','%y%m%d%')")
);
List<PushNotificationDTO> pushNotification = distributionSignforMapper.pushNotification(warehouseIds);
if (!pushNotification.isEmpty()){
for (PushNotificationDTO pushNotificationDTO : pushNotification) {
distributionAsyncService.sendReviewFactory(pushNotificationDTO.getId(), pushNotificationDTO.getWarehouseName(), pushNotificationDTO.getWarehouseId());
}
}
}
@Override
@Transactional
public void maintenanceDeliveryInfo(Long deliveryId) {

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

@ -501,6 +501,11 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
}
queryWrapper.eq("conditions", 1);
List<DistributionParcelListEntity> list1 = baseMapper.selectList(queryWrapper);
boolean flag = list1.stream().anyMatch(p -> OrderPackageReservationStatusConstant.yiyueyue.getValue().equals(p.getOrderPackageReservationStatus()));
if (flag){
String collect = list1.stream().map(DistributionParcelListEntity::getOrderPackageCode).collect(Collectors.joining(","));
throw new ServiceException(collect+"包件已预约,无法转为库存品");
}
boolean b = list1.stream().anyMatch(i -> ObjectUtils.isNull(i.getMaterialId()));
if (b) {
throw new ServiceException("有包件未维护物料信息,请维护后在进行操作!!");

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

@ -191,8 +191,8 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
distributionStockArticleVO.getTotalNumber() - distributionStockArticleVO.getIncomingNum()
);
}
excel.setIsZeroString("1".equals(distributionStockArticleVO.getIsZero()) ? "是" : "否");
BeanUtil.copyProperties(distributionStockArticleVO, excel);
excel.setIsZeroString("1".equals(distributionStockArticleVO.getIsZero()) ? "是" : "否");
excelList.add(excel);
});

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

@ -49,6 +49,7 @@ import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient;
import lombok.extern.log4j.Log4j2;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.Inventory.InventoryStockUpStatusConstant;
import org.springblade.common.constant.WorkNodeEnums;
@ -2006,6 +2007,18 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
@Override
public IPage<DistrilbutionBillLadingVO> pageList(IPage<Object> page, Map<String, Object> distrilbutionBillLading) {
DistrilbutionBillLadingDTO distrilbutionBillLadingDTO = JSONObject.parseObject(JSONObject.toJSONString(distrilbutionBillLading), DistrilbutionBillLadingDTO.class);
List<String> strs = null;
if (!Objects.isNull(distrilbutionBillLading.get("pickupBatchs"))){
String str = (String) distrilbutionBillLading.get("pickupBatchs");
if (Strings.isNotBlank(str)){
if (str.indexOf(",")>0){
//存在中文逗号
str = str.replaceAll(",", ",");
}
strs = Arrays.stream(str.split(",")).collect(Collectors.toList());
}
}
distrilbutionBillLadingDTO.setPickupBatchs(strs);
//获取当前登录人仓库
List<BasicdataWarehouseEntity> warehouseList = basicdataWarehouseClient.getMyWarehouseList();
List<Long> collect = warehouseList.stream()

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillStockServiceImpl.java

@ -85,7 +85,7 @@ public class DistrilbutionBillStockServiceImpl extends BaseServiceImpl<Distrilbu
i.setStockupStatusName(DictBizCache.getValue(DictBizConstant.STOCKUP_STATUS,i.getStockupStatus()));
}
if(ObjectUtils.isNotNull(i.getConditions())){
i.setConditionsName(DictBizCache.getValue(DictBizConstant.BILL_CONDITIONS_STATUS,i.getConditions()));
i.setConditions(DictBizCache.getValue(DictBizConstant.BILL_CONDITIONS_STATUS,i.getConditions()));
}
});
return billOrderDetail;

14
blade-service/logpm-factory-data/logpm-factory-data-jinpai/Dockerfile

@ -0,0 +1,14 @@
FROM bladex/alpine-java:openjdk8-openj9_cn_slim
MAINTAINER h5u@163.com
RUN mkdir -p /logpm/factory-data-jinpai
WORKDIR /logpm/factory-data-jinpai
EXPOSE 18940
ADD ./target/logpm-factory-data-jinpai.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","-Xms128m","-Xmx512m", "app.jar"]
CMD ["--spring.profiles.active=test"]

97
blade-service/logpm-factory-data/logpm-factory-data-jinpai/pom.xml

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>logpm-factory-data</artifactId>
<groupId>org.springblade</groupId>
<version>3.2.0.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>${bladex.project.version}</version>
<packaging>jar</packaging>
<artifactId>logpm-factory-data-jinpai</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-factory-data-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-swagger</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-trunkline-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-factory-data-base-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-oss</artifactId>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-resource-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<configuration>
<username>${docker.username}</username>
<password>${docker.password}</password>
<repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

20
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/FactoryDataJinPaiApplication.java

@ -0,0 +1,20 @@
package com.logpm.factorydata;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
/**
* 金牌工厂数据启动类
*
* @author zhaoqiaobo
* @create 2024-4-26
*/
@BladeCloudApplication
public class FactoryDataJinPaiApplication {
public static void main(String[] args) {
BladeApplication.run(ModuleNameConstant.LOGPM_FACTORY_DATA_JINPAI_NAME, FactoryDataJinPaiApplication.class, args);
}
}

40
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/config/FactoryDataSuoFeiYaConfiguration.java

@ -0,0 +1,40 @@
/*
* 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.factorydata.jinpai.config;
import com.logpm.factorydata.jinpai.pros.FactoryDataJinPaiProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 配置feignmybatis包名properties
*
* @author chaos
*/
@Configuration(proxyBeanMethods = false)
@ComponentScan({"org.springblade", "com.logpm"})
@EnableFeignClients({"org.springblade", "com.logpm"})
@MapperScan({"org.springblade.**.mapper.**", "com.logpm.**.mapper.**"})
@EnableConfigurationProperties(FactoryDataJinPaiProperties.class)
public class FactoryDataSuoFeiYaConfiguration {
}

89
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/controller/OrderController.java

@ -0,0 +1,89 @@
package com.logpm.factorydata.jinpai.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.factorydata.jinpai.service.DeliveryNoteService;
import com.logpm.factorydata.jinpai.vo.DeliveryNoteVO;
import com.logpm.factorydata.jinpai.vo.OrderInfoVO;
import com.logpm.factorydata.jinpai.vo.PackageInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/**
* 工厂订单 前端控制器
*
* @author zhaoqiaobo
* @create 2024-03-21 19:27
*/
@Slf4j
@RestController
@RequestMapping("/order")
@AllArgsConstructor
@Api(value = "工厂订单", tags = "工厂订单")
public class OrderController {
private final DeliveryNoteService service;
@ResponseBody
@PostMapping
@ApiOperationSupport(order = 1)
@ApiOperation(value = "工厂订单", notes = "工厂订单")
public R order(@RequestBody DeliveryNoteVO vo) {
log.info("接收工厂订单:{} ", JSONUtil.toJsonStr(vo));
String res = "";
try {
if (ObjectUtil.isNotEmpty(vo)) {
res = service.order(vo);
}
} catch (Exception e) {
log.error("工厂订单异常:{} ", e);
return R.success("服务器异常");
}
return R.success(res);
}
@ResponseBody
@PostMapping("orderInfo")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "工厂订单明细", notes = "工厂订单明细")
public R detail(@RequestBody OrderInfoVO vo) {
log.info("接收工厂订单明细:{} ", JSONUtil.toJsonStr(vo));
String res = "";
try {
if (ObjectUtil.isNotEmpty(vo)) {
res = service.detail(vo);
}
} catch (Exception e) {
log.error("工厂订单明细异常:{} ", e);
return R.success("服务器异常");
}
return R.success(res);
}
@ResponseBody
@PostMapping("packageInfo")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "工厂包件信息", notes = "工厂包件信息")
public R packageInfo(@RequestBody PackageInfoVO vo) {
log.info("接收工厂包件信息:{} ", JSONUtil.toJsonStr(vo));
String res = "";
try {
if (ObjectUtil.isNotEmpty(vo)) {
res = service.packageInfo(vo);
}
} catch (Exception e) {
log.error("工厂包件信息异常:{} ", e);
return R.success("服务器异常");
}
return R.success(res);
}
}

126
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/DeliveryNoteEntity.java

@ -0,0 +1,126 @@
package com.logpm.factorydata.jinpai.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 订单 实体类
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@TableName("jp_delivery_note")
@ApiModel(value = "金牌订单", description = "金牌订单")
@EqualsAndHashCode(callSuper = true)
public class DeliveryNoteEntity extends BaseEntity {
@ApiModelProperty(name = "日志id")
private String logId;
@ApiModelProperty(name = "确认时间")
private String confirmTime;
@ApiModelProperty(name = "订单号")
private String orderId;
@ApiModelProperty(name = "YS客户单号")
private String omsExtYsId;
@ApiModelProperty(name = "始发站")
private String sendSite;
@ApiModelProperty(name = "目的站")
private String recvSite;
@ApiModelProperty(name = "发货时间")
private String sendTime;
@ApiModelProperty(name = "要求到货时间")
private String requireRecvTime;
@ApiModelProperty(name = "发货客户编号")
private String consignerCode;
@ApiModelProperty(name = "发货方客户名称")
private String consignerName;
@ApiModelProperty(name = "发货方联系人")
private String consignerContacts;
@ApiModelProperty(name = "发货方联系手机")
private String consignerMobile;
@ApiModelProperty(name = "发货方联系电话(座机)")
private String consignerPhone;
@ApiModelProperty(name = "发货地址")
private String consignerAddr;
@ApiModelProperty(name = "收货客户名称")
private String receiverName;
@ApiModelProperty(name = "收货客户联系人")
private String receiverContacts;
@ApiModelProperty(name = "收货人联系手机")
private String receiverMobile;
@ApiModelProperty(name = "收货联系电话")
private String receiverPhone;
@ApiModelProperty(name = "收货地址")
private String receiverAddr;
@ApiModelProperty(name = "货物体积")
private String goodsTotalVolume;
@ApiModelProperty(name = "货物件数")
private String goodsTotalNumber;
@ApiModelProperty(name = "货物重量")
private String goodsTotalWeight;
@ApiModelProperty(name = "承运商编码")
private String carrierId;
@ApiModelProperty(name = "承运商名称")
private String carrierName;
@ApiModelProperty(name = "承运类型: sfwl 三方物流, sczp 干仓配")
private String distributionMode;
@ApiModelProperty(name = "送货模式:gc-wf 专线-基地直发,sc-ps 干仓配-2C,sc-wf 干仓配-2B")
private String deliveryMode;
@ApiModelProperty(name = "承运商联系人")
private String carrierContacts;
@ApiModelProperty(name = "承运商手机")
private String carrierMobile;
@ApiModelProperty(name = "承运商电话")
private String carrierPhone;
@ApiModelProperty(name = "车牌号")
private String carNo;
@ApiModelProperty(name = "司机姓名")
private String driverName;
@ApiModelProperty(name = "司机联系手机")
private String driverMobile;
@ApiModelProperty(name = "到站网点id")
private String arriveOrg;
@ApiModelProperty(name = "到站网点")
private String arriveOrgName;
@ApiModelProperty(name = "发车时间")
private String departTime;
@ApiModelProperty(name = "中转站")
private String transferSite;
@ApiModelProperty(name = "中转到达时间")
private String transferArriveTime;
@ApiModelProperty(name = "中转发出时间")
private String transferStartTime;
@ApiModelProperty(name = "到达时间")
private String arriveTime;
@ApiModelProperty(name = "签收时间")
private String signTime;
@ApiModelProperty(name = "门店名称")
private String shopName;
@ApiModelProperty(name = "门店手机")
private String shopPhone;
@ApiModelProperty(name = "门店地址")
private String shopAddr;
@ApiModelProperty(name = "中转地址编码")
private String transferSiteId;
@ApiModelProperty(name = "订单运输跟踪状态(0.0:待发车,1.0:已发车,2.3:已中转到达,2.8:已中转出发,3.0:已到达,4.0:已签收")
private String trackingStatus;
@ApiModelProperty(name = "运输车牌")
private String vehicleNo;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
}

63
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/FactoryOrderLogEntity.java

@ -0,0 +1,63 @@
package com.logpm.factorydata.jinpai.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
@Data
@TableName("jp_factory_log")
@ApiModel(value = "接收工厂订单日志", description = "接收工厂订单日志")
@EqualsAndHashCode(callSuper = true)
public class FactoryOrderLogEntity extends BaseEntity {
/**
* 预留1
*/
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
/**
* 预留2
*/
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
/**
* 预留3
*/
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
/**
* 预留4
*/
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
/**
* 预留5
*/
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
/**
* 日志文件存放地址
*/
@ApiModelProperty(name = "日志文件存放地址", notes = "")
private String logUrl;
/**
* 数据类型 1.入库数据
*/
@ApiModelProperty(name = "数据类型 1.入库数据", notes = "")
private Integer type;
/**
* 数据维度1 订单 2 订单明细 3 包件
*/
@ApiModelProperty(name = "维度:1 订单 2 订单明细 3 包件", notes = "")
private Integer dimension;
/**
* 解析状态 0 未解析 1 已解析 2 解析失败
*/
@ApiModelProperty(name = "解析状态 0 未解析 1 已解析 2 解析失败", notes = "")
private Integer saxStatus;
}

94
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/OrderInfoEntity.java

@ -0,0 +1,94 @@
package com.logpm.factorydata.jinpai.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 订单明细信息
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@TableName("jp_order_info")
@ApiModel(value = "订单明细信息", description = "订单明细信息")
@EqualsAndHashCode(callSuper = true)
public class OrderInfoEntity extends BaseEntity {
@ApiModelProperty(name = "日志id")
private String logId;
@ApiModelProperty(name = "发货单id")
private String deliveryNoteId;
@ApiModelProperty(name = "订单号")
private String orderId;
@ApiModelProperty(name = "DD单号")
private String omsExtOrderNo;
@ApiModelProperty(name = "YS订单号")
private String omsExtYsId;
@ApiModelProperty(name = "手工合同单号")
private String manualContractNo;
@ApiModelProperty(name = "货品名称")
private String goodsName;
@ApiModelProperty(name = "货品包装")
private String goodsPack;
@ApiModelProperty(name = "货品类型")
private String goodsType;
@ApiModelProperty(name = "货品数量")
private String goodsNumber;
@ApiModelProperty(name = "货品毛重")
private String goodsGrossWeight;
@ApiModelProperty(name = "货品净重")
private String goodsNetWeight;
@ApiModelProperty(name = "货品体积")
private String goodsVolume;
@ApiModelProperty(name = "客户批次")
private String customerNum;
@ApiModelProperty(name = "申明价值")
private String goodsAmount;
@ApiModelProperty(name = "长")
private String goodsLength;
@ApiModelProperty(name = "宽")
private String goodsWidth;
@ApiModelProperty(name = "高")
private String goodsHeigth;
@ApiModelProperty(name = "收货地址")
private String receiverAddrDetail;
@ApiModelProperty(name = "安装地址")
private String yjInstallAddr;
@ApiModelProperty(name = "安装联系人")
private String yjInstallLinker;
@ApiModelProperty(name = "安装联系电话")
private String yjInstallPhone;
@ApiModelProperty(name = "承运类型(sfwl- 三方物流;sczp- 省仓直配)")
private String distributionMode;
@ApiModelProperty(name = "门店编号")
private String shopCode;
@ApiModelProperty(name = "门店名称")
private String shopName;
@ApiModelProperty(name = "加急类型加急类型A、B、C")
private String yjUrgentType;
@ApiModelProperty(name = "加急日期")
private String yjUrgentDate;
@ApiModelProperty(name = "订单类型:零售正单、普通零售单、样块单、增补单、返修单、缺件单、售后单")
private String yjOrderType;
@ApiModelProperty(name = "返修时效返修时效48小时、24小时")
private String yjRepairTimeliness;
@ApiModelProperty(name = "易居订单号")
private String yjOrderNo;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
}

62
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/entity/PackageInfoEntity.java

@ -0,0 +1,62 @@
package com.logpm.factorydata.jinpai.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 装箱包信息
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@TableName("jp_package_info")
@ApiModel(value = "包件信息", description = "包件信息")
@EqualsAndHashCode(callSuper = true)
public class PackageInfoEntity extends BaseEntity {
@ApiModelProperty(name = "日志id")
private String logId;
@ApiModelProperty(name = "订单明细id")
private String orderInfoId;
@ApiModelProperty(name = "DD单号")
private String omsExtOrderNo;
@ApiModelProperty(name = "订单号")
private String orderId;
@ApiModelProperty(name = "箱码")
private String extBoxCode;
@ApiModelProperty(name = "件数")
private String goodsNum;
@ApiModelProperty(name = "重量")
private String goodsWeight;
@ApiModelProperty(name = "体积")
private String goodsVolume;
@ApiModelProperty(name = "品名")
private String goodsType;
@ApiModelProperty(name = "箱码名称")
private String goodsName;
@ApiModelProperty(name = "箱码类型")
private String extBoxType;
@ApiModelProperty(name = "一级类别")
private String boxType1;
@ApiModelProperty(name = "二级类别")
private String boxType2;
@ApiModelProperty(name = "三级类别")
private String boxType3;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
}

60
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/launcher/FactoryDataBaseLauncherServiceImpl.java

@ -0,0 +1,60 @@
/*
* 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.factorydata.jinpai.launcher;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.constant.NacosConstant;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.util.Properties;
/**
* 启动参数拓展
*
* @author Chill
*/
@AutoService(LauncherService.class)
public class FactoryDataBaseLauncherServiceImpl implements LauncherService {
@Override
public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
Properties props = System.getProperties();
// 开启多数据源
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true");
// 指定注册配置信息
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].data-id", NacosConstant.dataId(appName, profile));
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].group", NacosConstant.NACOS_CONFIG_GROUP);
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].refresh", NacosConstant.NACOS_CONFIG_REFRESH);
// 指定注册IP
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.ip", "127.0.0.1");
// 指定注册端口
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.port", "8200");
// 自定义命名空间
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", LauncherConstant.NACOS_NAMESPACE);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", LauncherConstant.NACOS_NAMESPACE);
// 自定义分组
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.group", NacosConstant.NACOS_CONFIG_GROUP);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.group", NacosConstant.NACOS_CONFIG_GROUP);
}
@Override
public int getOrder() {
return 20;
}
}

16
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/DeliveryNoteMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.jinpai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.jinpai.entity.DeliveryNoteEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 发货单 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface DeliveryNoteMapper extends BaseMapper<DeliveryNoteEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryNodeOrderMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.jinpai.mapper.DeliveryNoteMapper">
</mapper>

16
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryOrderLogMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.jinpai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.jinpai.entity.FactoryOrderLogEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 工厂订单日志 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface FactoryOrderLogMapper extends BaseMapper<FactoryOrderLogEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/FactoryOrderLogMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.jinpai.mapper.FactoryOrderLogMapper">
</mapper>

16
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/OrderInfoMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.jinpai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.jinpai.entity.OrderInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 订单信息 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface OrderInfoMapper extends BaseMapper<OrderInfoEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/OrderInfoMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.jinpai.mapper.OrderInfoMapper">
</mapper>

16
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/PackageInfoMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.jinpai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.jinpai.entity.PackageInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 装箱包信息 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface PackageInfoMapper extends BaseMapper<PackageInfoEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mapper/PackageInfoMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.jinpai.mapper.PackageInfoMapper">
</mapper>

334
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/mq/FactoryOrderListener.java

@ -0,0 +1,334 @@
package com.logpm.factorydata.jinpai.mq;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.logpm.factorydata.base.feign.IFactoryDataBaseClient;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.jinpai.entity.FactoryOrderLogEntity;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.PatternConstant;
import org.springblade.common.constant.factorydata.FactoryDataConstants;
import org.springblade.core.redis.cache.BladeRedis;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 监听索菲亚订单数据
*
* @author zhaoqiaobo
* @create 2024-03-18
*/
@Slf4j
@Component
@AllArgsConstructor
public class FactoryOrderListener {
private final BladeRedis bladeRedis;
private final IFactoryDataBaseClient baseClient;
private final IFactoryDataClient factoryDataClient;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FactoryDataConstants.Mq.Queues.JP_FACTORY_ORDER),
exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.FACTORY_ORDER, type = ExchangeTypes.TOPIC),
key = FactoryDataConstants.Mq.RoutingKeys.JP_FACTORY_ORDER
))
@Transactional(rollbackFor = Exception.class)
public void factoryOrder(String msg) {
log.info("处理金牌订单:{}", msg);
if (StrUtil.isEmpty(msg)) {
log.error("消息内容为空");
return;
}
FactoryOrderLogEntity vo = JSONUtil.toBean(msg, FactoryOrderLogEntity.class);
if (ObjectUtil.isEmpty(vo)) {
log.error("消息内容为空");
return;
}
// 幂等控制,同一个入库单号只能入一次
// if (CollUtil.isNotEmpty(receiptService.list(Wrappers.<ZbReceiptEntity>lambdaQuery().eq(ZbReceiptEntity::getTaskCode, code)))) {
// log.error("渠道单号已推送过了");
// return;
// }
// 查询当前这次推送的数据中的所有包件,校验其是否在数据库中已存在,存在则不保存
Set<String> packageCode = new HashSet<>();
// List<OrderPackageDTO> details = vo.getDetails();
// if (CollUtil.isNotEmpty(details)) {
// // 收集包件编码
// List<String> collect = details.stream().map(OrderPackageDTO::getPackageCode).collect(Collectors.toList());
// if (CollUtil.isNotEmpty(collect)) {
// List<OrderPackageDTO> packageCodes = orderPackageService.findByPackageCodes(collect);
// if (CollUtil.isNotEmpty(packageCodes)) {
// // 将packageCodes中的数据存到packageCode中
// packageCodes.forEach(item -> {
// packageCode.add(item.getPackageCode());
// });
// }
// }
// }
// ZbReceiptEntity zbReceiptEntity = new ZbReceiptEntity();
// BeanUtil.copyProperties(vo, zbReceiptEntity);
// // 保存订单数据
// receiptService.save(zbReceiptEntity);
// if (CollUtil.isNotEmpty(details)) {
// List<ZbOrderPackageEntity> packageEntities = new ArrayList<>();
// List<ZbPackageInfoEntity> packageInfoEntities = new ArrayList<>();
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// log.info(" 接收志邦数据:包条码 {} 已存在数据库中,不保存。", detail.getPackageCode());
// continue;
// }
// ZbOrderPackageEntity packageEntity = new ZbOrderPackageEntity();
// BeanUtil.copyProperties(detail, packageEntity);
// packageEntity.setReceiptId(zbReceiptEntity.getId());
// packageEntities.add(packageEntity);
// }
// // 保存包件数据
// orderPackageService.saveBatch(packageEntities);
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// continue;
// }
// Long detailId = null;
// for (ZbOrderPackageEntity packageEntity : packageEntities) {
// if (ObjectUtil.equal(packageEntity.getPackageCode(), detail.getPackageCode())) {
// detailId = packageEntity.getId();
// }
// }
// List<PackageInfoDTO> items = detail.getItems();
// if (CollUtil.isNotEmpty(items)) {
// for (PackageInfoDTO item : items) {
// ZbPackageInfoEntity packageInfoEntity = new ZbPackageInfoEntity();
// BeanUtil.copyProperties(item, packageInfoEntity);
// packageInfoEntity.setPackageId(detailId);
// packageInfoEntities.add(packageInfoEntity);
// }
// }
// }
// // 保存物料数据
// packageInfoService.saveBatch(packageInfoEntities);
// }
// 处理暂存单
// buildAdvance(vo, packageCode);
}
// private void buildAdvance(DeliveryNoteVO vo, Set packageCode) {
// // 新起线程构建暂存单发送mq
// ThreadPoolUtil.getThreadPool().submit(() -> {
// Long startWarehouseId = null;
// String startWarehouseName = null;
// String tenantId = null;
// // 获取工厂基地绑定的始发仓信息
// R<FactoryWarehouseBindVO> warehouseByBrandAndSiteName = baseClient.getWarehouseByBrandAndSiteName(vo.getSenderName(), vo.getSenderName());
// if (ObjectUtil.equal(HttpConstants.HTTP.HTTP_RESOURCE_CODE.SUCCESS_CODE, warehouseByBrandAndSiteName.getCode())) {
// FactoryWarehouseBindVO data = warehouseByBrandAndSiteName.getData();
// if (ObjectUtil.isNotNull(data)) {
// startWarehouseId = data.getWarehouseId();
// startWarehouseName = data.getWarehouseName();
// tenantId = data.getTenantId();
// }
// }
// Map<String, List<OrderPackageDTO>> advanceMap = new HashMap<>();
// List<OrderPackageDTO> details = vo.getDetails();
// // 入库单号 + 订单自编号 + 发车单号 一个暂存单
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// log.info(" 接收志邦数据:包条码 {} 已存在数据库中,不生成暂存单。", detail.getPackageCode());
// continue;
// }
// String taskCode = vo.getTaskCode();
// String departCode = vo.getDepartCode();
// String platformOrderCode = detail.getPlatformOrderCode();
// String advanceKey = taskCode + departCode + platformOrderCode;
// if (advanceMap.containsKey(advanceKey)) {
// advanceMap.get(advanceKey).add(detail);
// } else {
// ArrayList<OrderPackageDTO> orderPackageDTOS = new ArrayList<>();
// orderPackageDTOS.add(detail);
// advanceMap.put(advanceKey, orderPackageDTOS);
// }
// }
// // 组装暂存单数据
// List<JSONObject> advances = new ArrayList<>();
// for (Map.Entry<String, List<OrderPackageDTO>> stringListEntry : advanceMap.entrySet()) {
// List<OrderPackageDTO> value = stringListEntry.getValue();
// TrunklineAdvanceEntity advanceEntity = new TrunklineAdvanceEntity();
// advanceEntity.setTenantId(tenantId);
// advanceEntity.setStatus(0);
// advanceEntity.setIsDeleted(0);
// advanceEntity.setHasPackage(CollUtil.isNotEmpty(vo.getDetails()) ? 1 : 0);
// advanceEntity.setOrderType(vo.getOrderType());
// advanceEntity.setBrand(vo.getSenderName());
// advanceEntity.setSiteName("");
// advanceEntity.setArea("");
// advanceEntity.setTotalNum(CollUtil.isNotEmpty(value) ? value.size() : 0);
// advanceEntity.setPackName("");
// advanceEntity.setPackCode("");
// advanceEntity.setWarehouseId(startWarehouseId);
// advanceEntity.setWarehouseName(startWarehouseName);
//
// advanceEntity.setIsGcp(0);
// advanceEntity.setCarrierName(vo.getVendorName());
// advanceEntity.setSystemType("线上");
// advanceEntity.setMatingType("");
// advanceEntity.setSenderName(vo.getSenderName());
// advanceEntity.setSenderPhone(vo.getSenderTel());
// advanceEntity.setSenderAddress(vo.getSenderAddress());
// advanceEntity.setWaybillStatus("0");
// advanceEntity.setWaybillNo("");
// advanceEntity.setTrainNumber(vo.getDepartCode());
// advanceEntity.setFreezeStatus("0");
//
// advanceEntity.setSenderFactory(vo.getSenderName());
// List<JSONObject> packageList = new ArrayList<>();
// for (OrderPackageDTO orderPackageDTO : value) {
// advanceEntity.setOrderCode(orderPackageDTO.getPlatformOrderCode());
// advanceEntity.setDealerCode(orderPackageDTO.getCustomerCode());
// advanceEntity.setDealerName(orderPackageDTO.getCustomerName());
// advanceEntity.setStoreCode(orderPackageDTO.getCustomerCode());
// advanceEntity.setStoreName(orderPackageDTO.getCustomerName());
// advanceEntity.setServiceNum(orderPackageDTO.getRelationOrderCode());
// advanceEntity.setCustomerName(orderPackageDTO.getReceiverName());
// advanceEntity.setCustomerPhone(orderPackageDTO.getReceiverMobile());
// advanceEntity.setCustomerAddress(orderPackageDTO.getReceiverAddress());
//
// // 封装包件
// TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity();
// advanceDetailEntity.setWarehouseId(startWarehouseId);
// advanceDetailEntity.setWarehouseName(startWarehouseName);
//// advanceDetailEntity.setIncomingWarehouseId(0L);
//// advanceDetailEntity.setIncomingWarehouseName("");
// // 根据志邦的一流单标识赋值
// advanceEntity.setLegacyStatus("0");
// if (ObjectUtil.equal(orderPackageDTO.getLegacyFlag(), "Y")) {
// advanceEntity.setLegacyStatus("1");
// }
//
// advanceDetailEntity.setOrderCode(orderPackageDTO.getPlatformOrderCode());
// advanceDetailEntity.setBrand(vo.getSenderName());
// advanceDetailEntity.setSystemType("线上");
// advanceDetailEntity.setFirstPackName(orderPackageDTO.getPackageTypeName());
// advanceDetailEntity.setFirstPackCode(orderPackageDTO.getPackageType());
// // 获取映射志邦映射品类信息
// ZbCategoryContrastEntity zbCategoryContrastEntity = buildZbCategoryContrastEntityCache(orderPackageDTO.getPackageClass());
// if (zbCategoryContrastEntity != null) {
// advanceDetailEntity.setSecondPackName(zbCategoryContrastEntity.getSecondName());//二级品类名称
// advanceDetailEntity.setSecondPackCode(zbCategoryContrastEntity.getSecondCode());//二级品类
// advanceDetailEntity.setThirdPackName(zbCategoryContrastEntity.getThirdName());//三级品类名称
// advanceDetailEntity.setThirdPackCode(zbCategoryContrastEntity.getThirdCode());//三级品类
// } else {
// advanceDetailEntity.setSecondPackName(StringUtil.isBlank(orderPackageDTO.getPackageClass()) ? "" : orderPackageDTO.getPackageClass());//二级品类名称
// advanceDetailEntity.setSecondPackCode("");//二级品类
// advanceDetailEntity.setThirdPackName(StringUtil.isBlank(orderPackageDTO.getPackageClass()) ? "" : orderPackageDTO.getPackageClass());//三级品类名称
// advanceDetailEntity.setThirdPackCode("");//三级品类
// }
// advanceDetailEntity.setSiteName("");
// advanceDetailEntity.setSiteCode("");
// String planQty = orderPackageDTO.getPlanQty();
// advanceDetailEntity.setQuantity((StrUtil.isNotBlank(planQty) && NumberUtil.isNumber(planQty)) ? Convert.toInt(planQty) : 0);
// advanceDetailEntity.setOrderPackageCode(orderPackageDTO.getPackageCode());
// advanceDetailEntity.setTrainNumber(vo.getDepartCode());
// advanceDetailEntity.setServiceNum(orderPackageDTO.getRelationOrderCode());
// advanceDetailEntity.setWaybillNo("");
// advanceDetailEntity.setPackageStatus("0");
// advanceDetailEntity.setWeight(StrUtil.isNotBlank(orderPackageDTO.getTotalGrossWeight()) ? new BigDecimal(orderPackageDTO.getTotalGrossWeight()) : BigDecimal.ZERO);
// advanceDetailEntity.setVolume(StrUtil.isNotBlank(orderPackageDTO.getTotalVolume()) ? new BigDecimal(orderPackageDTO.getTotalVolume()) : BigDecimal.ZERO);
//// advanceDetailEntity.setChargeType(0);
// advanceDetailEntity.setSupple("");
// advanceDetailEntity.setManifest("");
// advanceDetailEntity.setReturnNum("");
// advanceDetailEntity.setSendDateStr(DateUtil.formatLocalDateTime(LocalDateTime.now()));
// advanceDetailEntity.setCarNumber("");
// advanceDetailEntity.setGoodsMan("");
// advanceDetailEntity.setTenantId(tenantId);
// advanceDetailEntity.setStatus(0);
// advanceDetailEntity.setIsDeleted(0);
// List<JSONObject> itemJsons = new ArrayList<>();
// List<PackageInfoDTO> items = orderPackageDTO.getItems();
// for (PackageInfoDTO item : items) {
// TrunklineDetailProductEntity detailProductEntity = new TrunklineDetailProductEntity();
// detailProductEntity.setTenantId(tenantId);
// detailProductEntity.setWarehouseId(startWarehouseId);
// detailProductEntity.setWarehouseName(startWarehouseName);
// detailProductEntity.setUnitNo(orderPackageDTO.getPackageCode());
// detailProductEntity.setProductCode(item.getItemCode());
// detailProductEntity.setProductName(item.getItemName());
// detailProductEntity.setQuantity(item.getPlanQty());
// detailProductEntity.setTenantId(TenantNum.HUITONGCODE);
// detailProductEntity.setStatus(0);
// detailProductEntity.setIsDeleted(0);
// itemJsons.add(JSONUtil.parseObj(detailProductEntity));
// }
// JSONObject entries = JSONUtil.parseObj(advanceDetailEntity);
// entries.set("items", itemJsons);
// packageList.add(entries);
// }
// // 转成json对象,然后将包件明细放到detail中
// JSONObject entries = JSONUtil.parseObj(advanceEntity);
// entries.set("details", JSONUtil.toJsonStr(packageList));
// advances.add(entries);
// }
// // 将组装好的暂存单发送到 MQ ,由暂存单服务统一消费SendMsg.
// if (CollUtil.isNotEmpty(advances)) {
// for (JSONObject advance : advances) {
// SendMsg sendMsg = SendMsg.builder().exchange(FactoryDataConstants.Mq.Exchanges.ADVANCE_ORDER)
// .routingKey(FactoryDataConstants.Mq.RoutingKeys.ADVANCE_ORDER).message(JSONUtil.toJsonStr(advance)).build();
// factoryDataClient.sendMessage(sendMsg);
// }
// }
// });
// }
//
// private ZbCategoryContrastEntity buildZbCategoryContrastEntityCache(String packageClass) {
//
//
// if (StringUtil.isBlank(packageClass)) {
// return null;
// }
// if (containsChinese(packageClass)) {
// return null;
// }
//
// String key = TenantNum.HUITONGCODE + ":" + ZbCategoryContrastEntity.class.getName() + ":" + packageClass;
// ZbCategoryContrastEntity zbCategoryContrastEntity = bladeRedis.get(key);
// if (zbCategoryContrastEntity == null) {
// QueryWrapper<ZbCategoryContrastEntity> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("source_code", packageClass);
// queryWrapper.eq("status", "1");
// zbCategoryContrastEntity = zbCategoryContrastMapper.selectOne(queryWrapper);
// if (!Objects.isNull(zbCategoryContrastEntity)) {
// // 缓存起来
// bladeRedis.setEx(key, zbCategoryContrastEntity, 3600 * 24L);
// }
// }
// return zbCategoryContrastEntity;
//
//
// }
/**
* 验证参数中是否包含中文
*
* @param str 匹配参数
* @return true 包含中文 false 不包含中文
*/
private boolean containsChinese(String str) {
Pattern pattern = Pattern.compile(PatternConstant.REGEX_CHINESE);
Matcher matcher = pattern.matcher(str);
return matcher.find();
}
}

20
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/pros/FactoryDataJinPaiProperties.java

@ -0,0 +1,20 @@
package com.logpm.factorydata.jinpai.pros;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* FactoryProperties
*
* @author pref
*/
@Data
@ConfigurationProperties(prefix = "logpm")
public class FactoryDataJinPaiProperties {
/**
* 名称
*/
private String name;
}

22
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/DeliveryNoteService.java

@ -0,0 +1,22 @@
package com.logpm.factorydata.jinpai.service;
import com.logpm.factorydata.jinpai.entity.DeliveryNoteEntity;
import com.logpm.factorydata.jinpai.vo.DeliveryNoteVO;
import com.logpm.factorydata.jinpai.vo.OrderInfoVO;
import com.logpm.factorydata.jinpai.vo.PackageInfoVO;
import org.springblade.core.mp.base.BaseService;
/**
* 索菲亚发货单 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface DeliveryNoteService extends BaseService<DeliveryNoteEntity> {
String order(DeliveryNoteVO vo);
String detail(OrderInfoVO vo);
String packageInfo(PackageInfoVO vo);
}

14
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/FactoryOrderLogService.java

@ -0,0 +1,14 @@
package com.logpm.factorydata.jinpai.service;
import com.logpm.factorydata.jinpai.entity.FactoryOrderLogEntity;
import org.springblade.core.mp.base.BaseService;
/**
* 工厂订单日志 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface FactoryOrderLogService extends BaseService<FactoryOrderLogEntity> {
}

14
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/OrderInfoService.java

@ -0,0 +1,14 @@
package com.logpm.factorydata.jinpai.service;
import com.logpm.factorydata.jinpai.entity.OrderInfoEntity;
import org.springblade.core.mp.base.BaseService;
/**
* 订单信息 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface OrderInfoService extends BaseService<OrderInfoEntity> {
}

14
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/PackageInfoService.java

@ -0,0 +1,14 @@
package com.logpm.factorydata.jinpai.service;
import com.logpm.factorydata.jinpai.entity.PackageInfoEntity;
import org.springblade.core.mp.base.BaseService;
/**
* 装箱包信息 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface PackageInfoService extends BaseService<PackageInfoEntity> {
}

146
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/DeliveryNoteServiceImpl.java

@ -0,0 +1,146 @@
package com.logpm.factorydata.jinpai.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.jinpai.entity.DeliveryNoteEntity;
import com.logpm.factorydata.jinpai.entity.FactoryOrderLogEntity;
import com.logpm.factorydata.jinpai.mapper.DeliveryNoteMapper;
import com.logpm.factorydata.jinpai.service.DeliveryNoteService;
import com.logpm.factorydata.jinpai.service.FactoryOrderLogService;
import com.logpm.factorydata.jinpai.vo.DeliveryNoteVO;
import com.logpm.factorydata.jinpai.vo.OrderInfoVO;
import com.logpm.factorydata.jinpai.vo.PackageInfoVO;
import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.IOUtils;
import org.jetbrains.annotations.NotNull;
import org.springblade.common.constant.factorydata.FactoryDataConstants;
import org.springblade.common.utils.FileLogsUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tool.api.R;
import org.springblade.resource.feign.IOssClient;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
/**
* 发货单 业务实现类
*
* @Author zqb
* @Date 2024/4/26
**/
@Slf4j
@Service
@AllArgsConstructor
public class DeliveryNoteServiceImpl extends BaseServiceImpl<DeliveryNoteMapper, DeliveryNoteEntity> implements DeliveryNoteService {
private final IFactoryDataClient factoryDataClient;
private final FactoryOrderLogService factoryOrderLogService;
private final IOssClient ossClient;
@Override
public String order(DeliveryNoteVO vo) {
// 1 上传数据到 minio 获取到地址
String url = uploadFile(JSONObject.toJSONString(vo));
// 2 保存地址到数据库
FactoryOrderLogEntity logEntity = new FactoryOrderLogEntity();
logEntity.setType(1);
logEntity.setSaxStatus(0);
logEntity.setLogUrl(url);
logEntity.setDimension(1);
factoryOrderLogService.save(logEntity);
// 3 将消息发送给 mq,解析保存
SendMsg build = SendMsg.builder().exchange(FactoryDataConstants.Mq.Exchanges.FACTORY_ORDER)
.routingKey(FactoryDataConstants.Mq.RoutingKeys.JP_FACTORY_ORDER).message(JSONUtil.toJsonStr(logEntity)).build();
factoryDataClient.sendMessage(build);
return "成功";
}
@Override
public String detail(OrderInfoVO vo) {
// 1 上传数据到 minio 获取到地址
String url = uploadFile(JSONObject.toJSONString(vo));
// 2 保存地址到数据库
FactoryOrderLogEntity logEntity = new FactoryOrderLogEntity();
logEntity.setType(1);
logEntity.setSaxStatus(0);
logEntity.setLogUrl(url);
logEntity.setDimension(2);
factoryOrderLogService.save(logEntity);
// 3 将消息发送给 mq,解析保存
SendMsg build = SendMsg.builder().exchange(FactoryDataConstants.Mq.Exchanges.FACTORY_ORDER)
.routingKey(FactoryDataConstants.Mq.RoutingKeys.JP_FACTORY_ORDER).message(JSONUtil.toJsonStr(logEntity)).build();
factoryDataClient.sendMessage(build);
return "成功";
}
@Override
public String packageInfo(PackageInfoVO vo) {
// 1 上传数据到 minio 获取到地址
String url = uploadFile(JSONObject.toJSONString(vo));
// 2 保存地址到数据库
FactoryOrderLogEntity logEntity = new FactoryOrderLogEntity();
logEntity.setType(1);
logEntity.setSaxStatus(0);
logEntity.setLogUrl(url);
logEntity.setDimension(3);
factoryOrderLogService.save(logEntity);
// 3 将消息发送给 mq,解析保存
SendMsg build = SendMsg.builder().exchange(FactoryDataConstants.Mq.Exchanges.FACTORY_ORDER)
.routingKey(FactoryDataConstants.Mq.RoutingKeys.JP_FACTORY_ORDER).message(JSONUtil.toJsonStr(logEntity)).build();
factoryDataClient.sendMessage(build);
return "成功";
}
private String uploadFile(String body) {
//文本内容和保存为本地文件 并上传
String logPath = FileLogsUtil.saveFileLogs(body);
log.info(">>> 文件路径 {}", logPath);
MultipartFile multi = getMultipartFile(logPath);
//上传到服务器
R r = ossClient.fileUpload(multi, "jp-order-logs");
if (r.isSuccess()) {
BladeFile data = (BladeFile) r.getData();
// 删除本地文件
FileUtil.del(logPath);
return data.getLink();
}
return null;
}
@NotNull
private MultipartFile getMultipartFile(String logPath) {
File file = new File(logPath);
// File 转 MultipartFile
FileItem item = new DiskFileItemFactory().createItem("file"
, MediaType.MULTIPART_FORM_DATA_VALUE
, true
, file.getName());
try (
InputStream input = Files.newInputStream(file.toPath());
OutputStream os = item.getOutputStream()) {
// 流转移
IOUtils.copy(input, os);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid file: " + e, e);
}
return new CommonsMultipartFile(item);
}
}

22
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/FactoryOrderLogServiceImpl.java

@ -0,0 +1,22 @@
package com.logpm.factorydata.jinpai.service.impl;
import com.logpm.factorydata.jinpai.entity.FactoryOrderLogEntity;
import com.logpm.factorydata.jinpai.mapper.FactoryOrderLogMapper;
import com.logpm.factorydata.jinpai.service.FactoryOrderLogService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
* 工厂订单日志 业务实现类
*
* @Author zqb
* @Date 2024/4/26
**/
@Slf4j
@Service
@AllArgsConstructor
public class FactoryOrderLogServiceImpl extends BaseServiceImpl<FactoryOrderLogMapper, FactoryOrderLogEntity> implements FactoryOrderLogService {
}

22
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/OrderInfoServiceImpl.java

@ -0,0 +1,22 @@
package com.logpm.factorydata.jinpai.service.impl;
import com.logpm.factorydata.jinpai.entity.OrderInfoEntity;
import com.logpm.factorydata.jinpai.mapper.OrderInfoMapper;
import com.logpm.factorydata.jinpai.service.OrderInfoService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
* 订单信息 业务实现类
*
* @Author zqb
* @Date 2024/4/26
**/
@Slf4j
@Service
@AllArgsConstructor
public class OrderInfoServiceImpl extends BaseServiceImpl<OrderInfoMapper, OrderInfoEntity> implements OrderInfoService {
}

22
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/service/impl/PackageInfoServiceImpl.java

@ -0,0 +1,22 @@
package com.logpm.factorydata.jinpai.service.impl;
import com.logpm.factorydata.jinpai.entity.PackageInfoEntity;
import com.logpm.factorydata.jinpai.mapper.PackageInfoMapper;
import com.logpm.factorydata.jinpai.service.PackageInfoService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
* 装箱包信息 业务实现类
*
* @Author zqb
* @Date 2024/4/26
**/
@Slf4j
@Service
@AllArgsConstructor
public class PackageInfoServiceImpl extends BaseServiceImpl<PackageInfoMapper, PackageInfoEntity> implements PackageInfoService {
}

43
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/util/ThreadPoolUtil.java

@ -0,0 +1,43 @@
package com.logpm.factorydata.jinpai.util;
import cn.hutool.core.thread.ExecutorBuilder;
import cn.hutool.core.thread.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutorService;
/**
* @author zhaoqiaobo
* @create 2024-03-14 10:26
*/
@Slf4j
public class ThreadPoolUtil {
private ThreadPoolUtil() {
}
/**
* 线程池
*/
public static ExecutorService executor = null;
static {
init();
}
synchronized public static void init() {
if (null != executor) {
executor.shutdownNow();
}
executor = ExecutorBuilder.create()
.setCorePoolSize(8)
.setMaxPoolSize(20)
.setThreadFactory(ThreadFactoryBuilder.create().setNamePrefix("logpm-factory-data-sfy-").build())
.useSynchronousQueue().build();
}
public static ExecutorService getThreadPool() {
return executor;
}
}

24
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/DeliveryNoteVO.java

@ -0,0 +1,24 @@
package com.logpm.factorydata.jinpai.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.logpm.factorydata.jinpai.entity.DeliveryNoteEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.List;
/**
* 送货单 实体类
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@ApiModel(value = "发货单", description = "发货单")
@EqualsAndHashCode(callSuper = true)
public class DeliveryNoteVO extends DeliveryNoteEntity {
}

21
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/OrderInfoVO.java

@ -0,0 +1,21 @@
package com.logpm.factorydata.jinpai.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.logpm.factorydata.jinpai.entity.OrderInfoEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 订单信息
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@ApiModel(value = "订单信息", description = "订单信息")
@EqualsAndHashCode(callSuper = true)
public class OrderInfoVO extends OrderInfoEntity {
}

18
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/vo/PackageInfoVO.java

@ -0,0 +1,18 @@
package com.logpm.factorydata.jinpai.vo;
import com.logpm.factorydata.jinpai.entity.PackageInfoEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 装箱包信息
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@ApiModel(value = "装箱包信息", description = "装箱包信息")
@EqualsAndHashCode(callSuper = true)
public class PackageInfoVO extends PackageInfoEntity {
}

71
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-dev.yml

@ -0,0 +1,71 @@
#服务器端口
server:
port: 18940
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#rabbitmq配置
rabbitmq:
host: 192.168.2.46
port: 5672
username: admin
password: admin
#虚拟host 可以不设置,使用server默认host
virtual-host: /
#确认消息已发送到队列(Queue)
publisher-returns: true
publisher-confirm-type: correlated
# 手动提交消息
listener:
simple:
acknowledge-mode: auto
default-requeue-rejected: false
retry:
enabled: true # 开启消费者失败重试
initial-interval: 1000 # 初识的失败等待时长为1秒
multiplier: 1 # 失败的等待时长倍数,下次等待时长 = multiplier * last-interval
max-attempts: 3 # 最大重试次数
stateless: true # true无状态;false有状态。如果业务中包含事务,这里改为false
direct:
acknowledge-mode: manual
template:
mandatory: true
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.master.url}
username: ${blade.datasource.factorydata-jinpai.master.username}
password: ${blade.datasource.factorydata-jinpai.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.slave.url}
username: ${blade.datasource.factorydata-jinpai.slave.username}
password: ${blade.datasource.factorydata-jinpai.slave.password}

45
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-prod.yml

@ -0,0 +1,45 @@
#服务器端口
server:
port: 18940
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.master.url}
username: ${blade.datasource.factorydata-jinpai.master.username}
password: ${blade.datasource.factorydata-jinpai.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.slave.url}
username: ${blade.datasource.factorydata-jinpai.slave.username}
password: ${blade.datasource.factorydata-jinpai.slave.password}

71
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application-test.yml

@ -0,0 +1,71 @@
#服务器端口
server:
port: 18940
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#rabbitmq配置
rabbitmq:
host: 192.168.2.110
port: 5672
username: admin
password: Slwk@123654
#虚拟host 可以不设置,使用server默认host
virtual-host: /
#确认消息已发送到队列(Queue)
publisher-returns: true
publisher-confirm-type: correlated
# 手动提交消息
listener:
simple:
acknowledge-mode: auto
default-requeue-rejected: false
retry:
enabled: true # 开启消费者失败重试
initial-interval: 1000 # 初识的失败等待时长为1秒
multiplier: 1 # 失败的等待时长倍数,下次等待时长 = multiplier * last-interval
max-attempts: 3 # 最大重试次数
stateless: true # true无状态;false有状态。如果业务中包含事务,这里改为false
direct:
acknowledge-mode: manual
template:
mandatory: true
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.master.url}
username: ${blade.datasource.factorydata-jinpai.master.username}
password: ${blade.datasource.factorydata-jinpai.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.factorydata-jinpai.slave.url}
username: ${blade.datasource.factorydata-jinpai.slave.username}
password: ${blade.datasource.factorydata-jinpai.slave.password}

31
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/application.yml

@ -0,0 +1,31 @@
#mybatis-plus配置
mybatis-plus:
mapper-locations: classpath:com/logpm/**/mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.logpm.**.entity
#swagger扫描路径配置
swagger:
base-packages:
- org.springblade
- com.logpm
#oss配置
oss:
enabled: true
name: minio
tenant-mode: false
endpoint: http://8.137.14.82:9000
access-key: minio
secret-key: 123123123
bucket-name: bladex
logging:
config: classpath:logback.xml
spring:
main:
allow-circular-references: true

40
blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/resources/logback.xml

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" debug="false">
<contextName>logback</contextName>
<property name="log.path" value="./data/logpm-basic/logs/logs.log"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration>

14
blade-service/logpm-factory-data/logpm-factory-data-olo/Dockerfile

@ -0,0 +1,14 @@
FROM bladex/alpine-java:openjdk8-openj9_cn_slim
MAINTAINER h5u@163.com
RUN mkdir -p /logpm/logpm-factory-data-olo
WORKDIR /logpm/logpm-factory-data-olo
EXPOSE 18930
ADD ./target/logpm-factory-data-olo.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","-Xms128m","-Xmx512m", "app.jar"]
CMD ["--spring.profiles.active=test"]

97
blade-service/logpm-factory-data/logpm-factory-data-olo/pom.xml

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>logpm-factory-data</artifactId>
<groupId>org.springblade</groupId>
<version>3.2.0.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>${bladex.project.version}</version>
<packaging>jar</packaging>
<artifactId>logpm-factory-data-olo</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-factory-data-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-swagger</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-trunkline-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-factory-data-base-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-oss</artifactId>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-resource-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<configuration>
<username>${docker.username}</username>
<password>${docker.password}</password>
<repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

20
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/FactoryDataOloApplication.java

@ -0,0 +1,20 @@
package com.logpm.factorydata;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
/**
* 我乐工厂数据启动类
*
* @author zhaoqiaobo
* @create 2024-4-26
*/
@BladeCloudApplication
public class FactoryDataOloApplication {
public static void main(String[] args) {
BladeApplication.run(ModuleNameConstant.LOGPM_FACTORY_DATA_OLO_NAME, FactoryDataOloApplication.class, args);
}
}

40
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/config/FactoryDataOloConfiguration.java

@ -0,0 +1,40 @@
/*
* 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.factorydata.olo.config;
import com.logpm.factorydata.olo.pros.FactoryDataOloProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 配置feignmybatis包名properties
*
* @author chaos
*/
@Configuration(proxyBeanMethods = false)
@ComponentScan({"org.springblade", "com.logpm"})
@EnableFeignClients({"org.springblade", "com.logpm"})
@MapperScan({"org.springblade.**.mapper.**", "com.logpm.**.mapper.**"})
@EnableConfigurationProperties(FactoryDataOloProperties.class)
public class FactoryDataOloConfiguration {
}

54
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/controller/OrderController.java

@ -0,0 +1,54 @@
package com.logpm.factorydata.olo.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.factorydata.olo.service.DeliveryNoteService;
import com.logpm.factorydata.olo.vo.DeliveryNoteVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* 工厂订单 前端控制器
*
* @author zhaoqiaobo
* @create 2024-03-21 19:27
*/
@Slf4j
@RestController
@RequestMapping("/order")
@AllArgsConstructor
@Api(value = "工厂订单", tags = "工厂订单")
public class OrderController {
private final DeliveryNoteService service;
@ResponseBody
@PostMapping
@ApiOperationSupport(order = 1)
@ApiOperation(value = "工厂订单", notes = "工厂订单")
public R order(@RequestBody Map<String,String> param) {
log.info("接收工厂订单:{} ", JSONUtil.toJsonStr(param));
DeliveryNoteVO vo = BeanUtil.toBean(param, DeliveryNoteVO.class);
String res = "";
try {
res = service.order(vo);
} catch (Exception e) {
log.error("工厂订单异常:{} ", e);
return R.success("服务器异常");
}
return R.success(res);
}
}

92
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/DeliveryNoteEntity.java

@ -0,0 +1,92 @@
package com.logpm.factorydata.olo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* 送货单 实体类
*
* @author zhaoqiaobo
* @create 2024-04-26
*/
@Data
@TableName("olo_delivery_note")
@ApiModel(value = "我乐发运单", description = "我乐发运单")
@EqualsAndHashCode(callSuper = true)
public class DeliveryNoteEntity extends BaseEntity {
@ApiModelProperty(name = "日志id")
private String logId;
@ApiModelProperty(name = "发运汇总单号")
private String shipmentNo;
@ApiModelProperty(name = "发运分单号")
private String shipmentSpliNo;
@ApiModelProperty(name = "顾客姓名")
private String endingCustomer;
@ApiModelProperty(name = "顾客地址")
private String zgkdz;
@ApiModelProperty(name = "顾客电话")
private String endingCustomerTel;
@ApiModelProperty(name = "CRM单号")
private String crmSo;
@ApiModelProperty(name = "空间")
private String space;
@ApiModelProperty(name = "SN")
private String sn;
@ApiModelProperty(name = "货物类型")
private String materialCategory;
@ApiModelProperty(name = "体积")
private String snVolume;
@ApiModelProperty(name = "重量")
private String snWeight;
@ApiModelProperty(name = "件数")
private String qty;
@ApiModelProperty(name = "货物描述")
private String materialDesc;
@ApiModelProperty(name = "汇总运价")
private String sumPrice;
@ApiModelProperty(name = "经销商名称")
private String customerName;
@ApiModelProperty(name = "经销商编码")
private String customerCode;
@ApiModelProperty(name = "经销商联系电话")
private String customerTel;
@ApiModelProperty(name = "发货城市")
private String receiveCity;
@ApiModelProperty(name = "发货城市")
private String deliveryCity;
@ApiModelProperty(name = "工厂发运日期")
private String shipmentDate;
@ApiModelProperty(name = "承运商编码")
private String carrierCode;
@ApiModelProperty(name = "承运商名称")
private String carrierName;
@ApiModelProperty(name = "物流线路名称")
private String shipmentRoute;
@ApiModelProperty(name = "服务方式(是否干仓配)")
private String isAllocation;
@ApiModelProperty(name = "发运车次号")
private String shipmentNumber;
@ApiModelProperty(name = "车牌")
private String shipmentPlateNumber;
@ApiModelProperty(name = "标识:空:原始数据;A:新增 ;D:删除")
private String flag;
@ApiModelProperty(name = "发运方式")
private String shipmentTypeDesc;
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
}

58
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/entity/FactoryOrderLogEntity.java

@ -0,0 +1,58 @@
package com.logpm.factorydata.olo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
@Data
@TableName("olo_factory_log")
@ApiModel(value = "接收工厂订单日志", description = "接收工厂订单日志")
@EqualsAndHashCode(callSuper = true)
public class FactoryOrderLogEntity extends BaseEntity {
/**
* 预留1
*/
@ApiModelProperty(name = "预留1", notes = "")
private String reserve1;
/**
* 预留2
*/
@ApiModelProperty(name = "预留2", notes = "")
private String reserve2;
/**
* 预留3
*/
@ApiModelProperty(name = "预留3", notes = "")
private String reserve3;
/**
* 预留4
*/
@ApiModelProperty(name = "预留4", notes = "")
private String reserve4;
/**
* 预留5
*/
@ApiModelProperty(name = "预留5", notes = "")
private String reserve5;
/**
* 日志文件存放地址
*/
@ApiModelProperty(name = "日志文件存放地址", notes = "")
private String logUrl;
/**
* 数据类型 1.入库数据
*/
@ApiModelProperty(name = "数据类型 1.入库数据", notes = "")
private Integer type;
/**
* 解析状态 0 未解析 1 已解析 2 解析失败
*/
@ApiModelProperty(name = "解析状态 0 未解析 1 已解析 2 解析失败", notes = "")
private Integer saxStatus;
}

60
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/launcher/FactoryDataBaseLauncherServiceImpl.java

@ -0,0 +1,60 @@
/*
* 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.factorydata.olo.launcher;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.constant.NacosConstant;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.util.Properties;
/**
* 启动参数拓展
*
* @author Chill
*/
@AutoService(LauncherService.class)
public class FactoryDataBaseLauncherServiceImpl implements LauncherService {
@Override
public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
Properties props = System.getProperties();
// 开启多数据源
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true");
// 指定注册配置信息
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].data-id", NacosConstant.dataId(appName, profile));
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].group", NacosConstant.NACOS_CONFIG_GROUP);
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].refresh", NacosConstant.NACOS_CONFIG_REFRESH);
// 指定注册IP
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.ip", "127.0.0.1");
// 指定注册端口
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.port", "8200");
// 自定义命名空间
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", LauncherConstant.NACOS_NAMESPACE);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", LauncherConstant.NACOS_NAMESPACE);
// 自定义分组
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.group", NacosConstant.NACOS_CONFIG_GROUP);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.group", NacosConstant.NACOS_CONFIG_GROUP);
}
@Override
public int getOrder() {
return 20;
}
}

16
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/DeliveryNoteMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.olo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.olo.entity.DeliveryNoteEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 发货单 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface DeliveryNoteMapper extends BaseMapper<DeliveryNoteEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryNodeOrderMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.olo.mapper.DeliveryNoteMapper">
</mapper>

16
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryOrderLogMapper.java

@ -0,0 +1,16 @@
package com.logpm.factorydata.olo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.factorydata.olo.entity.FactoryOrderLogEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 工厂订单日志 mapper
*
* @author zqb
* @since 2024-03-26
*/
@Mapper
public interface FactoryOrderLogMapper extends BaseMapper<FactoryOrderLogEntity> {
}

5
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mapper/FactoryOrderLogMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.factorydata.olo.mapper.FactoryOrderLogMapper">
</mapper>

337
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/FactoryOrderListener.java

@ -0,0 +1,337 @@
package com.logpm.factorydata.olo.mq;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.logpm.factorydata.base.feign.IFactoryDataBaseClient;
import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.olo.vo.DeliveryNoteVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.PatternConstant;
import org.springblade.common.constant.factorydata.FactoryDataConstants;
import org.springblade.core.redis.cache.BladeRedis;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 监听索菲亚订单数据
*
* @author zhaoqiaobo
* @create 2024-03-18
*/
@Slf4j
@Component
@AllArgsConstructor
public class FactoryOrderListener {
private final BladeRedis bladeRedis;
private final IFactoryDataBaseClient baseClient;
private final IFactoryDataClient factoryDataClient;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FactoryDataConstants.Mq.Queues.OLO_FACTORY_ORDER),
exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.FACTORY_ORDER, type = ExchangeTypes.TOPIC),
key = FactoryDataConstants.Mq.RoutingKeys.OLO_FACTORY_ORDER
))
@Transactional(rollbackFor = Exception.class)
public void factoryOrder(String msg) {
log.info("处理索菲亚订单:{}", msg);
if (StrUtil.isEmpty(msg)) {
log.error("消息内容为空");
return;
}
DeliveryNoteVO vo = JSONUtil.toBean(msg, DeliveryNoteVO.class);
if (ObjectUtil.isEmpty(vo)) {
log.error("消息内容为空");
return;
}
// 幂等控制,同一个入库单号只能入一次
String code = vo.getSHIPMENT_SPLIT_NO();
if (StrUtil.isEmpty(code)) {
log.error("渠道单号为空");
return;
}
// if (CollUtil.isNotEmpty(receiptService.list(Wrappers.<ZbReceiptEntity>lambdaQuery().eq(ZbReceiptEntity::getTaskCode, code)))) {
// log.error("渠道单号已推送过了");
// return;
// }
// 查询当前这次推送的数据中的所有包件,校验其是否在数据库中已存在,存在则不保存
Set<String> packageCode = new HashSet<>();
// List<OrderPackageDTO> details = vo.getDetails();
// if (CollUtil.isNotEmpty(details)) {
// // 收集包件编码
// List<String> collect = details.stream().map(OrderPackageDTO::getPackageCode).collect(Collectors.toList());
// if (CollUtil.isNotEmpty(collect)) {
// List<OrderPackageDTO> packageCodes = orderPackageService.findByPackageCodes(collect);
// if (CollUtil.isNotEmpty(packageCodes)) {
// // 将packageCodes中的数据存到packageCode中
// packageCodes.forEach(item -> {
// packageCode.add(item.getPackageCode());
// });
// }
// }
// }
// ZbReceiptEntity zbReceiptEntity = new ZbReceiptEntity();
// BeanUtil.copyProperties(vo, zbReceiptEntity);
// // 保存订单数据
// receiptService.save(zbReceiptEntity);
// if (CollUtil.isNotEmpty(details)) {
// List<ZbOrderPackageEntity> packageEntities = new ArrayList<>();
// List<ZbPackageInfoEntity> packageInfoEntities = new ArrayList<>();
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// log.info(" 接收志邦数据:包条码 {} 已存在数据库中,不保存。", detail.getPackageCode());
// continue;
// }
// ZbOrderPackageEntity packageEntity = new ZbOrderPackageEntity();
// BeanUtil.copyProperties(detail, packageEntity);
// packageEntity.setReceiptId(zbReceiptEntity.getId());
// packageEntities.add(packageEntity);
// }
// // 保存包件数据
// orderPackageService.saveBatch(packageEntities);
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// continue;
// }
// Long detailId = null;
// for (ZbOrderPackageEntity packageEntity : packageEntities) {
// if (ObjectUtil.equal(packageEntity.getPackageCode(), detail.getPackageCode())) {
// detailId = packageEntity.getId();
// }
// }
// List<PackageInfoDTO> items = detail.getItems();
// if (CollUtil.isNotEmpty(items)) {
// for (PackageInfoDTO item : items) {
// ZbPackageInfoEntity packageInfoEntity = new ZbPackageInfoEntity();
// BeanUtil.copyProperties(item, packageInfoEntity);
// packageInfoEntity.setPackageId(detailId);
// packageInfoEntities.add(packageInfoEntity);
// }
// }
// }
// // 保存物料数据
// packageInfoService.saveBatch(packageInfoEntities);
// }
// 处理暂存单
// buildAdvance(vo, packageCode);
}
// private void buildAdvance(DeliveryNoteVO vo, Set packageCode) {
// // 新起线程构建暂存单发送mq
// ThreadPoolUtil.getThreadPool().submit(() -> {
// Long startWarehouseId = null;
// String startWarehouseName = null;
// String tenantId = null;
// // 获取工厂基地绑定的始发仓信息
// R<FactoryWarehouseBindVO> warehouseByBrandAndSiteName = baseClient.getWarehouseByBrandAndSiteName(vo.getSenderName(), vo.getSenderName());
// if (ObjectUtil.equal(HttpConstants.HTTP.HTTP_RESOURCE_CODE.SUCCESS_CODE, warehouseByBrandAndSiteName.getCode())) {
// FactoryWarehouseBindVO data = warehouseByBrandAndSiteName.getData();
// if (ObjectUtil.isNotNull(data)) {
// startWarehouseId = data.getWarehouseId();
// startWarehouseName = data.getWarehouseName();
// tenantId = data.getTenantId();
// }
// }
// Map<String, List<OrderPackageDTO>> advanceMap = new HashMap<>();
// List<OrderPackageDTO> details = vo.getDetails();
// // 入库单号 + 订单自编号 + 发车单号 一个暂存单
// for (OrderPackageDTO detail : details) {
// if (packageCode.contains(detail.getPackageCode())) {
// log.info(" 接收志邦数据:包条码 {} 已存在数据库中,不生成暂存单。", detail.getPackageCode());
// continue;
// }
// String taskCode = vo.getTaskCode();
// String departCode = vo.getDepartCode();
// String platformOrderCode = detail.getPlatformOrderCode();
// String advanceKey = taskCode + departCode + platformOrderCode;
// if (advanceMap.containsKey(advanceKey)) {
// advanceMap.get(advanceKey).add(detail);
// } else {
// ArrayList<OrderPackageDTO> orderPackageDTOS = new ArrayList<>();
// orderPackageDTOS.add(detail);
// advanceMap.put(advanceKey, orderPackageDTOS);
// }
// }
// // 组装暂存单数据
// List<JSONObject> advances = new ArrayList<>();
// for (Map.Entry<String, List<OrderPackageDTO>> stringListEntry : advanceMap.entrySet()) {
// List<OrderPackageDTO> value = stringListEntry.getValue();
// TrunklineAdvanceEntity advanceEntity = new TrunklineAdvanceEntity();
// advanceEntity.setTenantId(tenantId);
// advanceEntity.setStatus(0);
// advanceEntity.setIsDeleted(0);
// advanceEntity.setHasPackage(CollUtil.isNotEmpty(vo.getDetails()) ? 1 : 0);
// advanceEntity.setOrderType(vo.getOrderType());
// advanceEntity.setBrand(vo.getSenderName());
// advanceEntity.setSiteName("");
// advanceEntity.setArea("");
// advanceEntity.setTotalNum(CollUtil.isNotEmpty(value) ? value.size() : 0);
// advanceEntity.setPackName("");
// advanceEntity.setPackCode("");
// advanceEntity.setWarehouseId(startWarehouseId);
// advanceEntity.setWarehouseName(startWarehouseName);
//
// advanceEntity.setIsGcp(0);
// advanceEntity.setCarrierName(vo.getVendorName());
// advanceEntity.setSystemType("线上");
// advanceEntity.setMatingType("");
// advanceEntity.setSenderName(vo.getSenderName());
// advanceEntity.setSenderPhone(vo.getSenderTel());
// advanceEntity.setSenderAddress(vo.getSenderAddress());
// advanceEntity.setWaybillStatus("0");
// advanceEntity.setWaybillNo("");
// advanceEntity.setTrainNumber(vo.getDepartCode());
// advanceEntity.setFreezeStatus("0");
//
// advanceEntity.setSenderFactory(vo.getSenderName());
// List<JSONObject> packageList = new ArrayList<>();
// for (OrderPackageDTO orderPackageDTO : value) {
// advanceEntity.setOrderCode(orderPackageDTO.getPlatformOrderCode());
// advanceEntity.setDealerCode(orderPackageDTO.getCustomerCode());
// advanceEntity.setDealerName(orderPackageDTO.getCustomerName());
// advanceEntity.setStoreCode(orderPackageDTO.getCustomerCode());
// advanceEntity.setStoreName(orderPackageDTO.getCustomerName());
// advanceEntity.setServiceNum(orderPackageDTO.getRelationOrderCode());
// advanceEntity.setCustomerName(orderPackageDTO.getReceiverName());
// advanceEntity.setCustomerPhone(orderPackageDTO.getReceiverMobile());
// advanceEntity.setCustomerAddress(orderPackageDTO.getReceiverAddress());
//
// // 封装包件
// TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity();
// advanceDetailEntity.setWarehouseId(startWarehouseId);
// advanceDetailEntity.setWarehouseName(startWarehouseName);
//// advanceDetailEntity.setIncomingWarehouseId(0L);
//// advanceDetailEntity.setIncomingWarehouseName("");
// // 根据志邦的一流单标识赋值
// advanceEntity.setLegacyStatus("0");
// if (ObjectUtil.equal(orderPackageDTO.getLegacyFlag(), "Y")) {
// advanceEntity.setLegacyStatus("1");
// }
//
// advanceDetailEntity.setOrderCode(orderPackageDTO.getPlatformOrderCode());
// advanceDetailEntity.setBrand(vo.getSenderName());
// advanceDetailEntity.setSystemType("线上");
// advanceDetailEntity.setFirstPackName(orderPackageDTO.getPackageTypeName());
// advanceDetailEntity.setFirstPackCode(orderPackageDTO.getPackageType());
// // 获取映射志邦映射品类信息
// ZbCategoryContrastEntity zbCategoryContrastEntity = buildZbCategoryContrastEntityCache(orderPackageDTO.getPackageClass());
// if (zbCategoryContrastEntity != null) {
// advanceDetailEntity.setSecondPackName(zbCategoryContrastEntity.getSecondName());//二级品类名称
// advanceDetailEntity.setSecondPackCode(zbCategoryContrastEntity.getSecondCode());//二级品类
// advanceDetailEntity.setThirdPackName(zbCategoryContrastEntity.getThirdName());//三级品类名称
// advanceDetailEntity.setThirdPackCode(zbCategoryContrastEntity.getThirdCode());//三级品类
// } else {
// advanceDetailEntity.setSecondPackName(StringUtil.isBlank(orderPackageDTO.getPackageClass()) ? "" : orderPackageDTO.getPackageClass());//二级品类名称
// advanceDetailEntity.setSecondPackCode("");//二级品类
// advanceDetailEntity.setThirdPackName(StringUtil.isBlank(orderPackageDTO.getPackageClass()) ? "" : orderPackageDTO.getPackageClass());//三级品类名称
// advanceDetailEntity.setThirdPackCode("");//三级品类
// }
// advanceDetailEntity.setSiteName("");
// advanceDetailEntity.setSiteCode("");
// String planQty = orderPackageDTO.getPlanQty();
// advanceDetailEntity.setQuantity((StrUtil.isNotBlank(planQty) && NumberUtil.isNumber(planQty)) ? Convert.toInt(planQty) : 0);
// advanceDetailEntity.setOrderPackageCode(orderPackageDTO.getPackageCode());
// advanceDetailEntity.setTrainNumber(vo.getDepartCode());
// advanceDetailEntity.setServiceNum(orderPackageDTO.getRelationOrderCode());
// advanceDetailEntity.setWaybillNo("");
// advanceDetailEntity.setPackageStatus("0");
// advanceDetailEntity.setWeight(StrUtil.isNotBlank(orderPackageDTO.getTotalGrossWeight()) ? new BigDecimal(orderPackageDTO.getTotalGrossWeight()) : BigDecimal.ZERO);
// advanceDetailEntity.setVolume(StrUtil.isNotBlank(orderPackageDTO.getTotalVolume()) ? new BigDecimal(orderPackageDTO.getTotalVolume()) : BigDecimal.ZERO);
//// advanceDetailEntity.setChargeType(0);
// advanceDetailEntity.setSupple("");
// advanceDetailEntity.setManifest("");
// advanceDetailEntity.setReturnNum("");
// advanceDetailEntity.setSendDateStr(DateUtil.formatLocalDateTime(LocalDateTime.now()));
// advanceDetailEntity.setCarNumber("");
// advanceDetailEntity.setGoodsMan("");
// advanceDetailEntity.setTenantId(tenantId);
// advanceDetailEntity.setStatus(0);
// advanceDetailEntity.setIsDeleted(0);
// List<JSONObject> itemJsons = new ArrayList<>();
// List<PackageInfoDTO> items = orderPackageDTO.getItems();
// for (PackageInfoDTO item : items) {
// TrunklineDetailProductEntity detailProductEntity = new TrunklineDetailProductEntity();
// detailProductEntity.setTenantId(tenantId);
// detailProductEntity.setWarehouseId(startWarehouseId);
// detailProductEntity.setWarehouseName(startWarehouseName);
// detailProductEntity.setUnitNo(orderPackageDTO.getPackageCode());
// detailProductEntity.setProductCode(item.getItemCode());
// detailProductEntity.setProductName(item.getItemName());
// detailProductEntity.setQuantity(item.getPlanQty());
// detailProductEntity.setTenantId(TenantNum.HUITONGCODE);
// detailProductEntity.setStatus(0);
// detailProductEntity.setIsDeleted(0);
// itemJsons.add(JSONUtil.parseObj(detailProductEntity));
// }
// JSONObject entries = JSONUtil.parseObj(advanceDetailEntity);
// entries.set("items", itemJsons);
// packageList.add(entries);
// }
// // 转成json对象,然后将包件明细放到detail中
// JSONObject entries = JSONUtil.parseObj(advanceEntity);
// entries.set("details", JSONUtil.toJsonStr(packageList));
// advances.add(entries);
// }
// // 将组装好的暂存单发送到 MQ ,由暂存单服务统一消费SendMsg.
// if (CollUtil.isNotEmpty(advances)) {
// for (JSONObject advance : advances) {
// SendMsg sendMsg = SendMsg.builder().exchange(FactoryDataConstants.Mq.Exchanges.ADVANCE_ORDER)
// .routingKey(FactoryDataConstants.Mq.RoutingKeys.ADVANCE_ORDER).message(JSONUtil.toJsonStr(advance)).build();
// factoryDataClient.sendMessage(sendMsg);
// }
// }
// });
// }
//
// private ZbCategoryContrastEntity buildZbCategoryContrastEntityCache(String packageClass) {
//
//
// if (StringUtil.isBlank(packageClass)) {
// return null;
// }
// if (containsChinese(packageClass)) {
// return null;
// }
//
// String key = TenantNum.HUITONGCODE + ":" + ZbCategoryContrastEntity.class.getName() + ":" + packageClass;
// ZbCategoryContrastEntity zbCategoryContrastEntity = bladeRedis.get(key);
// if (zbCategoryContrastEntity == null) {
// QueryWrapper<ZbCategoryContrastEntity> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("source_code", packageClass);
// queryWrapper.eq("status", "1");
// zbCategoryContrastEntity = zbCategoryContrastMapper.selectOne(queryWrapper);
// if (!Objects.isNull(zbCategoryContrastEntity)) {
// // 缓存起来
// bladeRedis.setEx(key, zbCategoryContrastEntity, 3600 * 24L);
// }
// }
// return zbCategoryContrastEntity;
//
//
// }
/**
* 验证参数中是否包含中文
*
* @param str 匹配参数
* @return true 包含中文 false 不包含中文
*/
private boolean containsChinese(String str) {
Pattern pattern = Pattern.compile(PatternConstant.REGEX_CHINESE);
Matcher matcher = pattern.matcher(str);
return matcher.find();
}
}

20
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/pros/FactoryDataOloProperties.java

@ -0,0 +1,20 @@
package com.logpm.factorydata.olo.pros;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* FactoryProperties
*
* @author pref
*/
@Data
@ConfigurationProperties(prefix = "logpm")
public class FactoryDataOloProperties {
/**
* 名称
*/
private String name;
}

17
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/DeliveryNoteService.java

@ -0,0 +1,17 @@
package com.logpm.factorydata.olo.service;
import com.logpm.factorydata.olo.entity.DeliveryNoteEntity;
import com.logpm.factorydata.olo.vo.DeliveryNoteVO;
import org.springblade.core.mp.base.BaseService;
/**
* 索菲亚发货单 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface DeliveryNoteService extends BaseService<DeliveryNoteEntity> {
String order(DeliveryNoteVO vo);
}

14
blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/service/FactoryOrderLogService.java

@ -0,0 +1,14 @@
package com.logpm.factorydata.olo.service;
import com.logpm.factorydata.olo.entity.FactoryOrderLogEntity;
import org.springblade.core.mp.base.BaseService;
/**
* 工厂订单日志 服务类
*
* @Author zqb
* @Date 2024/4/26
**/
public interface FactoryOrderLogService extends BaseService<FactoryOrderLogEntity> {
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save