Browse Source

Merge branch 'dev' into pre-production

master
pref_mail@163.com 11 months ago
parent
commit
2145f5c047
  1. 14
      blade-biz-common/src/main/java/org/springblade/common/annotations/ChangeAsync.java
  2. 36
      blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java
  3. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  4. 12
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  5. 21
      blade-service-api/logpm-business-conversion-api/pom.xml
  6. 12
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/BusinessPreListDTO.java
  7. 11
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java
  8. 266
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/entity/DistributionBusinessPreOrderEntity.java
  9. 28
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreOrderListVO.java
  10. 14
      blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreOrderVO.java
  11. 2
      blade-service-api/pom.xml
  12. 9
      blade-service/logpm-aftersales/src/main/resources/application-dev.yml
  13. 10
      blade-service/logpm-basic/src/main/resources/application-dev.yml
  14. 2
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataClientMapper.xml
  15. 49
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataDriverArteryServiceImpl.java
  16. 45
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataVehicleServiceImpl.java
  17. 10
      blade-service/logpm-basicdata/src/main/resources/application-dev.yml
  18. 5
      blade-service/logpm-distribution/pom.xml
  19. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionBillLadingAppController.java
  20. 59
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionBusinessPreOrderAppController.java
  21. 122
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java
  22. 16
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
  23. 68
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionBusinessPreOrderController.java
  24. 14
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionBusinessPreOrderDTO.java
  25. 62
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java
  26. 157
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
  27. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  28. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  29. 245
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
  30. 27
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/ClerkCheckPushBillDataQueueHandler.java
  31. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
  32. 46
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java
  33. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationService.java
  34. 13
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  35. 285
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  36. 177
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  37. 215
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  38. 272
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java
  39. 9
      blade-service/logpm-distribution/src/main/resources/application-dev.yml
  40. 16
      blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java
  41. 74
      blade-service/logpm-factory/src/test/java/com/logpm/factory/TestService.java
  42. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  43. 9
      blade-service/logpm-trunkline/src/main/resources/application-dev.yml
  44. 9
      blade-service/logpm-warehouse/src/main/resources/application-dev.yml

14
blade-biz-common/src/main/java/org/springblade/common/annotations/ChangeAsync.java

@ -0,0 +1,14 @@
package org.springblade.common.annotations;
import org.springframework.scheduling.annotation.Async;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ChangeAsync {
String value() default "";
}

36
blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java

@ -0,0 +1,36 @@
package org.springblade.common.component;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import org.springblade.common.constant.LauncherConstant;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@Component
@AllArgsConstructor
public class MockLoginService {
private final Environment environment;
public JSONObject mockToken(String tenantId,String account) {
String url = "http://" + LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0])) + "/blade-auth/oauth/token";
HttpRequest urlRequest = HttpRequest.post(url);
urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
urlRequest.header("Tenant-Id", "627683");
Map<String, Object> params = new HashMap<>();
params.put("grant_type", "local_server");
params.put("scope", "all");
params.put("username", account);
params.put("tenantId", tenantId);
HttpResponse execute = urlRequest.form(params).execute();
String body = execute.body();
JSONObject jsonObject = JSONObject.parseObject(body);
return jsonObject;
}
}

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

@ -9,7 +9,7 @@ public interface ModuleNameConstant {
/**
* 如果不需要 ""
*/
public static final String DEVAUTH ="";
public static final String DEVAUTH ="-pref";
/**
* 工厂对接服务名称

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

@ -172,6 +172,18 @@ public interface RabbitConstant {
/****************创建商家配送计划 start *************************/
String BUSINESS_PRE_CONVERSION_DATA_QUEUE = "business_pre_conversion_data_queue" + ModuleNameConstant.DEVAUTH;
String BUSINESS_PRE_CONVERSION_DATA_EXCHANGE = "business_pre_conversion_data_exchange" + ModuleNameConstant.DEVAUTH;
String BUSINESS_PRE_CONVERSION_DATA_ROUTING = "business_pre_conversion_data_routing" + ModuleNameConstant.DEVAUTH;
/****************创建商家配送计划end *************************/
//新系统订单状态消息队列配置
String HWY_ORDER_STATUS_QUEUE = "hwy_order_status_queue" + ModuleNameConstant.DEVAUTH;
String HWY_ORDER_STATUS_EXCHANGE = "hwy_order_status_exchange" + ModuleNameConstant.DEVAUTH;

21
blade-service-api/logpm-business-conversion-api/pom.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springblade</groupId>
<artifactId>logpm-business-conversion-api</artifactId>
<version>3.2.0.RELEASE</version>
<parent>
<groupId>org.springblade</groupId>
<version>3.2.0.RELEASE</version>
<artifactId>blade-service-api</artifactId>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

12
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/BusinessPreListDTO.java

@ -0,0 +1,12 @@
package com.logpm.business.dto;
import lombok.Data;
@Data
public class BusinessPreListDTO {
private String reservationCode;
private Integer inWarehouse;
}

11
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/dto/BusinessSanDTO.java

@ -0,0 +1,11 @@
package com.logpm.business.dto;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
@Data
public class BusinessSanDTO {
String orderPackageCode;
String reservationCode;
}

266
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/entity/DistributionBusinessPreOrderEntity.java

@ -0,0 +1,266 @@
/*
* 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.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* 商场转换预处理 实体类
*
* @author cyz
* @since 2023-06-13
*/
@Data
@TableName("logpm_business_pre_order")
@ApiModel(value = "DistributionBusinessPreOrder对象", description = "商场转换预处理实体")
@EqualsAndHashCode(callSuper = true)
public class DistributionBusinessPreOrderEntity extends TenantEntity {
/**
* 预留1
*/
@ApiModelProperty(value = "预留1")
private String reserve1;
/**
* 预留2
*/
@ApiModelProperty(value = "预留2")
private String reserve2;
/**
* 预留3
*/
@ApiModelProperty(value = "预留3")
private String reserve3;
/**
* 预留4
*/
@ApiModelProperty(value = "预留4")
private String reserve4;
/**
* 预留5
*/
@ApiModelProperty(value = "预留5")
private String reserve5;
/**
* 订单自编号
*/
@ApiModelProperty(value = "订单自编号")
private String orderCode;
/**
* 配送车牌
*/
@ApiModelProperty(value = "配送车牌")
private String vehicleName;
/**
* 配送司机
*/
@ApiModelProperty(value = "配送司机")
private String driverName;
/**
* 仓库
*/
@ApiModelProperty(value = "仓库")
private String warehouse;
@ApiModelProperty(value = "仓库ID")
private Long warehouseId;
/**
* 包件类型 1 定制品 2 库存品 3零担
*/
@ApiModelProperty(value = "状态")
private Integer conditions;
/**
* 包条码
*/
@ApiModelProperty(value = "包条码")
private String orderPackageCode;
/**
* 货位信息
*/
@ApiModelProperty(value = "货位信息")
private String goodsAllocation;
/**
* 所在托盘
*/
@ApiModelProperty(value = "所在托盘")
private String pallet;
/**
* 一级品
*/
@ApiModelProperty(value = "一级品")
private String firsts;
/**
* 二级品
*/
@ApiModelProperty(value = "二级品")
private String second;
/**
* 三级品
*/
@ApiModelProperty(value = "三级品")
private String thirdProduct;
/**
* 入库时间
*/
@ApiModelProperty(value = "入库时间")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date warehouseEntryTimeEnd;
/**
* 运单号
*/
@ApiModelProperty(value = "运单号")
private String waybillNumber;
/**
* 运单ID
*/
@ApiModelProperty(value = "运单ID")
private Long waybillId;
/**
* 物料Id
*/
@ApiModelProperty(value = "物料ID")
private Long materialId;
/**
* 物料名称
*/
@ApiModelProperty(value = "物料名称")
private String materialName;
/**
* 物料编号
*/
@ApiModelProperty(value = "物料编号")
private String materialCode;
/**
* 物料单位
*/
@ApiModelProperty(value = "物料单位")
private String materialUnit;
/**
* 数量
*/
@ApiModelProperty(value = "数量")
private Integer quantity;
/**
* 车次号
*/
@ApiModelProperty(value = "车次号")
private String trainNumber;
/**
* 在库订单ID
*/
@ApiModelProperty(value = "在库订单ID")
private Long stockArticleId;
/**
* 服务号
*/
@ApiModelProperty(value = "服务号")
private String serviceNumber;
/**
* 品牌ID
*/
@ApiModelProperty(value = "品牌ID")
private Long brandId;
/**
* 品牌名称
*/
@ApiModelProperty(value = "品牌名称")
private String brandName;
/**
* 包件状态
*/
@ApiModelProperty(value = "包件状态")
private String orderPackageStatus;
@ApiModelProperty(value = "经销商名称")
private String dealerName;
@ApiModelProperty(value = "经销商编码")
private String dealerCode;
@ApiModelProperty(value = "发站仓ID")
private Long sendWarehouseId;
@ApiModelProperty(value = "发站仓ID")
private String sendWarehouseName;
@ApiModelProperty(value = "收站仓ID")
private Long acceptWarehouseId;
@ApiModelProperty(value = "收站仓ID")
private String acceptWarehouseName;
@ApiModelProperty(value = "装车状态")
private String orderPackageLoadingStatus;
@ApiModelProperty(value = "重量")
private BigDecimal weight;//重量
@ApiModelProperty(value = "体积")
private BigDecimal volume;//体积
@ApiModelProperty(value = "是否中转")
private Integer isTransfer;//是否中转
@ApiModelProperty(value = "暂存单id")
private Long advanceId;//暂存单id
@ApiModelProperty(value = "配送车次号")
private String distrCarNumber;
@ApiModelProperty(value = "预约单号")
private String reservationCode;
@ApiModelProperty(value = "是否入库 0 没有入库 1 已入库")
private Integer inWarehouse;//
@ApiModelProperty(value = "来源租户")
private String fromTenantId;
@ApiModelProperty(value = "操作状态 0 正常操作 1.补录操作")
private Integer operationStatus;
// /**
// * 配送状态
// */
// @ApiModelProperty(value = "配送状态")
// private String orderPackageStatus;
}

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

@ -0,0 +1,28 @@
package com.logpm.business.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class DistributionBusinessPreOrderListVO implements Serializable {
/**
* 总数
*/
private Integer sumNum;
/**
* 入库数量
*/
private Integer inNum;
/**
* 列表数据
*/
private List<DistributionBusinessPreOrderVO> list;
}

14
blade-service-api/logpm-business-conversion-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreOrderVO.java

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

2
blade-service-api/pom.xml

@ -42,6 +42,8 @@
<module>logpm-report-api</module>
<module>logpm-factory-data-api</module>
<module>logpm-factory-data-base-api</module>
<!-- 商家转化模块 -->
<module>logpm-business-conversion-api</module>
</modules>
<dependencies>

9
blade-service/logpm-aftersales/src/main/resources/application-dev.yml

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

10
blade-service/logpm-basic/src/main/resources/application-dev.yml

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

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

@ -50,7 +50,7 @@
logpm_basicdata_client lbc
JOIN logpm_basicdata_storage_services lbss ON lbss.client_id = lbc.id
LEFT JOIN logpm_basicdata_store_brand lbsb on lbsb.client_id = lbc.id
WHERE lbc.client_type = '2' and lbc.is_deleted = 0 and lbss.serve_warehouse_id = #{id}
WHERE lbc.client_type = '2' and lbc.is_deleted = 0 and lbss.serve_warehouse_id = #{id}
GROUP BY lbc.id
</select>

49
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataDriverArteryServiceImpl.java

@ -17,6 +17,7 @@
package com.logpm.basicdata.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@ -49,10 +50,7 @@ import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -144,15 +142,50 @@ public class BasicdataDriverArteryServiceImpl extends BaseServiceImpl<BasicdataD
ArrayList<BasicdataDriverArteryVO> basicdataDriverArteryVOS = new ArrayList<>();
List<BasicdataDriverArteryEntity> list = baseMapper.selectListByWarehouseId(warehouseId);
log.info("################getDriverList list:{}", list);
if(list.isEmpty()){
return basicdataDriverArteryVOS;
}
List<Long> ids =list.stream() // 创建一个流
.map(BasicdataDriverArteryEntity::getId) // 使用map方法获取每个对象的ID
.collect(Collectors.toList());
List<BasicdataDrivermiddleEntity> list1 = basicdataDrivermiddleService.list(Wrappers.<BasicdataDrivermiddleEntity>query().lambda()
.in(BasicdataDrivermiddleEntity::getDriverId, ids));
Map<Long, List<BasicdataDrivermiddleEntity>> groupedEntities =
list1.stream()
.collect(Collectors.groupingBy(BasicdataDrivermiddleEntity::getDriverId));
LambdaQueryWrapper<BasicdataVehicleEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BasicdataVehicleEntity::getIsDeleted, 0);
List<BasicdataVehicleEntity> list2 = basicdataVehicleService.list(queryWrapper);
for (BasicdataDriverArteryEntity driverArteryEntity : list) {
BasicdataDriverArteryVO driverArteryVO = Func.copy(driverArteryEntity, BasicdataDriverArteryVO.class);
List<Long> vehicleIds = basicdataDrivermiddleService.list(Wrappers.<BasicdataDrivermiddleEntity>query().lambda()
.eq(BasicdataDrivermiddleEntity::getDriverId, driverArteryEntity.getId())).stream().filter(f -> Func.isNotEmpty(f.getBrandId())).map(BasicdataDrivermiddleEntity::getBrandId).collect(Collectors.toList());
if (Func.isNotEmpty(vehicleIds)) {
driverArteryVO.setVehicleVOList(basicdataVehicleService.list(Wrappers.<BasicdataVehicleEntity>query().lambda().in(BasicdataVehicleEntity::getId, vehicleIds)));
List<BasicdataDrivermiddleEntity> basicdataDrivermiddleEntities = groupedEntities.get(driverArteryEntity.getId());
if (Func.isNotEmpty(basicdataDrivermiddleEntities)) {
List<Long> vehicleIds = basicdataDrivermiddleEntities.stream().filter(f -> Func.isNotEmpty(f.getBrandId())).map(BasicdataDrivermiddleEntity::getBrandId).collect(Collectors.toList());
if (Func.isNotEmpty(vehicleIds)) {
List<BasicdataVehicleEntity> vehicleList = new ArrayList<>();
for (Long vehicleId : vehicleIds) {
for (BasicdataVehicleEntity basicdataVehicleEntity : list2) {
if (vehicleId.equals(basicdataVehicleEntity.getId())) {
vehicleList.add(basicdataVehicleEntity);
}
}
}
driverArteryVO.setVehicleVOList(vehicleList);
}
}
basicdataDriverArteryVOS.add(driverArteryVO);
}
return basicdataDriverArteryVOS;
}

