Browse Source

Merge branch 'pre-production'

master
pref_mail@163.com 10 months ago
parent
commit
ab8831a60d
  1. 5
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 36
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  3. 18
      blade-service-api/logpm-business-api/pom.xml
  4. 13
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/DistributionBusinessPreOrderDTO.java
  5. 28
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java
  6. 2
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockArticleEntity.java
  7. 18
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionBusinessPreOrderClient.java
  8. 21
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java
  9. 3
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklinePackageTrackLogClient.java
  10. 3
      blade-service-api/pom.xml
  11. 1
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/BasicDataApplication.java
  12. 118
      blade-service/logpm-business/pom.xml
  13. 17
      blade-service/logpm-business/src/main/java/com/logpm/business/BusinessApplication.java
  14. 51
      blade-service/logpm-business/src/main/java/com/logpm/business/aspect/AsyncAnnotationAspect.java
  15. 120
      blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java
  16. 48
      blade-service/logpm-business/src/main/java/com/logpm/business/aspect/RabbitAnnotationAspect.java
  17. 35
      blade-service/logpm-business/src/main/java/com/logpm/business/bean/Resp.java
  18. 38
      blade-service/logpm-business/src/main/java/com/logpm/business/config/BusinessProperties.java
  19. 79
      blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java
  20. 60
      blade-service/logpm-business/src/main/java/com/logpm/business/launcher/BusinessLauncherServiceImpl.java
  21. 62
      blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.java
  22. 187
      blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.xml
  23. 31
      blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java
  24. 55
      blade-service/logpm-business/src/main/java/com/logpm/business/service/IDistributionBusinessPreOrderService.java
  25. 249
      blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/IDistributionBusinessPreOrderServiceImpl.java
  26. 53
      blade-service/logpm-business/src/main/resources/application-dev.yml
  27. 68
      blade-service/logpm-business/src/main/resources/application-prod.yml
  28. 68
      blade-service/logpm-business/src/main/resources/application-test.yml
  29. 24
      blade-service/logpm-business/src/main/resources/application.yml
  30. 40
      blade-service/logpm-business/src/main/resources/logback.xml
  31. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
  32. 72
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java
  33. 19
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java
  34. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionBusinessPreOrderClient.java
  35. 19
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java
  36. 48
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
  37. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
  38. 27
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
  39. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml
  40. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java
  41. 278
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
  42. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
  43. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java
  44. 253
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  45. 85
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  46. 194
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  47. 115
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  48. 68
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  49. 283
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java
  50. 6
      blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java
  51. 120
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java
  52. 31
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  53. 22
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java
  54. 12
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklinePackageTrackLogClient.java
  55. 1
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java
  56. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.java
  57. 53
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/InWarehourseToBusinessListener.java
  58. 148
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java
  59. 11
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IAsyncService.java
  60. 317
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/AsyncServiceImpl.java
  61. 116
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java
  62. 105
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  63. 12
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java
  64. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java
  65. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  66. 7
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseUpdownStockupAreaServiceImpl.java
  67. 2
      blade-service/pom.xml

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

@ -135,4 +135,9 @@ public interface ModuleNameConstant {
*/
String LOGPM_FACTORY_DATA_OPPEIN_NAME = "logpm-factory-data-oppein" + DEVAUTH;
/**
* 商家模块
*/
String LOGPM_BUSINESS_NAME = "logpm-business" + DEVAUTH;
}

36
blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java

@ -33,9 +33,9 @@ public interface RabbitConstant {
/**
* 新系统推送信息
*/
String NEW_SYSTEM_RECEIVE_INFO_QUEUE = "new_system_receive_info_queue"+ ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_EXCHANGE = "new_system_receive_info_exchange"+ ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_ROUTING = "new_system_receive_info_routing"+ ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_QUEUE = "new_system_receive_info_queue" + ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_EXCHANGE = "new_system_receive_info_exchange" + ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_ROUTING = "new_system_receive_info_routing" + ModuleNameConstant.DEVAUTH;
/**
* 卸车完成确认
*/
@ -108,7 +108,6 @@ public interface RabbitConstant {
/****************文员复合签收推送老系统队列 end *************************/
/****************文员自提复合签收推送老系统队列 start *************************/
String BILL_CLERK_CHECK_PUSH_DATA_QUEUE = "bill_clerk_check_push_data_queue" + ModuleNameConstant.DEVAUTH;
@ -137,8 +136,6 @@ public interface RabbitConstant {
/***************************************梦天签收扫描数据推送 end************************************************/
/****************************************梦天签收复核数据推送 start***********************************************/
String MT_BUSINESS_DATA_CLERK_CHECK_2_FACTORY_QUEUE = "mt_business_data_clerk_check_2_factory_queue" + ModuleNameConstant.DEVAUTH;
String MT_BUSINESS_DATA_CLERK_CHECK_2_FACTORY_EXCHANGE = "mt_business_data_clerk_check_2_factory_exchange" + ModuleNameConstant.DEVAUTH;
@ -174,7 +171,24 @@ public interface RabbitConstant {
String OPEN_ORDER_LOAD_SCAN_ROUTING = "open_order_load_scan_routing" + ModuleNameConstant.DEVAUTH;
/****************运单创建推送商家数据start *************************/
String OPEN_WAYBILL_TO_BUSINESS_DATA_QUEUE = "open_waybill_to_business_data_queue" + ModuleNameConstant.DEVAUTH;
String OPEN_WAYBILL_TO_BUSINESS_DATA_EXCHANGE = "open_waybill_to_business_data_exchange" + ModuleNameConstant.DEVAUTH;
String OPEN_WAYBILL_TO_BUSINESS_DATA_ROUTING = "open_waybill_to_business_data_routing" + ModuleNameConstant.DEVAUTH;
/****************运单创建推送商家数据end *************************/
/****************库内入库推送商家数据start *************************/
String IN_WAREHOUSE_TO_BUSINESS_DATA_QUEUE = "in_warehouse_to_business_data_queue" + ModuleNameConstant.DEVAUTH;
String IN_WAREHOUSE_TO_BUSINESS_DATA_EXCHANGE = "in_warehouse_to_business_data_exchange" + ModuleNameConstant.DEVAUTH;
String IN_WAREHOUSE_TO_BUSINESS_DATA_ROUTING = "in_warehouse_to_business_data_routing" + ModuleNameConstant.DEVAUTH;
/****************库内入库推送商家数据end *************************/
/****************创建商家配送计划 start *************************/
@ -192,4 +206,14 @@ public interface RabbitConstant {
String HWY_ORDER_STATUS_EXCHANGE = "hwy_order_status_exchange" + ModuleNameConstant.DEVAUTH;
String HWY_ORDER_STATUS_ROUTING = "hwy_order_status_routing" + ModuleNameConstant.DEVAUTH;
/****************商家入库完结 start *************************/
String BUSINESS_IN_CONVERSION_DATA_QUEUE = "business_in_conversion_data_queue" + ModuleNameConstant.DEVAUTH;
String BUSINESS_IN_CONVERSION_DATA_EXCHANGE = "business_in_conversion_data_exchange" + ModuleNameConstant.DEVAUTH;
String BUSINESS_IN_CONVERSION_DATA_ROUTING = "business_in_conversion_data_routing" + ModuleNameConstant.DEVAUTH;
/****************商家入库完结 end *************************/
}

18
blade-service-api/logpm-business-api/pom.xml

@ -0,0 +1,18 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springblade</groupId>
<artifactId>blade-service-api</artifactId>
<version>3.2.0.RELEASE</version>
</parent>
<groupId>org.springblade</groupId>
<artifactId>logpm-business-api</artifactId>
<version>3.2.0.RELEASE</version>
</project>

13
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/DistributionBusinessPreOrderDTO.java

@ -0,0 +1,13 @@
package com.logpm.business.dto;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import lombok.Data;
/**
*
*/
public class DistributionBusinessPreOrderDTO extends DistributionBusinessPreOrderEntity {
}

28
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java

@ -0,0 +1,28 @@
package com.logpm.business.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DistributionBusinessPreCarNumberVO {
@ApiModelProperty(value = "配送车次")
private String distrCarNumber;
@ApiModelProperty(value = "运单号")
private String waybillNumber;
@ApiModelProperty(value = "订单号")
private String orderCode;
@ApiModelProperty(value = "总件数")
private Integer totalNum;
@ApiModelProperty(value = "入库件数")
private Integer inNum;
@ApiModelProperty(value = "待入库件数")
private Integer restNum;
}

2
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockArticleEntity.java

@ -404,7 +404,7 @@ public class DistributionStockArticleEntity extends TenantEntity {
private String orderStatus;
@ApiModelProperty(value = "预约状态")
private String reservationStatus;
private String reservationStatus;
@ApiModelProperty(value = "备货状态")
private String stockupStatus;

18
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionBusinessPreOrderClient.java

@ -0,0 +1,18 @@
package com.logpm.distribution.feign;
import org.springblade.common.constant.ModuleNameConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(
value = ModuleNameConstant.APPLICATION_DISTRIBUTION_NAME
)
public interface IDistributionBusinessPreOrderClient {
String API_PREFIX = "/client";
String INORDERBYORDERPACKAGECODE = API_PREFIX + "/inOrderByOrderPackageCode";
@GetMapping(INORDERBYORDERPACKAGECODE)
public Integer inOrderByOrderPackageCode(@RequestParam("orderPackageCode") String orderPackageCode, @RequestParam("carNum")String carNum);
}

21
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java

@ -0,0 +1,21 @@
package com.logpm.trunkline.feign;
import com.logpm.trunkline.dto.InComingDTO;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(
value = ModuleNameConstant.APPLICATION_TRUNKLINE_NAME
)
public interface IInComingClient {
String API_PREFIX = "inComing/client";
@PostMapping(API_PREFIX+"/incomingPackage")
R incomingPackage(@RequestBody InComingDTO inComingDTO);
}

3
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklinePackageTrackLogClient.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import org.springblade.common.constant.ModuleNameConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -16,6 +17,6 @@ public interface ITrunklinePackageTrackLogClient {
String API_PREFIX = "trunklinePackageTrackLog/client";
@PostMapping(API_PREFIX+"/addBatchPackageTrackLog")
void addPackageTrackLog(@RequestParam List<JSONObject> addPackageTrackLogList, @RequestParam List<String> orderPackageCodes, @RequestParam Integer workNode);
void addPackageTrackLog(@RequestBody List<JSONObject> addPackageTrackLogList);
}

3
blade-service-api/pom.xml

@ -45,6 +45,9 @@
<!-- 商家转化模块 -->
<module>logpm-business-conversion-api</module>
<module>logpm-factory-data-zbom-api</module>
<!--商家端 -->
<module>logpm-business-api</module>
</modules>
<dependencies>

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

@ -5,7 +5,6 @@ import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
import org.springblade.core.transaction.annotation.SeataCloudApplication;
//import org.springblade.core.transaction.annotation.SeataCloudApplication;
/**
* Basic启动器

118
blade-service/logpm-business/pom.xml

@ -0,0 +1,118 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springblade</groupId>
<artifactId>blade-service</artifactId>
<version>3.2.0.RELEASE</version>
</parent>
<groupId>org.springblade</groupId>
<artifactId>logpm-business</artifactId>
<name>${project.artifactId}</name>
<version>${bladex.project.version}</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-swagger</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-business-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-business-conversion-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-trunkline-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-basicdata-api</artifactId>
<version>3.2.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-distribution-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-warehouse-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-user-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-system-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>

17
blade-service/logpm-business/src/main/java/com/logpm/business/BusinessApplication.java

@ -0,0 +1,17 @@
package com.logpm.business;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
import org.springblade.core.transaction.annotation.SeataCloudApplication;
@BladeCloudApplication
@SeataCloudApplication
public class BusinessApplication {
public static void main(String[] args) {
BladeApplication.run(ModuleNameConstant.LOGPM_BUSINESS_NAME, BusinessApplication.class, args);
}
}

51
blade-service/logpm-business/src/main/java/com/logpm/business/aspect/AsyncAnnotationAspect.java

@ -0,0 +1,51 @@
package com.logpm.business.aspect;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
@Aspect
@Component
@Slf4j
@Order(-1)
public class AsyncAnnotationAspect {
/**
* 定义一个切点匹配所有带有@LogpmAsync("asyncExecutor")注解的方法
* 注意实际上Spring Framework自带对@LogpmAsync("asyncExecutor")的处理直接这样配置可能会导致预期之外的行为
*/
@Around("@annotation(org.springblade.common.annotations.LogpmAsync)")
public Object logAroundAsyncMethods(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
LogpmAsync myAsync = method.getAnnotation(LogpmAsync.class);
String annotationValue = myAsync.value();
log.info(">>>>>>>>>>>>>>>>>> annotationValue={}",annotationValue);
log.info("@LogpmAsync注解的值为asyncExecutor,进行数据源切换 ");
// 在方法执行前的操作
String tenantId = AuthUtil.getTenantId();
log.info(">> tenandId {} ",tenantId);
DynamicDataSourceContextHolder.push(tenantId);
// 执行原方法
Object result = joinPoint.proceed();
// 在方法执行后的操作
DynamicDataSourceContextHolder.poll();
return result;
}
}

120
blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java

@ -0,0 +1,120 @@
package com.logpm.business.aspect;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.cache.CacheNames;
import org.springblade.common.component.MockLoginService;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.redis.lock.LockType;
import org.springblade.core.redis.lock.RedisLockClient;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.core.tool.utils.ThreadLocalUtil;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Aspect
@Component
@Slf4j
@Order(-1)
@AllArgsConstructor
public class ChangeAsyncAnnotationAspect {
private final MockLoginService mockLoginService;
private final BladeRedis bladeRedis;
private final Environment environment;
private final RedisLockClient redisLockClient;
private final String account = "shujutongbu";
/**
* 定义一个切点匹配所有带有@LogpmAsync("asyncExecutor")注解的方法
* 注意实际上Spring Framework自带对@LogpmAsync("asyncExecutor")的处理直接这样配置可能会导致预期之外的行为
*/
@Around("@annotation(org.springblade.common.annotations.ChangeAsync)")
public Object logAroundAsyncMethods(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
ChangeAsync myAsync = method.getAnnotation(ChangeAsync.class);
String annotationValue = myAsync.value();
log.info(">>>>>>>>>>>>>>>>>> ChangeAsync={}", annotationValue);
// 获取当前拦截方法的入参参数
Object[] args = joinPoint.getArgs();
// 获取入参名称
String[] parameterNames = signature.getParameterNames();
String tenantId = null;
// 获取参数名称 为tenantId 的值
for (int i = 0; i < parameterNames.length; i++) {
if ("tenantId".equals(parameterNames[i])) {
tenantId = (String) args[i];
log.info(">> tenandId {} ", tenantId);
break;
}
}
// 执行模拟登录
if (StringUtil.isNotBlank(tenantId)) {
JSONObject data = bladeRedis.get(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account);
if (Objects.isNull(data)) {
boolean flag = redisLockClient.tryLock("local_server_user" + tenantId, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS);
if (flag) {
data = bladeRedis.get(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account);
if (Objects.isNull(data)) {
data = mockLoginService.mockToken(tenantId, account);
bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account, data, 3200L);
redisLockClient.unLock("local_server_user" + tenantId, LockType.FAIR);
}
}
}
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.addHeader("Blade-Auth", "bearer "+data.get("access_token"));
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(mockRequest));
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") );
httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
ThreadLocalUtil.put("bladeContext", httpHeaders);
DynamicDataSourceContextHolder.push(data.getString("tenant_id"));
// 执行原方法
Object result = joinPoint.proceed();
// 在方法执行后,从数据源上下文中移除租户ID
DynamicDataSourceContextHolder.poll();
return result;
}else{
return joinPoint.proceed();
}
// // 在方法执行前的操作
// String tenantId = AuthUtil.getTenantId();
// log.info(">> tenandId {} ",tenantId);
// DynamicDataSourceContextHolder.push("627683");
//
// // 执行原方法
// Object result = joinPoint.proceed();
//
// // 在方法执行后的操作
// DynamicDataSourceContextHolder.poll();
// return result;
}
}

48
blade-service/logpm-business/src/main/java/com/logpm/business/aspect/RabbitAnnotationAspect.java

@ -0,0 +1,48 @@
package com.logpm.business.aspect;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.stereotype.Component;
@Aspect
@Component
@Slf4j
public class RabbitAnnotationAspect {
/**
* 该方法为一个切面用于对标记了@RabbitListener注解的方法进行增强主要增加了日志记录和数据源上下文处理的功能
*
* @param joinPoint 切面的连接点表示当前被拦截的方法
* @return 返回被拦截方法的执行结果
* @throws Throwable 如果执行过程中发生异常则抛出
*/
@Around("@annotation(org.springframework.amqp.rabbit.annotation.RabbitListener)")
public Object rabbitMethods(ProceedingJoinPoint joinPoint) throws Throwable {
// 在方法执行前,获取当前租户ID并设置到数据源上下文中
String tenantId = AuthUtil.getTenantId();
DynamicDataSourceContextHolder.push(tenantId);
// 执行原方法
Object result = joinPoint.proceed();
// 在方法执行后,从数据源上下文中移除租户ID
DynamicDataSourceContextHolder.poll();
return result;
}
@Around("@annotation(org.springframework.amqp.rabbit.annotation.RabbitHandler)")
public Object rabbitHandlerMethods(ProceedingJoinPoint joinPoint) throws Throwable {
// 在方法执行前,获取当前租户ID并设置到数据源上下文中
String tenantId = AuthUtil.getTenantId();
DynamicDataSourceContextHolder.push(tenantId);
// 执行原方法
Object result = joinPoint.proceed();
// 在方法执行后,从数据源上下文中移除租户ID
DynamicDataSourceContextHolder.poll();
return result;
}
}

35
blade-service/logpm-business/src/main/java/com/logpm/business/bean/Resp.java

@ -0,0 +1,35 @@
package com.logpm.business.bean;
import lombok.Data;
import org.springblade.core.tool.api.R;
@Data
public class Resp extends R {
private String audio;
public static Resp scanSuccess(String msg,String audio){
Resp resp = new Resp();
resp.setCode(200);
resp.setMsg(msg);
resp.setAudio(audio);
return resp;
}
public static Resp scanFail(String msg,String audio){
Resp resp = new Resp();
resp.setCode(3001);
resp.setMsg(msg);
resp.setAudio(audio);
return resp;
}
public static Resp scanFail(int code,String msg,String audio){
Resp resp = new Resp();
resp.setCode(code);
resp.setMsg(msg);
resp.setAudio(audio);
return resp;
}
}

38
blade-service/logpm-business/src/main/java/com/logpm/business/config/BusinessProperties.java

@ -0,0 +1,38 @@
/*
* 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.business.config;
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(BusinessProperties.class)
public class BusinessProperties {
}

79
blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java

@ -0,0 +1,79 @@
package com.logpm.business.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.business.service.IDistributionBusinessPreOrderService;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@RestController
@AllArgsConstructor
@Slf4j
@RequestMapping("/businessPreOrder")
@Api(value = "预入库信息控制器", tags = "预入库信息控制器")
public class DistributionBusinessPreOrderController extends BladeController {
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
/**
* 预入库信息 分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
public R<IPage<DistributionBusinessPreOrderVO>> page(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
IPage<DistributionBusinessPreOrderVO> page = Condition.getPage(query);
IPage<DistributionBusinessPreOrderVO> data= distributionBusinessPreOrderService.pacgeList(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
/**
* 预入库信息--配送车次
*/
@GetMapping("/pageByCarNum")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
public R<IPage<DistributionBusinessPreCarNumberVO>> pageByCarNum(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
IPage<DistributionBusinessPreCarNumberVO> page = Condition.getPage(query);
IPage<DistributionBusinessPreCarNumberVO> data= distributionBusinessPreOrderService.pageByCarNum(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
@GetMapping("/inOrder")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "页面ID", notes = "传入distributionDeliveryList")
public R<Boolean> inOrder(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
// try {
Boolean isSuccess =distributionBusinessPreOrderService.inOrder(ids);
return R.data(isSuccess);
// }catch (Exception e){
// log.error("预入库信息入库失败",e);
// return R.fail(500,e.getMessage());
// }
}
}

60
blade-service/logpm-business/src/main/java/com/logpm/business/launcher/BusinessLauncherServiceImpl.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.business.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 BusinessLauncherServiceImpl 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;
}
}

62
blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.java

