diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
index 542635e18..d54a35e6d 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
+++ b/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;
+
}
diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
index 822cc8771..42e3c081e 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
+++ b/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 *************************/
+
}
diff --git a/blade-service-api/logpm-business-api/pom.xml b/blade-service-api/logpm-business-api/pom.xml
new file mode 100644
index 000000000..24c096b69
--- /dev/null
+++ b/blade-service-api/logpm-business-api/pom.xml
@@ -0,0 +1,18 @@
+
+
+ 4.0.0
+
+
+ org.springblade
+ blade-service-api
+ 3.2.0.RELEASE
+
+
+ org.springblade
+ logpm-business-api
+ 3.2.0.RELEASE
+
+
+
diff --git a/blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/DistributionBusinessPreOrderDTO.java b/blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/DistributionBusinessPreOrderDTO.java
new file mode 100644
index 000000000..c93867760
--- /dev/null
+++ b/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 {
+
+
+
+}
diff --git a/blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java b/blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumberVO.java
new file mode 100644
index 000000000..3b03f44c0
--- /dev/null
+++ b/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;
+
+}
diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockArticleEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockArticleEntity.java
index 105d2df4b..6f829fa80 100644
--- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockArticleEntity.java
+++ b/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;
diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionBusinessPreOrderClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionBusinessPreOrderClient.java
new file mode 100644
index 000000000..244960d14
--- /dev/null
+++ b/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);
+}
diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java
new file mode 100644
index 000000000..bb33a2ad9
--- /dev/null
+++ b/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);
+
+}
diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklinePackageTrackLogClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklinePackageTrackLogClient.java
index c6b909d3a..28474dd13 100644
--- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/ITrunklinePackageTrackLogClient.java
+++ b/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 addPackageTrackLogList, @RequestParam List orderPackageCodes, @RequestParam Integer workNode);
+ void addPackageTrackLog(@RequestBody List addPackageTrackLogList);
}
diff --git a/blade-service-api/pom.xml b/blade-service-api/pom.xml
index b7b10a21b..89f2c56e3 100644
--- a/blade-service-api/pom.xml
+++ b/blade-service-api/pom.xml
@@ -45,6 +45,9 @@
logpm-business-conversion-api
logpm-factory-data-zbom-api
+
+
+ logpm-business-api
diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/BasicDataApplication.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/BasicDataApplication.java
index 799bc4276..468f5acd7 100644
--- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/BasicDataApplication.java
+++ b/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启动器
diff --git a/blade-service/logpm-business/pom.xml b/blade-service/logpm-business/pom.xml
new file mode 100644
index 000000000..dc96f312a
--- /dev/null
+++ b/blade-service/logpm-business/pom.xml
@@ -0,0 +1,118 @@
+
+
+ 4.0.0
+
+
+ org.springblade
+ blade-service
+ 3.2.0.RELEASE
+
+
+ org.springblade
+ logpm-business
+ ${project.artifactId}
+ ${bladex.project.version}
+ jar
+
+
+
+ org.springblade
+ blade-core-boot
+
+
+ org.springblade
+ blade-starter-swagger
+
+
+ org.springblade
+ blade-starter-excel
+
+
+ org.springblade
+ blade-core-auto
+ compile
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+ org.springblade
+ logpm-business-api
+ 3.2.0.RELEASE
+ compile
+
+
+
+ org.springblade
+ logpm-business-conversion-api
+ 3.2.0.RELEASE
+
+
+ org.springblade
+ logpm-trunkline-api
+ 3.2.0.RELEASE
+ compile
+
+
+
+ org.springblade
+ logpm-basicdata-api
+ 3.2.0.RELEASE
+ compile
+
+
+
+ org.springblade
+ logpm-distribution-api
+ ${bladex.project.version}
+
+
+
+ org.springblade
+ logpm-warehouse-api
+ ${bladex.project.version}
+
+
+
+ org.springblade
+ blade-user-api
+ ${bladex.project.version}
+
+
+ org.springblade
+ blade-system-api
+ 3.2.0.RELEASE
+ compile
+
+
+
+
+
+
+
+ com.spotify
+ dockerfile-maven-plugin
+
+ ${docker.username}
+ ${docker.password}
+ ${docker.registry.url}/${docker.namespace}/${project.artifactId}
+ ${project.version}
+ true
+
+ target/${project.build.finalName}.jar
+
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+
+
+
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/BusinessApplication.java b/blade-service/logpm-business/src/main/java/com/logpm/business/BusinessApplication.java
new file mode 100644
index 000000000..048ae5f84
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/AsyncAnnotationAspect.java b/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/AsyncAnnotationAspect.java
new file mode 100644
index 000000000..2cabab7a5
--- /dev/null
+++ b/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;
+ }
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java b/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java
new file mode 100644
index 000000000..2be435999
--- /dev/null
+++ b/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;
+ }
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/RabbitAnnotationAspect.java b/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/RabbitAnnotationAspect.java
new file mode 100644
index 000000000..0577947a0
--- /dev/null
+++ b/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;
+ }
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/bean/Resp.java b/blade-service/logpm-business/src/main/java/com/logpm/business/bean/Resp.java
new file mode 100644
index 000000000..d5efee797
--- /dev/null
+++ b/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;
+ }
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/config/BusinessProperties.java b/blade-service/logpm-business/src/main/java/com/logpm/business/config/BusinessProperties.java
new file mode 100644
index 000000000..b1842f513
--- /dev/null
+++ b/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;
+
+/**
+ * 配置feign、mybatis包名、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 {
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java b/blade-service/logpm-business/src/main/java/com/logpm/business/controller/DistributionBusinessPreOrderController.java
new file mode 100644
index 000000000..9f0a25919
--- /dev/null
+++ b/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> page(@ApiIgnore @RequestParam Map distributionBusinessPreOrderDTO, Query query) {
+ IPage page = Condition.getPage(query);
+ IPage data= distributionBusinessPreOrderService.pacgeList(distributionBusinessPreOrderDTO,page);
+ return R.data(data);
+ }
+
+ /**
+ * 预入库信息--配送车次
+ */
+ @GetMapping("/pageByCarNum")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
+ public R> pageByCarNum(@ApiIgnore @RequestParam Map distributionBusinessPreOrderDTO, Query query) {
+ IPage page = Condition.getPage(query);
+ IPage data= distributionBusinessPreOrderService.pageByCarNum(distributionBusinessPreOrderDTO,page);
+ return R.data(data);
+ }
+
+
+
+
+ @GetMapping("/inOrder")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "页面ID", notes = "传入distributionDeliveryList")
+ public R 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());
+// }
+
+ }
+
+
+
+
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/launcher/BusinessLauncherServiceImpl.java b/blade-service/logpm-business/src/main/java/com/logpm/business/launcher/BusinessLauncherServiceImpl.java
new file mode 100644
index 000000000..646e80c9b
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.java b/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.java
new file mode 100644
index 000000000..58b607afb
--- /dev/null
+++ b/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 {
+
+
+ /**
+ * 查询DistributionBusinessPreOrderVO列表
+ *
+ * @param page
+ * @param param
+ * @return
+ */
+ IPage pageList(IPage page, @Param("param") DistributionBusinessPreOrderDTO param);
+
+ /**
+ * 删除商家端数据
+ *
+ * @param deletedPackageList
+ * @return
+ */
+ Integer deleteBusinessPreOrder(String reservationCode, List deletedPackageList);
+
+ List listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
+
+ Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode);
+
+ IPage pageByCarNum(IPage page, Map distributionBusinessPreOrderDTO);
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.xml b/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.xml
new file mode 100644
index 000000000..99acffb81
--- /dev/null
+++ b/blade-service/logpm-business/src/main/java/com/logpm/business/mapper/DistributionBusinessPreOrderMapper.xml
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+ update logpm_business_pre_order set in_warehouse=1
+
+ where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0
+
+
+
+ DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode}
+ AND order_package_code IN
+
+ #{orderPackageCode}
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java b/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java
new file mode 100644
index 000000000..b731ef5c4
--- /dev/null
+++ b/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) {
+
+
+
+
+
+ }
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/service/IDistributionBusinessPreOrderService.java b/blade-service/logpm-business/src/main/java/com/logpm/business/service/IDistributionBusinessPreOrderService.java
new file mode 100644
index 000000000..94f8032f2
--- /dev/null
+++ b/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 {
+ /**
+ * 预备入库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 pacgeList(Map distributionBusinessPreOrderDTO, IPage page);
+
+ /**
+ * 删除商家端数据
+ * @param k
+ * @param deletedPackageList
+ * @return
+ */
+ Integer deleteBusinessPreOrder(String k, List deletedPackageList);
+ DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO);
+
+ Resp inOrderWarehourse(String orderPackageCode, String reservationCode) throws ExecutionException, InterruptedException;
+
+ IPage pageByCarNum(Map distributionBusinessPreOrderDTO, IPage page);
+
+}
diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/IDistributionBusinessPreOrderServiceImpl.java b/blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/IDistributionBusinessPreOrderServiceImpl.java
new file mode 100644
index 000000000..5e027034f
--- /dev/null
+++ b/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 implements IDistributionBusinessPreOrderService {
+
+
+ private final IBasicdataWarehouseClient basicdataWarehouseClient;
+
+ private final IInComingClient inComingClient;
+
+ @Override
+ public Boolean inOrder(String ids) throws ServiceException {
+
+ // 查询出来需要处理的包条码
+ List idArray = Arrays.asList(ids.split(","));
+ QueryWrapper wrapper = new QueryWrapper();
+ wrapper.in("id", idArray);
+
+ InComingDTO inComingDTO = new InComingDTO();
+ StringBuffer sb = new StringBuffer();
+ List list = baseMapper.selectList(wrapper);
+
+ List 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 list = baseMapper.selectList(wrapper);
+ if(!list.isEmpty()){
+ DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity = list.get(0);
+
+ distributionBusinessPreOrderEntity.setInWarehouse(1);
+ return baseMapper.updateById(distributionBusinessPreOrderEntity);
+ }
+ return 0;
+
+
+ }
+
+
+ @Override
+ public IPage pacgeList(Map distributionBusinessPreOrderDTO, IPage page) {
+ DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
+ return baseMapper.pageList(page, param);
+ }
+
+ @Override
+ public Integer deleteBusinessPreOrder(String k, List deletedPackageList) {
+
+ return baseMapper.deleteBusinessPreOrder(k, deletedPackageList);
+ }
+
+
+ @Override
+ public DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO) {
+
+ DistributionBusinessPreOrderListVO distributionBusinessPreOrderListVO = new DistributionBusinessPreOrderListVO();
+
+
+ List data = baseMapper.listByBusinessPreListDTO(queryrderDTO);
+
+
+ // data 分组
+ Map> groupedData = data.stream()
+ .collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
+
+ // 已入库的
+ List distributionBusinessPreOrderEntities = groupedData.get(1);
+
+
+ List 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 queryWrapper = new LambdaQueryWrapper<>();
+// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
+// List 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 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 pageByCarNum(Map distributionBusinessPreOrderDTO, IPage page) {
+
+ IPage pageByCarNum =baseMapper.pageByCarNum(page, distributionBusinessPreOrderDTO);
+
+ return pageByCarNum;
+
+ }
+
+
+
+
+
+
+
+
+}
diff --git a/blade-service/logpm-business/src/main/resources/application-dev.yml b/blade-service/logpm-business/src/main/resources/application-dev.yml
new file mode 100644
index 000000000..c7d8f38ee
--- /dev/null
+++ b/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}
+
diff --git a/blade-service/logpm-business/src/main/resources/application-prod.yml b/blade-service/logpm-business/src/main/resources/application-prod.yml
new file mode 100644
index 000000000..51a5081ea
--- /dev/null
+++ b/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
diff --git a/blade-service/logpm-business/src/main/resources/application-test.yml b/blade-service/logpm-business/src/main/resources/application-test.yml
new file mode 100644
index 000000000..edde06f1e
--- /dev/null
+++ b/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
diff --git a/blade-service/logpm-business/src/main/resources/application.yml b/blade-service/logpm-business/src/main/resources/application.yml
new file mode 100644
index 000000000..70efb75b7
--- /dev/null
+++ b/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
+
+
+
+
diff --git a/blade-service/logpm-business/src/main/resources/logback.xml b/blade-service/logpm-business/src/main/resources/logback.xml
new file mode 100644
index 000000000..3c54a2c7f
--- /dev/null
+++ b/blade-service/logpm-business/src/main/resources/logback.xml
@@ -0,0 +1,40 @@
+
+
+
+ logback
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ utf8
+
+
+
+
+ ${log.path}
+
+ ${log.path}.%d{yyyy-MM-dd}.zip
+
+
+ %date %level [%thread] %logger{36} [%file : %line] %msg%n
+
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
index 7d828539f..3975bc929 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
+++ b/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 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();
+ }
+
+
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java
index 394536540..197c8e04d 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RedissonConfig.java
+++ b/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);
+// }
+//
+//}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java
index 3930d641a..d0fee3960 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java
+++ b/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> list(@ApiIgnore @RequestParam Map distributionBusinessPreOrderDTO, Query query) {
+ public R> page(@ApiIgnore @RequestParam Map distributionBusinessPreOrderDTO, Query query) {
IPage page = Condition.getPage(query);
IPage data= distributionBusinessPreOrderService.pacgeList(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
+ /**
+ * 预入库信息--配送车次
+ */
+ @GetMapping("/pageByCarNum")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
+ public R> pageByCarNum(@ApiIgnore @RequestParam Map distributionBusinessPreOrderDTO, Query query) {
+ IPage page = Condition.getPage(query);
+ IPage data= distributionBusinessPreOrderService.pageByCarNum(distributionBusinessPreOrderDTO,page);
+ return R.data(data);
+ }
+
+
+
@GetMapping("/inOrder")
@ApiOperationSupport(order = 2)
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionBusinessPreOrderClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionBusinessPreOrderClient.java
new file mode 100644
index 000000000..5e6f52596
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java
index 3c226cfd3..56957c258 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java
+++ b/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 pageList(IPage page, DistributionBusinessPreOrderDTO param);
+ IPage pageList(IPage page, @Param("param") DistributionBusinessPreOrderDTO param);
/**
* 删除商家端数据
+ *
* @param k
* @param deletedPackageList
* @return
*/
- Integer deleteBusinessPreOrder(String reservationCode, List deletedPackageList);
+ Integer deleteBusinessPreOrder(String reservationCode, List deletedPackageList);
+
List listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
+
+ Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode);
+
+ IPage pageByCarNum(IPage page, Map distributionBusinessPreOrderDTO);
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
index 58c491085..0970ea61a 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
@@ -1,6 +1,14 @@
+
+
+
+ update logpm_business_pre_order set in_warehouse=1
+
+ where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0
+
+
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 @@
AND id = #{param.id}
-
-
-
-
-
-
AND firsts like concat(#{param.id},'%')
-
AND `SECOND` like concat(#{param.second},'%')
@@ -104,9 +104,11 @@
AND distr_car_number like concat(#{param.distrCarNumber},'%')
-
+
AND in_warehouse = #{param.inWarehouse}
+
+
@@ -153,5 +155,33 @@
+
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
index d1d2757c3..ec7a703e1 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
@@ -197,4 +197,6 @@ public interface DistributionStockArticleMapper extends BaseMapper> selectAdvance(@Param("orderCode")String orderCode);
void updateCustomerAllByOrderCode(@Param("data") cn.hutool.json.JSONObject data);
+
+ void updateDistributionStockArticleEntityById(@Param("t")DistributionStockArticleEntity t);
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
index fe6ef1260..cfb56e86f 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
@@ -1400,5 +1400,32 @@
and order_code = #{data.orderCode}
+
+
+ update logpm_distribution_stock_article
+
+
+ genre = #{t.genre},
+
+
+ order_status = #{t.orderStatus},
+
+
+ reservation_status = #{t.reservationStatus},
+
+
+ hand_quantity = #{t.handQuantity},
+
+
+ delivery_quantity = #{t.deliveryQuantity},
+
+
+ signin_quantity = #{t.signinQuantity},
+
+
+ where id=#{t.id}
+
+
+
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml
index 99d95a924..4036796a8 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml
+++ b/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)
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java
index 8af1642ff..f4bfcd04c 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java
@@ -86,7 +86,6 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper ids);
/**
* 查询自提单关联包件
- * @param billLodingIds
* @return
*/
List selectBillLadingPackage(@Param("ids")List ids);
@@ -121,7 +118,6 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper selectBillLadingZeroPackageList(@Param("bullLadingId")Long bullLadingId);
/**
* 推送老系统
- * @param billId
* @return
*/
SignPushDataDTO getSignPushDataDTO(@Param("id")Long id);
/**
* 查询推送老系统自提客户信息
- * @param billId
* @return
*/
List selectPushOldCustomer(@Param("id")Long id);
/**
* 查询自提签署包件推送老系统
- * @param billId
* @return
*/
List selectPushOldPackageSigning(@Param("id")Long id);
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
index b9e8ca8c3..4f7cfb005 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
@@ -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 distributionParcelListEntities = allList(map, mallName);
- if (ObjectUtil.isEmpty(distributionParcelListEntities)) {
- return;
- }
- // 得到下面的包间
- // 假设 orderNumber 是 DistributionParcelListEntity 类中的一个属性
- List uniqueOrderNumbers = distributionParcelListEntities.stream()
- .map(DistributionParcelListEntity::getWaybillNumber) // 将每个实体映射到其运单号
- .distinct() // 移除重复的运单号
- .collect(Collectors.toList()); // 收集到一个新的列表中
-
- // 查询运单
- List waybillBilllByWaybillNos = warehouseWaybillClient.findWaybillBilllByWaybillNos(uniqueOrderNumbers);
-
- // 获取运单关联的暂存单信息
- List waybillIds = waybillBilllByWaybillNos.stream().map(WarehouseWaybillEntity::getId).distinct().collect(Collectors.toList());
-
- List warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillIds(waybillIds);
-
- List trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillIds(waybillIds);
-
- List trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds);
-
- // 暂存单ID集合
- List collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList());
-
- List trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect);
-
- // 获取暂存单明细
- List trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
- 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 allList(Map map, String mallName) {
-
- List 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 list = distributionReservationService.selectListByDeliveryId(distributionDeliveryListEntity.getId());
-
- if (ObjectUtil.isEmpty(list)) {
- log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 预约列表为空");
- return tsss;
- }
-
- List 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 queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DistributionReservationPackageEntity::getReservationId, distributionReservationEntity.getId());
- queryWrapper.ne(DistributionReservationPackageEntity::getPacketBarStatus, 2);
- List 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 dataResult, String maillName) {
-
- // 查询保存的对象在商场端是否存在 && 没有入库的 都i需要删除 执行新的
- List orderIdList = dataResult.stream()
- .map(DistributionBusinessPreOrderEntity::getStockArticleId)
- .collect(Collectors.toList());
- R 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 lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
- lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
- List list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
-
-
- // 找到已经推送的包件信息 并将其标记为删除状态
- List 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 dataResult, String maillName) {
-// String method = "########################saveOtherDataBase";
-// R 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> map = dataResult.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
-// if (Func.isNotEmpty(map.get(1))) {
-// //存在需要进行删除的数据
-// List deleteList = map.get(0);
-// if (!deleteList.isEmpty()) {
-// Map> deletedMap = deleteList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
-// deletedMap.forEach((k, v) -> {
-// List 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 mapList = map.get(0);
-// Map> saveData = mapList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
-// List existData = new ArrayList<>();
-// if (!saveData.isEmpty()) {
-// //查询是否存在重复
-// saveData.forEach((k, v) -> {
-// List list = distributionBusinessPreOrderService.list(Wrappers.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();
-//
-// }
-//
-//
-// }
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
index 0db27332d..104d66dd6 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
+++ b/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 waybillBilllByWaybillNos, List trunklineAdvanceDetailEntities, List trunklineAdvanceEntities, List trunklineWaybillPackageEntities, List trunklineWaybillOrderEntities, List warehouseWayBillDetails, List distributionParcelListEntities, String mallName);
+
+ void saveOtherDataBaseNew(String tenantId,List dataResult, String mallName);
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java
index 4a895ff91..45cf3b8df 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java
+++ b/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 pageByCarNum(Map distributionBusinessPreOrderDTO, IPage page);
+
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
index 1e80737a2..2232a79f1 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
@@ -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 waybillBilllByWaybillNos, List trunklineAdvanceDetailEntities, List trunklineAdvanceEntities, List trunklineWaybillPackageEntities, List trunklineWaybillOrderEntities, List warehouseWayBillDetails, List distributionParcelListEntities, String mallName) {
- // 保存暂存单
- Tenant tenant = changeDataBase(mallName);
- for (TrunklineAdvanceEntity trunklineAdvanceEntity : trunklineAdvanceEntities) {
-
- TrunklineAdvanceEntity finalTrunklineAdvanceEntity = trunklineAdvanceEntity;
- List t = trunklineAdvanceDetailEntities.stream().filter(trunklineAdvanceDetailEntity -> trunklineAdvanceDetailEntity.getAdvanceId().equals(finalTrunklineAdvanceEntity.getId())).collect(Collectors.toList());
-
- saveTrunklineAdvanceEntity(trunklineAdvanceEntity, mallName);
-
- // 保存暂存子表
- saveTrunklineAdvanceDetailEntity(t, trunklineAdvanceEntity, mallName);
- }
- List collect = trunklineAdvanceEntities.stream().map(TrunklineAdvanceEntity::getId).distinct().collect(Collectors.toList());
-
- // 重新查询trunklineAdvanceDetail
- List listByAdvanceIds = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
-
- // 保存运单
- BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
- for (WarehouseWaybillEntity waybillBilllByWaybillNo : waybillBilllByWaybillNos) {
- List collect1 = trunklineWaybillOrderEntities.stream().filter(trunklineWaybillOrderEntity -> trunklineWaybillOrderEntity.getWaybillId().equals(waybillBilllByWaybillNo.getId())).collect(Collectors.toList());
- List 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 dataResult, String mallName) {
- // 目的仓
- if (basicdataWarehouseEntity != null) {
- waybillBilllByWaybillNo.setDestinationWarehouseId(basicdataWarehouseEntity.getId());
- waybillBilllByWaybillNo.setDestinationWarehouseName(basicdataWarehouseEntity.getName());
+ List orderIdList = dataResult.stream()
+ .map(DistributionBusinessPreOrderEntity::getStockArticleId)
+ .collect(Collectors.toList());
+ R 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 lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
+ lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
+ List list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
- List byWaybillId = warehouseWaybillDetailClient.findByWaybillId(waybillBilllByWaybillNo.getId());
- for (WarehouseWayBillDetail warehouseWayBillDetail : t) {
- warehouseWayBillDetail.setId(null);
- for (WarehouseWayBillDetail wayBillDetail : byWaybillId) {
+ // 找到已经推送的包件信息 并将其标记为删除状态
+ List 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 listByWaybillNo = trunklineWaybillOrderClient.findListByWaybillNo(waybillBilllByWaybillNo.getWaybillNo());
-
-
- for (TrunklineWaybillOrderEntity trunklineWaybillOrderEntity : collect1) {
-
- trunklineWaybillOrderEntity.setId(null);
- List 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 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 ids = Arrays.asList(waybillBilllByWaybillNo.getId());
- List 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 t, TrunklineAdvanceEntity trunklineAdvanceEntity, String mallName) {
- Tenant tenant = changeDataBase(mallName);
-
-
- List ids = Arrays.asList(trunklineAdvanceEntity.getId());
-
- List 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;
}
-
}
-
}
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
index 1554d7177..f900ac3a6 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
@@ -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>>>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
+ }
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@@ -798,7 +803,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImplquery().lambda().eq(DistributionParcelListEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()));
+ DistributionParcelListEntity parcelListEntity = distributionParcelListService.getOne(Wrappers.query().lambda().eq(DistributionParcelListEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()).eq(DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId()));
List 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>>>>>>>>>>>>>>>>>>装车修改库存品包件>装车包件码:{},",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 disStockListDetailEntities) {
+ private static DistributionLoadscaninvnEntity getDistributionLoadscaninvnEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionDeliverySelfEntity distributionDeliverySelfEntity, List 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>>>>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
+ }
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@@ -5575,7 +5588,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl distributionReservationStockarticleEntities = distributionReservationStockarticleService.getBaseMapper().selectList(Wrappers.query().lambda().eq(DistributionReservationStockarticleEntity::getReservationId, id).ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()));
Map> oldStockArticle = distributionReservationStockarticleEntities.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId));
@@ -1519,6 +1523,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl mallId = new ArrayList<>();
HashSet storeName = new HashSet<>();
HashSet receivingUnit = new HashSet<>();
+ List addOrderPackageCodes = new ArrayList<>();
+ List cancelOrderPackageCodes = new ArrayList<>();
+ List addPackageLog = new ArrayList<>();
+ List cancelPackageLog = new ArrayList<>();
newStockArticle.forEach((k, v) -> {
List packageLockIds = new ArrayList<>();
if (Func.isEmpty(oldStockArticle.get(k))) {
@@ -1542,6 +1550,25 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl ids = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode());
@@ -1838,6 +1905,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl {
//这里就是需要进行取消的订单信息
@@ -1850,6 +1921,24 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl {
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 reservationStocklistEntities = distributionReservationStocklistService.getBaseMapper().selectList(Wrappers.query().lambda()
@@ -2030,7 +2122,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl 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 0) {
+ List orderPackageCodes = new ArrayList<>();
+ List aaa = new ArrayList<>();
reservationStockarticleEntityList.forEach(rs -> {
rs.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
// distributionReservationStockarticleService.updateById(rs);
@@ -2613,10 +2708,33 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl packageList = s.getPackageListInfo();
+ List orderPackageCodes = new ArrayList<>();
+ List aaa = new ArrayList<>();
if (Func.isEmpty(packageList)) {
//添加订单下的所有在库订单的包件
List distributionParcelListEntities = distributionParcelListService.list(Wrappers.query().lambda().eq(DistributionParcelListEntity::getStockArticleId, s.getId())
@@ -3140,19 +3260,28 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl packageIds = packageList.stream().map(DistributionParcelListEntity::getId).collect(Collectors.toList());
@@ -3168,30 +3297,33 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl qw = new QueryWrapper().lambda().eq(DistributionParcelListEntity::getStockArticleId, s.getId());
-// List 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())) {
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
index 340fd992c..6d395ac60 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
@@ -785,6 +785,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl list = Func.toLongList(zeroPackageIds);
@@ -1074,6 +1077,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl>>>> 签收异常报错", e);
@@ -2854,6 +2861,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>>>data:{}",trunklinePackageTrackLog);
+ throw new RuntimeException("该包件正在被操作,请稍后再试!!!");
+ }
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());
@@ -3431,7 +3452,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl 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 ids) {
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java
index 931ce53bc..e3068030b 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java
+++ b/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 idArray = Arrays.asList(ids.split(","));
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", idArray);
+
+ InComingDTO inComingDTO = new InComingDTO();
+ StringBuffer sb = new StringBuffer();
List list = baseMapper.selectList(wrapper);
+
+ List 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 list = baseMapper.selectList(wrapper);
+ if(!list.isEmpty()){
+ DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity = list.get(0);
+
+ distributionBusinessPreOrderEntity.setInWarehouse(1);
+ return baseMapper.updateById(distributionBusinessPreOrderEntity);
+ }
+ return 0;
+
+
+ }
+
+
@Override
public IPage pacgeList(Map distributionBusinessPreOrderDTO, IPage page) {
DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
@@ -137,80 +176,86 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
- List 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 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 queryWrapper = new LambdaQueryWrapper<>();
+// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
+// List 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 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 pageByCarNum(Map distributionBusinessPreOrderDTO, IPage page) {
+ IPage 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 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 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) {
diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java
index 118d11573..d36c04c84 100644
--- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java
+++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java
@@ -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();//订单自编号
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java
new file mode 100644
index 000000000..e9f0b4091
--- /dev/null
+++ b/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;
+ }
+
+}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
index 886cbcfd9..a5b203311 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
+++ b/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 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 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();
+ }
+
+
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java
new file mode 100644
index 000000000..901f1822a
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklinePackageTrackLogClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklinePackageTrackLogClient.java
index 2d6c0ae0f..2e0433f47 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklinePackageTrackLogClient.java
+++ b/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 addPackageTrackLogList, List orderPackageCodes, Integer workNode) {
+ public void addPackageTrackLog(List addPackageTrackLogList) {
List ls = new ArrayList<>();
+ List 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]);
}
}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java
index b4ccab6d0..0b76b097f 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/TrunklineWaybillPackageClient.java
@@ -20,7 +20,6 @@ public class TrunklineWaybillPackageClient implements ITrunklineWaybillPackageCl
LambdaQueryWrapper lambdaQueryWrapper =new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(TrunklineWaybillPackageEntity::getWaybillId,waybillIds);
- trunklineWaybillPackageService.list(lambdaQueryWrapper);
return trunklineWaybillPackageService.list(lambdaQueryWrapper);
}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.java
index d0a5c8d79..b1ba3672d 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.java
@@ -25,7 +25,7 @@ public interface TrunklineBillladingMapper extends BaseMapper findWaybillListNotBillladingId(IPage