45
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataVehicleServiceImpl.java

@ -18,6 +18,7 @@ package com.logpm.basicdata.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.BeanUtils;
@ -51,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -141,14 +143,49 @@ public class BasicdataVehicleServiceImpl extends BaseServiceImpl<BasicdataVehicl
public List<BasicdataVehicleVO> getVehicleList() {
List<BasicdataVehicleEntity> list = this.list();
List<BasicdataVehicleVO> basicdataVehicleVOS = new ArrayList<>();
if(Func.isEmpty(list)){
return null;
}
// 查询所有的iD
List<Long> ids = list.stream() // 创建一个流
.map(BasicdataVehicleEntity::getId) // 使用map方法获取每个对象的ID
.collect(Collectors.toList()); // 使用collect方法将ID收集到一个新的List中
LambdaQueryWrapper<BasicdataDrivermiddleEntity> queryWrapper = Wrappers.<BasicdataDrivermiddleEntity>query().lambda().in(BasicdataDrivermiddleEntity::getBrandId, ids);
List<BasicdataDrivermiddleEntity> list1 = basicdataDrivermiddleService.list(queryWrapper);
Map<Long, List<BasicdataDrivermiddleEntity>> groupedEntities =
list1.stream()
.collect(Collectors.groupingBy(BasicdataDrivermiddleEntity::getBrandId));
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("is_deleted",0);
List<BasicdataDriverArteryEntity> basicdataDriverArteryEntities1 = basicdataDriverArteryMapper.selectList(queryWrapper1);
if (Func.isNotEmpty(list)){
list.forEach(l->{
BasicdataVehicleVO vehicleVO = Func.copy(l, BasicdataVehicleVO.class);
List<Long> driverIds = basicdataDrivermiddleService.list(Wrappers.<BasicdataDrivermiddleEntity>query().lambda().eq(BasicdataDrivermiddleEntity::getBrandId, vehicleVO.getId())).stream().filter(f -> Func.isNotEmpty(f.getDriverId())).map(BasicdataDrivermiddleEntity::getDriverId).collect(Collectors.toList());
if (Func.isNotEmpty(driverIds)){
List<BasicdataDriverArteryEntity> basicdataDriverArteryEntities = basicdataDriverArteryMapper.selectList(Wrappers.<BasicdataDriverArteryEntity>query().lambda().in(BasicdataDriverArteryEntity::getId,driverIds));
vehicleVO.setDriverArteryEntityList(basicdataDriverArteryEntities);
List<BasicdataDrivermiddleEntity> basicdataDrivermiddleEntities = groupedEntities.get(vehicleVO.getId());
if(Func.isNotEmpty(basicdataDrivermiddleEntities)){
List<Long> driverIds = basicdataDrivermiddleEntities.
stream().filter(f -> Func.isNotEmpty(f.getDriverId())).map(BasicdataDrivermiddleEntity::getDriverId).collect(Collectors.toList());
if (Func.isNotEmpty(driverIds)){
List<BasicdataDriverArteryEntity> basicdataDriverArteryEntities = new ArrayList();
for (Long driverId : driverIds) {
basicdataDriverArteryEntities1.forEach(e->{
if (driverId.equals(e.getId())){
basicdataDriverArteryEntities.add(e);
}
});
}
vehicleVO.setDriverArteryEntityList(basicdataDriverArteryEntities);
}
}
basicdataVehicleVOS.add(vehicleVO);
});
}

10
blade-service/logpm-basicdata/src/main/resources/application-dev.yml

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

5
blade-service/logpm-distribution/pom.xml

@ -128,6 +128,11 @@
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-business-conversion-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
</dependencies>

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionBillLadingAppController.java

@ -132,7 +132,7 @@ public class DistributionBillLadingAppController extends BladeController {
@ApiImplicitParam(name = "coding", value = "包条码", required = true),
@ApiImplicitParam(name = "type", value = "类型 2 订单 1 库存品", required = true)
})
public Resp getScan(@ApiIgnore @RequestParam Map<String, Object> distrilbutionBillLading){
public Resp scan(@ApiIgnore @RequestParam Map<String, Object> distrilbutionBillLading){
Resp scan = distrilbutionBillLadingService.getScan(distrilbutionBillLading);
//获取传入类型

59
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionBusinessPreOrderAppController.java

@ -0,0 +1,59 @@
package com.logpm.distribution.appcontroller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.dto.BusinessSanDTO;
import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.concurrent.ExecutionException;
@RestController
@AllArgsConstructor
@RequestMapping("/app/businessPreOrder")
@Api(value = "配送管理", tags = "配送管理App接口")
public class DistributionBusinessPreOrderAppController {
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
@ResponseBody
@PostMapping("/list")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "模糊查询", notes = "传入trayTypeDTO")
public R list(@RequestBody BusinessPreListDTO queryrderDTO){
DistributionBusinessPreOrderListVO data =distributionBusinessPreOrderService.list(queryrderDTO);
return R.data(data);
}
@ResponseBody
@PostMapping("/scanOrderPackageCode")
@ApiOperationSupport(order = 1)
public Resp scanOrderPackageCode(@RequestBody BusinessSanDTO businessSanDTO){
Resp resp = null;
try {
resp = distributionBusinessPreOrderService.inOrderWarehourse(businessSanDTO.getOrderPackageCode(),businessSanDTO.getReservationCode());
} catch (ExecutionException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return resp;
}
}

122
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java

@ -0,0 +1,122 @@
package com.logpm.distribution.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.annotations.LogpmAsync;
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.secure.utils.AuthUtil;
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;
}
}

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

@ -171,5 +171,21 @@ public class RabbitMqConfiguration {
}
@Bean
public Queue businessPreConversionQueue() {
return new Queue(RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_QUEUE, true);
}
@Bean
public CustomExchange businessPreConversionExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding businessPreConversionBinding(Queue businessPreConversionQueue, CustomExchange businessPreConversionExchange) {
return BindingBuilder.bind(businessPreConversionQueue).to(businessPreConversionExchange).with(RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_ROUTING).noargs();
}
}

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