@ -0,0 +1,62 @@
/*
* 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.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.dto.DistributionBusinessPreOrderDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 商家预备导入数据信息 Mapper 接口
*
* @author cyz
* @since 2023-06-13
*/
public interface DistributionBusinessPreOrderMapper extends BaseMapper<DistributionBusinessPreOrderEntity> {
/**
* 查询DistributionBusinessPreOrderVO列表
*
* @param page
* @param param
* @return
*/
IPage<DistributionBusinessPreOrderVO> pageList(IPage<DistributionBusinessPreOrderVO> page, @Param("param") DistributionBusinessPreOrderDTO param);
/**
* 删除商家端数据
*
* @param deletedPackageList
* @return
*/
Integer deleteBusinessPreOrder(String reservationCode, List<String> deletedPackageList);
List<DistributionBusinessPreOrderEntity> listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode);
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(IPage<DistributionBusinessPreCarNumberVO> page, Map<String, Object> distributionBusinessPreOrderDTO);
}

187
blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.xml

@ -0,0 +1,187 @@
<?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.business.mapper.DistributionBusinessPreOrderMapper">
<update id="updateBusinessPreOrderByOrderPackageCode">
update logpm_business_pre_order set in_warehouse=1
where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0
</update>
<delete id="deleteBusinessPreOrder">
DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode}
AND order_package_code IN
<foreach
collection="orderPackageList" item="orderPackageCode" open="(" separator="," close=")">
#{orderPackageCode}
</foreach>
</delete>
<select id="pageList" resultType="com.logpm.business.vo.DistributionBusinessPreOrderVO">
SELECT
id,
firsts,
`SECOND`,
third_product,
quantity,
train_number,
order_code,
service_number,
material_name,
material_code,
brand_name,
waybill_number,
dealer_name,
dealer_code,
order_package_code,
reservation_code,
operation_status,
distr_car_number,
send_warehouse_name,
accept_warehouse_name,
weight,
volume,
driver_name,
vehicle_name,
in_warehouse
FROM
logpm_business_pre_order
<where>
is_deleted = 0
<if test="param.id != null and param.id != ''">
AND id = #{param.id}
</if>
<if test="param.firsts != null and param.firsts != ''">
AND firsts like concat(#{param.id},'%')
</if>
<if test="param.second != null and param.second != ''">
AND `SECOND` like concat(#{param.second},'%')
</if>
<if test="param.thirdProduct != null and param.thirdProduct != ''">
AND third_product like concat(#{param.thirdProduct},'%')
</if>
<if test="param.trainNumber != null and param.trainNumber != ''">
AND train_number like concat(#{param.trainNumber},'%')
</if>
<if test="param.orderCode != null and param.orderCode != ''">
AND order_code like concat(#{param.orderCode},'%')
</if>
<if test="param.serviceNumber != null and param.serviceNumber != ''">
AND service_number like concat(#{param.serviceNumber},'%')
</if>
<if test="param.materialName != null and param.materialName != ''">
AND material_name like concat(#{param.materialName},'%')
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND material_code like concat(#{param.materialCode},'%')
</if>
<if test="param.brandName != null and param.brandName != ''">
AND brand_name like concat(#{param.brandName},'%')
</if>
<if test="param.waybillNumber != null and param.waybillNumber != ''">
AND waybill_number like concat(#{param.waybillNumber},'%')
</if>
<if test="param.dealerName != null and param.dealerName != ''">
AND dealer_name like concat(#{param.dealerName},'%')
</if>
<if test="param.dealerCode != null and param.dealerCode != ''">
AND dealer_code like concat(#{param.dealerCode},'%')
</if>
<if test="param.sendWarehouseName != null and param.sendWarehouseName != ''">
AND send_warehouse_name like concat(#{param.sendWarehouseName},'%')
</if>
<if test="param.acceptWarehouseName != null and param.acceptWarehouseName != ''">
AND accept_warehouse_name like concat(#{param.acceptWarehouseName},'%')
</if>
<if test="param.driverName != null and param.driverName != ''">
AND driver_name like concat(#{param.driverName},'%')
</if>
<if test="param.vehicleName != null and param.vehicleName != ''">
AND vehicle_name like concat(#{param.vehicleName},'%')
</if>
<if test="param.distrCarNumber != null and param.distrCarNumber != ''">
AND distr_car_number like concat(#{param.distrCarNumber},'%')
</if>
<if test="param.inWarehouse != null ">
AND in_warehouse = #{param.inWarehouse}
</if>
</where>
</select>
<select id="listByBusinessPreListDTO" resultType="com.logpm.business.entity.DistributionBusinessPreOrderEntity">
SELECT
id,
firsts,
`SECOND`,
third_product,
quantity,
train_number,
order_code,
order_package_code,
service_number,
material_name,
material_code,
brand_name,
waybill_number,
dealer_name,
dealer_code,
send_warehouse_name,
accept_warehouse_name,
weight,
volume,
driver_name,
vehicle_name,
distr_car_number,
in_warehouse
FROM
logpm_business_pre_order
<where>
is_deleted = 0
<if test="queryrderDTO.reservationCode != null and queryrderDTO.reservationCode != ''">
AND reservation_code = #{queryrderDTO.reservationCode}
</if>
</where>
</select>
<select id="pageByCarNum" resultType="com.logpm.business.vo.DistributionBusinessPreCarNumberVO">
SELECT distr_car_number,
waybill_number,
order_code,
COUNT(1) as totalNum,
COUNT(CASE WHEN in_warehouse = 1 THEN 1 END) as inNum,
COUNT(1)-COUNT(CASE WHEN in_warehouse = 1 THEN 1 END) as restNum
from logpm_business_pre_order
<where>
is_deleted=0
<if test="distributionBusinessPreOrderDTO.distrCarNumber != null and distributionBusinessPreOrderDTO.distrCarNumber != ''">
AND distr_car_number = #{distributionBusinessPreOrderDTO.distrCarNumber}
</if>
<if test="distributionBusinessPreOrderDTO.waybillNumber != null and distributionBusinessPreOrderDTO.waybillNumber != ''">
and waybill_number=#{distributionBusinessPreOrderDTO.waybillNumber}
</if>
<if test="distributionBusinessPreOrderDTO.orderCode != null and distributionBusinessPreOrderDTO.orderCode != ''">
and order_code LIKE CONCAT(#{distributionBusinessPreOrderDTO.orderCode},'%')
</if>
</where>
GROUP BY
distr_car_number,
waybill_number,
order_code
</select>
</mapper>

31
blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java

@ -0,0 +1,31 @@
package com.logpm.business.receiver;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 商家完结订单
*/
@Slf4j
@RabbitListener(queues = RabbitConstant.BUSINESS_IN_CONVERSION_DATA_QUEUE)
@Component
@AllArgsConstructor
public class BusinessInOrderDataQueueHandler {
@RabbitHandler
public void businessInOrderDataHandler(Map map, Message message, Channel channel) {
}
}

55
blade-service/logpm-business/src/main/java/com/logpm/business/service/IDistributionBusinessPreOrderService.java

@ -0,0 +1,55 @@
package com.logpm.business.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.business.bean.Resp;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
public interface IDistributionBusinessPreOrderService extends BaseService<DistributionBusinessPreOrderEntity> {
/**
* 预备入库ID集合
* @param ids
* @return
*/
Boolean inOrder(String ids) throws ServiceException;
/**
* 更新预入库状态
* @param orderPackageCode 包条码
* @param carNum 入库的配送车次
* @return
*/
Integer inOrderByOrderPackageCode(String orderPackageCode,String carNum);
/**
* 查询DistributionBusinessPreOrder列表
* @param distributionBusinessPreOrderDTO
* @param page
* @return
*/
IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page);
/**
* 删除商家端数据
* @param k
* @param deletedPackageList
* @return
*/
Integer deleteBusinessPreOrder(String k, List<String> deletedPackageList);
DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO);
Resp inOrderWarehourse(String orderPackageCode, String reservationCode) throws ExecutionException, InterruptedException;
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreCarNumberVO> page);
}

249
blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/IDistributionBusinessPreOrderServiceImpl.java

@ -0,0 +1,249 @@
package com.logpm.business.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.business.bean.Resp;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.dto.DistributionBusinessPreOrderDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.mapper.DistributionBusinessPreOrderMapper;
import com.logpm.business.service.IDistributionBusinessPreOrderService;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.feign.IInComingClient;
import lombok.AllArgsConstructor;
import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<DistributionBusinessPreOrderMapper, DistributionBusinessPreOrderEntity> implements IDistributionBusinessPreOrderService {
private final IBasicdataWarehouseClient basicdataWarehouseClient;
private final IInComingClient inComingClient;
@Override
public Boolean inOrder(String ids) throws ServiceException {
// 查询出来需要处理的包条码
List<String> idArray = Arrays.asList(ids.split(","));
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", idArray);
InComingDTO inComingDTO = new InComingDTO();
StringBuffer sb = new StringBuffer();
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
List<DistributionBusinessPreOrderEntity> data = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
throw new ServiceException("存在已入库的包件");
}
if(!sb.toString().isEmpty()){
sb.append(",");
}
sb.append(distributionBusinessPreOrderEntity.getOrderPackageCode());
data.add(distributionBusinessPreOrderEntity);
}
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
inComingDTO.setOrderPackageCode(sb.toString());
inComingDTO.setIncomingType(IncomingTypeEnum.LINE_INCOMING.getCode());
inComingDTO.setWarehouseId(myCurrentWarehouse.getId());
inComingDTO.setWarehouseName(myCurrentWarehouse.getName());
R r = inComingClient.incomingPackage(inComingDTO);
if(r.isSuccess()){
// 更新成功
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : data) {
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
}
}
return true;
}
@Override
public Integer inOrderByOrderPackageCode(String orderPackageCode,String carNum) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("order_package_code", orderPackageCode);
// wrapper.eq("in_warehouse",0);
wrapper.eq("is_deleted","0");
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
if(!list.isEmpty()){
DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity = list.get(0);
distributionBusinessPreOrderEntity.setInWarehouse(1);
return baseMapper.updateById(distributionBusinessPreOrderEntity);
}
return 0;
}
@Override
public IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page) {
DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
return baseMapper.pageList(page, param);
}
@Override
public Integer deleteBusinessPreOrder(String k, List<String> deletedPackageList) {
return baseMapper.deleteBusinessPreOrder(k, deletedPackageList);
}
@Override
public DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO) {
DistributionBusinessPreOrderListVO distributionBusinessPreOrderListVO = new DistributionBusinessPreOrderListVO();
List<DistributionBusinessPreOrderEntity> data = baseMapper.listByBusinessPreListDTO(queryrderDTO);
// data 分组
Map<Integer, List<DistributionBusinessPreOrderEntity>> groupedData = data.stream()
.collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
// 已入库的
List<DistributionBusinessPreOrderEntity> distributionBusinessPreOrderEntities = groupedData.get(1);
List<DistributionBusinessPreOrderVO> result = new ArrayList<>();
for (DistributionBusinessPreOrderEntity datum : data) {
if(datum.getInWarehouse() .equals(queryrderDTO.getInWarehouse()) ){
DistributionBusinessPreOrderVO copy = BeanUtil.copy(datum, DistributionBusinessPreOrderVO.class);
result.add(copy);
}
}
distributionBusinessPreOrderListVO.setList(result);
distributionBusinessPreOrderListVO.setSumNum(data.size());
distributionBusinessPreOrderListVO.setInNum(ObjectUtils.isEmpty(distributionBusinessPreOrderEntities) ? 0 : distributionBusinessPreOrderEntities.size());
return distributionBusinessPreOrderListVO;
}
@Override
public Resp inOrderWarehourse(String orderPackageCode, String reservationCode) {
// // 查询当前预约单所有的包件
//
// LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
// List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
//
// // 寻找 当前匹配的包条
// DistributionBusinessPreOrderEntity t = null;
// DistributionBusinessPreOrderEntity t1 = null;
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
// if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// // 找到匹配的包条码
// if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
// return Resp.scanSuccess("扫描成功", "包件已入库");
// } else {
// t = distributionBusinessPreOrderEntity;
// }
// }
// if (t1 == null) {
// t1 = distributionBusinessPreOrderEntity;
// }
// }
// if (t == null) {
// try {
// DistributionBusinessPreOrderEntity finalT = t1;
// CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
//
// DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
//
// // 如找到了 保存在当前的这个配送计划任务中
// if (distributionParcelListEntity != null) {
// // 保存包件
// t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
// t.setDriverName(finalT.getDriverName());
// t.setVehicleName(finalT.getVehicleName());
// t.setDistrCarNumber(finalT.getTrainNumber());
// t.setOperationStatus(1);
// t.setInWarehouse(0);
// this.save(t);
// list.add(t);
//
// }
// } catch (InterruptedException | ExecutionException e) {
// log.error("inOrderWarehourse:", e);
// throw new ServiceException("包件信息不存在!");
// }
//
//
// }
//
// // 保存订单
// DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
// if (stockArticleEntity == null) {
// return Resp.scanFail("操作失败", "包件数据不存在");
// }
// // 保存包件
// t.setWarehouseId(stockArticleEntity.getWarehouseId());
// t.setWarehouse(stockArticleEntity.getWarehouse());
// t.setStockArticleId(stockArticleEntity.getId());
// buildDistributionParcelListEntity(t);
//
// // 调用入库方法
// t.setInWarehouse(1);
// baseMapper.updateById(t);
//
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
// Long l = baseMapper.selectCount(queryWrapper);
return Resp.scanSuccess("扫描成功", "请前往码板打托进行入库!");
}
@Override
public IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreCarNumberVO> page) {
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum =baseMapper.pageByCarNum(page, distributionBusinessPreOrderDTO);
return pageByCarNum;
}
}

53
blade-service/logpm-business/src/main/resources/application-dev.yml

@ -0,0 +1,53 @@
#服务器端口
server:
port: 17020
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration
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.business.master.url}
username: ${blade.datasource.business.master.username}
password: ${blade.datasource.business.master.password}
627683:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.business.627683.url}
username: ${blade.datasource.business.627683.username}
password: ${blade.datasource.business.627683.password}
703623:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.business.703623.url}
username: ${blade.datasource.business.703623.username}
password: ${blade.datasource.business.703623.password}

68
blade-service/logpm-business/src/main/resources/application-prod.yml

@ -0,0 +1,68 @@
#服务器端口
server:
port: 17020
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.prod.url}
# username: ${blade.datasource.prod.username}
# password: ${blade.datasource.prod.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration
datasource:
dynamic:
druid:
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
url: ${blade.datasource.warehouse.master.url}
username: ${blade.datasource.warehouse.master.username}
password: ${blade.datasource.warehouse.master.password}
627683:
url: ${blade.datasource.warehouse.627683.url}
username: ${blade.datasource.warehouse.627683.username}
password: ${blade.datasource.warehouse.627683.password}
#rabbitmq配置
rabbitmq:
host: 172.16.128.145
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
xxl:
job:
accessToken: ''
admin:
addresses: http://172.16.128.147:7009/xxl-job-admin
executor:
appname: logpm-factory-xxljob
ip: 127.0.0.1
logpath: ../data/applogs/logpm-factory-xxljob/jobhandler
logretentiondays: -1
port: 7018

68
blade-service/logpm-business/src/main/resources/application-test.yml

@ -0,0 +1,68 @@
#服务器端口
server:
port: 17020
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.test.url}
# username: ${blade.datasource.test.username}
# password: ${blade.datasource.test.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration
datasource:
dynamic:
druid:
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
url: ${blade.datasource.warehouse.master.url}
username: ${blade.datasource.warehouse.master.username}
password: ${blade.datasource.warehouse.master.password}
627683:
url: ${blade.datasource.warehouse.627683.url}
username: ${blade.datasource.warehouse.627683.username}
password: ${blade.datasource.warehouse.627683.password}
#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
xxl:
job:
accessToken: ''
admin:
addresses: http://127.0.0.1:7009/xxl-job-admin
executor:
appname: logpm-factory-xxljob
ip: 127.0.0.1
logpath: ../data/applogs/logpm-factory-xxljob/jobhandler
logretentiondays: -1
port: 7018

24
blade-service/logpm-business/src/main/resources/application.yml

@ -0,0 +1,24 @@
#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
logging:
config: classpath:logback.xml
spring:
main:
allow-circular-references: true

40
blade-service/logpm-business/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-warehouse/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>

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java

@ -188,4 +188,21 @@ public class RabbitMqConfiguration {
@Bean
public Queue businessInConversionQueue() {
return new Queue(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_QUEUE, true);
}
@Bean
public CustomExchange businessInConversionExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding businessInConversionBinding(Queue businessInConversionQueue, CustomExchange businessInConversionExchange) {
return BindingBuilder.bind(businessInConversionQueue).to(businessInConversionExchange).with(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_ROUTING).noargs();
}
}

72
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java

@ -1,36 +1,36 @@
package com.logpm.distribution.config;
import org.redisson.Redisson;
import org.redisson.config.Config;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.utils.SpringUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.stereotype.Component;
@Configuration
public class RedissonConfig {
@Bean
public Redisson redisson() {
// 单机模式
Config config = new Config();
BladeRedis bean = SpringUtil.getBean(BladeRedis.class);
RedisConnectionFactory connectionFactory = bean.getRedisTemplate().getConnectionFactory();
LettuceConnectionFactory factory = (LettuceConnectionFactory) connectionFactory;
String hostName = factory.getHostName();
int port = factory.getPort();
String password = factory.getPassword();
config.useSingleServer().setAddress("redis://"+hostName+":"+port).setDatabase(1);
config.useSingleServer().setPassword(password);
return (Redisson) Redisson.create(config);
}
}
//package com.logpm.distribution.config;
//
//import org.redisson.Redisson;
//import org.redisson.config.Config;
//import org.springblade.core.redis.cache.BladeRedis;
//import org.springblade.core.tool.utils.SpringUtil;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.redis.connection.RedisConnectionFactory;
//import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
//import org.springframework.stereotype.Component;
//
//@Configuration
//public class RedissonConfig {
//
// @Bean
// public Redisson redisson() {
// // 单机模式
// Config config = new Config();
//
// BladeRedis bean = SpringUtil.getBean(BladeRedis.class);
//
// RedisConnectionFactory connectionFactory = bean.getRedisTemplate().getConnectionFactory();
//
// LettuceConnectionFactory factory = (LettuceConnectionFactory) connectionFactory;
//
// String hostName = factory.getHostName();
// int port = factory.getPort();
// String password = factory.getPassword();
//
// config.useSingleServer().setAddress("redis://"+hostName+":"+port).setDatabase(1);
// config.useSingleServer().setPassword(password);
// return (Redisson) Redisson.create(config);
// }
//
//}

19
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java

@ -3,6 +3,7 @@ package com.logpm.distribution.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
@ -29,7 +30,7 @@ import java.util.Map;
@AllArgsConstructor
@Slf4j
@RequestMapping("/businessPreOrder")
@Api(value = "配送增值服务明细", tags = "预入库信息控制器")
@Api(value = "预入库信息控制器", tags = "预入库信息控制器")
public class DistributionBusinessPreOrderController extends BladeController {
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
@ -40,12 +41,26 @@ public class DistributionBusinessPreOrderController extends BladeController {
@GetMapping("/page")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
public R<IPage<DistributionBusinessPreOrderVO>> list(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
public R<IPage<DistributionBusinessPreOrderVO>> page(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
IPage<DistributionBusinessPreOrderVO> page = Condition.getPage(query);
IPage<DistributionBusinessPreOrderVO> data= distributionBusinessPreOrderService.pacgeList(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
/**
* 预入库信息--配送车次
*/
@GetMapping("/pageByCarNum")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
public R<IPage<DistributionBusinessPreCarNumberVO>> pageByCarNum(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
IPage<DistributionBusinessPreCarNumberVO> page = Condition.getPage(query);
IPage<DistributionBusinessPreCarNumberVO> data= distributionBusinessPreOrderService.pageByCarNum(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
@GetMapping("/inOrder")
@ApiOperationSupport(order = 2)

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionBusinessPreOrderClient.java

@ -0,0 +1,17 @@
package com.logpm.distribution.feign;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@ApiIgnore()
@RestController
@AllArgsConstructor
public class DistributionBusinessPreOrderClient implements IDistributionBusinessPreOrderClient {
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
@Override
public Integer inOrderByOrderPackageCode(String orderPackageCode, String carNum) {
return distributionBusinessPreOrderService.inOrderByOrderPackageCode(orderPackageCode,carNum);
}
}

19
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java

@ -20,19 +20,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.dto.DistributionBusinessPreOrderDTO;
import com.logpm.distribution.dto.DistributionParcelListDTO;
import com.logpm.distribution.dto.app.StockupDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.excel.DistributionParcelListExcel;
import com.logpm.distribution.vo.*;
import org.apache.ibatis.annotations.Param;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 商家预备导入数据信息 Mapper 接口
@ -45,18 +39,25 @@ public interface DistributionBusinessPreOrderMapper extends BaseMapper<Distribut
/**
* 查询DistributionBusinessPreOrderVO列表
*
* @param page
* @param param
* @return
*/
IPage<DistributionBusinessPreOrderVO> pageList(IPage<DistributionBusinessPreOrderVO> page, DistributionBusinessPreOrderDTO param);
IPage<DistributionBusinessPreOrderVO> pageList(IPage<DistributionBusinessPreOrderVO> page, @Param("param") DistributionBusinessPreOrderDTO param);
/**
* 删除商家端数据
*
* @param k
* @param deletedPackageList
* @return
*/
Integer deleteBusinessPreOrder(String reservationCode, List<String> deletedPackageList);
Integer deleteBusinessPreOrder(String reservationCode, List<String> deletedPackageList);
List<DistributionBusinessPreOrderEntity> listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode);
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(IPage<DistributionBusinessPreCarNumberVO> page, Map<String, Object> distributionBusinessPreOrderDTO);
}

48
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml

@ -1,6 +1,14 @@
<?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.distribution.mapper.DistributionBusinessPreOrderMapper">
<update id="updateBusinessPreOrderByOrderPackageCode">
update logpm_business_pre_order set in_warehouse=1
where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0
</update>
<delete id="deleteBusinessPreOrder">
DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode}
AND order_package_code IN
@ -37,7 +45,6 @@
volume,
driver_name,
vehicle_name,
distr_car_number,
in_warehouse
FROM
logpm_business_pre_order
@ -46,16 +53,9 @@
<if test="param.id != null and param.id != ''">
AND id = #{param.id}
</if>
<!-- <if test="param.ids != null ">-->
<!-- AND id IN-->
<!-- <foreach collection="param.ids" item="item" index="index" open="(" close=")" separator=",">-->
<!-- #{otem}-->
<!-- </foreach>-->
<!-- </if>-->
<if test="param.firsts != null and param.firsts != ''">
AND firsts like concat(#{param.id},'%')
</if>
<if test="param.second != null and param.second != ''">
AND `SECOND` like concat(#{param.second},'%')
</if>
@ -104,9 +104,11 @@
<if test="param.distrCarNumber != null and param.distrCarNumber != ''">
AND distr_car_number like concat(#{param.distrCarNumber},'%')
</if>
<if test="param.inWarehouse != null and param.inWarehouse != ''">
<if test="param.inWarehouse != null ">
AND in_warehouse = #{param.inWarehouse}
</if>
</where>
@ -153,5 +155,33 @@
</where>
</select>
<select id="pageByCarNum" resultType="com.logpm.business.vo.DistributionBusinessPreCarNumberVO">
SELECT distr_car_number,
waybill_number,
order_code,
COUNT(1) as totalNum,
COUNT(CASE WHEN in_warehouse = 1 THEN 1 END) as inNum,
COUNT(1)-COUNT(CASE WHEN in_warehouse = 1 THEN 1 END) as restNum
from logpm_business_pre_order
<where>
is_deleted=0
<if test="distributionBusinessPreOrderDTO.distrCarNumber != null and distributionBusinessPreOrderDTO.distrCarNumber != ''">
AND distr_car_number = #{distributionBusinessPreOrderDTO.distrCarNumber}
</if>
<if test="distributionBusinessPreOrderDTO.waybillNumber != null and distributionBusinessPreOrderDTO.waybillNumber != ''">
and waybill_number=#{distributionBusinessPreOrderDTO.waybillNumber}
</if>
<if test="distributionBusinessPreOrderDTO.orderCode != null and distributionBusinessPreOrderDTO.orderCode != ''">
and order_code LIKE CONCAT(#{distributionBusinessPreOrderDTO.orderCode},'%')
</if>
</where>
GROUP BY
distr_car_number,
waybill_number,
order_code
</select>
</mapper>

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

@ -197,4 +197,6 @@ public interface DistributionStockArticleMapper extends BaseMapper<DistributionS
List<Map<String, Object>> selectAdvance(@Param("orderCode")String orderCode);
void updateCustomerAllByOrderCode(@Param("data") cn.hutool.json.JSONObject data);
void updateDistributionStockArticleEntityById(@Param("t")DistributionStockArticleEntity t);
}

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

@ -1400,5 +1400,32 @@
and order_code = #{data.orderCode}
</if>
</update>
<update id="updateDistributionStockArticleEntityById">
update logpm_distribution_stock_article
<set>
<if test="t.genre !=null">
genre = #{t.genre},
</if>
<if test="t.orderStatus !=null">
order_status = #{t.orderStatus},
</if>
<if test="t.reservationStatus !=null">
reservation_status = #{t.reservationStatus},
</if>
<if test="t.handQuantity!=null">
hand_quantity = #{t.handQuantity},
</if>
<if test="t.deliveryQuantity!=null">
delivery_quantity = #{t.deliveryQuantity},
</if>
<if test="t.signinQuantity">
signin_quantity = #{t.signinQuantity},
</if>
</set>
where id=#{t.id}
</update>
</mapper>

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

@ -640,7 +640,7 @@
and ldrs.stock_list_status in (1, 3)
) inventoryNub
from logpm_distribution_reservation ldr
LEFT JOIN logpm_distribution_stockup_info ldsi on ldsi.reservation_id = ldr.id
LEFT JOIN logpm_distribution_stockup_info ldsi on ldsi.reservation_id = ldr.id AND AND ldsi.stock_status != 4
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)

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

@ -86,7 +86,6 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
/**
* 查询自提库存品
* @param page
* @param distrilbutionBillLadingEntity
* @return
*/
@ -104,14 +103,12 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
/**
* 取消订制品包件
* @param billLodingIds
* @return
*/
Integer cancelBillLadingPackage(@Param("ids")List<Long> ids);
/**
* 查询自提单关联包件
* @param billLodingIds
* @return
*/
List<DistributionParcelListEntity> selectBillLadingPackage(@Param("ids")List<Long> ids);
@ -121,7 +118,6 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
/**
* 根据自提单号查询自提单
* @param id
* @param searchCode
* @return
*/
DistrilbutionBillLadingEntity selectByBillLadingCode(@Param("warehouseId") Long id,@Param("pickupBatch") String pickupBatch);
@ -142,7 +138,6 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
/**
*
* @param id
* @return
*/
Integer selectBillLadingLoading(@Param("billLadingId") Long billLadingId);
@ -156,28 +151,24 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
/**
* 查询自提单的零担包件
* @param reservationId
* @return
*/
List<DistributionStockupOrderListVO> selectBillLadingZeroPackageList(@Param("bullLadingId")Long bullLadingId);
/**
* 推送老系统
* @param billId
* @return
*/
SignPushDataDTO getSignPushDataDTO(@Param("id")Long id);
/**
* 查询推送老系统自提客户信息
* @param billId
* @return
*/
List<SignPushDataContactDTO> selectPushOldCustomer(@Param("id")Long id);
/**
* 查询自提签署包件推送老系统
* @param billId
* @return
*/
List<SignPushDataUnitDTO> selectPushOldPackageSigning(@Param("id")Long id);

278
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java

@ -1,32 +1,18 @@
package com.logpm.distribution.receiver;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.entity.DistributionReservationPackageEntity;
import com.logpm.distribution.service.*;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity;
import com.logpm.trunkline.feign.ITrunklineAdvanceClient;
import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient;
import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient;
import com.logpm.trunkline.feign.ITrunklineWaybillPackageClient;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.entity.Tenant;
@ -39,10 +25,7 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@RabbitListener(queues = RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_QUEUE)
@ -54,20 +37,8 @@ public class BusinessPreOrderDataQueueHandler {
private final IDistributionReservationService distributionReservationService;
private final IDistributionReservationPackageService distributionReservationPackageService;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
private final ISysClient sysClient;
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient;
private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient;
private final ITrunklineAdvanceClient trunklineAdvanceClient;
private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient;
private final IDistributionAsyncService distributionAsyncService;
@ -81,111 +52,18 @@ public class BusinessPreOrderDataQueueHandler {
if(!ObjectUtil.isEmpty(tenant.getTenantType())){
if(2==tenant.getTenantType()){
String mallName = tenant.getTenantName();
extracted(map, mallName);
// 插入暂存单
// 插入预计表
plantA(map,mallName);
}
}
});
}
}
private void extracted(Map map, String mallName) {
// 查询推送包件
List<DistributionParcelListEntity> distributionParcelListEntities = allList(map, mallName);
if (ObjectUtil.isEmpty(distributionParcelListEntities)) {
return;
}
// 得到下面的包间
// 假设 orderNumber 是 DistributionParcelListEntity 类中的一个属性
List<String> uniqueOrderNumbers = distributionParcelListEntities.stream()
.map(DistributionParcelListEntity::getWaybillNumber) // 将每个实体映射到其运单号
.distinct() // 移除重复的运单号
.collect(Collectors.toList()); // 收集到一个新的列表中
// 查询运单
List<WarehouseWaybillEntity> waybillBilllByWaybillNos = warehouseWaybillClient.findWaybillBilllByWaybillNos(uniqueOrderNumbers);
// 获取运单关联的暂存单信息
List<Long> waybillIds = waybillBilllByWaybillNos.stream().map(WarehouseWaybillEntity::getId).distinct().collect(Collectors.toList());
List<WarehouseWayBillDetail> warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillIds(waybillIds);
List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillIds(waybillIds);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds);
// 暂存单ID集合
List<Long> collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList());
List<TrunklineAdvanceEntity> trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect);
// 获取暂存单明细
List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
Tenant tenant = changeDataBase(mallName);
// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
CompletableFuture.supplyAsync(() -> {
// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
distributionAsyncService.saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
return null;
});
}
private List<DistributionParcelListEntity> allList(Map map, String mallName) {
List<DistributionParcelListEntity> tsss = new ArrayList<>();
if (StringUtil.isBlank(mallName)) {
return tsss;
}
Long t = (Long) map.get("messageData");
if (ObjectUtil.isEmpty(t)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 配送ID为空");
return tsss;
}
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListService.getById(t);
if (ObjectUtil.isEmpty(distributionDeliveryListEntity)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 配送对象为null");
return tsss;
}
List<DistributionReservationEntity> list = distributionReservationService.selectListByDeliveryId(distributionDeliveryListEntity.getId());
if (ObjectUtil.isEmpty(list)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 预约列表为空");
return tsss;
}
List<DistributionBusinessPreOrderEntity> dataResult = new ArrayList<>();
for (DistributionReservationEntity distributionReservationEntity : list) {
// 判断需要进行推送商家名称
log.info(">>>>> mallName TAG {}", mallName);
log.info(">>>>> distributionReservationEntity.getMallName() TAG {}", distributionReservationEntity.getMallName());
if (mallName.equals(distributionReservationEntity.getMallName())) {
// 将当前的预约单加入到需要推送的列表
LambdaQueryWrapper<DistributionReservationPackageEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistributionReservationPackageEntity::getReservationId, distributionReservationEntity.getId());
queryWrapper.ne(DistributionReservationPackageEntity::getPacketBarStatus, 2);
List<DistributionReservationPackageEntity> distributionReservationPackageEntityList = distributionReservationPackageService.list(queryWrapper);
for (DistributionReservationPackageEntity distributionReservationPackageEntity : distributionReservationPackageEntityList) {
DistributionParcelListEntity byId = distributionParcelListService.getById(distributionReservationPackageEntity.getParceListId());
tsss.add(byId);
}
}
}
return tsss;
}
private void plantA(Map map) {
String mallName = "仁寿欧派大家居";
private void plantA(Map map,String mallName) {
if (StringUtil.isBlank(mallName)) {
return;
@ -243,18 +121,16 @@ public class BusinessPreOrderDataQueueHandler {
}
Tenant tenant = changeDataBase(mallName);
CompletableFuture.supplyAsync(() -> {
// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
// distributionAsyncService.saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
distributionAsyncService.saveOtherDataBaseNew(tenant.getTenantId() ,dataResult, mallName);
return null;
});
// 查询包间列表
saveOtherDataBaseNew(dataResult, mallName);
// 查询配送单对应的司机
// 需要将查询出来的数据与 当前保存的数据进行比对 避免重复插入
// 通过商场名称找到租户中存在的商场名称
// 切换当前线程的数据源 插入到 租户对应的数据库中
log.info("businessPreOrderDataHandler:{}", map);
}
@ -271,130 +147,6 @@ public class BusinessPreOrderDataQueueHandler {
return null;
}
public void saveOtherDataBaseNew(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// 查询保存的对象在商场端是否存在 && 没有入库的 都i需要删除 执行新的
List<Long> orderIdList = dataResult.stream()
.map(DistributionBusinessPreOrderEntity::getStockArticleId)
.collect(Collectors.toList());
R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return;
}
if (dataResult.isEmpty()) {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
DynamicDataSourceContextHolder.push(tenant.getTenantId());
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
// 找到已经推送的包件信息 并将其标记为删除状态
List<Long> temsp = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
for (DistributionBusinessPreOrderEntity businessPreOrderEntity : dataResult) {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
}
}
if (!temsp.isEmpty()) {
// 更新删除状态
distributionBusinessPreOrderService.deleteLogic(temsp);
}
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) {
distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
}
// 执行保存操作
distributionBusinessPreOrderService.saveBatch(dataResult);
DynamicDataSourceContextHolder.poll();
}
}
// public void saveOtherDataBase(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// String method = "########################saveOtherDataBase";
// R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
// if (tenantByName.isSuccess()) {
// Tenant tenant = tenantByName.getData();
// if (ObjectUtil.isEmpty(tenant)) {
// log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 租户不存在");
// return;
// }
// if (dataResult.isEmpty()) {
// log.info(method + "dataResult 参数错误");
// }
// DynamicDataSourceContextHolder.push(tenant.getTenantId());
// Map<Integer, List<DistributionBusinessPreOrderEntity>> map = dataResult.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
// if (Func.isNotEmpty(map.get(1))) {
// //存在需要进行删除的数据
// List<DistributionBusinessPreOrderEntity> deleteList = map.get(0);
// if (!deleteList.isEmpty()) {
// Map<String, List<DistributionBusinessPreOrderEntity>> deletedMap = deleteList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// deletedMap.forEach((k, v) -> {
// List<String> deletedPackageList = v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList());
// log.info("删除商家端数据>>>>reservationCode:{}", deletedPackageList);
// if (!deletedPackageList.isEmpty()) {
// //进行删除
// Integer row = distributionBusinessPreOrderService.deleteBusinessPreOrder(k, deletedPackageList);
// log.info("删除商家端数据>>>>row:{}", row);
// }
// });
// }
// }
// if (Func.isNotEmpty(map.get(0))) {
// //存在可能变更的数据
// List<DistributionBusinessPreOrderEntity> mapList = map.get(0);
// Map<String, List<DistributionBusinessPreOrderEntity>> saveData = mapList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// List<DistributionBusinessPreOrderEntity> existData = new ArrayList<>();
// if (!saveData.isEmpty()) {
// //查询是否存在重复
// saveData.forEach((k, v) -> {
// List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(Wrappers.<DistributionBusinessPreOrderEntity>query().lambda()
// .eq(DistributionBusinessPreOrderEntity::getReservationCode, k)
// .in(DistributionBusinessPreOrderEntity::getOrderPackageCode, v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()))
// );
// if (!list.isEmpty()) {
// //已经存在数据
// existData.addAll(list);
// }
// });
// }
// if (!existData.isEmpty()) {
// //二者比较取差集
// mapList = mapList.stream().filter(m -> !existData.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()).contains(m.getOrderPackageCode())).collect(Collectors.toList());
// }
// if (!mapList.isEmpty()) {
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : mapList) {
// distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
// }
// distributionBusinessPreOrderService.saveBatch(mapList);
// }
// }
// DynamicDataSourceContextHolder.poll();
//
// }
//
//
// }
}

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

