Browse Source

add: 增加对预约单零担的支持

dist.1.2.0^2
pref_mail@163.com 5 months ago
parent
commit
5ebaada552
  1. 18
      blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java
  2. 3
      blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java
  3. 18
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IExtractedDataClient.java
  4. 13
      blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/BusinessAsyncServiceImpl.java
  5. 6
      blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/BusinessPreOrderServiceImpl.java
  6. 2
      blade-service/logpm-business/src/main/resources/application-dev.yml
  7. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionLoadscanMapper.xml
  8. 46
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
  9. 89
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/ExtractedDataClient.java
  10. 67
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenWaybillToBusinessListener.java

18
blade-service-api/logpm-business-api/src/main/java/com/logpm/business/entity/BusinessPreOrderEntity.java

@ -173,6 +173,24 @@ public class BusinessPreOrderEntity extends TenantEntity {
*/
@ApiModelProperty(value = "数量")
private Integer quantity;
/**
* 卸车数量
*/
@ApiModelProperty(value = "卸车数量")
private Integer unloadNum;
/**
* 装车数量
*/
@ApiModelProperty(value = "装车数量")
private Integer loadNum;
/**
* 车次号
*/

3
blade-service-api/logpm-business-api/src/main/java/com/logpm/business/vo/DistributionBusinessPreCarNumerPageQueryVO.java

@ -13,4 +13,7 @@ public class DistributionBusinessPreCarNumerPageQueryVO {
private String orderCode;
@ApiModelProperty(value = "配送车次号")
private String distrCarNumber;
@ApiModelProperty(value = "物品类型 1 定制品 3零担")
private String conditions;
}

18
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IExtractedDataClient.java

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

13
blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/BusinessAsyncServiceImpl.java

@ -46,6 +46,10 @@ public class BusinessAsyncServiceImpl implements IBusinessAsyncService {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
LambdaQueryWrapper<BusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(BusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(BusinessPreOrderEntity::getOrderCode, orderCodeList);
@ -62,7 +66,7 @@ public class BusinessAsyncServiceImpl implements IBusinessAsyncService {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
if (distributionBusinessPreOrderEntity.getConditions().equals(1) && businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
if (distributionBusinessPreOrderEntity.getInWarehouse().equals(1)) {
// 需要删除集合中的数据
@ -70,6 +74,13 @@ public class BusinessAsyncServiceImpl implements IBusinessAsyncService {
} else {
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}else if(distributionBusinessPreOrderEntity.getConditions().equals(3) &&distributionBusinessPreOrderEntity.getFirsts().equals(businessPreOrderEntity.getFirsts())){
if (distributionBusinessPreOrderEntity.getInWarehouse().equals(1)) {
// 需要删除集合中的数据
dataResult.remove(i);
} else {
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
}

6
blade-service/logpm-business/src/main/java/com/logpm/business/service/impl/BusinessPreOrderServiceImpl.java

@ -466,6 +466,7 @@ public class BusinessPreOrderServiceImpl extends BaseServiceImpl<BusinessPreOrde
LambdaQueryWrapper<BusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BusinessPreOrderEntity::getDistrCarNumber, queryVO.getDistrCarNumber());
queryWrapper.eq(BusinessPreOrderEntity::getIsDeleted, 0);
queryWrapper.eq(BusinessPreOrderEntity::getConditions, queryVO.getConditions());
List<BusinessPreOrderEntity> list = this.list(queryWrapper);
if (list != null) {
@ -488,13 +489,16 @@ public class BusinessPreOrderServiceImpl extends BaseServiceImpl<BusinessPreOrde
private void processGroupedData(String orderCode, List<BusinessPreOrderEntity> entities, List<DistributionBusinessPreCarOrderDetalVO> data) {
DistributionBusinessPreCarOrderDetalVO t = new DistributionBusinessPreCarOrderDetalVO();
t.setOrderCode(orderCode);
String wallbillNum = entities.stream().map(BusinessPreOrderEntity::getWaybillNumber).distinct().collect(Collectors.joining(","));
// todo 这里的计算存在问题,没有计算零担的数据
int planNum = entities.size();
int loadNum = (int) entities.stream().filter(e -> "20".equals(e.getOrderPackageLoadingStatus())).count();
int inNum = (int) entities.stream().filter(e -> e.getInWarehouse() == 1).count();
int inExceNum = (int) entities.stream().filter(e -> e.getOperationStatus() == 1).count();
String wallbillNum = entities.stream().map(BusinessPreOrderEntity::getWaybillNumber).distinct().collect(Collectors.joining(","));
t.setWaybillNumber(wallbillNum);
t.setLoadCarCount(loadNum);

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

@ -11,7 +11,7 @@ server:
spring:
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure,com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:

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

@ -80,7 +80,7 @@
SELECT GROUP_CONCAT(DISTINCT ldl.driver_name SEPARATOR ',' ) FROM logpm_distribution_loadscan ldl where ldl.order_id =#{id}
</select>
<select id="statisticsLoadingNum" resultType="java.lang.Integer">
SELECT COUNT(ldl.loaded_nub) FROM logpm_distribution_loadscan AS ldl Where ldl.delivery_id = #{deliveryListId} and ldl.is_abnormal_loading = 1 and ldl.scan_status != 1
SELECT IFNULL(SUM(ldl.loaded_nub),0) FROM logpm_distribution_loadscan AS ldl Where ldl.delivery_id = #{deliveryListId} and ldl.is_abnormal_loading = 1 and ldl.scan_status != 1
</select>
<select id="statisticsAbnormalLoadingNum" resultType="java.lang.Integer">
SELECT COUNT(ldl.loaded_nub) FROM logpm_distribution_loadscan AS ldl Where ldl.delivery_id = #{deliveryListId} and ldl.is_abnormal_loading = 2

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

@ -3,11 +3,9 @@ package com.logpm.distribution.receiver;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.logpm.business.entity.BusinessPreOrderEntity;
import com.logpm.business.feign.IBusinessPreOrderClient;
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.entity.*;
import com.logpm.distribution.service.*;
import com.logpm.trunkline.feign.IExtractedDataClient;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -27,6 +25,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Slf4j
@RabbitListener(queues = RabbitConstant.BUSINESS_PRE_CONVERSION_DATA_QUEUE)
@ -38,8 +37,10 @@ public class BusinessPreOrderDataQueueHandler {
private final IDistributionReservationService distributionReservationService;
private final IDistributionReservationPackageService distributionReservationPackageService;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionReservationZeroPackageService distributionReservationZeroPackageService;
private final ISysClient sysClient;
private final IBusinessPreOrderClient businessPreOrderClient;
private final IExtractedDataClient extractedDataClient;
private final IDistributionAsyncService distributionAsyncService;
@ -119,11 +120,48 @@ public class BusinessPreOrderDataQueueHandler {
data.setTaskTime(distributionDeliveryListEntity.getTaskTime());
dataResult.add(data);
}
// 零担数据
LambdaQueryWrapper<DistributionReservationZeroPackageEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionReservationZeroPackageEntity::getReservationId, distributionReservationEntity.getId());
lambdaQueryWrapper.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, 2);
List<DistributionReservationZeroPackageEntity> list1 = distributionReservationZeroPackageService.list(lambdaQueryWrapper);
for (DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity : list1) {
// 查询包间
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionReservationZeroPackageEntity.getParcelListId());
if (parcelListEntity != null) {
BusinessPreOrderEntity data = BeanUtil.copy(parcelListEntity, BusinessPreOrderEntity.class);
data.setQuantity(distributionReservationZeroPackageEntity.getQuantity());
data.setDriverName(distributionDeliveryListEntity.getDriverName());
data.setVehicleName(distributionDeliveryListEntity.getVehicleName());
data.setDistrCarNumber(distributionDeliveryListEntity.getTrainNumber());
data.setFromTenantId(parcelListEntity.getTenantId());
data.setOperationStatus(0);
data.setInWarehouse(0);
data.setId(null);
data.setTenantId(null);
data.setReservationCode(distributionReservationEntity.getReservationCode());
data.setTaskTime(distributionDeliveryListEntity.getTaskTime());
dataResult.add(data);
}
}
}
}
// 处理暂存但的数据
// 获取运单号集合
List<String> waybillNumberList = dataResult.stream().map(BusinessPreOrderEntity::getWaybillNumber).distinct().collect(Collectors.toList());
// 发送数据
Tenant tenant = changeDataBase(mallName);
waybillNumberList.forEach(waybillNumber -> extractedDataClient.execute(tenant.getTenantId(), waybillNumber));
businessPreOrderClient.saveOtherDataBaseNew(tenant.getTenantId(), dataResult, mallName);
// CompletableFuture.supplyAsync(() -> {
//// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);

89
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/ExtractedDataClient.java

@ -0,0 +1,89 @@
package com.logpm.trunkline.feign;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity;
import com.logpm.trunkline.entity.TrunklineWaybillTrackEntity;
import com.logpm.trunkline.service.IAsyncService;
import com.logpm.trunkline.service.ITrunklineWaybillTrackService;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import com.logpm.warehouse.feign.IWarehouseWaybillDetailClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Slf4j
@ApiIgnore()
@RestController
@AllArgsConstructor
public class ExtractedDataClient implements IExtractedDataClient {
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient;
private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient;
private final ITrunklineAdvanceClient trunklineAdvanceClient;
private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient;
private final IAsyncService asyncService;
private final ITrunklineWaybillTrackService trunklineWaybillTrackService;
@Override
public void execute(String tenantId, String wallbillNum) {
WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo(wallbillNum);
if (byWaybillNo == null) {
log.warn(">>>>>>>>>>>>>>byWaybillNo {} ", byWaybillNo);
return;
}
List<Long> waybillIds = new ArrayList<>();
waybillIds.add(byWaybillNo.getId());
List<WarehouseWayBillDetail> warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillId(byWaybillNo.getId());
List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillNo(byWaybillNo.getWaybillNo());
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds);
// 暂存单ID集合
List<Long> collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList());
if(!collect.isEmpty()){
List<TrunklineAdvanceEntity> trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect);
List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
// 获取暂存单明细
LambdaQueryWrapper<TrunklineWaybillTrackEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillId, byWaybillNo.getId());
queryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10");
List<TrunklineWaybillTrackEntity> list = trunklineWaybillTrackService.list(queryWrapper);
TrunklineWaybillTrackEntity trunklineWaybillTrackEntity = list.get(0);
CompletableFuture.supplyAsync(() -> {
asyncService.saveOtherData(tenantId, byWaybillNo, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, trunklineWaybillTrackEntity);
return null;
});
}
}
}

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