@ -0,0 +1,68 @@
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.DistributionBusinessPreOrderVO;
import com.logpm.distribution.entity.DistributionDeliveryListEntity;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
import com.logpm.distribution.vo.DistributionDeliveryListVO;
import com.logpm.distribution.wrapper.DistributionDeliveryListWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@RestController
@AllArgsConstructor
@Slf4j
@RequestMapping("/businessPreOrder")
@Api(value = "配送增值服务明细", tags = "预入库信息控制器")
public class DistributionBusinessPreOrderController extends BladeController {
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
/**
* 预入库信息 分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionDeliveryList")
public R<IPage<DistributionBusinessPreOrderVO>> list(@ApiIgnore @RequestParam Map<String, Object> distributionBusinessPreOrderDTO, Query query) {
IPage<DistributionBusinessPreOrderVO> page = Condition.getPage(query);
IPage<DistributionBusinessPreOrderVO> data= distributionBusinessPreOrderService.pacgeList(distributionBusinessPreOrderDTO,page);
return R.data(data);
}
@GetMapping("/inOrder")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "页面ID", notes = "传入distributionDeliveryList")
public R<Boolean> inOrder(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
// try {
Boolean isSuccess =distributionBusinessPreOrderService.inOrder(ids);
return R.data(isSuccess);
// }catch (Exception e){
// log.error("预入库信息入库失败",e);
// return R.fail(500,e.getMessage());
// }
}
}

14
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionBusinessPreOrderDTO.java

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

62
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/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.distribution.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.entity.DistributionBusinessPreOrderEntity;
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 接口
*
* @author cyz
* @since 2023-06-13
*/
public interface DistributionBusinessPreOrderMapper extends BaseMapper<DistributionBusinessPreOrderEntity> {
/**
* 查询DistributionBusinessPreOrderVO列表
* @param page
* @param param
* @return
*/
IPage<DistributionBusinessPreOrderVO> pageList(IPage<DistributionBusinessPreOrderVO> page, DistributionBusinessPreOrderDTO param);
/**
* 删除商家端数据
* @param k
* @param deletedPackageList
* @return
*/
Integer deleteBusinessPreOrder(String reservationCode, List<String> deletedPackageList);
List<DistributionBusinessPreOrderEntity> listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
}

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

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.distribution.mapper.DistributionBusinessPreOrderMapper">
<delete id="deleteBusinessPreOrder">
DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode}
AND order_package_code IN
<foreach
collection="orderPackageList" item="orderPackageCode" open="(" separator="," close=")">
#{orderPackageCode}
</foreach>
</delete>
<select id="pageList" resultType="com.logpm.business.vo.DistributionBusinessPreOrderVO">
SELECT
id,
firsts,
`SECOND`,
third_product,
quantity,
train_number,
order_code,
service_number,
material_name,
material_code,
brand_name,
waybill_number,
dealer_name,
dealer_code,
order_package_code,
reservation_code,
operation_status,
distr_car_number,
send_warehouse_name,
accept_warehouse_name,
weight,
volume,
driver_name,
vehicle_name,
distr_car_number,
in_warehouse
FROM
logpm_business_pre_order
<where>
is_deleted = 0
<if test="param.id != null and param.id != ''">
AND id = #{param.id}
</if>
<!-- <if test="param.ids != null ">-->
<!-- AND id IN-->
<!-- <foreach collection="param.ids" item="item" index="index" open="(" close=")" separator=",">-->
<!-- #{otem}-->
<!-- </foreach>-->
<!-- </if>-->
<if test="param.firsts != null and param.firsts != ''">
AND firsts like concat(#{param.id},'%')
</if>
<if test="param.second != null and param.second != ''">
AND `SECOND` like concat(#{param.second},'%')
</if>
<if test="param.thirdProduct != null and param.thirdProduct != ''">
AND third_product like concat(#{param.thirdProduct},'%')
</if>
<if test="param.trainNumber != null and param.trainNumber != ''">
AND train_number like concat(#{param.trainNumber},'%')
</if>
<if test="param.orderCode != null and param.orderCode != ''">
AND order_code like concat(#{param.orderCode},'%')
</if>
<if test="param.serviceNumber != null and param.serviceNumber != ''">
AND service_number like concat(#{param.serviceNumber},'%')
</if>
<if test="param.materialName != null and param.materialName != ''">
AND material_name like concat(#{param.materialName},'%')
</if>
<if test="param.materialCode != null and param.materialCode != ''">
AND material_code like concat(#{param.materialCode},'%')
</if>
<if test="param.brandName != null and param.brandName != ''">
AND brand_name like concat(#{param.brandName},'%')
</if>
<if test="param.waybillNumber != null and param.waybillNumber != ''">
AND waybill_number like concat(#{param.waybillNumber},'%')
</if>
<if test="param.dealerName != null and param.dealerName != ''">
AND dealer_name like concat(#{param.dealerName},'%')
</if>
<if test="param.dealerCode != null and param.dealerCode != ''">
AND dealer_code like concat(#{param.dealerCode},'%')
</if>
<if test="param.sendWarehouseName != null and param.sendWarehouseName != ''">
AND send_warehouse_name like concat(#{param.sendWarehouseName},'%')
</if>
<if test="param.acceptWarehouseName != null and param.acceptWarehouseName != ''">
AND accept_warehouse_name like concat(#{param.acceptWarehouseName},'%')
</if>
<if test="param.driverName != null and param.driverName != ''">
AND driver_name like concat(#{param.driverName},'%')
</if>
<if test="param.vehicleName != null and param.vehicleName != ''">
AND vehicle_name like concat(#{param.vehicleName},'%')
</if>
<if test="param.distrCarNumber != null and param.distrCarNumber != ''">
AND distr_car_number like concat(#{param.distrCarNumber},'%')
</if>
<if test="param.inWarehouse != null and param.inWarehouse != ''">
AND in_warehouse = #{param.inWarehouse}
</if>
</where>
</select>
<select id="listByBusinessPreListDTO" resultType="com.logpm.business.entity.DistributionBusinessPreOrderEntity">
SELECT
id,
firsts,
`SECOND`,
third_product,
quantity,
train_number,
order_code,
order_package_code,
service_number,
material_name,
material_code,
brand_name,
waybill_number,
dealer_name,
dealer_code,
send_warehouse_name,
accept_warehouse_name,
weight,
volume,
driver_name,
vehicle_name,
distr_car_number,
in_warehouse
FROM
logpm_business_pre_order
<where>
is_deleted = 0
<if test="queryrderDTO.reservationCode != null and queryrderDTO.reservationCode != ''">
AND reservation_code = #{queryrderDTO.reservationCode}
</if>
</where>
</select>
</mapper>

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

@ -405,4 +405,11 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
List<DistributionParcelListVO> selectPackageListByReservationIds(@Param("reservationIds") List<Long> reservationIds);
List<DistributionParcelListEntity> selectPackageByReservations(@Param("reservationIds") List<Long> reservationIds, @Param("warehouseId")Long warehouseId);
/**
* 获取配送任务的预约单
* @param id
* @return
*/
List<DistributionReservationEntity> selectListByDeliveryId(@Param("id")Long id);
}

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

@ -1964,4 +1964,11 @@
</where>
</select>
<select id="selectListByDeliveryId"
resultType="com.logpm.distribution.entity.DistributionReservationEntity">
SELECT ldr.* from logpm_distribution_delivery_list lddl LEFT JOIN
logpm_distribution_signfor lds on lds.delivery_id = lddl.id
LEFT JOIN logpm_distribution_reservation ldr on ldr.id= lds.reservation_id and ldr.is_deleted=0 and reservation_status!=40
where lddl.id=#{id}
</select>
</mapper>

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

@ -0,0 +1,245 @@
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.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.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
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.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@RabbitListener(queues = RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_QUEUE)
@Component
@AllArgsConstructor
public class BusinessPreOrderDataQueueHandler {
private final IDistributionDeliveryListService distributionDeliveryListService;
private final IDistributionReservationService distributionReservationService;
private final IDistributionReservationPackageService distributionReservationPackageService;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
private final ISysClient sysClient;
@RabbitHandler
public void businessPreOrderDataHandler(Map map, Message message, Channel channel) {
String mallName = "仁寿欧派大家居";
Long t = (Long) map.get("messageData");
if (ObjectUtil.isEmpty(t)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 配送ID为空");
return;
}
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListService.getById(t);
if (ObjectUtil.isEmpty(distributionDeliveryListEntity)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 配送对象为null");
return;
}
List<DistributionReservationEntity> list = distributionReservationService.selectListByDeliveryId(distributionDeliveryListEntity.getId());
if (ObjectUtil.isEmpty(list)) {
log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 预约列表为空");
return;
}
List<DistributionBusinessPreOrderEntity> dataResult = new ArrayList<>();
for (DistributionReservationEntity distributionReservationEntity : list) {
// 判断需要进行推送商家名称
log.info(">>>>> mallName TAG {}", mallName);
log.info(">>>>> distributionReservationEntity.getMallName() TAG {}", distributionReservationEntity.getMallName());
if (mallName.equals(distributionReservationEntity.getMallName())) {
// 将当前的预约单加入到需要推送的列表
LambdaQueryWrapper<DistributionReservationPackageEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistributionReservationPackageEntity::getReservationId, distributionReservationEntity.getId());
queryWrapper.ne(DistributionReservationPackageEntity::getPacketBarStatus, 2);
List<DistributionReservationPackageEntity> distributionReservationPackageEntityList = distributionReservationPackageService.list(queryWrapper);
for (DistributionReservationPackageEntity distributionReservationPackageEntity : distributionReservationPackageEntityList) {
DistributionParcelListEntity byId = distributionParcelListService.getById(distributionReservationPackageEntity.getParceListId());
DistributionBusinessPreOrderEntity data = BeanUtil.copy(byId, DistributionBusinessPreOrderEntity.class);
data.setDriverName(distributionDeliveryListEntity.getDriverName());
data.setVehicleName(distributionDeliveryListEntity.getVehicleName());
data.setDistrCarNumber(distributionDeliveryListEntity.getTrainNumber());
data.setFromTenantId(byId.getTenantId());
data.setOperationStatus(0);
data.setInWarehouse(0);
data.setId(null);
data.setTenantId(null);
data.setReservationCode(distributionReservationEntity.getReservationCode());
dataResult.add(data);
}
}
}
// 查询包间列表
saveOtherDataBaseNew(dataResult, mallName);
// 查询配送单对应的司机
// 需要将查询出来的数据与 当前保存的数据进行比对 避免重复插入
// 通过商场名称找到租户中存在的商场名称
// 切换当前线程的数据源 插入到 租户对应的数据库中
log.info("businessPreOrderDataHandler:{}", map);
}
public void saveOtherDataBaseNew(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// 查询保存的对象在商场端是否存在 && 没有入库的 都i需要删除 执行新的
List<Long> orderIdList = dataResult.stream()
.map(DistributionBusinessPreOrderEntity::getStockArticleId)
.collect(Collectors.toList());
R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return;
}
if (dataResult.isEmpty()) {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
DynamicDataSourceContextHolder.push(tenant.getTenantId());
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
// 找到已经推送的包件信息 并将其标记为删除状态
List<Long> temsp = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
for (DistributionBusinessPreOrderEntity businessPreOrderEntity : dataResult) {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
}
}
if (!temsp.isEmpty()) {
// 更新删除状态
distributionBusinessPreOrderService.deleteLogic(temsp);
}
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) {
distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
}
// 执行保存操作
distributionBusinessPreOrderService.saveBatch(dataResult);
DynamicDataSourceContextHolder.poll();
}
}
// public void saveOtherDataBase(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// String method = "########################saveOtherDataBase";
// R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
// if (tenantByName.isSuccess()) {
// Tenant tenant = tenantByName.getData();
// if (ObjectUtil.isEmpty(tenant)) {
// log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 租户不存在");
// return;
// }
// if (dataResult.isEmpty()) {
// log.info(method + "dataResult 参数错误");
// }
// DynamicDataSourceContextHolder.push(tenant.getTenantId());
// Map<Integer, List<DistributionBusinessPreOrderEntity>> map = dataResult.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
// if (Func.isNotEmpty(map.get(1))) {
// //存在需要进行删除的数据
// List<DistributionBusinessPreOrderEntity> deleteList = map.get(0);
// if (!deleteList.isEmpty()) {
// Map<String, List<DistributionBusinessPreOrderEntity>> deletedMap = deleteList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// deletedMap.forEach((k, v) -> {
// List<String> deletedPackageList = v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList());
// log.info("删除商家端数据>>>>reservationCode:{}", deletedPackageList);
// if (!deletedPackageList.isEmpty()) {
// //进行删除
// Integer row = distributionBusinessPreOrderService.deleteBusinessPreOrder(k, deletedPackageList);
// log.info("删除商家端数据>>>>row:{}", row);
// }
// });
// }
// }
// if (Func.isNotEmpty(map.get(0))) {
// //存在可能变更的数据
// List<DistributionBusinessPreOrderEntity> mapList = map.get(0);
// Map<String, List<DistributionBusinessPreOrderEntity>> saveData = mapList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// List<DistributionBusinessPreOrderEntity> existData = new ArrayList<>();
// if (!saveData.isEmpty()) {
// //查询是否存在重复
// saveData.forEach((k, v) -> {
// List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(Wrappers.<DistributionBusinessPreOrderEntity>query().lambda()
// .eq(DistributionBusinessPreOrderEntity::getReservationCode, k)
// .in(DistributionBusinessPreOrderEntity::getOrderPackageCode, v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()))
// );
// if (!list.isEmpty()) {
// //已经存在数据
// existData.addAll(list);
// }
// });
// }
// if (!existData.isEmpty()) {
// //二者比较取差集
// mapList = mapList.stream().filter(m -> !existData.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()).contains(m.getOrderPackageCode())).collect(Collectors.toList());
// }
// if (!mapList.isEmpty()) {
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : mapList) {
// distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
// }
// distributionBusinessPreOrderService.saveBatch(mapList);
// }
// }
// DynamicDataSourceContextHolder.poll();
//
// }
//
//
// }
}

27
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/ClerkCheckPushBillDataQueueHandler.java

@ -1,41 +1,17 @@
package com.logpm.distribution.receiver;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basicdata.feign.IBasicdataTripartiteWarehouseClient;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.mapper.*;
import com.logpm.distribution.service.IDistributionStockService;
import com.logpm.distribution.service.IDistrilbutionBillLadingService;
import com.logpm.distribution.vo.DistributionSignPrintVO;
import com.logpm.oldproject.dto.SignPushDataContactDTO;
import com.logpm.oldproject.dto.SignPushDataDTO;
import com.logpm.oldproject.dto.SignPushDataUnitDTO;
import com.logpm.oldproject.entity.WarehouseEntity;
import com.logpm.oldproject.feign.IOldSignPushClient;
import com.logpm.oldproject.feign.IWarehouseClient;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.RedisKeyConstant;
import org.springblade.common.constant.stockup.StockAssignStatusConstant;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.entity.User;
import org.springblade.system.feign.IUserClient;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -51,12 +27,15 @@ public class ClerkCheckPushBillDataQueueHandler {
private final IDistrilbutionBillLadingService distrilbutionBillLadingService;
@RabbitHandler
public void clerkCheckPushBillLLadingDataHandler(Map map, Message message, Channel channel) {
try {
//得到审核的任务ID
Long t = (Long) map.get("messageData");
if (ObjectUtil.isEmpty(t )) {
log.info(">>>>>>>>>>>>> clerkCheckPushBillLLadingDataHandler 自提ID为空");
return;

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

@ -8,7 +8,9 @@ import com.logpm.distribution.dto.app.StockupZeroDTO;
import com.logpm.distribution.entity.DisStockListDetailEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionParcelNumberEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.warehouse.entity.WarehouseWarehouseEntity;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.core.secure.BladeUser;
import java.util.List;
@ -37,7 +39,7 @@ public interface IDistributionAsyncService {
* @param id
* @return
*/
Boolean getOrderSelfPickup(Long id);
Boolean updateOrderSelfPickup(Long id);
/**
* 修改扫码状态
* @param id
@ -56,7 +58,7 @@ public interface IDistributionAsyncService {
* @param id
* @return
*/
Boolean getBillStock(Long id);
Boolean updateBillStock(Long id);
/**
* 修改订单备货状态
@ -320,4 +322,7 @@ public interface IDistributionAsyncService {
* @param l
*/
void releaseBillLadingResource(Long l,Long warehouseId);
DistributionStockArticleEntity findDistributionStockArticleEntityByIdForAsync(String tenantId, Long id);
}

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

@ -0,0 +1,46 @@
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.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.entity.DistributionBillLadingScanEntity;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
public interface IDistributionBusinessPreOrderService extends BaseService<DistributionBusinessPreOrderEntity> {
/**
* 预备入库ID集合
* @param ids
* @return
*/
Boolean inOrder(String ids) throws ServiceException;
/**
* 查询DistributionBusinessPreOrder列表
* @param distributionBusinessPreOrderDTO
* @param page
* @return
*/
IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page);
/**
* 删除商家端数据
* @param k
* @param deletedPackageList
* @return
*/
Integer deleteBusinessPreOrder(String k, List<String> deletedPackageList);
DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO);
Resp inOrderWarehourse(String orderPackageCode,String reservationCode) throws ExecutionException, InterruptedException;
}

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

@ -145,7 +145,9 @@ public interface IDistributionReservationService extends BaseService<Distributio
*/
R<?> deliveryBusinessTask(DistributionDeliveryAllocationDTO allocationDTO);
/**
void createBusinessPreConversionQueue(Long id);
/**
*取消预约
* @param reservationDTO
* @return
@ -296,4 +298,6 @@ public interface IDistributionReservationService extends BaseService<Distributio
*/
void maintenanceCancelReservation(String params);
List<DistributionReservationEntity> selectListByDeliveryId(Long id);
}

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

@ -37,6 +37,7 @@ import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.InventoryLoadingStatusConstant;
@ -156,7 +157,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
@Override
@LogpmAsync("asyncExecutor")
@Transactional(rollbackFor = Exception.class)
public Boolean getOrderSelfPickup(Long id) {
public Boolean updateOrderSelfPickup(Long id) {
DistributionStockArticleEntity entity = new DistributionStockArticleEntity();
entity.setId(id);
entity.setOrderStatus(OrderStatusConstant.qianshou.getValue());
@ -191,7 +192,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
* @return
*/
@Override
public Boolean getBillStock(Long id) {
public Boolean updateBillStock(Long id) {
DistrilbutionBillStockEntity distrilbutionBillStock = new DistrilbutionBillStockVO();
distrilbutionBillStock.setId(id);
distrilbutionBillStock.setConditions("20");
@ -2755,5 +2756,13 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
@ChangeAsync()
@Override
public DistributionStockArticleEntity findDistributionStockArticleEntityByIdForAsync(String tenantId, Long id) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(id);
return stockArticleEntity;
}
}

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

@ -724,7 +724,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
Integer i = distributionDeliveryListMapper.updateloadingTimeById(distrilbutionloadingscanDTO.getDeliveryId());
//更新签收表的装车数量
Integer j = distributionSignforMapper.updateloadByReservationId(loadscanEntity.getDeliveryId(), loadscanEntity.getReservationId(), loadscanEntity.getPackageNub());
//进行解托操作
Map<String,Object> info = new HashMap<>();
info.put("orderPackageCode",parcelListEntity.getOrderPackageCode());
@ -971,7 +973,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
//备货库位下架
log.info("备货库位下架>>>>>>>>>>>>>>>>>>>>>>jsonObjects:{}",jsonObjects);
//TODO
warehouseUpdownStockUpAreaClient.downStockUpShelf(jsonObjects);
//查询已装车件数
// String str = getLoadingMsg(distrilbutionloadingscanDTO);
@ -3668,283 +3669,13 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
deliveryListEntity.setTaskTime(deliveryListDTO.getTaskTime());
//对配送进行更改
this.updateById(deliveryListEntity);
return R.status(true);
//
// //根据门店进行分组
//// Map<String, List<DistributionStockArticleDTO>> storeClient = stockArticle.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getStoreName));
// List<DistributionStockArticleDTO> distributionStockArticleDTOS = storeClient.get("");
// Map<String, List<DistributionStockArticleDTO>> mallClient = null;
// if (!Func.isEmpty(distributionStockArticleDTOS)) {
// mallClient = distributionStockArticleDTOS.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getMallName));
// Map<String, List<DistributionStockArticleDTO>> finalMallClient = mallClient;
// storeClient.forEach((k, v) -> finalMallClient.merge(k, v, (v1, v2) -> v2));
// } else {
// mallClient = storeClient;
// }
//
// List<DistributionReservationEntity> reservationEntityList = distributionReservationMapper.getDeliveryReservation(deliveryListEntity.getId());
// //将原客户和新的进行比对,如果有那么则进行客户修改,最后剩下的订单信息都属于是新客户
// Map<String, List<DistributionReservationEntity>> originalClient = reservationEntityList.stream().collect(Collectors.groupingBy(DistributionReservationEntity::getConsignee));
// //查询原来的备货任务
//// DistributionStockupVO stockupInfo = distributionStockupMapper.getDeliveryStockupInfo(deliveryListEntity.getId());
// Date date = new Date();
// BladeUser user = AuthUtil.getUser();
// AtomicInteger clientNum = new AtomicInteger();
// AtomicInteger orderNum = new AtomicInteger();
// mallClient.forEach((k, v) -> {
// clientNum.getAndIncrement();
// //判断原始客户中是否存在
// if (Func.isEmpty(originalClient.get(k))) {
// //不存在,意味这里应该进行客户的新增
// DistributionReservationDTO reservation = deliveryListDTO.getReservation();
// DistributionReservationEntity distributionReservationEntity = Func.copy(reservation, DistributionReservationEntity.class);
// distributionReservationEntity.setReservationDate(date);
// distributionReservationEntity.setServeType(deliveryListDTO.getReservation().getServeType());
// distributionReservationEntity.setConsignee(k);
// distributionReservationEntity.setDeliveryAddress(v.get(0).getCustomerAddress());
// distributionReservationEntity.setDeliveryPhone(v.get(0).getCustomerTelephone());
// distributionReservationEntity.setDeliveryWay(deliveryListDTO.getReservation().getDeliveryWay());
// distributionReservationEntity.setReservationStatus(ReservationStatusConstant.daipeisong.getValue());
// distributionReservationEntity.setStockupStatus(ReservationStockupStatusConstant.daibeihuo.getValue());
// distributionReservationEntity.setReservationCode(Func.random(13, RandomType.INT));
// distributionReservationEntity.setDeliveryType(DistributionTypeConstant.shangpei.getValue());
// //默认配送时间为全天
// distributionReservationEntity.setPeriodOfTime(ServiceConstant.RESERVATION_PERIOED_TIME_DAY);
// distributionReservationEntity.setCreateUser(user.getUserId());
// distributionReservationEntity.setCreateDept(Long.parseLong(user.getDeptId()));
// distributionReservationEntity.setIsDeleted(0);
// distributionReservationEntity.setStatus(1);
// distributionReservationEntity.setTenantId(user.getTenantId());
// distributionReservationEntity.setCreateTime(new Date());
// distributionReservationEntity.setUpdateUser(user.getUserId());
// distributionReservationEntity.setUpdateTime(new Date());
// distributionReservationMapper.insert(distributionReservationEntity);
// HashSet<String> orderCode = new HashSet<>();
// HashSet<String> serviceNumber = new HashSet<>();
// HashSet<String> mallName = new HashSet<>();
// AtomicInteger packageTotal = new AtomicInteger();
//
// v.forEach(s -> {
// orderNum.getAndIncrement();
// mallName.add(s.getMallName());
// DistributionStockArticleDTO stockArticleDTO = Func.copy(s, DistributionStockArticleDTO.class);
// List<DistributionParcelListEntity> packageListInfo = stockArticleDTO.getPackageListInfo();
// AtomicInteger packageNum = new AtomicInteger();
// //维护包件信息
// packageListInfo.forEach(p -> {
// DistributionReservationPackageEntity packageEntity = new DistributionReservationPackageEntity();
// packageEntity.setStockArticleId(s.getId());
// packageEntity.setReservationId(distributionReservationEntity.getId());
// packageEntity.setPacketBarCode(p.getOrderPackageCode());
// packageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
// packageEntity.setParceListId(p.getId());
// p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// distributionParcelListService.updateById(p);
// distributionReservationPackageService.save(packageEntity);
// //包件统计
// packageNum.getAndAdd(p.getQuantity());
// });
// //修改订单信息
// s.setReservationStatus(distributionReservationPackageService.judgmentStatus(s));
// DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
// reservationStockarticleEntity.setReservationNum(packageNum.get());
// reservationStockarticleEntity.setReservationId(distributionReservationEntity.getId());
// reservationStockarticleEntity.setStockArticleId(s.getId());
// reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zengjia.getValue());
// distributionReservationStockarticleService.save(reservationStockarticleEntity);
// distributionStockArticleService.updateById(s);
// orderCode.add(s.getOrderCode());
// packageTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// serviceNumber.add(s.getServiceNumber());
// });
// distributionReservationEntity.setStockArticleId(String.join(",", orderCode));
// distributionReservationEntity.setReservationNum(packageTotal.get());
// distributionReservationEntity.setStockupStatus(ReservationStockupStatusConstant.daibeihuo.getValue());
// distributionReservationEntity.setReservationStatus(ReservationStatusConstant.daipeisong.getValue());
// distributionReservationEntity.setServiceNumber(String.join(",", serviceNumber));
// distributionReservationEntity.setMallName(String.join(",",mallName));
// distributionReservationMapper.updateById(distributionReservationEntity);
// //建立这个预约和配送任务之间的关系
// DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity();
// distributionSignforEntity.setDeliveryId(deliveryListEntityId);
// distributionSignforEntity.setTrainNumber(deliveryListEntity.getTrainNumber());
// distributionSignforEntity.setReservationId(distributionReservationEntity.getId());
// distributionSignforService.save(distributionSignforEntity);
// //这里查看这个配送任务的备货任务是否已完成,如果已完成则需要开新的备货任务,否则将这个新的预约和原来的备货任务建立绑定关系
// DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity();
// stockupInfoEntity.setReservationId(distributionReservationEntity.getId());
// stockupInfoEntity.setStockupId(deliveryStockupInfo.getId());
// distributionStockupInfoService.save(stockupInfoEntity);
// } else {
// DistributionReservationEntity reservationEntity = baseMapper.selectReservationByDeliveryListIdAndCustomer(deliveryListEntityId, k);
// String stockArticleId = reservationEntity.getStockArticleId();
// String[] split = stockArticleId.split(",");
// List<String> list = Arrays.asList(split);
// HashSet<String> orderNumber = new HashSet<>();
// orderNumber.addAll(list);
// AtomicInteger packageTotal = new AtomicInteger();
// AtomicInteger reduceOrder = new AtomicInteger();
//// List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = distributionReservationMapper.selectStockArticleByReservationId(reservationEntity.getId());
// List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = distributionDeliveryListMapper.selectStockArticleById(deliveryListEntityId,k);
// Map<Long, List<DistributionReservationStockarticleEntity>> oldStockArticle = reservationStockarticleEntityList.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId));
// v.forEach(s -> {
// orderNum.getAndIncrement();
// //根据配送和客户名称查询预约
// AtomicInteger packageNum = new AtomicInteger();
// AtomicInteger reduceNum = new AtomicInteger();
// if (Func.isEmpty(oldStockArticle.get(s.getId()))) {
// //订单新增
// //维护包件
// List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
// packageListInfo.forEach(p -> {
// DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
// reservationPackageEntity.setReservationId(reservationEntity.getId());
// reservationPackageEntity.setStockArticleId(s.getId());
// reservationPackageEntity.setPacketBarCode(p.getOrderPackageCode());
// reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
// reservationPackageEntity.setParceListId(p.getId());
// distributionReservationPackageService.save(reservationPackageEntity);
// //统计包件数量
// packageNum.getAndAdd(p.getQuantity());
// p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// distributionParcelListService.updateById(p);
// });
// //查询该订单有效的预约包件数量是否和订单总件数一样,一样订单状态为已预约,否则为部分预约
//// int number = distributionReservationPackageMapper.selectPackageNum(s.getId());
//// if (Func.equals(number, s.getTotalNumber())) {
//// s.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
//// } else {
//// s.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
//// }
// DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
// reservationStockarticleEntity.setReservationId(reservationEntity.getId());
//// reservationStockarticleEntity.setStockArticleStatus(distributionReservationPackageService.judgmentStatus());
// reservationStockarticleEntity.setStockArticleId(s.getId());
// reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zengjia.getValue());
// reservationStockarticleEntity.setReservationNum(packageNum.get());
// distributionReservationStockarticleService.save(reservationStockarticleEntity);
// packageTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// //拼接订单自编号
// orderNumber.add(s.getOrderCode());
// } else {
// //这里就表示这个订单和这个预约已经存在绑定关系,查看订单是否有修改包件的动作
// List<DistributionReservationPackageEntity> reservationPackageEntityList = distributionReservationMapper.selectPackageByReservationAndStockArticle(reservationEntity.getId(), s.getId());
// Map<Long, List<DistributionReservationPackageEntity>> oldPackage = reservationPackageEntityList.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getParceListId));
// List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
// Map<Long, List<DistributionParcelListEntity>> newPackage = packageListInfo.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getId));
// newPackage.forEach((m, n) -> {
// if (Func.isEmpty(oldPackage.get(m))) {
// //新增包件
// DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
// reservationPackageEntity.setParceListId(n.get(0).getId());
// reservationPackageEntity.setPacketBarCode(n.get(0).getOrderPackageCode());
// reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
// reservationPackageEntity.setReservationId(reservationEntity.getId());
// reservationPackageEntity.setStockArticleId(s.getId());
// distributionReservationPackageService.save(reservationPackageEntity);
// DistributionParcelListEntity parcelListEntity = n.get(0);
// parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// distributionParcelListService.updateById(parcelListEntity);
// packageNum.getAndAdd(parcelListEntity.getQuantity());
// } else {
// //列表存在这个订单,将它进行移除
// oldPackage.remove(m);
// }
// });
// oldPackage.forEach((i, j) -> {
// DistributionReservationPackageEntity distributionReservationPackageEntity = j.get(0);
// distributionReservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
// distributionReservationPackageService.updateById(distributionReservationPackageEntity);
// DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionReservationPackageEntity.getParceListId());
// parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
// distributionParcelListService.updateById(parcelListEntity);
// //统计减少包件数量
// reduceNum.getAndAdd(parcelListEntity.getQuantity());
// //移除订单信息前端不会将取消的包件信息传递至后端,这里需要找出该订单下被选择的包件信息进行全部取消的操作
//
// //这些数据就是取消的包件
// });
// //这里修改结束需要对包件信息进行维护
// //订单的预约状态判断改变
// s.setReservationStatus(distributionReservationPackageService.judgmentStatus(s));
// distributionStockArticleService.updateById(s);
// List<DistributionReservationStockarticleEntity> reservationStockarticleEntities = oldStockArticle.get(s.getId());
// DistributionReservationStockarticleEntity reservationStockarticleEntity = reservationStockarticleEntities.get(0);
// reservationStockarticleEntity.setReservationNum(reservationStockarticleEntity.getReservationNum() + packageNum.get() - reduceNum.get());
// distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
// packageTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// oldStockArticle.remove(s.getId());
// }
// });
// //需要进行移除的订单
// oldStockArticle.forEach((a, b) -> {
// DistributionReservationStockarticleEntity reservationStockarticleEntity = b.get(0);
// DistributionStockArticleEntity articleEntity = distributionStockArticleService.getById(reservationStockarticleEntity.getStockArticleId());
// DistributionStockArticleDTO articleDTO = Func.copy(articleEntity, DistributionStockArticleDTO.class);
// reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
// distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
// //这里需要对订单的预约状态进行判断后修改
// articleEntity.setReservationStatus(distributionReservationPackageService.judgmentStatus(articleDTO));
// distributionStockArticleService.updateById(articleEntity);
// //订单自编号取消
// orderNumber.remove(articleEntity.getOrderCode());
// reduceOrder.getAndAdd(reservationStockarticleEntity.getReservationNum());
// // 这里移除订单还需要对这个订单下存在的包件进行批量取消
// List<DistributionReservationPackageEntity> reservationPackageEntityList = distributionReservationPackageService.getBaseMapper().selectList(
// Wrappers.<DistributionReservationPackageEntity>query().lambda()
// .eq(DistributionReservationPackageEntity::getReservationId, b.get(0).getReservationId())
// .eq(DistributionReservationPackageEntity::getStockArticleId, b.get(0).getStockArticleId()));
// reservationPackageEntityList.forEach(rs -> {
// rs.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
// distributionReservationPackageService.updateById(rs);
// });
// });
// // 对预约任务进行修改信息完善
// //对预约进行修改
// DistributionReservationDTO reservation = deliveryListDTO.getReservation();
// reservationEntity.setReservationNum(packageTotal.get());
// reservationEntity.setStockArticleId(String.join(",", orderNumber));
// reservationEntity.setServeType(reservation.getServeType());
// reservationEntity.setDeliveryWay(reservation.getDeliveryWay());
// reservationEntity.setDeliveryType(DistributionTypeConstant.shangpei.getValue());
// reservationEntity.setOtherFee(reservation.getOtherFee());
// originalClient.remove(k);
// distributionReservationMapper.updateById(reservationEntity);
// }
// });
// //TODO 对取消的预约进行标识
// originalClient.forEach((f, g) -> {
// DistributionReservationEntity reservationEntity = baseMapper.selectReservationByDeliveryListIdAndCustomer(deliveryListEntity.getId(), f);
// reservationEntity.setReservationStatus(ReservationStatusConstant.yiquexiao.getValue());
// distributionReservationMapper.updateById(reservationEntity);
// //这里还需要将减少的预约单下的所有订单、包件进行取消状态
// List<DistributionReservationStockarticleEntity> entities = distributionReservationStockarticleMapper.selectList(Wrappers.<DistributionReservationStockarticleEntity>query().lambda()
// .ne(DistributionReservationStockarticleEntity::getStockArticleStatus, "2")
// .eq(DistributionReservationStockarticleEntity::getReservationId, reservationEntity.getId()));
// entities.forEach(e->{
// e.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
// distributionReservationStockarticleService.updateById(e);
// //这个订单的包件预约进行取消
// List<DistributionReservationPackageEntity> packageEntityList = distributionReservationPackageMapper.selectList(Wrappers.<DistributionReservationPackageEntity>query().lambda().eq(DistributionReservationPackageEntity::getStockArticleId, e.getStockArticleId()).ne(DistributionReservationPackageEntity::getPacketBarStatus, "2"));
// packageEntityList.forEach(p->{
// p.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
// distributionReservationPackageService.updateById(p);
// DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParceListId());
// parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
// distributionParcelListService.updateById(parcelListEntity);
// });
// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(e.getStockArticleId());
// stockArticleEntity.setReservationStatus(distributionReservationPackageService.judgmentStatus(Func.copy(stockArticleEntity,DistributionStockArticleDTO.class)));
// distributionStockArticleService.updateById(stockArticleEntity);
// //修改预约状态和包件状态
// });
// List<DistributionReservationEntity> reservationEntities = originalClient.get(f);
// reservationEntities.forEach(r->{
// distributionSignforMapper.deleteByReservationAndDeliveryId(r.getId(),deliveryListEntityId);
// });
// });
// 执行发送推送
distributionReservationService.createBusinessPreConversionQueue(deliveryListEntity.getId());
return R.status(true);
}

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

@ -16,7 +16,6 @@
*/
package com.logpm.distribution.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -34,20 +33,18 @@ import com.logpm.distribution.mapper.*;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.wrapper.*;
import com.logpm.oldproject.entity.WayBillEntity;
import com.logpm.oldproject.feign.IWayBillClient;
import com.logpm.warehouse.entity.WarehouseGoodsAllocationEntity;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.ibatis.javassist.runtime.Inner;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.*;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
@ -61,6 +58,7 @@ import org.springblade.common.constant.stockup.StockupStatusConstant;
import org.springblade.common.constant.stockup.StockupTypeConstant;
import org.springblade.common.serviceConstant.ServiceConstant;
import org.springblade.common.utils.AddressUtil;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
@ -72,6 +70,7 @@ import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.cache.DictBizCache;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@ -223,6 +222,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private DistributionStockMapper distributionStockMapper;
@Autowired
private RabbitTemplate rabbitTemplate;
@ -2536,151 +2538,31 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionDeliveryListEntity.setWarehouseId(myCurrentWarehouse.getId());
distributionDeliveryListService.updateById(distributionDeliveryListEntity);
//推送信息至运单追中日志
// 创建处理商场信息队列
createBusinessPreConversionQueue(distributionDeliveryListEntity.getId());
return R.status(true);
}
// //根据门店进行分组
// Map<String, List<DistributionStockArticleDTO>> storeClient = stockArticle.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getStoreName));
// List<DistributionStockArticleDTO> distributionStockArticleDTOS = storeClient.get("");
// Map<String, List<DistributionStockArticleDTO>> mallClient = null;
// if (!Func.isEmpty(distributionStockArticleDTOS)) {
// mallClient = distributionStockArticleDTOS.stream().collect(Collectors.groupingBy(DistributionStockArticleDTO::getMallName));
// //3、维护订单和客户
// Map<String, List<DistributionStockArticleDTO>> finalMallClient = mallClient;
// storeClient.forEach((k, v) -> finalMallClient.merge(k, v, (v1, v2) -> v2));
// } else {
// mallClient = storeClient;
// }
//
// //统计客户数.
// AtomicInteger clientNum = new AtomicInteger();
//// ////统计包件总数
//// AtomicInteger packageTotal = new AtomicInteger();
// ////统计包件总数
// AtomicInteger orderTotal = new AtomicInteger();
// //订单拼接
//// StringBuilder orderSelfNumbering = new StringBuilder();
// HashSet<String> orderNumber = new HashSet<>();
// HashSet<String> orderIds = new HashSet<>();
// HashSet<String> serviceNumber = new HashSet<>();
// HashSet<String> warehouseName = new HashSet<>();
// HashSet<String> deliveryWarehouseName = new HashSet<>();
// HashSet<String> mallName = new HashSet<>();
// HashSet<String> storeName = new HashSet<>();
// mallClient.forEach((k, v) -> {
// if (!Func.isBlank(k)) {
// ////统计客户数
// //预约任务是在客户的维度上进行数据维护
// //TODO 这里需要将运单上的收货人、联系电话、收获地址进行查询后进行数据冗余
// DistributionReservationDTO reservation = allocationDTO.getReservation();
// DistributionReservationEntity reservationEntity = Func.copy(reservation, DistributionReservationEntity.class);
// Date date = new Date();
// reservationEntity.setReservationDate(date);
// reservationEntity.setConsignee(k);
// reservationEntity.setDeliveryAddress(v.get(0).getCustomerAddress());
// reservationEntity.setDeliveryPhone(v.get(0).getCustomerTelephone());
// reservationEntity.setDeliveryType(DistributionTypeConstant.shangpei.getValue());
// reservationEntity.setReservationStatus(ReservationStatusConstant.daipeisong.getValue());
// reservationEntity.setStockupStatus(ReservationStockupStatusConstant.daibeihuo.getValue());
// reservationEntity.setReservationCode(Func.random(13, RandomType.INT));
// //默认配送时间为全天
// reservationEntity.setPeriodOfTime(ServiceConstant.RESERVATION_PERIOED_TIME_DAY);
// this.save(reservationEntity);
// clientNum.getAndIncrement();
// //维护预约和备货的关系
// DistributionStockupInfoEntity stockupInfoEntity = new DistributionStockupInfoEntity();
// stockupInfoEntity.setStockUpType(StockupTypeConstant.shangpei.getValue());
// stockupInfoEntity.setReservationId(reservationEntity.getId());
// stockupInfoEntity.setStockupId(stockupEntity.getId());
// distributionStockupInfoService.save(stockupInfoEntity);
// // TODO 计算总费用
//// AtomicReference<BigDecimal> initTotal = new AtomicReference<>(BigDecimal.ZERO);
// //统计包件数量
// AtomicInteger packageTotal = new AtomicInteger();
// v.forEach(a -> {
// orderTotal.getAndIncrement();
// DistributionStockArticleDTO stockArticleEntity = Func.copy(a, DistributionStockArticleDTO.class);
//// if (stockArticleEntity.getMallId() == -1) {
//// stockArticleEntity.setMallId(null);
//// }
//// if (stockArticleEntity.getStoreId() == -1) {
//// stockArticleEntity.setStoreId(null);
//// }
// warehouseName.add(stockArticleEntity.getWarehouse());
// mallName.add(stockArticleEntity.getMallName());
// storeName.add(stockArticleEntity.getStoreName());
// //维护订单数据,订单状态直接变更未待配送
//// stockArticleEntity.setOrderStatus();
//// distributionStockArticleService.updateById(stockArticleEntity);
// orderNumber.add(stockArticleEntity.getOrderCode());
// serviceNumber.add(stockArticleEntity.getServiceNumber());
//// orderSelfNumbering.append().append(",");
// //订单数量累加
// AtomicInteger packageNum = new AtomicInteger();
// //订单存在数据源,维护订单包件信息
// //维护预约和订单关系
// DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
// List<DistributionParcelListEntity> packageList = a.getPackageListInfo();
// if (Func.isNotEmpty(packageList) || packageList.size() > 0) {
// packageList.forEach(p -> {
// packageNum.getAndAdd(p.getQuantity());
// DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
// reservationPackageEntity.setReservationId(reservationEntity.getId());
// reservationPackageEntity.setPacketBarCode(p.getOrderPackageCode());
// reservationPackageEntity.setStockArticleId(stockArticleEntity.getId());
// reservationPackageEntity.setParceListId(p.getId());
// distributionReservationPackageService.save(reservationPackageEntity);
// p.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// distributionParcelListService.updateById(p);
// });
// } else {
// log.error("packageList包件参数有误+{" + packageList + "}");
// }
// String status = distributionReservationPackageService.judgmentStatus(stockArticleEntity);
// stockArticleEntity.setReservationStatus(status);
// distributionStockArticleService.updateById(stockArticleEntity);
// //查询出这个预约单下订单所备选取的包件数量
//// List<DistributionParcelListEntity> parcelListEntityList = distributionReservationStocklistMapper.selectReservationPackageNum(reservationEntity.getId(), stockArticleEntity.getId());
//// if (packageList.size() != parcelListEntityList.size()) {
//// stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
//// } else {
//// stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
//// }
// reservationStockarticleEntity.setReservationNum(packageNum.get());
// reservationStockarticleEntity.setIsHaveData(ServiceConstant.ORDER_HAVE_DATA);
// //对订单下的包件进行累加
// reservationStockarticleEntity.setStockArticleId(stockArticleEntity.getId());
// reservationStockarticleEntity.setReservationId(reservationEntity.getId());
// distributionReservationStockarticleService.save(reservationStockarticleEntity);
// packageTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// });
// //这里将预约信息进行完善
// reservationEntity.setStockArticleId(String.join(",", orderNumber));
// reservationEntity.setServiceNumber(String.join(",", serviceNumber));
// reservationEntity.setWarehouseName(String.join(",", warehouseName));
// reservationEntity.setMallName(String.join(",", mallName));
// reservationEntity.setStoreName(String.join(",", storeName));
// //预约添加订单数量
// reservationEntity.setReservationNum(packageTotal.get());
// this.updateById(reservationEntity);
// DistributionSignforEntity distributionSignforEntity = new DistributionSignforEntity();
// distributionSignforEntity.setReservationId(reservationEntity.getId());
// distributionSignforEntity.setTrainNumber(str);
// distributionSignforEntity.setDeliveryId(distributionDeliveryListEntity.getId());
// distributionSignforService.save(distributionSignforEntity);
// deliveryWarehouseName.add(reservationEntity.getWarehouseName());
// }
// });
@Override
public void createBusinessPreConversionQueue(Long id) {
Map mapState = new HashMap();
mapState.put("messageId", CommonUtil.getUUID());
mapState.put("messageData", id);
mapState.put("createTime", System.currentTimeMillis());
try {
rabbitTemplate.convertAndSend(RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_EXCHANGE, RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_ROUTING, mapState, message -> {
message.getMessageProperties()
.setHeader("x-delay", 5000);
return message;
});
} catch (Exception customerException) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>> 消息推送失败~ 请联系管理员! ", customerException);
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date parse = null;
// try {
// parse = format.parse(taskTime);
// } catch (ParseException e) {
// e.printStackTrace();
// }
// distributionDeliveryListEntity.setTaskTime(taskTime);
//完善配送信息
}
}
@Override
@ -3962,4 +3844,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
}
@Override
public List<DistributionReservationEntity> selectListByDeliveryId(Long id) {
return baseMapper.selectListByDeliveryId(id);
}
}

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

@ -1343,27 +1343,27 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
@Override
public DistributionBillLadingExcelDTO exportDistributionBillLadingDetail(Long id) {
String method = "################# 导出配送单明细 #################exportDistributionBillLadingDetail";
if (Objects.isNull(id)){
log.error(method+"ids参数缺失:{}",id);
if (Objects.isNull(id)) {
log.error(method + "ids参数缺失:{}", id);
}
DistributionBillLadingExcelDTO distributionBillLadingExcelDTO = new DistributionBillLadingExcelDTO();
List<DistributionBillOrderExcel> distributionBillOrderExcels = distrilbutionBillStockService.distrilbutionBillDeatilStock(id);
if (!distributionBillOrderExcels.isEmpty()) {
distributionBillLadingExcelDTO.setBillOrderExcelList(distributionBillOrderExcels);
}
List<DistributionBillOrderPackExcel> distributionBillOrderPackExcels = distrilbutionBillStockService.billLadingDetailOrderPackExcel(id);
if (!distributionBillOrderPackExcels.isEmpty()) {
distributionBillLadingExcelDTO.setBillOrderPackExcelList(distributionBillOrderPackExcels);
}
List<DistributionBillInventoryExcel> billInventoryExcelList = distributionDeliveryDetailsService.getBillLadingDetailOrderInventoryExcel(id);
if (billInventoryExcelList.isEmpty()) {
distributionBillLadingExcelDTO.setBillInventoryExcelList(billInventoryExcelList);
}
DistributionBillLadingExcelDTO distributionBillLadingExcelDTO = new DistributionBillLadingExcelDTO();
List<DistributionBillOrderExcel> distributionBillOrderExcels = distrilbutionBillStockService.distrilbutionBillDeatilStock(id);
if (!distributionBillOrderExcels.isEmpty()) {
distributionBillLadingExcelDTO.setBillOrderExcelList(distributionBillOrderExcels);
}
List<DistributionBillOrderPackExcel> distributionBillOrderPackExcels = distrilbutionBillStockService.billLadingDetailOrderPackExcel(id);
if (!distributionBillOrderPackExcels.isEmpty()) {
distributionBillLadingExcelDTO.setBillOrderPackExcelList(distributionBillOrderPackExcels);
}
List<DistributionBillInventoryExcel> billInventoryExcelList = distributionDeliveryDetailsService.getBillLadingDetailOrderInventoryExcel(id);
if (billInventoryExcelList.isEmpty()) {
distributionBillLadingExcelDTO.setBillInventoryExcelList(billInventoryExcelList);
}
return distributionBillLadingExcelDTO;
}
@Override
public R getBillLadingPackageIds(Long id,Long orderId) {
public R getBillLadingPackageIds(Long id, Long orderId) {
List<DistrilbutionBillPackageEntity> list = distrilbutionBillPackageService.list(Wrappers.<DistrilbutionBillPackageEntity>query().lambda()
.eq(DistrilbutionBillPackageEntity::getBillLadingId, id)
.eq(DistrilbutionBillPackageEntity::getStockArticleId, orderId)
@ -2204,7 +2204,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distrilbutionBillPackageService.update(Wrappers.<DistrilbutionBillPackageEntity>update()
.eq("bill_lading_id", id)
.eq("stock_article_id", i.getStockArticleId())
.apply("packet_bar_status in ( 1 , 3 )")
.apply("packet_bar_status in ( '1' , '3' )")
.set("packet_bar_status", 2)
);
//还原预约包件信息
@ -2342,7 +2342,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
.map(DistrilbutionBillLadingVO::getId) // 假设getId()方法返回提货单ID
.collect(Collectors.toList());
if (billIds.isEmpty()) {
return distrilbutionBillLadingVOIPage;
return distrilbutionBillLadingVOIPage;
}
List<DistributionDeliveryChargeEntity> distributionDeliveryChargeEntityList = distributionDeliveryChargeService.list(Wrappers.<DistributionDeliveryChargeEntity>query().lambda()
.in(DistributionDeliveryChargeEntity::getBillLading, billIds)
@ -2353,8 +2353,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionDeliveryChargeEntityList.stream()
.collect(Collectors.groupingBy(DistributionDeliveryChargeEntity::getBillLading));
} else {
groupedEntities = null;
}
groupedEntities = null;
}
List<DistributionPrintEntity> DistributionPrintEntitys = distributionPrintService.list(Wrappers.<DistributionPrintEntity>query().lambda()
.in(DistributionPrintEntity::getBillLadingId, billIds)
@ -2370,15 +2370,15 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
records.forEach(i -> {
if(groupedEntities!=null){
List<DistributionDeliveryChargeEntity> list =groupedEntities.get(i.getId());
records.forEach(i -> {
if (groupedEntities != null) {
List<DistributionDeliveryChargeEntity> list = groupedEntities.get(i.getId());
list.forEach(ii -> ii.setCostName(DictBizCache.getValue(DictBizConstant.DELIVERY_COST, ii.getCost())));
i.setList(list);
}
if(groupDistributionPrintEntityEntities!=null){
if (groupDistributionPrintEntityEntities != null) {
List<DistributionPrintEntity> list1 = groupDistributionPrintEntityEntities.get(i.getId());
if(list1!=null){
if (list1 != null) {
int count = (int) list1.stream().filter(ii -> "1".equals(ii.getGenre().toString())).count();
int count1 = (int) list1.stream().filter(ii -> "2".equals(ii.getGenre().toString())).count();
int count2 = (int) list1.stream().filter(ii -> "3".equals(ii.getGenre().toString())).count();
@ -2389,7 +2389,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
}
}
}else{
} else {
i.setPrintState(false);
}
@ -2482,7 +2482,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
Integer planNum = 0; //预约数量
Integer signedNum = 0; //签收数量
Integer inventoryNub = 0; //库存品
if (StringUtils.isNotBlank(stockArticleId)){
if (StringUtils.isNotBlank(stockArticleId)) {
String[] split = stockArticleId.split(",");
for (String s : split) {
if (StringUtil.isBlank(s)) {
@ -2579,25 +2579,33 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//有可能存在多个订单所以需要拆分
String stockArticleId = main.getStockArticleId();
// Integer orderNum = 0;
// Integer planNum = 0;
// Integer conpleteNum = 0;
// Integer signedNum = 0;
// //查询零担数据
// List<DistributionReservationZeroPackageEntity> listZero = distributionZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
// .eq(DistributionReservationZeroPackageEntity::getReservationId, main.getBillLadingId())
// .eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0)
// .in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3")
// );
// if (!listZero.isEmpty()) {
// int sum = listZero.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum();
// planNum += sum;
// }
String[] split = stockArticleId.split(",");
List<DistrilbutionAppBillLadingOrderVO> l = new ArrayList<>();
List<Long> ids = new ArrayList<>();
for (String s : split) {
ids.add(Long.parseLong(s));
}
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("stock_article_id", ids)
.eq("is_deleted", 0)
.isNotNull("order_package_code");
if (!StringUtil.isBlank(orderSelfNumbering)) {
queryWrapper.ne("order_self_numbering", orderSelfNumbering);
}
List<DistributionParcelListEntity> list2 = distributionParcelListService.list(queryWrapper);
QueryWrapper<DistributionBillLadingScanEntity> qw = new QueryWrapper<>();
qw.in("stock_article_id", ids)
.eq("is_deleted", 0);
qw.eq("bill_lading_id", main.getBillLadingId());
List<DistributionBillLadingScanEntity> list3 = distributionBillLadingScanService.list(qw);
for (String s : split) {
if (StringUtil.isBlank(s)) {
continue;
@ -2607,14 +2615,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// orderNum++;
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("stock_article_id", Long.parseLong(s))
.eq("is_deleted", 0)
.isNotNull("order_package_code");
if (!StringUtil.isBlank(orderSelfNumbering)) {
queryWrapper.ne("order_self_numbering", orderSelfNumbering);
}
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper);
List<DistributionParcelListEntity> list = list2.stream().filter(f -> f.getStockArticleId().equals(Long.parseLong(s))).collect(Collectors.toList());
int pn = 0;
if (!list.isEmpty() && ObjectUtils.isNotNull(list.get(0))) {
vo.setOrderSelfNumbering(list.get(0).getOrderCode());
@ -2623,11 +2624,8 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
// planNum = planNum + pn;
}
//通过订单id查询扫描表中有多少数据
QueryWrapper<DistributionBillLadingScanEntity> qw = new QueryWrapper<>();
qw.eq("stock_article_id", Long.parseLong(s))
.eq("is_deleted", 0);
qw.eq("bill_lading_id", main.getBillLadingId());
List<DistributionBillLadingScanEntity> ls = distributionBillLadingScanService.list(qw);
List<DistributionBillLadingScanEntity> ls = list3.stream().filter(f -> f.getStockArticleId().equals(Long.parseLong(s))).collect(Collectors.toList());
int sn = ls.stream().mapToInt(DistributionBillLadingScanEntity::getQuantity).sum();
vo.setSignedNum(sn);
// signedNum = signedNum + sn;
@ -2915,7 +2913,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//查询提货信息
List<DistrilbutionBillStockEntity> list = distrilbutionBillStockService.list(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, distrilbutionBillLadingEntity.getId())
.eq(DistrilbutionBillStockEntity::getOrderStatus, "1")
.in(DistrilbutionBillStockEntity::getOrderStatus, "1","3")
.or(eq -> eq.eq(DistrilbutionBillStockEntity::getBillLadingId, distrilbutionBillLadingEntity.getId()).eq(DistrilbutionBillStockEntity::getOrderStatus, "3"))
);
list.forEach(i -> {
@ -3185,7 +3183,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
DistrilbutionBillStockEntity one2 = distrilbutionBillStockService.getOne(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, billLadingId)
.apply("order_status in (1 , 3)")
.apply("order_status in ('1' , '3')")
.eq(DistrilbutionBillStockEntity::getStockArticleId, list4.get(0).getStockArticleId())
);
@ -3210,49 +3208,94 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return Resp.scanFail("当前提货任务,订单不存在!", "当前提货任务,订单不存在!");
} else {
AtomicBoolean n = new AtomicBoolean(false);
// 获取订单的ID
List<Long> ls = list.stream() // 转换为Stream
.map(DistrilbutionBillStockEntity::getStockArticleId) // 提取每个元素的orderId
.collect(Collectors.toList()); // 收集到新的List<String>
List<DistributionStockArticleEntity> distributionStockArticleEntityList = distributionStockArticleService.list(Wrappers.<DistributionStockArticleEntity>query().lambda()
.in(DistributionStockArticleEntity::getId, ls));
List<DistributionParcelListEntity> list1 = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
.in(DistributionParcelListEntity::getStockArticleId, ls)
);
List<DistributionBillLadingScanEntity> distributionBillLadingScanEntities = distributionBillLadingScanService.list(Wrappers.<DistributionBillLadingScanEntity>query().lambda()
.in(DistributionBillLadingScanEntity::getStockArticleId, ls)
.eq(DistributionBillLadingScanEntity::getMaterialType, "2")
.eq(DistributionBillLadingScanEntity::getBillLadingId, billLadingId)
);
list.forEach(so -> {
//查询包件信息
List<DistributionParcelListEntity> list1 = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getStockArticleId, so.getStockArticleId())
.eq(DistributionParcelListEntity::getOrderPackageCode, coding)
);
if (!list1.isEmpty()) {
DistributionParcelListEntity distributionParcelListEntity = null;
for (DistributionParcelListEntity parcelListEntity : list1) {
if (parcelListEntity.getStockArticleId().equals(so.getStockArticleId()) && parcelListEntity.getOrderPackageCode().equals(coding)) {
distributionParcelListEntity = parcelListEntity;
}
}
if (distributionParcelListEntity != null) {
n.set(true);
//查询订单包件数量签收的信息
DistributionStockArticleEntity one = distributionStockArticleService.getOne(Wrappers.<DistributionStockArticleEntity>query().lambda()
.eq(DistributionStockArticleEntity::getId, so.getStockArticleId())
);
List<DistributionBillLadingScanEntity> list2 = distributionBillLadingScanService.list(Wrappers.<DistributionBillLadingScanEntity>query().lambda()
.eq(DistributionBillLadingScanEntity::getStockArticleId, so.getStockArticleId())
.eq(DistributionBillLadingScanEntity::getMaterialType, "2")
.eq(DistributionBillLadingScanEntity::getBillLadingId, billLadingId)
);
DistributionStockArticleEntity one = distributionStockArticleEntityList.stream().filter(s -> s.getId().equals(so.getStockArticleId())).findFirst().orElse(null);
List<DistributionBillLadingScanEntity> list2 = new ArrayList<>();
for (DistributionBillLadingScanEntity distributionBillLadingScanEntity : distributionBillLadingScanEntities) {
if (distributionBillLadingScanEntity.getStockArticleId().equals(so.getStockArticleId())) {
list2.add(distributionBillLadingScanEntity);
}
}
one.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
//判断当前签收数 修改订单和备货订单状态
if (one.getTotalNumber().equals(list2.size() + 1)) {
//
DistrilbutionBillStockEntity one1 = null;
DistrilbutionBillStockEntity one1 = distrilbutionBillStockService.getOne(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, billLadingId)
.eq(DistrilbutionBillStockEntity::getStockArticleId, one.getId())
.eq(DistrilbutionBillStockEntity::getConditions, BillLadingStatusConstant.daitihuo.getValue())
);
for (DistrilbutionBillStockEntity distrilbutionBillStockEntity : list) {
if (distrilbutionBillStockEntity.getStockArticleId().equals(so.getStockArticleId()) && distrilbutionBillStockEntity.getConditions().equals(BillLadingStatusConstant.daitihuo.getValue())) {
one1 = distrilbutionBillStockEntity;
}
}
if (one1 != null) {
distributionAsyncService.updateBillStock(one1.getId());
}
one.setOrderStatus(OrderStatusConstant.qianshou.getValue());
//修改订单状态
distributionAsyncService.getOrderSelfPickup(list1.get(0).getId());
// distributionAsyncService.updateOrderSelfPickup(one.getId());
//修改备货订单状态
distributionAsyncService.getBillStock(one1.getId());
}
//修改在库数量
if (ObjectUtils.isNotNull(one.getHandQuantity()) && one.getHandQuantity() > 0) {
int i = one.getHandQuantity() - 1;
int i2 = ObjectUtils.isNull(one.getSigninQuantity()) ? 1 : one.getSigninQuantity() + 1;
distributionStockArticleService.update(Wrappers.<DistributionStockArticleEntity>update()
.eq("id", one.getId())
.set("hand_quantity", i)
.set("signin_quantity", i2)
);
// distributionStockArticleService.update(Wrappers.<DistributionStockArticleEntity>update()
// .eq("id", one.getId())
// .set("hand_quantity", i)
// .set("signin_quantity", i2)
// );
one.setHandQuantity(i);
one.setSigninQuantity(i2);
}
// 修改订单状态
distributionStockArticleService.updateById(one);
//修改包件状态
distributionAsyncService.getSelfPickup(list1.get(0).getId());
distributionBillLadingScan.setParcelListId(list1.get(0).getId());
distributionAsyncService.getSelfPickup(distributionParcelListEntity.getId());
distributionBillLadingScan.setParcelListId(distributionParcelListEntity.getId());
distributionBillLadingScan.setPacketBarCode(String.valueOf(coding));
//订单
distributionBillLadingScan.setStockArticleId(one.getId());
@ -3392,7 +3435,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//修改订单状态
List<DistrilbutionBillStockEntity> list = distrilbutionBillStockService.list(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
.eq(DistrilbutionBillStockEntity::getBillLadingId, s)
.apply("order_status in ( 1 , 2)")
.apply("order_status in ( '1' , '3')")
// .or(ew -> ew.eq(DistrilbutionBillStockEntity::getBillLadingId, s).apply(DistrilbutionBillStockEntity::getOrderStatus, "2"))
);
if (!list.isEmpty()) {

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

@ -0,0 +1,272 @@
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.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 lombok.AllArgsConstructor;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.common.exception.CustomerException;
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.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
@AllArgsConstructor
public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<DistributionBusinessPreOrderMapper, DistributionBusinessPreOrderEntity> implements IDistributionBusinessPreOrderService {
private final IDistributionStockArticleService distributionStockArticleService;
private final IBasicdataWarehouseClient basicdataWarehouseClient;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionAsyncService distributionAsyncService;
@Override
public Boolean inOrder(String ids) throws ServiceException {
// 查询出来需要处理的包条码
List<String> idArray = Arrays.asList(ids.split(","));
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", idArray);
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
throw new ServiceException("存在已入库的包件");
}
//调用方法 执行批量入库
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(distributionBusinessPreOrderEntity);
if (stockArticleEntity == null) {
throw new ServiceException("订单信息错误,请联系管理员!");
}
// 保存包件
distributionBusinessPreOrderEntity.setWarehouseId(stockArticleEntity.getWarehouseId());
distributionBusinessPreOrderEntity.setWarehouse(stockArticleEntity.getWarehouse());
distributionBusinessPreOrderEntity.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(distributionBusinessPreOrderEntity);
// 调用入库方法
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
}
return true;
}
@Override
public IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page) {
DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
return baseMapper.pageList(page, param);
}
@Override
public Integer deleteBusinessPreOrder(String k, List<String> deletedPackageList) {
return baseMapper.deleteBusinessPreOrder(k, deletedPackageList);
}
@Override
public DistributionBusinessPreOrderListVO list(BusinessPreListDTO queryrderDTO) {
DistributionBusinessPreOrderListVO distributionBusinessPreOrderListVO = new DistributionBusinessPreOrderListVO();
List<DistributionBusinessPreOrderEntity> data = baseMapper.listByBusinessPreListDTO(queryrderDTO);
// data 分组
Map<Integer, List<DistributionBusinessPreOrderEntity>> groupedData = data.stream()
.collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
// 已入库的
List<DistributionBusinessPreOrderEntity> distributionBusinessPreOrderEntities = groupedData.get(1);
List<DistributionBusinessPreOrderVO> result = new ArrayList<>();
for (DistributionBusinessPreOrderEntity datum : data) {
if(datum.getInWarehouse() .equals(queryrderDTO.getInWarehouse()) ){
DistributionBusinessPreOrderVO copy = BeanUtil.copy(datum, DistributionBusinessPreOrderVO.class);
result.add(copy);
}
}
distributionBusinessPreOrderListVO.setList(result);
distributionBusinessPreOrderListVO.setSumNum(data.size());
distributionBusinessPreOrderListVO.setInNum(ObjectUtils.isEmpty(distributionBusinessPreOrderEntities) ? 0 : distributionBusinessPreOrderEntities.size());
return distributionBusinessPreOrderListVO;
}
@Override
public Resp inOrderWarehourse(String orderPackageCode, String reservationCode) {
// 查询当前预约单所有的包件
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
// 寻找 当前匹配的包条
DistributionBusinessPreOrderEntity t = null;
DistributionBusinessPreOrderEntity t1 = null;
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// 找到匹配的包条码
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
return Resp.scanSuccess("扫描成功", "包件已入库");
} else {
t = distributionBusinessPreOrderEntity;
}
}
if (t1 == null) {
t1 = distributionBusinessPreOrderEntity;
}
}
if (t == null) {
try {
DistributionBusinessPreOrderEntity finalT = t1;
CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
// 如找到了 保存在当前的这个配送计划任务中
if (distributionParcelListEntity != null) {
// 保存包件
t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
t.setDriverName(finalT.getDriverName());
t.setVehicleName(finalT.getVehicleName());
t.setDistrCarNumber(finalT.getTrainNumber());
t.setOperationStatus(1);
t.setInWarehouse(0);
this.save(t);
list.add(t);
}
} catch (InterruptedException | ExecutionException e) {
log.error("inOrderWarehourse:", e);
throw new ServiceException("包件信息不存在!");
}
}
// 保存订单
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
if (stockArticleEntity == null) {
return Resp.scanFail("操作失败", "包件数据不存在");
}
// 保存包件
t.setWarehouseId(stockArticleEntity.getWarehouseId());
t.setWarehouse(stockArticleEntity.getWarehouse());
t.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(t);
// 调用入库方法
t.setInWarehouse(1);
baseMapper.updateById(t);
// 没有找到对应的包间 是否需要去 业务系统中获取
queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
Long l = baseMapper.selectCount(queryWrapper);
return Resp.scanSuccess("扫描成功", l + "件");
}
private void buildDistributionParcelListEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
DistributionParcelListEntity distributionParcelListEntity = BeanUtil.copy(distributionBusinessPreOrderEntity, DistributionParcelListEntity.class);
distributionParcelListEntity.setId(null);
distributionParcelListEntity.setOrderPackageFreezeStatus("10");
distributionParcelListEntity.setOrderPackageStatus("20");
distributionParcelListEntity.setOrderPackageLoadingStatus("10");
distributionParcelListEntity.setOrderPackageReservationStatus("10");
distributionParcelListEntity.setOrderPackageGroundingStatus("10");
distributionParcelListEntity.setOrderPackageStockupStatus("10");
distributionParcelListService.save(distributionParcelListEntity);
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(distributionParcelListEntity.getStockArticleId());
//增加
// 统计订单下的包间总数
LambdaQueryWrapper<DistributionParcelListEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionParcelListEntity::getStockArticleId, distributionParcelListEntity.getStockArticleId());
long count = distributionParcelListService.count(lambdaQueryWrapper);
stockArticleEntity.setHandQuantity((int) count);
distributionStockArticleService.updateById(stockArticleEntity);
}
private DistributionStockArticleEntity buildDistributionStockArticleEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
DistributionStockArticleEntity stockArticleEntity = null;
try {
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
stockArticleEntity = distributionStockArticleService.findStockArticleByOrderCodeAndWarehouseId(distributionBusinessPreOrderEntity.getOrderCode(),
myCurrentWarehouse.getId());
if (stockArticleEntity == null) {
// 需要保存这个对象
CompletableFuture<DistributionStockArticleEntity> distributionStockArticleEntityCompletableFuture = CompletableFuture.supplyAsync(() -> distributionAsyncService.findDistributionStockArticleEntityByIdForAsync(distributionBusinessPreOrderEntity.getFromTenantId(), distributionBusinessPreOrderEntity.getStockArticleId()));
stockArticleEntity = distributionStockArticleEntityCompletableFuture.get();
if (stockArticleEntity == null) {
return null;
}
// 获取当前登录人的仓库信息
stockArticleEntity.setId(null);
stockArticleEntity.setTenantId(null);
stockArticleEntity.setWarehouseId(myCurrentWarehouse.getId());
stockArticleEntity.setWarehouse(myCurrentWarehouse.getName());
stockArticleEntity.setHandQuantity(0);
distributionStockArticleService.save(stockArticleEntity);
}
} catch (InterruptedException | ExecutionException e) {
log.error("buildDistributionStockArticleEntity :", e);
throw new CustomerException("系统异常,请联系管理员");
}
return stockArticleEntity;
}
@ChangeAsync()
public DistributionParcelListEntity selectByOrderPackageCode(String orderPackageCode, Long warehouseId) {
return distributionParcelListService.selectByOrderPackageCode(orderPackageCode, warehouseId);
}
}

9
blade-service/logpm-distribution/src/main/resources/application-dev.yml

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

16
blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java

@ -13,14 +13,19 @@ import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.entity.FactoryOrderEntity;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.test.BladeBootTest;
import org.springblade.core.test.BladeSpringExtension;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ExtendWith(BladeSpringExtension.class)
@BladeBootTest(appName = "logpm-distribution-pref", enableLoader = true)
@ -36,7 +41,8 @@ public class TestService {
@Autowired
private IDistrilbutionBillLadingService distrilbutionBillLadingService;
@Autowired
private IDistributionReservationService distributionReservationService;
@Test
public void test2() throws Exception {
@ -163,5 +169,13 @@ public class TestService {
}
@Test
public void test200(){
distributionReservationService.createBusinessPreConversionQueue(1790195831916580866L);
}
}

74
blade-service/logpm-factory/src/test/java/com/logpm/factory/TestService.java

File diff suppressed because one or more lines are too long

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

@ -109,4 +109,9 @@ public class RabbitMqConfiguration {
}

9
blade-service/logpm-trunkline/src/main/resources/application-dev.yml

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

9
blade-service/logpm-warehouse/src/main/resources/application-dev.yml

@ -68,6 +68,15 @@ spring:
url: ${blade.datasource.warehouse.627683.url}
username: ${blade.datasource.warehouse.627683.username}
password: ${blade.datasource.warehouse.627683.password}
703623:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.warehouse.703623.url}
username: ${blade.datasource.warehouse.703623.username}
password: ${blade.datasource.warehouse.703623.password}
xxl:
job:
accessToken: ''

Loading…
Cancel
Save