@ -1,6 +1,7 @@
package com.logpm.distribution.service;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO;
import com.logpm.distribution.dto.app.StockupDTO;
@ -332,5 +333,6 @@ public interface IDistributionAsyncService {
DistributionStockArticleEntity findDistributionStockArticleEntityByIdForAsync(String tenantId, Long id);
void saveOtherData(String tenantId, List<WarehouseWaybillEntity> waybillBilllByWaybillNos, List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities, List<TrunklineAdvanceEntity> trunklineAdvanceEntities, List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities, List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities, List<WarehouseWayBillDetail> warehouseWayBillDetails, List<DistributionParcelListEntity> distributionParcelListEntities, String mallName);
void saveOtherDataBaseNew(String tenantId,List<DistributionBusinessPreOrderEntity> dataResult, String mallName);
}

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

@ -3,6 +3,7 @@ package com.logpm.distribution.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.bean.Resp;
@ -25,6 +26,14 @@ public interface IDistributionBusinessPreOrderService extends BaseService<Distri
Boolean inOrder(String ids) throws ServiceException;
/**
* 更新预入库状态
* @param orderPackageCode 包条码
* @param carNum 入库的配送车次
* @return
*/
Integer inOrderByOrderPackageCode(String orderPackageCode,String carNum);
/**
* 查询DistributionBusinessPreOrder列表
* @param distributionBusinessPreOrderDTO
@ -43,4 +52,7 @@ public interface IDistributionBusinessPreOrderService extends BaseService<Distri
DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO);
Resp inOrderWarehourse(String orderPackageCode,String reservationCode) throws ExecutionException, InterruptedException;
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreCarNumberVO> page);
}

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

@ -6,12 +6,14 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.distribution.dto.DistributionLoadingNumDTO;
import com.logpm.distribution.dto.DistributionParcelNumberDTO;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
@ -56,16 +58,7 @@ import com.logpm.distribution.mapper.DistributionStockMapper;
import com.logpm.distribution.mapper.DistributionStockupInfoMapper;
import com.logpm.distribution.mapper.DistributionStockupMapper;
import com.logpm.distribution.mapper.DistrilbutionBillLadingMapper;
import com.logpm.distribution.service.IDisStockListDetailService;
import com.logpm.distribution.service.IDistributionAsyncService;
import com.logpm.distribution.service.IDistributionDeliveryDetailsService;
import com.logpm.distribution.service.IDistributionParcelNumberService;
import com.logpm.distribution.service.IDistributionReservationStockarticleService;
import com.logpm.distribution.service.IDistributionReservationStocklistService;
import com.logpm.distribution.service.IDistributionReservationZeroPackageService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.service.IDistrilbutionBillPackageService;
import com.logpm.distribution.service.IDistrilbutionBillStockService;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionSignPrintVO;
import com.logpm.distribution.vo.DistributionStockPackageVO;
@ -214,8 +207,11 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
private final ISysClient sysClient;
private final BladeRedis bladeRedis;
// private final
@ -2920,228 +2916,59 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
return null;
}
@ChangeAsync()
@Override
public void saveOtherData(String tenantId, List<WarehouseWaybillEntity> waybillBilllByWaybillNos, List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities, List<TrunklineAdvanceEntity> trunklineAdvanceEntities, List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities, List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities, List<WarehouseWayBillDetail> warehouseWayBillDetails, List<DistributionParcelListEntity> distributionParcelListEntities, String mallName) {
// 保存暂存单
Tenant tenant = changeDataBase(mallName);
for (TrunklineAdvanceEntity trunklineAdvanceEntity : trunklineAdvanceEntities) {
TrunklineAdvanceEntity finalTrunklineAdvanceEntity = trunklineAdvanceEntity;
List<TrunklineAdvanceDetailEntity> t = trunklineAdvanceDetailEntities.stream().filter(trunklineAdvanceDetailEntity -> trunklineAdvanceDetailEntity.getAdvanceId().equals(finalTrunklineAdvanceEntity.getId())).collect(Collectors.toList());
saveTrunklineAdvanceEntity(trunklineAdvanceEntity, mallName);
// 保存暂存子表
saveTrunklineAdvanceDetailEntity(t, trunklineAdvanceEntity, mallName);
}
List<Long> collect = trunklineAdvanceEntities.stream().map(TrunklineAdvanceEntity::getId).distinct().collect(Collectors.toList());
// 重新查询trunklineAdvanceDetail
List<TrunklineAdvanceDetailVO> listByAdvanceIds = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
// 保存运单
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
for (WarehouseWaybillEntity waybillBilllByWaybillNo : waybillBilllByWaybillNos) {
List<TrunklineWaybillOrderEntity> collect1 = trunklineWaybillOrderEntities.stream().filter(trunklineWaybillOrderEntity -> trunklineWaybillOrderEntity.getWaybillId().equals(waybillBilllByWaybillNo.getId())).collect(Collectors.toList());
List<WarehouseWayBillDetail> t = warehouseWayBillDetails.stream().filter(warehouseWayBillDetail -> warehouseWayBillDetail.getWaybillId().equals(waybillBilllByWaybillNo.getId())).collect(Collectors.toList());
// 修改运单的起始仓库 和末端仓
waybillBilllByWaybillNo.setDepartureWarehouseName(waybillBilllByWaybillNo.getDestinationWarehouseName());
waybillBilllByWaybillNo.setDepartureWarehouseId(null);
public void saveOtherDataBaseNew(String tenantId,List<DistributionBusinessPreOrderEntity> dataResult, String mallName) {
// 目的仓
if (basicdataWarehouseEntity != null) {
waybillBilllByWaybillNo.setDestinationWarehouseId(basicdataWarehouseEntity.getId());
waybillBilllByWaybillNo.setDestinationWarehouseName(basicdataWarehouseEntity.getName());
List<Long> orderIdList = dataResult.stream()
.map(DistributionBusinessPreOrderEntity::getStockArticleId)
.collect(Collectors.toList());
R<Tenant> tenantByName = sysClient.getTenantByName(mallName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return;
}
waybillBilllByWaybillNo.setTenantId(tenant.getTenantId());
WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(waybillBilllByWaybillNo.getWaybillNo());
if (byWaybillNo == null) {
Long l = warehouseWaybillClient.addEnntity(waybillBilllByWaybillNo);
waybillBilllByWaybillNo.setId(l);
} else {
waybillBilllByWaybillNo.setId(byWaybillNo.getId());
if (dataResult.isEmpty()) {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
List<WarehouseWayBillDetail> byWaybillId = warehouseWaybillDetailClient.findByWaybillId(waybillBilllByWaybillNo.getId());
for (WarehouseWayBillDetail warehouseWayBillDetail : t) {
warehouseWayBillDetail.setId(null);
for (WarehouseWayBillDetail wayBillDetail : byWaybillId) {
// 找到已经推送的包件信息 并将其标记为删除状态
List<Long> temsp = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (wayBillDetail.getProductName().equals(warehouseWayBillDetail.getProductName())) {
// 不执行
warehouseWayBillDetail.setId(wayBillDetail.getId());
break;
}
}
for (DistributionBusinessPreOrderEntity businessPreOrderEntity : dataResult) {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (warehouseWayBillDetail.getId() == null) {
warehouseWayBillDetail.setWaybillId(waybillBilllByWaybillNo.getId());
warehouseWaybillDetailClient.addEntity(warehouseWayBillDetail);
}
}
List<TrunklineWaybillOrderEntity> listByWaybillNo = trunklineWaybillOrderClient.findListByWaybillNo(waybillBilllByWaybillNo.getWaybillNo());
for (TrunklineWaybillOrderEntity trunklineWaybillOrderEntity : collect1) {
trunklineWaybillOrderEntity.setId(null);
List<TrunklineWaybillPackageEntity> collect3 = trunklineWaybillPackageEntities.stream().filter(ts -> {
return ts.getWaybillNo().equals(trunklineWaybillOrderEntity.getWaybillNo()) && ts.getAdvanceId().equals(trunklineWaybillOrderEntity.getAdvanceId());
}).collect(Collectors.toList());
trunklineWaybillOrderEntity.setWaybillId(waybillBilllByWaybillNo.getId());
trunklineWaybillOrderEntity.setTenantId(tenant.getTenantId());
Optional<TrunklineAdvanceEntity> entityWithOrderNumber1123 = trunklineAdvanceEntities.stream()
.filter(entity -> trunklineWaybillOrderEntity.getOrderCode().equals(entity.getOrderCode())) // 过滤出订单号为"1123"的实体
.findFirst(); // 获取第一个匹配的实体
if (entityWithOrderNumber1123.isPresent()) {
TrunklineAdvanceEntity foundEntity = entityWithOrderNumber1123.get();
// 使用找到的实体
trunklineWaybillOrderEntity.setAdvanceId(foundEntity.getId());
}
for (TrunklineWaybillOrderEntity waybillOrderEntity : listByWaybillNo) {
if (waybillOrderEntity.getOrderCode().equals(trunklineWaybillOrderEntity.getOrderCode())) {
trunklineWaybillOrderEntity.setId(waybillOrderEntity.getId());
}
}
if (trunklineWaybillOrderEntity.getId() == null) {
Long l1 = trunklineWaybillOrderClient.addEntityReturnId(trunklineWaybillOrderEntity);
trunklineWaybillOrderEntity.setId(l1);
}
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
List<Long> ids = Arrays.asList(waybillBilllByWaybillNo.getId());
List<TrunklineWaybillPackageEntity> listByWaybillIds = trunklineWaybillPackageClient.findListByWaybillIds(ids);
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : collect3) {
trunklineWaybillPackageEntity.setId(null);
trunklineWaybillPackageEntity.setWaybillId(waybillBilllByWaybillNo.getId());
trunklineWaybillPackageEntity.setTenantId(tenant.getTenantId());
trunklineWaybillPackageEntity.setAdvanceId(trunklineWaybillOrderEntity.getAdvanceId());
for (TrunklineAdvanceDetailVO listByAdvanceId : listByAdvanceIds) {
if (listByAdvanceId.getAdvanceId().equals(trunklineWaybillOrderEntity.getAdvanceId())) {
if (listByAdvanceId.getOrderPackageCode().equals(trunklineWaybillPackageEntity.getOrderPackageCode())) {
trunklineWaybillPackageEntity.setAdvanceDetailId(listByAdvanceId.getId());
}
}
}
for (TrunklineWaybillPackageEntity listByWaybillId : listByWaybillIds) {
if (listByWaybillId.getWaybillId().equals(trunklineWaybillPackageEntity.getWaybillId())) {
if (listByWaybillId.getOrderPackageCode().equals(trunklineWaybillPackageEntity.getOrderPackageCode())) {
trunklineWaybillPackageEntity.setId(listByWaybillId.getId());
break;
}
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
if (trunklineWaybillPackageEntity.getId() == null) {
trunklineWaybillPackageClient.addEntity(trunklineWaybillPackageEntity);
}
}
}
}
}
private BasicdataWarehouseEntity getBasicdataWarehouseEntity(String mallName) {
String cacheName = mallName + "仓";
BasicdataWarehouseEntity basicdataWarehouseEntity = bladeRedis.get(cacheName);
if (basicdataWarehouseEntity == null) {
basicdataWarehouseEntity = warehouseClient.findByName(mallName + "仓");
bladeRedis.setEx(cacheName, basicdataWarehouseEntity, 60 * 60 * 24L);
}
return basicdataWarehouseEntity;
}
private void saveTrunklineAdvanceDetailEntity(List<TrunklineAdvanceDetailEntity> t, TrunklineAdvanceEntity trunklineAdvanceEntity, String mallName) {
Tenant tenant = changeDataBase(mallName);
List<Long> ids = Arrays.asList(trunklineAdvanceEntity.getId());
List<TrunklineAdvanceDetailVO> listByAdvanceIds = trunklineAdvanceDetailClient.findListByAdvanceIds(ids);
for (TrunklineAdvanceDetailEntity trunklineAdvanceDetailEntity : t) {
// 检测 保存的对象是否已经存在
for (TrunklineAdvanceDetailVO listByAdvanceId : listByAdvanceIds) {
if (listByAdvanceId.getOrderPackageCode().equals(trunklineAdvanceDetailEntity.getOrderPackageCode())) {
trunklineAdvanceDetailEntity.setId(listByAdvanceId.getId());
break;
}
if (!temsp.isEmpty()) {
// 更新删除状态
distributionBusinessPreOrderService.deleteLogic(temsp);
}
trunklineAdvanceDetailEntity.setPackageStatus("0");
trunklineAdvanceDetailEntity.setAdvanceId(trunklineAdvanceEntity.getId());
trunklineAdvanceDetailEntity.setTenantId(tenant.getTenantId());
trunklineAdvanceDetailEntity.setIncomingWarehouseId(null);
trunklineAdvanceDetailEntity.setIncomingWarehouseName(null);
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if (basicdataWarehouseEntity != null) {
trunklineAdvanceDetailEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceDetailEntity.setWarehouseName(basicdataWarehouseEntity.getName());
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) {
distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
}
}
trunklineAdvanceDetailClient.addAdvanceBatch(t);
}
private TrunklineAdvanceEntity saveTrunklineAdvanceEntity(TrunklineAdvanceEntity trunklineAdvanceEntity, String mallName) {
Tenant tenant = changeDataBase(mallName);
// 查找商户的暂存单是否存在改制
TrunklineAdvanceEntity trunklineAdvanceEntity1 = trunklineAdvanceClient.findAdvanceLimitOneByOrderCode(trunklineAdvanceEntity.getOrderCode());
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if (ObjectUtil.isEmpty(trunklineAdvanceEntity1)) {
// 执行保存操作
distributionBusinessPreOrderService.saveBatch(dataResult);
// 保存对象
if (basicdataWarehouseEntity != null) {
trunklineAdvanceEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceEntity.setWarehouseName(basicdataWarehouseEntity.getName());
}
trunklineAdvanceEntity.setTenantId(tenant.getTenantId());
Long l = trunklineAdvanceClient.addAdvanceReturnId(trunklineAdvanceEntity);
trunklineAdvanceEntity.setId(l);
return trunklineAdvanceEntity;
} else {
return trunklineAdvanceEntity1;
}
}
}

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

@ -49,11 +49,11 @@ import com.logpm.distribution.vo.app.DistributionAppParcelListVO;
import com.logpm.distribution.vo.app.DistributionAppReservationVO;
import com.logpm.distribution.vo.print.PrintPreviewVO;
import com.logpm.distribution.wrapper.*;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
import com.logpm.factorydata.enums.BrandEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
import com.logpm.factorydata.vo.PushData;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
import com.logpm.warehouse.entity.WarehouseTrayGoodsEntity;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.*;
@ -85,7 +85,6 @@ import org.springblade.common.constant.stockup.StockAssignStatusConstant;
import org.springblade.common.constant.stockup.StockupStatusConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.serviceConstant.ServiceConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.common.utils.QRCodeUtil;
import org.springblade.common.utils.StringSplitUtil;
import org.springblade.common.utils.TemplateUtil;
@ -714,6 +713,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
loadscanEntity.setScanStatus(LoadingStatusConstant.saomiao.getValue());
loadscanEntity.setScanType("1");
loadscanEntity.setOneClick(1);
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setPackageId(parcelListEntity.getId());
loadscanEntity.setOrderPackageCode(parcelListEntity.getOrderPackageCode());
loadscanEntity.setPackageNub(parcelListEntity.getQuantity());
@ -773,20 +774,24 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
});
String content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getScanUser()+"扫描装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",loadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",loadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",loadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",loadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",loadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",loadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",loadscanEntity.getWarehouseId()==null?myCurrentWarehouse.getId():loadscanEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",loadscanEntity.getWarehouseName()==null?myCurrentWarehouse.getName():loadscanEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",loadscanEntity.getScanUser());
try {
trunklinePackageTrackLog.put("tenantId",loadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",loadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",loadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",loadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",loadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",loadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",loadscanEntity.getScanUser());
}catch (Exception e){
log.info("装车日志数据错误>>>>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
}
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@ -798,7 +803,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
} else if (parcelListEntityList.isEmpty()) {
//查找出该包件信息
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getOne(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()));
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getOne(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()).eq(DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId()));
List<DistributionReservationEntity> reservationEntityList = distributionDeliveryListMapper.selectReservationByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId());
boolean shangpeiFlag = reservationEntityList.stream().allMatch(r -> r.getDeliveryType().equals(DistributionTypeConstant.shipie.getValue()));
if (Func.isEmpty(parcelListEntity)) {
@ -1048,7 +1053,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
warehouseUpdownStockUpAreaClient.downStockUpShelf(jsonObjects);
//查询已装车件数
// String str = getLoadingMsg(distrilbutionloadingscanDTO);
trunklinePackageTrackLogClient.addPackageTrackLog(aaa,orderPackageCodes,WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
Integer carLaodNum = getCarLaodNum(distrilbutionloadingscanDTO.getDeliveryId());
return Resp.scanSuccessWithData("装车成功", carLaodNum + "件", carLaodNum);
@ -2186,7 +2191,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
);
log.info(">>>>>>>>>>>>>>>>>>>装车修改库存品包件>装车包件码:{},",disStockListDetailEntity.getStockPackageCode());
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = getDistributionLoadscaninvnEntity(distrilbutionloadingscanDTO, distributionDeliverySelfEntity, disStockListDetailEntities);
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = getDistributionLoadscaninvnEntity(distrilbutionloadingscanDTO, distributionDeliverySelfEntity, disStockListDetailEntities,myCurrentWarehouse);
packageLockIds.add(distributionLoadscaninvnEntity.getInventoryPackageId());
distributionLoadscaninvnService.save(distributionLoadscaninvnEntity);
//查询本车次是否第一次扫码,没有则更新上车时间
@ -2244,7 +2249,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
* @return
*/
@NotNull
private static DistributionLoadscaninvnEntity getDistributionLoadscaninvnEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionDeliverySelfEntity distributionDeliverySelfEntity, List<DisStockListDetailEntity> disStockListDetailEntities) {
private static DistributionLoadscaninvnEntity getDistributionLoadscaninvnEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionDeliverySelfEntity distributionDeliverySelfEntity, List<DisStockListDetailEntity> disStockListDetailEntities,BasicdataWarehouseEntity warehouseEntity) {
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = new DistributionLoadscaninvnEntity();
BladeUser user = AuthUtil.getUser();
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
@ -2272,6 +2277,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionLoadscaninvnEntity.setInventoryId(disStockListDetailEntities.get(0).getStockListId());
distributionLoadscaninvnEntity.setReservationId(disStockListDetailEntities.get(0).getReservationId());
distributionLoadscaninvnEntity.setOneClick(1);
distributionLoadscaninvnEntity.setWarehouseId(warehouseEntity.getId());
distributionLoadscaninvnEntity.setWarehouseName(warehouseEntity.getName());
distributionLoadscaninvnEntity.setInventoryPackageId(disStockListDetailEntities.get(0).getId());
distributionLoadscaninvnEntity.setLoadedNub(disStockListDetailEntities.get(0).getNum());
distributionLoadscaninvnEntity.setDeliveryId(distrilbutionloadingscanDTO.getDeliveryId());
@ -5485,6 +5492,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
loadscanEntity.setDeliveryId(distrilbutionloadingscanDTO.getDeliveryId());
loadscanEntity.setOrderId(parcelListEntity.getStockArticleId());
loadscanEntity.setScanTime(now);
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setScanUser(user.getNickName());
loadscanEntity.setLoadingId(distrilbutionloadingscanDTO.getLoadingId());
loadscanEntity.setIsAbnormalLoading(2);
@ -5493,20 +5502,24 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
String content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getScanUser()+"扫描异常装车,配送车次号:"+deliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",loadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",loadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",loadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",loadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",loadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",loadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",loadscanEntity.getWarehouseId()==null?myCurrentWarehouse.getId():loadscanEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",loadscanEntity.getWarehouseName()==null?myCurrentWarehouse.getName():loadscanEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",loadscanEntity.getScanUser());
try {
trunklinePackageTrackLog.put("tenantId",loadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",loadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",loadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",loadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",loadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",loadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_ABNORMAL_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",loadscanEntity.getScanUser());
}catch (Exception e){
log.info("异常装车日志数据错误>>>>>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
}
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@ -5575,7 +5588,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
}
trunklinePackageTrackLogClient.addPackageTrackLog(aaa,orderPackageCodes,WorkNodeEnums.DISTRIBUTION_ABNORMAL_SIGN_FOR.getCode());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
return Resp.scanSuccess("操作成功", "异常" + abnormalTotal + "件");
@ -5840,6 +5853,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
loadscanEntity.setScanStatus(LoadingStatusConstant.saomiao.getValue());
loadscanEntity.setScanType("1");
loadscanEntity.setOneClick(1);
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setPackageId(parcelListDTO.getParcelListId());
loadscanEntity.setPackageNub(parcelListDTO.getLoadingNum());
loadscanEntity.setLoadedNub(parcelListDTO.getLoadingNum());

194
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java

@ -16,6 +16,7 @@
*/
package com.logpm.distribution.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -34,17 +35,16 @@ import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.wrapper.*;
import com.logpm.oldproject.feign.IWayBillClient;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
import com.logpm.trunkline.feign.ITrunklineWaybillTrackClient;
import com.logpm.warehouse.entity.WarehouseGoodsAllocationEntity;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.*;
import org.springblade.common.constant.Inventory.*;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
@ -225,6 +225,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private ITrunklinePackageTrackLogClient trunklinePackageTrackLogClient;
@ -1507,6 +1510,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
//推翻原有的
Long id = distributionReservationDTO.getId();
DistributionReservationEntity reservationEntity = this.getById(id);
//这里需要查询出这个预约原来的订单、包件信息
List<DistributionReservationStockarticleEntity> distributionReservationStockarticleEntities = distributionReservationStockarticleService.getBaseMapper().selectList(Wrappers.<DistributionReservationStockarticleEntity>query().lambda().eq(DistributionReservationStockarticleEntity::getReservationId, id).ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()));
Map<Long, List<DistributionReservationStockarticleEntity>> oldStockArticle = distributionReservationStockarticleEntities.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId));
@ -1519,6 +1523,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
List<Long> mallId = new ArrayList<>();
HashSet<String> storeName = new HashSet<>();
HashSet<String> receivingUnit = new HashSet<>();
List<String> addOrderPackageCodes = new ArrayList<>();
List<String> cancelOrderPackageCodes = new ArrayList<>();
List<JSONObject> addPackageLog = new ArrayList<>();
List<JSONObject> cancelPackageLog = new ArrayList<>();
newStockArticle.forEach((k, v) -> {
List<Long> packageLockIds = new ArrayList<>();
if (Func.isEmpty(oldStockArticle.get(k))) {
@ -1542,6 +1550,25 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
distributionAsyncService.checkStockArticleReservationStatus(p);
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"新增计划配送,操作方式:新增订单选中包件,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",p.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.PLAN_DELIVERY.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
addPackageLog.add(trunklinePackageTrackLog);
addOrderPackageCodes.add(p.getOrderPackageCode());
});
} else {
//添加此订单可用所有包件数量
@ -1569,6 +1596,25 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
dp.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(dp);
distributionAsyncService.checkStockArticleReservationStatus(dp);
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"新增计划配送,操作方式:新增订单系统默认选中,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",dp.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.PLAN_DELIVERY.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
addPackageLog.add(trunklinePackageTrackLog);
addOrderPackageCodes.add(dp.getOrderPackageCode());
}
}
// stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
@ -1710,6 +1756,27 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
// reduceNum.getAndAdd(distributionParcelListService.getById(reservationPackageEntity.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(reservationPackageEntity.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"取消计划配送,操作方式:取消选中包件,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",parcelListEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.CANCEL_DELIVERY.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
cancelPackageLog.add(trunklinePackageTrackLog);
cancelOrderPackageCodes.add(parcelListEntity.getOrderPackageCode());
distributionParcelListService.updateById(parcelListEntity);
if (Func.isNotEmpty(bladeRedis.get("warehouseId:"+myCurrentWarehouse.getId()+"orderCode:"+parcelListEntity.getOrderCode()))){
List<Long> ids = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode());
@ -1838,6 +1905,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
}
});
if (!addOrderPackageCodes.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(addPackageLog);
}
if (Func.isNotEmpty(oldStockArticle)) {
oldStockArticle.forEach((i, j) -> {
//这里就是需要进行取消的订单信息
@ -1850,6 +1921,24 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
packageEntityList.forEach(p -> {
p.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
distributionReservationPackageService.updateById(p);
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"取消计划配送,操作方式:取消订单,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",p.getPacketBarCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.CANCEL_DELIVERY.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
cancelPackageLog.add(trunklinePackageTrackLog);
cancelOrderPackageCodes.add(p.getPacketBarCode());
reduceTotal.getAndAdd(distributionParcelListService.getById(p.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
@ -1894,6 +1983,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
});
}
if (!cancelOrderPackageCodes.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(cancelPackageLog);
}
//库存品修改
//查询出原来的库存品信息
List<DistributionReservationStocklistEntity> reservationStocklistEntities = distributionReservationStocklistService.getBaseMapper().selectList(Wrappers.<DistributionReservationStocklistEntity>query().lambda()
@ -2030,7 +2122,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
list.forEach(l -> l.setStockPackageStatus(InventoryPackageStatusConstant.quxiao.getValue()));
disStockListDetailService.updateBatchById(list);
});
DistributionReservationEntity reservationEntity = this.getById(id);
//推送日志
Integer reservationNum = reservationEntity.getReservationNum();
reservationEntity.setOtherFee(distributionReservationDTO.getOtherFee());
reservationEntity.setConsignee(distributionReservationDTO.getConsignee());
@ -2593,6 +2686,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
.eq(DistributionReservationStockarticleEntity::getReservationId, reservationEntity.getId())
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()));
if (Func.isNotEmpty(reservationStockarticleEntityList) && reservationStockarticleEntityList.size() > 0) {
List<String> orderPackageCodes = new ArrayList<>();
List<JSONObject> aaa = new ArrayList<>();
reservationStockarticleEntityList.forEach(rs -> {
rs.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
// distributionReservationStockarticleService.updateById(rs);
@ -2613,10 +2708,33 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
// distributionAsyncService.checkStockArticleReservationStatus(parcelListEntity);
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"取消配送,操作方式:取消配送任务,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",rp.getPacketBarCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode",WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(rp.getPacketBarCode());
} else {
log.error("#################错误包件ID:{}", rp.getParceListId());
}
});
if (!aaa.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
}
}
} else if (rs.getIsZero().equals(IsOrNoConstant.yes.getValue())) {
//零担
@ -3109,6 +3227,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
//预约订单数量
AtomicInteger packageNum = new AtomicInteger();
List<DistributionParcelListDTO> packageList = s.getPackageListInfo();
List<String> orderPackageCodes = new ArrayList<>();
List<JSONObject> aaa = new ArrayList<>();
if (Func.isEmpty(packageList)) {
//添加订单下的所有在库订单的包件
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId, s.getId())
@ -3140,19 +3260,28 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
dp.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(dp);
// distributionAsyncService.checkStockArticleReservationStatus(dp);
orderPackageCodes.add(dp.getOrderPackageCode());
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"计划配送,操作方式:系统默认全部包件,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",dp.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
aaa.add(trunklinePackageTrackLog);
}
}
// stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
});
// s.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
// s.setAvailableQuantity(0);
// if (Func.isNotEmpty(s.getAllocation())) {
// s.setAllocation(null);
// }
// distributionStockArticleService.updateById(s);
} else {
//维护选中的包件信息
List<Long> packageIds = packageList.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList());
@ -3168,30 +3297,33 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationPackageService.save(distributionReservationPackageEntity);
packageNum.getAndAdd(p.getQuantity());
p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// p.setBrandId(p.getBrandId());
distributionParcelListService.updateById(p);
// distributionAsyncService.checkStockArticleReservationStatus(p);
orderPackageCodes.add(p.getOrderPackageCode());
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"计划配送,操作方式:选择包件,预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
trunklinePackageTrackLog.put("tenantId",reservationEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",reservationEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",reservationEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",reservationEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",reservationEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",reservationEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",reservationEntity.getStatus());
trunklinePackageTrackLog.put("createDept",reservationEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",p.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",reservationEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",reservationEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",AuthUtil.getUser().getNickName());
aaa.add(trunklinePackageTrackLog);
}
}
});
// s.setReservationStatus(ServiceConstant.ORDER_RESERVATION_STATE_PART);
//设置订单可用数量为
// s.setAvailableQuantity(s.getHandQuantity() - s.getReservationNum());
//这里查询到当前订单下的包件信息和选中包件进行比对,如果数量一致那么说明该订单是已预约状态、否则为部分预约状态
// LambdaQueryWrapper<DistributionParcelListEntity> qw = new QueryWrapper<DistributionParcelListEntity>().lambda().eq(DistributionParcelListEntity::getStockArticleId, s.getId());
// List<DistributionParcelListEntity> parcelListEntities = distributionParcelListService.getBaseMapper().selectList(qw);
// if (packageList.size() == parcelListEntities.size()) {
// //这里就是表示进行了包件选取的操作,但是选取的包件数量为全部
// s.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
// } else {
// s.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
// }
}
distributionReservationStockarticleEntity.setReservationNum(packageNum.get());
//日志记录
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
//维护对应订单的配送件数
// Integer i = distributionStockArticleMapper.augmentDeliveryQuantity(distributionReservationStockarticleEntity.getStockArticleId(),distributionReservationStockarticleEntity.getReservationNum());
// distributionStockArticleService.maintenanceOrderInfo(s.getOrderCode(),myCurrentWarehouse.getId());
} else if ("1".equals(s.getIsZero())) {
//零担订单处理
if (Func.isNotBlank(s.getServiceNumber())) {

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

@ -785,6 +785,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscaninvnEntity.setIsInsert(LoadingIsInsertConstant.bulu.getValue());
distributionLoadscaninvnEntity.setScanType("1");
distributionLoadscaninvnEntity.setType(2);
distributionLoadscaninvnEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionLoadscaninvnEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscaninvnEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
distributionLoadscaninvnEntity.setIsSignfor(1);
distributionLoadscaninvnEntity.setReceivedQuantity(inventoryPackage.get(0).getNum());
@ -996,6 +998,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
log.error(method + "参数异常,ReservationId为空");
return R.fail("请联系管理员");
}
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
String zeroPackageIds = distrilbutionloadingscanDTO.getZeroPackageIds();
Long reservationId = distrilbutionloadingscanDTO.getReservationId();
List<Long> list = Func.toLongList(zeroPackageIds);
@ -1074,6 +1077,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
unLoadscanEntity.setIsAbnormalSigning(1);
unLoadscanEntity.setIsAbnormalLoading(1);
unLoadscanEntity.setIsZero(1);
unLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
unLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
unLoadscanEntity.setTrainNumber(deliveryListEntity.getTrainNumber());
unLoadscanEntity.setVehicleId(deliveryListEntity.getVehicleId());
unLoadscanEntity.setVehicleName(vehicleNub);
@ -1254,6 +1259,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
unLoadscanEntity.setIsAbnormalSigning(1);
unLoadscanEntity.setIsAbnormalLoading(1);
unLoadscanEntity.setIsZero(1);
unLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
unLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
unLoadscanEntity.setTrainNumber(deliveryListEntity.getTrainNumber());
unLoadscanEntity.setVehicleId(deliveryListEntity.getVehicleId());
unLoadscanEntity.setVehicleName(vehicleNub);
@ -2590,8 +2597,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
trunklinePackageTrackLog.put("status",distributionLoadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",distributionLoadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",distributionLoadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",distributionLoadscanEntity.getWarehouseId()==null?myCurrentWarehouse.getId():loadscanEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseId",distributionLoadscanEntity.getWarehouseName()==null?myCurrentWarehouse.getName():loadscanEntity.getWarehouseName());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",distributionLoadscanEntity.getScanUser());
@ -2684,7 +2691,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//维护配送任务
distributionDeliveryListService.maintenanceDeliveryInfo(distrilbutionloadingscanDTO.getDeliveryId());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa,orderPackageCodes,WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
return Resp.scanSuccessWithData("签收成功", str, orderPackageCodes);
} catch (Exception e) {
log.error(">>>>> 签收异常报错", e);
@ -2854,6 +2861,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setReservationId(distrilbutionloadingscanDTO.getReservationId());
distributionLoadscanEntity.setIsSignfor(2);
distributionLoadscanEntity.setIsInsert(2);
distributionLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscanEntity.setSignforState(2);
distributionLoadscanEntity.setPackageNub(collect.get(0).getQuantity());
distributionLoadscanEntity.setOrderId(collect.get(0).getStockArticleId());
@ -3201,7 +3210,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return Resp.scanFail("重复操作!!", "重复操作");
}
}
String content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getScanUser()+"扫描异常签收,装车方式:补录装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getNickName()+"扫描异常签收,装车方式:补录装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog= new JSONObject();
switch (reservationEntity.getDeliveryType()) {
case "1":
@ -3239,6 +3248,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setIsSignfor(2);
distributionLoadscanEntity.setTrainNumber(distributionDeliveryListEntity.getTrainNumber());
distributionLoadscanEntity.setIsInsert(2);
distributionLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscanEntity.setSignforState(2);
distributionLoadscanEntity.setPackageNub(parcelListEntity.getQuantity());
distributionLoadscanEntity.setIsAbnormalSigning(2);
@ -3275,26 +3286,31 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanService.save(distributionLoadscanEntity);
Integer j = distributionSignforMapper.updateSignforByReservationId(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
} else {
content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getScanUser()+"扫描异常签收,装车方式:扫描装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getSigningUser()+"扫描异常签收,装车方式:扫描装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
distributionLoadscanService.updateById(distributionLoadscanEntity);
distributionSignforMapper.updateSignforNum(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
}
trunklinePackageTrackLog.put("tenantId",distributionLoadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",distributionLoadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",distributionLoadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",distributionLoadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",distributionLoadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",distributionLoadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",distributionLoadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",distributionLoadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",distributionLoadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",distributionLoadscanEntity.getWarehouseId()==null?myCurrentWarehouse.getId():distributionLoadscanEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",distributionLoadscanEntity.getWarehouseName()==null?myCurrentWarehouse.getName():distributionLoadscanEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",distributionLoadscanEntity.getScanUser());
try {
trunklinePackageTrackLog.put("tenantId",distributionLoadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",distributionLoadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",distributionLoadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",distributionLoadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",distributionLoadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",distributionLoadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",distributionLoadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",distributionLoadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",distributionLoadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",distributionLoadscanEntity.getSigningUser());
}catch (Exception e){
log.error("商配异常签收日志参数错误",e);
}
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
assert loadscanEntity != null;
orderPackageCodes.add(distributionLoadscanEntity.getOrderPackageCode());
} else {
return Resp.scanFail("操作失败", "不属于该客户");
@ -3366,20 +3382,25 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
//修改包件装车、签收状态
packageLockIds.add(distributionLoadscanEntity.getPackageId());
trunklinePackageTrackLog.put("tenantId",distributionLoadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",distributionLoadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",distributionLoadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",distributionLoadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",distributionLoadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",distributionLoadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",distributionLoadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",distributionLoadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",distributionLoadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",distributionLoadscanEntity.getWarehouseId()==null?myCurrentWarehouse.getId():distributionLoadscanEntity.getWarehouseId());
trunklinePackageTrackLog.put("warehouseId",distributionLoadscanEntity.getWarehouseName()==null?myCurrentWarehouse.getName():distributionLoadscanEntity.getWarehouseName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",distributionLoadscanEntity.getScanUser());
try {
trunklinePackageTrackLog.put("tenantId",distributionLoadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",distributionLoadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",distributionLoadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",distributionLoadscanEntity.getUpdateUser());
trunklinePackageTrackLog.put("updateTime",distributionLoadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",distributionLoadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",distributionLoadscanEntity.getStatus());
trunklinePackageTrackLog.put("createDept",distributionLoadscanEntity.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",distributionLoadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("workNode", WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLog.put("content",content);
trunklinePackageTrackLog.put("operator",distributionLoadscanEntity.getSigningUser());
}catch (Exception e){
log.info("市配异常签收日志参数错误>>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
throw new RuntimeException("该包件正在被操作,请稍后再试!!!");
}
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@ -3431,7 +3452,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionParcelListMapper.updateOrderPackageCodeById(parcelListEntity.getId(), OrderPackageStatusConstant.yiqianshou.getValue());
//还需要维护包件状态
distributionAsyncService.maintenanceOrderStatus(parcelListEntity.getOrderCode(), parcelListEntity.getWarehouseId());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa,orderPackageCodes,WorkNodeEnums.DISTRIBUTION_ABNORMAL_SIGN_FOR.getCode());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
} else {
log.error("############出现相同的包件码:{}", distrilbutionloadingscanDTO.getBarcode());
return Resp.scanFail("操作失败", "包件信息有误");
@ -3742,6 +3763,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscaninvnEntity.setIsInsert(LoadingIsInsertConstant.bulu.getValue());
distributionLoadscaninvnEntity.setScanType("1");
distributionLoadscaninvnEntity.setType(2);
distributionLoadscaninvnEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionLoadscaninvnEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscaninvnEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
distributionLoadscaninvnEntity.setIsSignfor(1);
distributionLoadscaninvnEntity.setReceivedQuantity(inventory.get(0).getNum());
@ -4935,6 +4958,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
newLoadscaninvnEntity.setReceivedQuantity(detailEntity.getNum());
newLoadscaninvnEntity.setOneClick(2);
newLoadscaninvnEntity.setOneQclick(2);
newLoadscaninvnEntity.setWarehouseId(myCurrentWarehouse.getId());
newLoadscaninvnEntity.setWarehouseName(myCurrentWarehouse.getName());
newLoadscaninvnEntity.setSigningUser(user.getNickName());
newLoadscaninvnEntity.setSigningUserId(user.getUserId());
newLoadscaninvnEntity.setSigningTime(simpleDateFormat.format(new Date()));
@ -5045,6 +5070,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadscanEntity.setDeliveryId(distributionSignforEntity.getDeliveryId());
loadscanEntity.setReservationId(distributionSignforEntity.getReservationId());
loadscanEntity.setScanUser(user.getNickName());
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setScanTime(simpleDateFormat.format(new Date()));
loadscanEntity.setPackageNub(parcelNumberEntity.getReservationNum());
loadscanEntity.setLoadedNub(parcelNumberEntity.getReservationNum());
@ -5071,6 +5098,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadscanEntity.setIsInsert(LoadingIsInsertConstant.bulu.getValue());
loadscanEntity.setScanType("1");
loadscanEntity.setType(2);
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
loadscanEntity.setIsSignfor(1);
loadscanEntity.setReceivedQuantity(parcelNumberEntity.getReservationNum());
@ -5143,6 +5172,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
loadscanEntity.setReservationId(distributionSignforEntity.getReservationId());
loadscanEntity.setScanUser(user.getNickName());
loadscanEntity.setScanTime(signingTime);
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
loadscanEntity.setPackageNub(parcelListEntity.getQuantity());
loadscanEntity.setSigningUser(user.getNickName());
loadscanEntity.setSigningUserId(user.getUserId());
@ -5190,9 +5221,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
content = "包件在"+myCurrentWarehouse.getName()+"由"+loadscanEntity.getSigningUser()+"司机一键签收,装车方式:扫描装车,配送车次号:"+distributionDeliveryListEntity.getTrainNumber()+"预约任务号:"+reservationEntity.getReservationCode();
trunklinePackageTrackLog.put("tenantId",loadscanEntity.getTenantId());
trunklinePackageTrackLog.put("createTime",loadscanEntity.getCreateTime());
trunklinePackageTrackLog.put("createUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntities.getUpdateUser());
trunklinePackageTrackLog.put("updateUser",loadscanEntity.getCreateUser());
trunklinePackageTrackLog.put("updateTime",loadscanEntity.getUpdateTime());
trunklinePackageTrackLog.put("isDeleted",loadscanEntity.getIsDeleted());
trunklinePackageTrackLog.put("status",loadscanEntity.getStatus());
@ -5200,7 +5230,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntity.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("operator",loadscanEntity.getScanUser());
trunklinePackageTrackLog.put("operator",loadscanEntity.getSigningUser());
} else {
//存在装车数据
if (distributionSignfor.getIsClerk()) {
@ -5230,10 +5260,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
trunklinePackageTrackLog.put("status",loadscanEntities.getStatus());
trunklinePackageTrackLog.put("createDept",loadscanEntities.getCreateDept());
trunklinePackageTrackLog.put("orderPackageCode",loadscanEntities.getOrderPackageCode());
trunklinePackageTrackLog.put("warehouseId",loadscanEntities.getWarehouseId()==null?myCurrentWarehouse.getId():loadscanEntities.getWarehouseId());
trunklinePackageTrackLog.put("warehouseName",loadscanEntities.getWarehouseName()==null?myCurrentWarehouse.getName():loadscanEntities.getWarehouseName());
trunklinePackageTrackLog.put("operator",loadscanEntities.getScanUser());
trunklinePackageTrackLog.put("warehouseId",myCurrentWarehouse.getId());
trunklinePackageTrackLog.put("warehouseName",myCurrentWarehouse.getName());
trunklinePackageTrackLog.put("operator",loadscanEntities.getSigningUser());
}
}
@ -5265,7 +5294,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
map.put("warehouseId", myCurrentWarehouse.getId());
warehouseUpdownTypeClient.downDeliveryPackage(map);
trunklinePackageTrackLogClient.addPackageTrackLog(aaa,packageCodes,WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode());
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
}
}
//批量维护订单信息

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

@ -1889,6 +1889,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
@Override
@Transactional
public synchronized void maintenanceOrderInfo(String orderCodes, Long warehouseId) {
String method = "###############方法:maintenanceOrderInfo,";
if (Func.isEmpty(orderCodes)) {
log.error(method + "参数缺失orderCodes:{}", orderCodes);
@ -1898,6 +1899,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
for (String s : split) {
//查询订单
DistributionStockArticleEntity stockArticleEntity = this.findStockArticleByOrderCodeAndWarehouseId(s, warehouseId);
DistributionStockArticleEntity t = new DistributionStockArticleEntity();
if (Func.isEmpty(stockArticleEntity)) {
log.error(method + "订单不存在orderCode:{}", s);
throw new RuntimeException("订单不存在");
@ -1945,47 +1947,59 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
.mapToInt(DistributionParcelListEntity::getQuantity).sum();
inWarehouseQuantity = a;
stockArticleEntity.setHandQuantity(inWarehouseQuantity);
stockArticleEntity.setDeliveryQuantity(deliveryQuantity);
stockArticleEntity.setSigninQuantity(signingQuantity);
t.setHandQuantity(inWarehouseQuantity);
t.setDeliveryQuantity(deliveryQuantity);
t.setSigninQuantity(signingQuantity);
if (totalNumber != 0) {
if (totalNumber == deliveryQuantity) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
t.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
t.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}
if (deliveryQuantity == 0) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
t.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
}
//未签收的情况下分析订单的装车状态,此时该订单未有包件进行其拿手
if (signingQuantity == 0) {
if (totalNumber == loadingQuantity) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.chuku.getValue());
t.setOrderStatus(OrderStatusConstant.chuku.getValue());
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
t.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
}
if (loadingQuantity == 0) {
if (totalNumber == inWarehouseQuantity) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.ruku.getValue());
t.setOrderStatus(OrderStatusConstant.ruku.getValue());
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenruku.getValue());
t.setOrderStatus(OrderStatusConstant.bufenruku.getValue());
}
}
} else {
//订单存在签收数据了,此时就需要进行签收状态的判断
if (totalNumber == signingQuantity) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.qianshou.getValue());
t.setOrderStatus(OrderStatusConstant.qianshou.getValue());
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
t.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
}
if (inWarehouseQuantity > 0) {
stockArticleEntity.setGenre(1);
t.setGenre(1);
}
this.updateById(stockArticleEntity);
// 这里在和原始对象进行比较
check2ObjSome(t, stockArticleEntity);
// 根据跳进进行更新
baseMapper.updateDistributionStockArticleEntityById(t);
// this.updateById(stockArticleEntity);//
}
} else if (IsOrNoConstant.yes.getValue().equals(stockArticleEntity.getIsZero())) {
//零担订单维护
@ -2061,6 +2075,32 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
}
}
private void check2ObjSome(DistributionStockArticleEntity t, DistributionStockArticleEntity stockArticleEntity) {
t.setId(stockArticleEntity.getId());
if(t.getOrderStatus().equals(stockArticleEntity.getOrderStatus())){
t.setOrderStatus(null);
}
if(t.getReservationStatus().equals(stockArticleEntity.getReservationStatus())){
t.setReservationStatus(null);
}
if(t.getGenre().equals(stockArticleEntity.getGenre())){
t.setGenre(null);
}
if(t.getHandQuantity().equals(stockArticleEntity.getHandQuantity())){
t.setHandQuantity(null);
}
if(t.getDeliveryQuantity().equals(stockArticleEntity.getDeliveryQuantity())){
t.setDeliveryQuantity(null);
}
if(t.getSigninQuantity().equals(stockArticleEntity.getSigninQuantity())){
t.setSigninQuantity(null);
}
}
@Override
@Transactional
public synchronized void maintenanceOrderInfoByIds(List<Long> ids) {

283
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java

@ -1,45 +1,40 @@
package com.logpm.distribution.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.business.vo.DistributionBusinessPreCarNumberVO;
import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.dto.DistributionBusinessPreOrderDTO;
import com.logpm.distribution.dto.DistributionStockArticleOweDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.mapper.DistributionBusinessPreOrderMapper;
import com.logpm.distribution.service.IDistributionAsyncService;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.feign.IInComingClient;
import lombok.AllArgsConstructor;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@Service
@ -50,7 +45,9 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
private final IBasicdataWarehouseClient basicdataWarehouseClient;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionAsyncService distributionAsyncService;
// private final IDistributionAsyncService distributionAsyncService;
private final IInComingClient inComingClient;
@Override
public Boolean inOrder(String ids) throws ServiceException {
@ -59,31 +56,73 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
List<String> idArray = Arrays.asList(ids.split(","));
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", idArray);
InComingDTO inComingDTO = new InComingDTO();
StringBuffer sb = new StringBuffer();
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
List<DistributionBusinessPreOrderEntity> data = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
throw new ServiceException("存在已入库的包件");
}
//调用方法 执行批量入库
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(distributionBusinessPreOrderEntity);
if (stockArticleEntity == null) {
throw new ServiceException("订单信息错误,请联系管理员!");
if(!sb.toString().isEmpty()){
sb.append(",");
}
// 保存包件
distributionBusinessPreOrderEntity.setWarehouseId(stockArticleEntity.getWarehouseId());
distributionBusinessPreOrderEntity.setWarehouse(stockArticleEntity.getWarehouse());
distributionBusinessPreOrderEntity.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(distributionBusinessPreOrderEntity);
sb.append(distributionBusinessPreOrderEntity.getOrderPackageCode());
data.add(distributionBusinessPreOrderEntity);
}
// 调用入库方法
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
inComingDTO.setOrderPackageCode(sb.toString());
inComingDTO.setIncomingType(IncomingTypeEnum.LINE_INCOMING.getCode());
inComingDTO.setWarehouseId(myCurrentWarehouse.getId());
inComingDTO.setWarehouseName(myCurrentWarehouse.getName());
R r = inComingClient.incomingPackage(inComingDTO);
if(r.isSuccess()){
// 更新成功
// 更新入库状态
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : data) {
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
}
}
return true;
}
@Override
public Integer inOrderByOrderPackageCode(String orderPackageCode,String carNum) {
// int a =baseMapper.updateBusinessPreOrderByOrderPackageCode(orderPackageCode);
//
// return a;
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("order_package_code", orderPackageCode);
// wrapper.eq("in_warehouse",0);
wrapper.eq("is_deleted","0");
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
if(!list.isEmpty()){
DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity = list.get(0);
distributionBusinessPreOrderEntity.setInWarehouse(1);
return baseMapper.updateById(distributionBusinessPreOrderEntity);
}
return 0;
}
@Override
public IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page) {
DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
@ -137,80 +176,86 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
public Resp inOrderWarehourse(String orderPackageCode, String reservationCode) {
// 查询当前预约单所有的包件
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
// 寻找 当前匹配的包条
DistributionBusinessPreOrderEntity t = null;
DistributionBusinessPreOrderEntity t1 = null;
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// 找到匹配的包条码
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
return Resp.scanSuccess("扫描成功", "包件已入库");
} else {
t = distributionBusinessPreOrderEntity;
}
}
if (t1 == null) {
t1 = distributionBusinessPreOrderEntity;
}
}
if (t == null) {
try {
DistributionBusinessPreOrderEntity finalT = t1;
CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
// 如找到了 保存在当前的这个配送计划任务中
if (distributionParcelListEntity != null) {
// 保存包件
t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
t.setDriverName(finalT.getDriverName());
t.setVehicleName(finalT.getVehicleName());
t.setDistrCarNumber(finalT.getTrainNumber());
t.setOperationStatus(1);
t.setInWarehouse(0);
this.save(t);
list.add(t);
}
} catch (InterruptedException | ExecutionException e) {
log.error("inOrderWarehourse:", e);
throw new ServiceException("包件信息不存在!");
}
}
// 保存订单
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
if (stockArticleEntity == null) {
return Resp.scanFail("操作失败", "包件数据不存在");
}
// 保存包件
t.setWarehouseId(stockArticleEntity.getWarehouseId());
t.setWarehouse(stockArticleEntity.getWarehouse());
t.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(t);
// 调用入库方法
t.setInWarehouse(1);
baseMapper.updateById(t);
queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
Long l = baseMapper.selectCount(queryWrapper);
// // 查询当前预约单所有的包件
//
// LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
// List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
//
// // 寻找 当前匹配的包条
// DistributionBusinessPreOrderEntity t = null;
// DistributionBusinessPreOrderEntity t1 = null;
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
// if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// // 找到匹配的包条码
// if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
// return Resp.scanSuccess("扫描成功", "包件已入库");
// } else {
// t = distributionBusinessPreOrderEntity;
// }
// }
// if (t1 == null) {
// t1 = distributionBusinessPreOrderEntity;
// }
// }
// if (t == null) {
// try {
// DistributionBusinessPreOrderEntity finalT = t1;
// CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
//
// DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
//
// // 如找到了 保存在当前的这个配送计划任务中
// if (distributionParcelListEntity != null) {
// // 保存包件
// t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
// t.setDriverName(finalT.getDriverName());
// t.setVehicleName(finalT.getVehicleName());
// t.setDistrCarNumber(finalT.getTrainNumber());
// t.setOperationStatus(1);
// t.setInWarehouse(0);
// this.save(t);
// list.add(t);
//
// }
// } catch (InterruptedException | ExecutionException e) {
// log.error("inOrderWarehourse:", e);
// throw new ServiceException("包件信息不存在!");
// }
//
//
// }
//
// // 保存订单
// DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
// if (stockArticleEntity == null) {
// return Resp.scanFail("操作失败", "包件数据不存在");
// }
// // 保存包件
// t.setWarehouseId(stockArticleEntity.getWarehouseId());
// t.setWarehouse(stockArticleEntity.getWarehouse());
// t.setStockArticleId(stockArticleEntity.getId());
// buildDistributionParcelListEntity(t);
//
// // 调用入库方法
// t.setInWarehouse(1);
// baseMapper.updateById(t);
//
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
// Long l = baseMapper.selectCount(queryWrapper);
return Resp.scanSuccess("扫描成功", "请前往码板打托进行入库!");
}
@Override
public IPage<DistributionBusinessPreCarNumberVO> pageByCarNum(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreCarNumberVO> page) {
IPage<DistributionBusinessPreCarNumberVO> pageByCarNum =baseMapper.pageByCarNum(page, distributionBusinessPreOrderDTO);
return pageByCarNum;
return Resp.scanSuccess("扫描成功", l + "件");
}
private void buildDistributionParcelListEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
@ -238,33 +283,33 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
}
private DistributionStockArticleEntity buildDistributionStockArticleEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
DistributionStockArticleEntity stockArticleEntity = null;
try {
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
stockArticleEntity = distributionStockArticleService.findStockArticleByOrderCodeAndWarehouseId(distributionBusinessPreOrderEntity.getOrderCode(),
myCurrentWarehouse.getId());
if (stockArticleEntity == null) {
// 需要保存这个对象
CompletableFuture<DistributionStockArticleEntity> distributionStockArticleEntityCompletableFuture = CompletableFuture.supplyAsync(() -> distributionAsyncService.findDistributionStockArticleEntityByIdForAsync(distributionBusinessPreOrderEntity.getFromTenantId(), distributionBusinessPreOrderEntity.getStockArticleId()));
stockArticleEntity = distributionStockArticleEntityCompletableFuture.get();
if (stockArticleEntity == null) {
return null;
}
// 获取当前登录人的仓库信息
stockArticleEntity.setId(null);
stockArticleEntity.setTenantId(null);
stockArticleEntity.setWarehouseId(myCurrentWarehouse.getId());
stockArticleEntity.setWarehouse(myCurrentWarehouse.getName());
stockArticleEntity.setHandQuantity(0);
distributionStockArticleService.save(stockArticleEntity);
}
} catch (InterruptedException | ExecutionException e) {
log.error("buildDistributionStockArticleEntity :", e);
throw new CustomerException("系统异常,请联系管理员");
}
return stockArticleEntity;
}
// private DistributionStockArticleEntity buildDistributionStockArticleEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
// DistributionStockArticleEntity stockArticleEntity = null;
// try {
// BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
// stockArticleEntity = distributionStockArticleService.findStockArticleByOrderCodeAndWarehouseId(distributionBusinessPreOrderEntity.getOrderCode(),
// myCurrentWarehouse.getId());
// if (stockArticleEntity == null) {
// // 需要保存这个对象
// CompletableFuture<DistributionStockArticleEntity> distributionStockArticleEntityCompletableFuture = CompletableFuture.supplyAsync(() -> distributionAsyncService.findDistributionStockArticleEntityByIdForAsync(distributionBusinessPreOrderEntity.getFromTenantId(), distributionBusinessPreOrderEntity.getStockArticleId()));
// stockArticleEntity = distributionStockArticleEntityCompletableFuture.get();
// if (stockArticleEntity == null) {
// return null;
// }
// // 获取当前登录人的仓库信息
// stockArticleEntity.setId(null);
// stockArticleEntity.setTenantId(null);
// stockArticleEntity.setWarehouseId(myCurrentWarehouse.getId());
// stockArticleEntity.setWarehouse(myCurrentWarehouse.getName());
// stockArticleEntity.setHandQuantity(0);
// distributionStockArticleService.save(stockArticleEntity);
// }
// } catch (InterruptedException | ExecutionException e) {
// log.error("buildDistributionStockArticleEntity :", e);
// throw new CustomerException("系统异常,请联系管理员");
// }
// return stockArticleEntity;
// }
@ChangeAsync()
public DistributionParcelListEntity selectByOrderPackageCode(String orderPackageCode, Long warehouseId) {

6
blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java

@ -22,7 +22,10 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.exception.CustomerException;
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.utils.StringUtil;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
@ -54,8 +57,7 @@ public class HwyOrderStatusHandler {
@RabbitHandler
public void hwyOrderStatusHandler(Map map, Message message, Channel channel) throws IOException, NoSuchAlgorithmException {
// 如果手动ACK,消息会被监听消费,但是消息在队列中依旧存在,如果 未配置 acknowledge-mode 默认是会在消费完毕后自动ACK掉
final long deliveryTag = message.getMessageProperties().getDeliveryTag();
String msg = new String(message.getBody());
log.info("##################hwyOrderStatusHandler: 处理扫码作业数据");
OrderStatusDTO orderStatusDTO = JSONUtil.toBean((String) map.get("messageData"), OrderStatusDTO.class);
String orderSelfNum = orderStatusDTO.getOrderNo();//订单自编号

120
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java

@ -0,0 +1,120 @@
package com.logpm.trunkline.aspect;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.cache.CacheNames;
import org.springblade.common.component.MockLoginService;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.redis.lock.LockType;
import org.springblade.core.redis.lock.RedisLockClient;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.core.tool.utils.ThreadLocalUtil;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Aspect
@Component
@Slf4j
@Order(-1)
@AllArgsConstructor
public class ChangeAsyncAnnotationAspect {
private final MockLoginService mockLoginService;
private final BladeRedis bladeRedis;
private final Environment environment;
private final RedisLockClient redisLockClient;
private final String account = "shujutongbu";
/**
* 定义一个切点匹配所有带有@LogpmAsync("asyncExecutor")注解的方法
* 注意实际上Spring Framework自带对@LogpmAsync("asyncExecutor")的处理直接这样配置可能会导致预期之外的行为
*/
@Around("@annotation(org.springblade.common.annotations.ChangeAsync)")
public Object logAroundAsyncMethods(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
ChangeAsync myAsync = method.getAnnotation(ChangeAsync.class);
String annotationValue = myAsync.value();
log.info(">>>>>>>>>>>>>>>>>> ChangeAsync={}", annotationValue);
// 获取当前拦截方法的入参参数
Object[] args = joinPoint.getArgs();
// 获取入参名称
String[] parameterNames = signature.getParameterNames();
String tenantId = null;
// 获取参数名称 为tenantId 的值
for (int i = 0; i < parameterNames.length; i++) {
if ("tenantId".equals(parameterNames[i])) {
tenantId = (String) args[i];
log.info(">> tenandId {} ", tenantId);
break;
}
}
// 执行模拟登录
if (StringUtil.isNotBlank(tenantId)) {
JSONObject data = bladeRedis.get(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account);
if (Objects.isNull(data)) {
boolean flag = redisLockClient.tryLock("local_server_user" + tenantId, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS);
if (flag) {
data = bladeRedis.get(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account);
if (Objects.isNull(data)) {
data = mockLoginService.mockToken(tenantId, account);
bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account, data, 3200L);
redisLockClient.unLock("local_server_user" + tenantId, LockType.FAIR);
}
}
}
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
mockRequest.addHeader("Blade-Auth", "bearer "+data.get("access_token"));
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(mockRequest));
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") );
httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
ThreadLocalUtil.put("bladeContext", httpHeaders);
DynamicDataSourceContextHolder.push(data.getString("tenant_id"));
// 执行原方法
Object result = joinPoint.proceed();
// 在方法执行后,从数据源上下文中移除租户ID
DynamicDataSourceContextHolder.poll();
return result;
}else{
return joinPoint.proceed();
}
// // 在方法执行前的操作
// String tenantId = AuthUtil.getTenantId();
// log.info(">> tenandId {} ",tenantId);
// DynamicDataSourceContextHolder.push("627683");
//
// // 执行原方法
// Object result = joinPoint.proceed();
//
// // 在方法执行后的操作
// DynamicDataSourceContextHolder.poll();
// return result;
}
}

31
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java

@ -104,6 +104,37 @@ public class RabbitMqConfiguration {
return BindingBuilder.bind(hwyOpenOrderLoadScanQueue).to(hwyOpenOrderLoadScanExchange).with(RabbitConstant.HWY_ORDER_STATUS_ROUTING).noargs();
}
@Bean
public Queue openWaybillToBusinessQueue() {
return new Queue(RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_QUEUE, true);
}
@Bean
public CustomExchange openWaybillToBusinessExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding openWaybillToBusinessBinding(Queue openWaybillToBusinessQueue, CustomExchange openWaybillToBusinessExchange) {
return BindingBuilder.bind(openWaybillToBusinessQueue).to(openWaybillToBusinessExchange).with(RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_ROUTING).noargs();
}
@Bean
public Queue inWarehouseToBusinessQueue() {
return new Queue(RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_QUEUE, true);
}
@Bean
public CustomExchange inWarehouseToBusinessExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding inWarehouseToBusinessBinding(Queue inWarehouseToBusinessQueue, CustomExchange inWarehouseToBusinessExchange) {
return BindingBuilder.bind(inWarehouseToBusinessQueue).to(inWarehouseToBusinessExchange).with(RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_ROUTING).noargs();
}

22
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java

@ -0,0 +1,22 @@
package com.logpm.trunkline.feign;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.service.IInComingService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@Slf4j
@ApiIgnore()
@RestController
@AllArgsConstructor
public class InComingClient implements IInComingClient{
private final IInComingService inComingService;
@Override
public R incomingPackage(InComingDTO inComingDTO) {
return inComingService.incomingPackage(inComingDTO);
}
}

12
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklinePackageTrackLogClient.java

@ -10,6 +10,7 @@ import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Slf4j
@ApiIgnore()
@ -20,14 +21,21 @@ public class TrunklinePackageTrackLogClient implements ITrunklinePackageTrackLog
private final IPackageTrackLogAsyncService packageTrackLogAsyncService;
@Override
public void addPackageTrackLog(List<JSONObject> addPackageTrackLogList, List<String> orderPackageCodes, Integer workNode) {
public void addPackageTrackLog(List<JSONObject> addPackageTrackLogList) {
List<WarehousePackageTrackLogEntity> ls = new ArrayList<>();
List<String> orderPackageCodes = new ArrayList<>();
final Integer[] workNode = {null};
addPackageTrackLogList.forEach(jsonObject -> {
WarehousePackageTrackLogEntity warehousePackageTrackLogEntity = jsonObject.toJavaObject(WarehousePackageTrackLogEntity.class);
orderPackageCodes.add(warehousePackageTrackLogEntity.getOrderPackageCode());
if (Objects.isNull(workNode[0])){
workNode[0] = warehousePackageTrackLogEntity.getWorkNode();
}
ls.add(warehousePackageTrackLogEntity);
});
packageTrackLogAsyncService.addBatchPackageTrackLog(ls, orderPackageCodes, workNode);
packageTrackLogAsyncService.addBatchPackageTrackLog(ls, orderPackageCodes, workNode[0]);
}
}

1
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java

@ -20,7 +20,6 @@ public class TrunklineWaybillPackageClient implements ITrunklineWaybillPackageCl
LambdaQueryWrapper<TrunklineWaybillPackageEntity> lambdaQueryWrapper =new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(TrunklineWaybillPackageEntity::getWaybillId,waybillIds);
trunklineWaybillPackageService.list(lambdaQueryWrapper);
return trunklineWaybillPackageService.list(lambdaQueryWrapper);
}

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