@ -8,10 +8,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.entity.TrunklineWaybillPackageEntity;
import com.logpm.trunkline.entity.TrunklineWaybillTrackEntity;
import com.logpm.trunkline.feign.ITrunklineAdvanceClient;
import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient;
import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient;
import com.logpm.trunkline.feign.ITrunklineWaybillPackageClient;
import com.logpm.trunkline.feign.*;
import com.logpm.trunkline.service.IAsyncService;
import com.logpm.trunkline.service.ITrunklineWaybillTrackService;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
@ -58,29 +55,18 @@ import java.util.stream.Collectors;
//@RabbitListener(queues = RabbitConstant.OPEN_WAYBILL_TO_BUSINESS_DATA_QUEUE)
public class OpenWaybillToBusinessListener {
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final ITrunklineWaybillOrderClient trunklineWaybillOrderClient;
private final ITrunklineWaybillPackageClient trunklineWaybillPackageClient;
private final ITrunklineAdvanceClient trunklineAdvanceClient;
private final ITrunklineAdvanceDetailClient trunklineAdvanceDetailClient;
private final ISysClient sysClient;
private final IAsyncService asyncService;
private ITrunklineWaybillTrackService trunklineWaybillTrackService;
private final IExtractedDataClient extractedDataClient;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_OPENWAYBILL_DATA),
exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT)
))
@Transactional(rollbackFor = Exception.class)
// @RabbitListener(bindings = @QueueBinding(
// value = @Queue(name = FanoutConstants.trunkline.OPENWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_OPENWAYBILL_DATA),
// exchange = @Exchange(name = FanoutConstants.trunkline.OPENWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT)
// ))
// @Transactional(rollbackFor = Exception.class)
public void openWaybillToBusinessDataHandler(String message) {
@ -112,11 +98,11 @@ public class OpenWaybillToBusinessListener {
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_UPDATEWAYBILL_DATA),
exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT)
))
@Transactional(rollbackFor = Exception.class)
// @RabbitListener(bindings = @QueueBinding(
// value = @Queue(name = FanoutConstants.trunkline.UPDATEWAYBILL.QUEUE.SEND_BUSINESS_DATA_BY_UPDATEWAYBILL_DATA),
// exchange = @Exchange(name = FanoutConstants.trunkline.UPDATEWAYBILL.EXCHANGE, type = ExchangeTypes.FANOUT)
// ))
// @Transactional(rollbackFor = Exception.class)
public void updateWaybillToBusinessDataHandler(String message) {
@ -171,34 +157,7 @@ public class OpenWaybillToBusinessListener {
private void extractedTenant(Tenant tenant, WarehouseWaybillEntity byWaybillId) {
List<Long> waybillIds = new ArrayList<>();
waybillIds.add(byWaybillId.getId());
List<WarehouseWayBillDetail> warehouseWayBillDetails = warehouseWaybillDetailClient.findByWaybillId(byWaybillId.getId());
List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities = trunklineWaybillOrderClient.findListByWaybillIds(waybillIds);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = trunklineWaybillPackageClient.findListByWaybillIds(waybillIds);
// 暂存单ID集合
List<Long> collect = trunklineWaybillOrderEntities.stream().map(TrunklineWaybillOrderEntity::getAdvanceId).distinct().collect(Collectors.toList());
List<TrunklineAdvanceEntity> trunklineAdvanceEntities = trunklineAdvanceClient.findListByIds(collect);
// 获取暂存单明细
List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities = trunklineAdvanceDetailClient.findListByAdvanceIds(collect);
LambdaQueryWrapper<TrunklineWaybillTrackEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TrunklineWaybillTrackEntity::getWaybillId, byWaybillId.getId());
queryWrapper.eq(TrunklineWaybillTrackEntity::getTrackType, "10");
List<TrunklineWaybillTrackEntity> list = trunklineWaybillTrackService.list(queryWrapper);
TrunklineWaybillTrackEntity trunklineWaybillTrackEntity = list.get(0);
Tenant finalTenant = tenant;
CompletableFuture.supplyAsync(() -> {
asyncService.saveOtherData(finalTenant.getTenantId(), byWaybillId, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, trunklineWaybillTrackEntity);
return null;
});
extractedDataClient.execute(tenant.getTenantId(), byWaybillId.getWaybillNo());
}

Loading…
Cancel
Save