@ -25,7 +25,7 @@ public interface TrunklineBillladingMapper extends BaseMapper<TrunklineBillladin
IPage<WarehouseWaybillVO> findWaybillListNotBillladingId(IPage<Object> page,@Param("param") BillladingDTO billladingDTO);
IPage<TrunklineBillladingDetailVO> billladingList(IPage<Object> page, @Param("warehouseId") Long warehouseId, @Param("startByDateStr") Date startByDateStr, @Param("endByDateStr") Date endByDateStr);
IPage<TrunklineBillladingDetailVO> billladingList(IPage<Object> page, @Param("warehouseId") Long warehouseId, @Param("startByDateStr") Date startByDateStr, @Param("endByDateStr") Date endByDateStr,@Param("customerTrain") String customerTrain);
List<TrunklineBillladingDetailListVO> findAdvanceDetailList(@Param("orderCode") String orderCode);

53
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/InWarehourseToBusinessListener.java

@ -0,0 +1,53 @@
package com.logpm.trunkline.mq;
import com.alibaba.fastjson.JSONObject;
import com.logpm.distribution.feign.IDistributionBusinessPreOrderClient;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 码半
* 入库扫描
* 触发商家的入库数据
*/
@Slf4j
@AllArgsConstructor
@Component
@RabbitListener(queues = RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_QUEUE)
public class InWarehourseToBusinessListener {
private final IDistributionBusinessPreOrderClient distributionBusinessPreOrderClient;
@RabbitHandler
public void inWarehourseToBusinessDataHandler(Map map, Message message, Channel channel) {
extracted(map);
}
private void extracted(Map map) {
log.info("入库扫描-触发商家的入库数据-入参:{}", map);
JSONObject o = (JSONObject) map.get("messageData");
String orderPackageCode = o.getString("orderPackageCode");
String carNum = o.getString("carNum");
if(carNum==null){
carNum="";
}
Integer i = distributionBusinessPreOrderClient.inOrderByOrderPackageCode(orderPackageCode, carNum);
log.info(">>>>>>>>>>>>>>>>>> 入库操作 执行 {}",i);
}
}

148
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java

@ -0,0 +1,148 @@
package com.logpm.trunkline.mq;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity;
import com.logpm.trunkline.entity.TrunklineWaybillTrackEntity;
import com.logpm.trunkline.feign.ITrunklineAdvanceClient;
import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient;
import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient;
import com.logpm.trunkline.feign.ITrunklineWaybillPackageClient;
import com.logpm.trunkline.service.IAsyncService;
import com.logpm.trunkline.service.ITrunklineWaybillTrackService;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient;
import com.rabbitmq.client.Channel;
import jodd.util.ArraysUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* 运单开单数据推送商场
* <br>
* <li>站存单</li>
* <li>站存单明细</li>
* <li>运单</li>
* <li>运单关联信息</li>
* <li>运单关联暂存单</li>
* <li>运单关联站存单明细</li>
*/
@Slf4j
@AllArgsConstructor
@Component
@RabbitListener(queues = RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_QUEUE)
public class
OpenWaybillToBusinessListener {
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient;
private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient;
private final ITrunklineAdvanceClient trunklineAdvanceClient;
private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient;
private final ISysClient sysClient;
private final IAsyncService asyncService;
private ITrunklineWaybillTrackService trunklineWaybillTrackService;
@RabbitHandler
public void openWaybillToBusinessDataHandler(Map map, Message message, Channel channel) {
extracted(map);
}
private void extracted(Map map) {
Long waybillId = (Long) map.get("messageData");
if (ObjectUtil.isEmpty(waybillId)) {
log.warn("运单ID为null");
return;
}
// 获取运单关联的暂存单信息
WarehouseWaybillEntity byWaybillId = warehouseWaybillClient.findByWaybillId(waybillId);
R<List<Tenant>> tenantList = sysClient.getTenantList();
Tenant tenant = null;
if (tenantList.isSuccess()) {
List<Tenant> data = tenantList.getData();
for (Tenant datum : data) {
if (datum.getTenantType() == 2 && datum.getTenantName().equals(byWaybillId.getConsignee().trim())) {
tenant = datum;
break;
}
}
}
if (ObjectUtil.isEmpty(tenant)) {
log.warn(">>>>> 租户不存在");
return;
}
List<WarehouseWaybillEntity> waybillBilllByWaybillNos = new ArrayList<>();
waybillBilllByWaybillNos.add(byWaybillId);
List<Long> waybillIds = new ArrayList<>();
waybillIds.add(waybillId);
List<WarehouseWayBillDetail> warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillId(waybillId);
List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillIds(waybillIds);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds);
// 暂存单ID集合
List<Long> collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList());
List<TrunklineAdvanceEntity> trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect);
// 获取暂存单明细
List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
LambdaQueryWrapper<TrunklineWaybillTrackEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillId, waybillId);
queryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10");
List<TrunklineWaybillTrackEntity> list = trunklineWaybillTrackService.list(queryWrapper);
TrunklineWaybillTrackEntity trunklineWaybillTrackEntity = list.get(0);
Tenant finalTenant = tenant;
CompletableFuture.supplyAsync(() -> {
asyncService.saveOtherData(finalTenant.getTenantId(), waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails,trunklineWaybillTrackEntity);
return null;
});
}
}

11
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IAsyncService.java

@ -1,7 +1,11 @@
package com.logpm.trunkline.service;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.trunkline.entity.*;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import org.springblade.common.annotations.ChangeAsync;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@ -13,4 +17,7 @@ public interface IAsyncService {
CompletableFuture<Boolean> saveAdvanceEntity(List<TrunklineAdvanceEntity> list, int queryType);
CompletableFuture<Boolean> updateAdvanceEntity(List<TrunklineAdvanceEntity> list, int queryType);
void saveOtherData(String tenantId, List<WarehouseWaybillEntity> waybillBilllByWaybillNos, List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities, List<TrunklineAdvanceEntity> trunklineAdvanceEntities, List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities, List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities, List<WarehouseWayBillDetail> warehouseWayBillDetails, TrunklineWaybillTrackEntity trunklineWaybillTrackEntity );
}

317
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/AsyncServiceImpl.java

@ -1,24 +1,63 @@
package com.logpm.trunkline.service.impl;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.service.IAsyncService;
import com.logpm.trunkline.service.ITrunklineAdvanceDetailService;
import com.logpm.trunkline.service.ITrunklineAdvanceService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.trunkline.entity.*;
import com.logpm.trunkline.service.*;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Service
@Slf4j
public class AsyncServiceImpl implements IAsyncService {
@Autowired
private ITrunklineAdvanceService advanceService;
@Autowired
private ITrunklineAdvanceDetailService advanceDetailService;
@Autowired
private IWarehouseWaybillClient warehouseWaybillClient;
@Autowired
private IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
@Autowired
private ISysClient sysClient;
@Autowired
private BladeRedis bladeRedis;
@Autowired
private ITrunklineWaybillOrderService waybillOrderService;
@Autowired
private ITrunklineWaybillPackageService trunklineWaybillPackageService;
@Autowired
private IWarehouseWaybillClient waybillClient;
@Autowired
private IBasicdataWarehouseClient warehouseClient;
@Autowired
private ITrunklineWaybillTrackService trunklineWaybillTrackService;
@LogpmAsync("asyncExecutor")
@Override
@ -47,4 +86,272 @@ public class AsyncServiceImpl implements IAsyncService {
);
}
@ChangeAsync()
@Override
public void saveOtherData(String tenantId, List<WarehouseWaybillEntity> waybillBilllByWaybillNos, List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities, List<TrunklineAdvanceEntity> trunklineAdvanceEntities, List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities, List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities, List<WarehouseWayBillDetail> warehouseWayBillDetails, TrunklineWaybillTrackEntity trunklineWaybillTrackEntity) {
// 保存暂存单
Tenant tenant = null;
R<Tenant> tenantFeign = sysClient.getTenant(tenantId);
if (tenantFeign.isSuccess()) {
tenant = tenantFeign.getData();
}
String mallName = tenant.getTenantName();
for (TrunklineAdvanceEntity trunklineAdvanceEntity : trunklineAdvanceEntities) {
TrunklineAdvanceEntity finalTrunklineAdvanceEntity = trunklineAdvanceEntity;
List<TrunklineAdvanceDetailEntity> t = trunklineAdvanceDetailEntities.stream().filter(trunklineAdvanceDetailEntity -> trunklineAdvanceDetailEntity.getAdvanceId().equals(finalTrunklineAdvanceEntity.getId())).collect(Collectors.toList());
saveTrunklineAdvanceEntity(trunklineAdvanceEntity, mallName);
// 保存暂存子表
saveTrunklineAdvanceDetailEntity(t, trunklineAdvanceEntity, mallName);
}
List<Long> collect = trunklineAdvanceEntities.stream().map(TrunklineAdvanceEntity::getId).distinct().collect(Collectors.toList());
// 重新查询trunklineAdvanceDetail
List<TrunklineAdvanceDetailVO> listByAdvanceIds = advanceDetailService.findAdvanceDetailVoByAdvanceIds(collect);
// 保存运单
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
for (WarehouseWaybillEntity waybillBilllByWaybillNo : waybillBilllByWaybillNos) {
List<TrunklineWaybillOrderEntity> collect1 = trunklineWaybillOrderEntities.stream().filter(trunklineWaybillOrderEntity -> trunklineWaybillOrderEntity.getWaybillId().equals(waybillBilllByWaybillNo.getId())).collect(Collectors.toList());
List<WarehouseWayBillDetail> t = warehouseWayBillDetails.stream().filter(warehouseWayBillDetail -> warehouseWayBillDetail.getWaybillId().equals(waybillBilllByWaybillNo.getId())).collect(Collectors.toList());
// 修改运单的起始仓库 和末端仓
waybillBilllByWaybillNo.setDepartureWarehouseName(waybillBilllByWaybillNo.getDestinationWarehouseName());
waybillBilllByWaybillNo.setDepartureWarehouseId(null);
// 目的仓
if (basicdataWarehouseEntity != null) {
waybillBilllByWaybillNo.setDestinationWarehouseId(basicdataWarehouseEntity.getId());
waybillBilllByWaybillNo.setDestinationWarehouseName(basicdataWarehouseEntity.getName());
}
waybillBilllByWaybillNo.setTenantId(tenant.getTenantId());
WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(waybillBilllByWaybillNo.getWaybillNo());
if (byWaybillNo == null) {
Long l = warehouseWaybillClient.addEnntity(waybillBilllByWaybillNo);
waybillBilllByWaybillNo.setId(l);
} else {
waybillBilllByWaybillNo.setId(byWaybillNo.getId());
}
List<WarehouseWayBillDetail> byWaybillId = warehouseWaybillDetailClient.findByWaybillId(waybillBilllByWaybillNo.getId());
for (WarehouseWayBillDetail warehouseWayBillDetail : t) {
warehouseWayBillDetail.setId(null);
for (WarehouseWayBillDetail wayBillDetail : byWaybillId) {
if (wayBillDetail.getProductName().equals(warehouseWayBillDetail.getProductName())) {
// 不执行
warehouseWayBillDetail.setId(wayBillDetail.getId());
break;
}
}
if (warehouseWayBillDetail.getId() == null) {
warehouseWayBillDetail.setWaybillId(waybillBilllByWaybillNo.getId());
warehouseWaybillDetailClient.addEntity(warehouseWayBillDetail);
}
}
QueryWrapper<TrunklineWaybillOrderEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("waybill_no", waybillBilllByWaybillNo.getWaybillNo());
List<TrunklineWaybillOrderEntity> listByWaybillNo = waybillOrderService.list(queryWrapper);
for (TrunklineWaybillOrderEntity trunklineWaybillOrderEntity : collect1) {
trunklineWaybillOrderEntity.setId(null);
List<TrunklineWaybillPackageEntity> collect3 = trunklineWaybillPackageEntities.stream().filter(ts -> {
return ts.getWaybillNo().equals(trunklineWaybillOrderEntity.getWaybillNo()) && ts.getAdvanceId().equals(trunklineWaybillOrderEntity.getAdvanceId());
}).collect(Collectors.toList());
trunklineWaybillOrderEntity.setWaybillId(waybillBilllByWaybillNo.getId());
trunklineWaybillOrderEntity.setTenantId(tenant.getTenantId());
Optional<TrunklineAdvanceEntity> entityWithOrderNumber1123 = trunklineAdvanceEntities.stream()
.filter(entity -> trunklineWaybillOrderEntity.getOrderCode().equals(entity.getOrderCode())) // 过滤出订单号为"1123"的实体
.findFirst(); // 获取第一个匹配的实体
if (entityWithOrderNumber1123.isPresent()) {
TrunklineAdvanceEntity foundEntity = entityWithOrderNumber1123.get();
// 使用找到的实体
trunklineWaybillOrderEntity.setAdvanceId(foundEntity.getId());
}
for (TrunklineWaybillOrderEntity waybillOrderEntity : listByWaybillNo) {
if (waybillOrderEntity.getOrderCode().equals(trunklineWaybillOrderEntity.getOrderCode())) {
trunklineWaybillOrderEntity.setId(waybillOrderEntity.getId());
}
}
if (trunklineWaybillOrderEntity.getId() == null) {
waybillOrderService.save(trunklineWaybillOrderEntity);
}
List<Long> ids = Arrays.asList(waybillBilllByWaybillNo.getId());
LambdaQueryWrapper<TrunklineWaybillPackageEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(TrunklineWaybillPackageEntity::getWaybillId, ids);
List<TrunklineWaybillPackageEntity> listByWaybillIds = trunklineWaybillPackageService.list(lambdaQueryWrapper);
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : collect3) {
trunklineWaybillPackageEntity.setId(null);
trunklineWaybillPackageEntity.setWaybillId(waybillBilllByWaybillNo.getId());
trunklineWaybillPackageEntity.setTenantId(tenant.getTenantId());
trunklineWaybillPackageEntity.setAdvanceId(trunklineWaybillOrderEntity.getAdvanceId());
for (TrunklineAdvanceDetailVO listByAdvanceId : listByAdvanceIds) {
if (listByAdvanceId.getAdvanceId().equals(trunklineWaybillOrderEntity.getAdvanceId())) {
if (listByAdvanceId.getOrderPackageCode().equals(trunklineWaybillPackageEntity.getOrderPackageCode())) {
trunklineWaybillPackageEntity.setAdvanceDetailId(listByAdvanceId.getId());
}
}
}
for (TrunklineWaybillPackageEntity listByWaybillId : listByWaybillIds) {
if (listByWaybillId.getWaybillId().equals(trunklineWaybillPackageEntity.getWaybillId())) {
if (listByWaybillId.getOrderPackageCode().equals(trunklineWaybillPackageEntity.getOrderPackageCode())) {
trunklineWaybillPackageEntity.setId(listByWaybillId.getId());
break;
}
}
}
if (trunklineWaybillPackageEntity.getId() == null) {
trunklineWaybillPackageService.save(trunklineWaybillPackageEntity);
}
}
}
// 查询运单作业节点数据
LambdaQueryWrapper<TrunklineWaybillTrackEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillNo, waybillBilllByWaybillNo.getWaybillNo());
lambdaQueryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10");
List<TrunklineWaybillTrackEntity> list = trunklineWaybillTrackService.list(lambdaQueryWrapper);
if (list.isEmpty()) {
trunklineWaybillTrackEntity.setWaybillId(waybillBilllByWaybillNo.getId());
trunklineWaybillTrackEntity.setTenantId(tenant.getTenantId());
BasicdataWarehouseEntity basicdataWarehouseEntity1 = getBasicdataWarehouseEntity(mallName);
trunklineWaybillTrackEntity.setWarehouseId(basicdataWarehouseEntity1.getId());
trunklineWaybillTrackEntity.setWarehouseName(basicdataWarehouseEntity1.getName());
trunklineWaybillTrackService.save(trunklineWaybillTrackEntity);
}
}
}
private BasicdataWarehouseEntity getBasicdataWarehouseEntity(String mallName) {
String cacheName = mallName + "仓";
BasicdataWarehouseEntity basicdataWarehouseEntity = bladeRedis.get(cacheName);
if (basicdataWarehouseEntity == null) {
basicdataWarehouseEntity = warehouseClient.findByName(mallName + "仓");
bladeRedis.setEx(cacheName, basicdataWarehouseEntity, 60 * 60 * 24L);
}
return basicdataWarehouseEntity;
}
private void saveTrunklineAdvanceDetailEntity(List<TrunklineAdvanceDetailEntity> t, TrunklineAdvanceEntity trunklineAdvanceEntity, String mallName) {
Tenant tenant = changeDataBase(mallName);
List<Long> ids = Arrays.asList(trunklineAdvanceEntity.getId());
List<TrunklineAdvanceDetailVO> listByAdvanceIds = advanceDetailService.findAdvanceDetailVoByAdvanceIds(ids);
List<TrunklineAdvanceDetailEntity> saveObjs = new ArrayList<>();
for (TrunklineAdvanceDetailEntity trunklineAdvanceDetailEntity : t) {
trunklineAdvanceDetailEntity.setId(null);
// 检测 保存的对象是否已经存在
for (TrunklineAdvanceDetailVO listByAdvanceId : listByAdvanceIds) {
if (listByAdvanceId.getOrderPackageCode().equals(trunklineAdvanceDetailEntity.getOrderPackageCode())) {
trunklineAdvanceDetailEntity.setId(listByAdvanceId.getId());
break;
}
}
if (trunklineAdvanceDetailEntity.getId() == null) {
trunklineAdvanceDetailEntity.setPackageStatus("0");
trunklineAdvanceDetailEntity.setAdvanceId(trunklineAdvanceEntity.getId());
trunklineAdvanceDetailEntity.setTenantId(tenant.getTenantId());
trunklineAdvanceDetailEntity.setIncomingWarehouseId(null);
trunklineAdvanceDetailEntity.setIncomingWarehouseName(null);
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if (basicdataWarehouseEntity != null) {
trunklineAdvanceDetailEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceDetailEntity.setWarehouseName(basicdataWarehouseEntity.getName());
}
saveObjs.add(trunklineAdvanceDetailEntity);
}
}
advanceDetailService.saveBatch(saveObjs);
}
private TrunklineAdvanceEntity saveTrunklineAdvanceEntity(TrunklineAdvanceEntity trunklineAdvanceEntity, String mallName) {
Tenant tenant = changeDataBase(mallName);
// 查找商户的暂存单是否存在改制
QueryWrapper<TrunklineAdvanceEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_code", trunklineAdvanceEntity.getOrderCode())
.last("limit 1");
TrunklineAdvanceEntity trunklineAdvanceEntity1 = advanceService.getOne(queryWrapper);
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if (ObjectUtil.isEmpty(trunklineAdvanceEntity1)) {
// 保存对象
if (basicdataWarehouseEntity != null) {
trunklineAdvanceEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceEntity.setWarehouseName(basicdataWarehouseEntity.getName());
}
trunklineAdvanceEntity.setTenantId(tenant.getTenantId());
advanceService.save(trunklineAdvanceEntity);
return trunklineAdvanceEntity;
} else {
return trunklineAdvanceEntity1;
}
}
private Tenant changeDataBase(String maillName) {
R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return null;
}
return tenant;
}
return null;
}
}

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

@ -3,6 +3,7 @@ package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
@ -25,10 +26,13 @@ import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -50,6 +54,7 @@ public class InComingServiceImpl implements IInComingService {
// private final DynamicDataSourceProvider dynamicDataSourceProvider;
private final RabbitTemplate rabbitTemplate;
private final FactoryDataMessageSender factoryDataMessageSender;
private final ISysClient sysClient;
@Override
@ -109,7 +114,7 @@ public class InComingServiceImpl implements IInComingService {
}
//1.修改暂存单包件入库状态
advanceDetailService.updatePackageStatusById("1", advanceDetailId, warehouseId, warehouseName,new Date());
advanceDetailService.updatePackageStatusById("1", advanceDetailId, warehouseId, warehouseName, new Date());
List<String> incomingWarehouseNames = advanceDetailService.findIncomingWarehouseName(advanceId);
advanceService.updateIncomingWarehouseName(String.join(",", incomingWarehouseNames), advanceId);
@ -158,7 +163,7 @@ public class InComingServiceImpl implements IInComingService {
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【"+ warehouseName +"】入库")
.address("在【" + warehouseName + "】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(packageCode).build()))
@ -204,16 +209,19 @@ public class InComingServiceImpl implements IInComingService {
//把advanceDetailEntityList通过packageStatus分组
Map<String, List<TrunklineAdvanceDetailEntity>> advanceDetailEntityMap = advanceDetailEntityList.stream().collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getPackageStatus));
//把advanceDetailEntityList的orderCode提取成一个Set
// Set<String> orderCodes = advanceDetailEntityList.stream().map(TrunklineAdvanceDetailEntity::getOrderCode).collect(Collectors.toSet());
String finalWarehouseName = warehouseName;
advanceDetailEntityMap.keySet().forEach(packageStatus -> {
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = advanceDetailEntityMap.get(packageStatus);
if(!advanceDetailEntities.isEmpty()){
if (!advanceDetailEntities.isEmpty()) {
//提取advanceDetailEntities中所有元素的orderPackageCode组成一个List<String>
List<String> orderPackageCodes = advanceDetailEntities.stream()
.map(TrunklineAdvanceDetailEntity::getOrderPackageCode)
.collect(Collectors.toList());
if("0".equals(packageStatus)){
if ("0".equals(packageStatus)) {
//未入库包件
Set<Long> advanceIds = new HashSet<>();
@ -245,7 +253,7 @@ public class InComingServiceImpl implements IInComingService {
//2.判断包件和订单是否已经存入在库订单
boolean b = advanceService.saveOrderAndPackages(advanceDetailEntities, warehouseId);
if(b){
if (b) {
if (!Objects.isNull(billladingId)) {
//先判断该包件是否已经有提货记录了
List<String> noOrderPackageCodes = billladingPackageServicie.findBillladingPackages(orderPackageCodes);
@ -269,37 +277,74 @@ public class InComingServiceImpl implements IInComingService {
try {
advanceDetailEntities.forEach(advanceDetailEntity -> {
String packageCode = advanceDetailEntity.getOrderPackageCode();
// 发送入库消息
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// 通过包件id 查询包件
orderStatusDTO.setUnitNo(packageCode);
orderStatusDTO.setOrderNo(advanceDetailEntity.getOrderCode());
orderStatusDTO.setStatus("1");
orderStatusDTO.setOperationTime(DateUtil.now());
orderStatusDTO.setCurrentWarehouse(warehouseId.toString());
Map<String, Object> map = new HashMap<>();
map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO));
rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map);
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【"+ finalWarehouseName +"】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(packageCode).build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
R<Tenant> result = sysClient.getTenant(AuthUtil.getTenantId());
if (result.isSuccess()) {
Tenant tenant = result.getData();
if (tenant.getTenantType() == 1) {
// 发送入库消息
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// 通过包件id 查询包件
orderStatusDTO.setUnitNo(advanceDetailEntity.getOrderPackageCode());
orderStatusDTO.setOrderNo(advanceDetailEntity.getOrderCode());
orderStatusDTO.setStatus("1");
orderStatusDTO.setOperationTime(DateUtil.now());
orderStatusDTO.setCurrentWarehouse(warehouseId.toString());
Map<String, Object> map = new HashMap<>();
map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO));
rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map);
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【" + finalWarehouseName + "】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(advanceDetailEntity.getOrderPackageCode()).build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
} else if (tenant.getTenantType() == 2) {
// 完结预入库数据状态
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderPackageCode", advanceDetailEntity.getOrderPackageCode());
jsonObject.put("carNum", null);
Map mapState = new HashMap();
mapState.put("messageId", CommonUtil.getUUID());
mapState.put("messageData", jsonObject);
mapState.put("createTime", System.currentTimeMillis());
try {
rabbitTemplate.convertAndSend(RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_EXCHANGE, RabbitConstant.IN_WAREHOUSE_TO_BUSINESS_DATA_ROUTING, mapState, message -> {
message.getMessageProperties()
.setHeader("x-delay", 5000);
return message;
});
} catch (Exception customerException) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", customerException);
throw new CustomerException(customerException.getMessage());
}
} else {
log.warn("未知的租户类型");
}
}
});
} catch (Exception e) {
log.error("入库推送失败:{}", e);
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 预入库消息推送失败~ 请联系管理员! ", e);
throw new CustomerException("服务器异常");
}
}else if("1".equals(packageStatus)){
} else if ("1".equals(packageStatus)) {
//已入库包件
if (incomingType != 1) {
log.warn("############incomingPackage: 包件已入库 orderPackageCodes={} warehouseId={}", orderPackageCodes, warehouseId);
throw new CustomerException(405,"包件"+orderPackageCodes+"已入库");
throw new CustomerException(405, "包件" + orderPackageCodes + "已入库");
} else {
if (!Objects.isNull(billladingId)) {
//先判断该包件是否已经有提货记录了
@ -326,6 +371,8 @@ public class InComingServiceImpl implements IInComingService {
});
// for (String packageCode : packageCodes) {
// log.info("############incomingPackage: 包件入库开始 packageCode={} billladingId={} warehouseId={}", packageCode, billladingId, warehouseId);
// //包件入库开始
@ -436,7 +483,6 @@ public class InComingServiceImpl implements IInComingService {
}
@Override
public R findIncomingOrderList(InComingDTO inComingDTO) {
Integer incomingType = inComingDTO.getIncomingType();
@ -489,7 +535,7 @@ public class InComingServiceImpl implements IInComingService {
//查询所有包件
List<TrunklineAdvanceDetailEntity> detailList = advanceDetailService.list(queryWrapper);
List<String> orderPackageCodes = advanceService.incomingPackageBatch(advanceId, warehouseId, detailList, userId, deptId, tenantId,waybillEntity);
List<String> orderPackageCodes = advanceService.incomingPackageBatch(advanceId, warehouseId, detailList, userId, deptId, tenantId, waybillEntity);
advanceDetailService.updateBatchById(detailList);
@ -499,12 +545,12 @@ public class InComingServiceImpl implements IInComingService {
//存入日志
packageTrackLogAsyncService.addPackageTrackLog(tenantId, userId, deptId, nickName, orderPackageCodes, warehouseId, warehouseName, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode(), "包件" + IncomingTypeEnum.getValue(incomingType));
total = total + detailList.size();
if(CollUtil.isNotEmpty(detailList)){
if (CollUtil.isNotEmpty(detailList)) {
for (TrunklineAdvanceDetailEntity advanceDetailEntity : detailList) {
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【"+ warehouseName +"】入库")
.address("在【" + warehouseName + "】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(advanceDetailEntity.getOrderPackageCode()).build()))
@ -516,7 +562,7 @@ public class InComingServiceImpl implements IInComingService {
}
// DynamicDataSourceContextHolder.clear();
return R.success("入库成功"+total+"件");
return R.success("入库成功" + total + "件");
}
}

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

@ -36,6 +36,7 @@ import org.springblade.common.annotations.RepeatSubmit;
import org.springblade.common.constant.CodeNumConstant;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.order.*;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.utils.CommonUtil;
@ -46,6 +47,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.feign.IRegionFeign;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@ -96,6 +98,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
private final IAsyncService asyncService;
private final ICarsLoadAsyncService carsLoadAsyncService;
private final RabbitTemplate rabbitTemplate;
@Override
public IPage<TrunklineAdvanceVO> advancePageList(AdvanceDTO advanceDTO) {
IPage<Object> page = new Page<>();
@ -146,7 +150,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
BeanUtil.copy(infoByIds, openOrderVO);
openOrderVO.setAdvanceIds(advanceIds);
BasicdataBrandEntity basicdataBrandEntity = basicdataBrandClient.findEntityByName(brand);
if(!Objects.isNull(basicdataBrandEntity)){
if (!Objects.isNull(basicdataBrandEntity)) {
openOrderVO.setBrandId(basicdataBrandEntity.getId());
}
//发站仓-----目前登录人的仓库
@ -251,7 +255,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
basicdataFreightApiVO.setDestination(openOrderVO.getDestinationCode());
basicdataFreightApiVO.setArrivalWarehouse(openOrderVO.getDestinationWarehouseId() + "");
if(goodsList.isEmpty()){
if (goodsList.isEmpty()) {
List<AdvanceDetailGoodsVO> ls = new ArrayList<>();
//把list中的元素通过packName分组如果pickName为空则换为"其他"
Map<String, List<TrunklineAdvanceEntity>> groupedEntities = list.stream()
@ -273,7 +277,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
ls.add(advanceDetailGoodsVO);
});
goodsList = new ArrayList<>(ls);
}else{
} else {
for (AdvanceDetailGoodsVO advanceDetailGoodsVO : goodsList) {
String goodsName = advanceDetailGoodsVO.getGoodsName();
BasicdataCategoryEntity basicdataCategoryEntity = basicdataCategoryClient.findByName(goodsName);
@ -383,7 +387,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
WarehouseWaybillEntity waybillEntity = new WarehouseWaybillEntity();
waybillEntity.setWaybillNo(waybillNo);
if(Objects.isNull(brandId)){
if (Objects.isNull(brandId)) {
BasicdataBrandEntity basicdataBrandEntity = basicdataBrandClient.findEntityByName(brand);
if (!Objects.isNull(basicdataBrandEntity)) {
brandId = basicdataBrandEntity.getId();
@ -622,7 +626,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
//判断是否是开单及入库的配置
Boolean aBoolean = basicdataOpenIncomingClient.checkOpenIncoming(warehouseId, brandId);
if (Boolean.TRUE.equals(aBoolean)) {
openOrderAsyncService.incomingPackageBatch(advanceIds, AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getTenantId(), AuthUtil.getNickName(), IncomingTypeEnum.OPEN_TO_IN.getCode(),warehouseId,warehouseName,waybillEntity);
openOrderAsyncService.incomingPackageBatch(advanceIds, AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()), AuthUtil.getTenantId(), AuthUtil.getNickName(), IncomingTypeEnum.OPEN_TO_IN.getCode(), warehouseId, warehouseName, waybillEntity);
waybillEntity.setStockCount(waybillEntity.getTotalCount());
waybillEntity.setWaybillStatus("20");
warehouseWaybillClient.updateEntity(waybillEntity);
@ -648,8 +652,25 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
//发布开单广播
openOrderAsyncService.sendOpenWaybillFanout(waybillEntity, details, advanceIds);
Map<String,Object> map = new HashMap<>();
map.put("waybillId",waybillId);
Map mapState = new HashMap();
mapState.put("messageId", CommonUtil.getUUID());
mapState.put("messageData", waybillId);
mapState.put("createTime", System.currentTimeMillis());
try {
rabbitTemplate.convertAndSend(RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_EXCHANGE, RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_ROUTING, mapState, message -> {
message.getMessageProperties()
.setHeader("x-delay", 5000);
return message;
});
} catch (Exception customerException) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", customerException);
}
Map<String, Object> map = new HashMap<>();
map.put("waybillId", waybillId);
return R.data(map);
}
@ -905,10 +926,10 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
Long warehouseId = advanceDTO.getWarehouseId();
//查询包件是否已经不在库
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListClient.findPackagesByAdvanceIdsAndNoStock(advanceIds,warehouseId);
if(!parcelListEntities.isEmpty()){
List<DistributionParcelListEntity> parcelListEntities = distributionParcelListClient.findPackagesByAdvanceIdsAndNoStock(advanceIds, warehouseId);
if (!parcelListEntities.isEmpty()) {
log.warn("############deletedAdvance: 已有包件出库,不能删除");
throw new CustomerException(405,"已有包件出库,不能删除");
throw new CustomerException(405, "已有包件出库,不能删除");
}
for (Long advanceId : advanceIds) {
@ -917,7 +938,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
advanceService.deletedAdvance(advanceIds);
//删除所有在库包件,并更新订单信息
distributionParcelListClient.findAllOrderCodesAndDeleteByAdvanceIds(advanceIds,warehouseId);
distributionParcelListClient.findAllOrderCodesAndDeleteByAdvanceIds(advanceIds, warehouseId);
}
@ -1090,7 +1111,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<String> batchPackageCodeByType = basicdataCodeClient.getBatchPackageCodeByType(warehouseCode, orderCode, totalNumber);
batchPackageCodeByType.forEach(item -> {
TrunklineAdvanceDetailEntity advanceDetailEntity = new TrunklineAdvanceDetailEntity();
BeanUtil.copy(advanceDetailModel,advanceDetailEntity);
BeanUtil.copy(advanceDetailModel, advanceDetailEntity);
advanceDetailEntity.setOrderPackageCode(item);
detailEntities.add(advanceDetailEntity);
});
@ -1173,8 +1194,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = new ArrayList<>();
Map<String,TrunklineAdvanceEntity> advanceEntityMap = new HashMap<>();
Map<String, TrunklineAdvanceEntity> advanceEntityMap = new HashMap<>();
List<Long> advanceIds = new ArrayList<>();
@ -1201,8 +1221,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
detailEntities.forEach(advanceEntity -> {
String orderCode = advanceEntity.getOrderCode();
String trainNumber = advanceEntity.getTrainNumber();
String key = orderCode + "&" + (StringUtil.isBlank(trainNumber)?"null":trainNumber);
advanceEntityMap.put(key,advanceEntity);
String key = orderCode + "&" + (StringUtil.isBlank(trainNumber) ? "null" : trainNumber);
advanceEntityMap.put(key, advanceEntity);
});
List<TrunklineAdvanceEntity> updateAdvanceEntityList = new ArrayList<>();
@ -1277,7 +1297,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<CompletableFuture> comlist = new ArrayList<>();
for (int i = 0; i < advanceEntitiesList.size(); i++) {
List<TrunklineAdvanceEntity> list = advanceEntitiesList.get(i);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.saveAdvanceEntity(list, i+1);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.saveAdvanceEntity(list, i + 1);
comlist.add(fromCpFirstReq);
}
CompletableFuture.allOf(comlist.toArray(new CompletableFuture[0])).join();
@ -1290,7 +1310,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<CompletableFuture> comlist = new ArrayList<>();
for (int i = 0; i < advanceEntitiesList.size(); i++) {
List<TrunklineAdvanceEntity> list = advanceEntitiesList.get(i);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.updateAdvanceEntity(list, i+1);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.updateAdvanceEntity(list, i + 1);
comlist.add(fromCpFirstReq);
}
CompletableFuture.allOf(comlist.toArray(new CompletableFuture[0])).join();
@ -1298,33 +1318,32 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
advanceEntityList.forEach(advanceEntity -> {
advanceIds.add(advanceEntity.getId());
String trainNumber = advanceEntity.getTrainNumber();
advanceEntityMap.put(advanceEntity.getOrderCode()+"&"+(StringUtil.isBlank(trainNumber)?"null":trainNumber),advanceEntity);
advanceEntityMap.put(advanceEntity.getOrderCode() + "&" + (StringUtil.isBlank(trainNumber) ? "null" : trainNumber), advanceEntity);
});
//通过advanceIds查询所有advanceDetail
QueryWrapper<TrunklineAdvanceDetailEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("advance_id",advanceIds)
.eq("is_deleted",0);
queryWrapper.in("advance_id", advanceIds)
.eq("is_deleted", 0);
List<TrunklineAdvanceDetailEntity> advanceDetailEntityList = advanceDetailService.list(queryWrapper);
//把advanceDetailEntityList通过advanceId分组并且把集合转化为orderPackageCode的集合
Map<Long, List<String>> map = advanceDetailEntityList.parallelStream().collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getAdvanceId, Collectors.mapping(TrunklineAdvanceDetailEntity::getOrderPackageCode, Collectors.toList())));
Map<String,Long> materialMap = new HashMap<>();
Map<String, Long> materialMap = new HashMap<>();
listMap.keySet().forEach(str -> {
List<PacakgeDetailExcelDTO> pacakgeDetailExcelList = listMap.get(str);
TrunklineAdvanceEntity advanceEntity = advanceEntityMap.get(str);
if(!Objects.isNull(advanceEntity)){
if (!Objects.isNull(advanceEntity)) {
Long advanceId = advanceEntity.getId();
String orderCode = advanceEntity.getOrderCode();
List<String> orderPackageCodes = map.get(advanceId);
pacakgeDetailExcelList.forEach(pacakgeDetailExcelDTO -> {
String orderPackageCode = pacakgeDetailExcelDTO.getOrderPackageCode();
if(Objects.isNull(orderPackageCodes) || !orderPackageCodes.contains(orderPackageCode)){
if (Objects.isNull(orderPackageCodes) || !orderPackageCodes.contains(orderPackageCode)) {
TrunklineAdvanceDetailEntity advanceDetailModel = new TrunklineAdvanceDetailEntity();
advanceDetailModel.setWarehouseId(warehouseId);
advanceDetailModel.setWarehouseName(warehouseName);
@ -1353,7 +1372,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
advanceDetailModel.setPackageStatus("0");
if (!Objects.isNull(pacakgeDetailExcelDTO.getVolume())) {
advanceDetailModel.setVolume(new BigDecimal(pacakgeDetailExcelDTO.getVolume()));
}else{
} else {
advanceDetailModel.setVolume(BigDecimal.ZERO);
}
@ -1362,21 +1381,21 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
if (StringUtil.isNotBlank(materialCode) && StringUtil.isNotBlank(materialName)) {
Long materialId = materialMap.get(materialCode);
if(!Objects.isNull(materialId)){
if (!Objects.isNull(materialId)) {
advanceDetailModel.setMaterialId(materialId);
advanceDetailModel.setMaterialCode(materialCode);
advanceDetailModel.setMaterialName(materialName);
}else{
} else {
BasicMaterialEntity basicMaterialEntity = basicMaterialClient.findEntityByCodeAndName(materialCode, materialName);
if (Objects.isNull(basicMaterialEntity)) {
basicMaterialEntity = new BasicMaterialEntity();
basicMaterialEntity.setProductCode(materialCode);
basicMaterialEntity.setName(materialName);
BasicdataBrandEntity basicdataBrandEntity = basicdataBrandClient.findEntityByName(pacakgeDetailExcelDTO.getBrand());
if(Objects.isNull(basicdataBrandEntity)){
if (Objects.isNull(basicdataBrandEntity)) {
basicMaterialEntity.setBrandId("1713382405517201409");
}else{
basicMaterialEntity.setBrandId(basicdataBrandEntity.getId()+"");
} else {
basicMaterialEntity.setBrandId(basicdataBrandEntity.getId() + "");
}
basicMaterialEntity.setProperty("家配");
basicMaterialEntity.setSpecification("件");
@ -1387,12 +1406,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
basicMaterialEntity.setHide(1);
Long aLong = basicMaterialClient.addMaterial(basicMaterialEntity);
basicMaterialEntity.setId(aLong);
materialMap.put(materialCode,aLong);
materialMap.put(materialCode, aLong);
advanceDetailModel.setMaterialId(aLong);
advanceDetailModel.setMaterialCode(materialCode);
advanceDetailModel.setMaterialName(materialName);
}else{
materialMap.put(materialCode,basicMaterialEntity.getId());
} else {
materialMap.put(materialCode, basicMaterialEntity.getId());
advanceDetailModel.setMaterialId(basicMaterialEntity.getId());
advanceDetailModel.setMaterialCode(basicMaterialEntity.getProductCode());
advanceDetailModel.setMaterialName(basicMaterialEntity.getName());
@ -1465,9 +1484,9 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
if(!duplicateOrderPackageCodes.isEmpty()){
log.warn("#################importCustomizedOuPai: 包条码重复 {}",duplicateOrderPackageCodes);
return R.fail(405, "包条码重复"+duplicateOrderPackageCodes);
if (!duplicateOrderPackageCodes.isEmpty()) {
log.warn("#################importCustomizedOuPai: 包条码重复 {}", duplicateOrderPackageCodes);
return R.fail(405, "包条码重复" + duplicateOrderPackageCodes);
}
List<String> orderPackageCodeKeys = new ArrayList<>(importCustomizedOuPaiDTOSet);
@ -1494,8 +1513,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<TrunklineAdvanceEntity> advanceEntityList = new ArrayList<>();
List<TrunklineAdvanceEntity> updateAdvanceEntityList = new ArrayList<>();
if(importCustomizedOuPaiDTOS.isEmpty()){
log.warn("##################importCustomizedOuPai: 没有需要处理的数据 importCustomizedOuPaiDTOS={}",importCustomizedOuPaiDTOS);
if (importCustomizedOuPaiDTOS.isEmpty()) {
log.warn("##################importCustomizedOuPai: 没有需要处理的数据 importCustomizedOuPaiDTOS={}", importCustomizedOuPaiDTOS);
return R.data(advanceEntityList);
}
@ -1537,8 +1556,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
detailEntities.forEach(advanceEntity -> {
String orderCode = advanceEntity.getOrderCode();
String trainNumber = advanceEntity.getTrainNumber();
String key = orderCode + "&" + (StringUtil.isBlank(trainNumber)?"null":trainNumber);
advanceEntityMap.put(key,advanceEntity);
String key = orderCode + "&" + (StringUtil.isBlank(trainNumber) ? "null" : trainNumber);
advanceEntityMap.put(key, advanceEntity);
});
listMap.keySet().forEach(str -> {
@ -1700,7 +1719,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
List<CompletableFuture> comlist = new ArrayList<>();
for (int i = 0; i < advanceDetailEntitiesList.size(); i++) {
List<TrunklineAdvanceDetailEntity> list = advanceDetailEntitiesList.get(i);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.getResponseFromCp(list, i+1);
CompletableFuture<Boolean> fromCpFirstReq = asyncService.getResponseFromCp(list, i + 1);
comlist.add(fromCpFirstReq);
}
CompletableFuture.allOf(comlist.toArray(new CompletableFuture[0])).join();
@ -1941,7 +1960,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String volume = importStandardOuPaiDTO.getVolume();
if(StringUtil.isBlank(volume)){
advanceDetailModel.setVolume(BigDecimal.ZERO);
}else{
} else {
advanceDetailModel.setVolume(new BigDecimal(importStandardOuPaiDTO.getVolume()));
}
advanceDetailModel.setTrainNumber(advanceEntity.getTrainNumber());

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

@ -726,7 +726,7 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
List<TrunklineAdvanceEntity> advanceEntityList = findListByIds(new ArrayList<>(advanceIdSet));
Map<String,TrunklineAdvanceEntity> advanceEntityMap = new HashMap<>();
if(advanceEntityList.isEmpty()){
if(!advanceEntityList.isEmpty()){
advanceEntityMap = advanceEntityList.stream().collect(Collectors.toMap(TrunklineAdvanceEntity::getOrderCode, Function.identity()));
}
@ -868,10 +868,10 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
stockArticleEntity.setTransferQuantity(0);
stockArticleEntity.setSigninQuantity(0);
addStockArticleEntities.add(stockArticleEntity);
}else{
stockArticleEntity.setTotalNumber(total);
updateStockArticleEntities.add(stockArticleEntity);
}
}else{
stockArticleEntity.setTotalNumber(total);
updateStockArticleEntities.add(stockArticleEntity);
}
});
stockArticleClient.updateByBatchId(updateStockArticleEntities);
@ -966,6 +966,10 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
parcelListClient.addBatch(parcelListEntityList);
orderCodeSet.forEach(orderCode->{
stockArticleClient.updateOrderInfo(orderCode,warehouseId);
});
// String orderPackageCode = advanceDetailEntity.getOrderPackageCode();
// String orderCode = advanceDetailEntity.getOrderCode();

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

@ -612,7 +612,7 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
page.setSize(pageSize);
Map<String,Integer> map = baseMapper.billladingNum(warehouseId,CommonUtil.getStartByDateStr(startDateStr),CommonUtil.getEndByDateStr(endDateStr),customerTrain);
IPage<TrunklineBillladingDetailVO> ls = baseMapper.billladingList(page,warehouseId,CommonUtil.getStartByDateStr(startDateStr),CommonUtil.getEndByDateStr(endDateStr));
IPage<TrunklineBillladingDetailVO> ls = baseMapper.billladingList(page,warehouseId,CommonUtil.getStartByDateStr(startDateStr),CommonUtil.getEndByDateStr(endDateStr),customerTrain);
Map<String,Object> m = new HashMap<>();
if(!Objects.isNull(map)){

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

@ -34,6 +34,7 @@ import com.logpm.factorydata.vo.PushData;
import com.logpm.trunkline.bean.Resp;
import com.logpm.trunkline.dto.*;
import com.logpm.trunkline.entity.*;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
import com.logpm.trunkline.mapper.TrunklineCarsLoadMapper;
import com.logpm.trunkline.service.*;
import com.logpm.trunkline.vo.*;
@ -112,9 +113,11 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
private final IBasicdataDriverArteryClient driverArteryClient;
private final ITrunklineLoadSignPhotoService loadSignPhotoService;
private final ITrunklineWaybillPackageService waybillPackageService;
private final ITrunklinePackageTrackLogClient packageTrackLogClient;
@Override
public IPage<TrunklineCarsLoadVO> loadCarsPageList(LoadCarsDTO loadCarsDTO) {
IPage<Object> page = new Page<>();
page.setCurrent(loadCarsDTO.getPageNum());
page.setSize(loadCarsDTO.getPageSize());

7
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseUpdownStockupAreaServiceImpl.java

@ -251,7 +251,8 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
String stockUpAllocationId = distributionStockClient.getCargoStockUpAllocationId(code, warehouseId, taskId);
if (Func.isEmpty(stockUpAllocationId)) {
log.error(method + "无上架库位ID,stockUpAllocationId:{}", stockUpAllocationId);
throw new RuntimeException("无上架记录");
return;
// throw new RuntimeException("无上架记录");
}
//查询上架货物
List<WarehouseUpdownStockupAreaEntity> warehouseUpdownStockupAreaEntityList = this.list(Wrappers.<WarehouseUpdownStockupAreaEntity>query().lambda()
@ -261,7 +262,9 @@ public class WarehouseUpdownStockupAreaServiceImpl extends BaseServiceImpl<Wareh
);
if (warehouseUpdownStockupAreaEntityList.isEmpty()) {
log.error(method + "无上架记录AssociationValue:{},warehouseId:{}", code, warehouseId);
throw new RuntimeException("无上架记录");
// throw new RuntimeException("无上架记录");
return;
}
if (warehouseUpdownStockupAreaEntityList.size() > 1) {
boolean flag = warehouseUpdownStockupAreaEntityList.stream().anyMatch(item -> !item.getAssociationType().equals("3"));

2
blade-service/pom.xml

@ -47,6 +47,8 @@
<!-- 工厂数据-->
<module>logpm-factory-data</module>
<module>logpm-data-sharing</module>
<!-- 商家端 -->
<module>logpm-business</module>
</modules>

Loading…
Cancel
Save