Browse Source

Merge branch 'dev' into pre-production

newStockUp
pref_mail@163.com 1 year ago
parent
commit
c96e2ab1e1
  1. 24
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionDeliveryListClient.java
  2. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionDeliveryListClient.java
  3. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
  4. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
  5. 33
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  6. 46
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  7. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSigndetailMapper.xml
  8. 18
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.java
  9. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionSignforMapper.xml
  10. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
  11. 19
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryListService.java
  12. 493
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  13. 748
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  14. 118
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java

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

@ -69,13 +69,35 @@ public interface IDistributionDeliveryListClient {
* @param deliveryId
* @param reservationId
* @param orderPackageId
* @param conditions 1-订制品 2-库存
* @param conditions
* @return
*/
@GetMapping(TOP+"/retentionDeliveryReservationPackage")
boolean retentionDeliveryReservationPackage(@RequestParam("deliveryId")Long deliveryId,@RequestParam("reservationId") Long reservationId,@RequestParam("orderPackageId") Long orderPackageId,@RequestParam("conditions") Integer conditions);
/**
* 配送任务滞留库存品
* @param deliveryId
* @param reservationId
* @param orderPackageId
*
*/
@GetMapping(TOP+"/retentionDeliveryReservationInventory")
boolean retentionDeliveryReservationInventory(@RequestParam("deliveryId")Long deliveryId,@RequestParam("reservationId") Long reservationId,@RequestParam("orderPackageId") Long orderPackageId);
/**
* 滞留取消零担包件
* @param deliveryId
* @param reservationId
* @param orderPackageId
* @param retentionQuantity
* @return
*/
@GetMapping(TOP+"/retentionDeliveryReservationZeroPackage")
boolean retentionDeliveryReservationZeroPackage(@RequestParam("deliveryId")Long deliveryId,@RequestParam("reservationId") Long reservationId,@RequestParam("orderPackageId") Long orderPackageId, @RequestParam("retentionQuantity")Integer retentionQuantity, @RequestParam("orderId")Long orderId);
// /**
// * 根据配送任务ID查询配送司机信息
// * @param distributionRetentionScanVo

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

@ -65,9 +65,16 @@ public class DistributionDeliveryListClient implements IDistributionDeliveryList
return distributionDeliveryListService.retentionDeliveryReservationPackage(deliveryId,reservationId,orderPackageId,conditions);
}
// @Override
// public void retentionCancelDeliveryPack(DistributionRetentionScanVo distributionRetentionScanVo) {
// distributionDeliveryListService.retentionCancelDeliveryPack(distributionRetentionScanVo);
// }
@Override
public boolean retentionDeliveryReservationInventory(Long deliveryId, Long reservationId, Long orderPackageId) {
return distributionDeliveryListService.retentionDeliveryReservationInventory(deliveryId,reservationId,orderPackageId);
}
@Override
public boolean retentionDeliveryReservationZeroPackage(Long deliveryId, Long reservationId, Long orderPackageId, Integer retentionQuantity,Long orderId) {
return distributionDeliveryListService.retentionDeliveryReservationZeroPackage(deliveryId,reservationId,orderPackageId,retentionQuantity,orderId);
}
}

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

@ -429,6 +429,12 @@ public interface DistributionDeliveryListMapper extends BaseMapper<DistributionD
*/
DistributionRetentionScanVo selectRetentionPackage(@Param("orderPackageCode")String orderPackageCode,@Param("deliveryId") Long deliveryId);
/**
* 查询滞留零担包件信息
* @param deliveryId
* @param barcode
* @return
*/
List<DistributionRetentionScanVo> selectRetentionZeroPackage(@Param("deliveryId")Long deliveryId, @Param("orderCode")String barcode);
/**

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

@ -1607,6 +1607,8 @@
WHERE
ldrs.stock_article_id = #{orderId} AND lddl.id=#{deliveryListId} and ldrs.stock_article_status in ('1','3') AND ldrzp.zero_package_status IN ( '1', '3' )
</select>
<!-- ldsl.incoming_batch AS 入库批次,-->
<select id="selectRetentionInventoryPackage"
resultType="com.logpm.distribution.vo.DistributionRetentionScanVo">
SELECT
@ -1617,11 +1619,10 @@
ldsld.id AS orderPackageId,
ldsld.stock_package_code AS orderPackageCode,
ldsld.stock_list_id AS inventoryId,
ldsld.num AS reservationQuantity,
ldsld.num AS retentionQuantity,
ldsl.cargo_number AS materialNumber,
ldsl.description_goods AS materialName,
2 AS conditions,
ldsl.incoming_batch AS 入库批次,
1 AS scanType
FROM
logpm_distribution_delivery_list AS lddl
@ -1630,7 +1631,8 @@
LEFT JOIN logpm_distribution_reservation_stocklist AS ldrs ON ldrs.reservation_id = ldr.id
LEFT JOIN logpm_distribution_stock_list AS ldsl ON ldsl.id = ldrs.stocklist_id
INNER JOIN logpm_dis_stock_list_detail AS ldsld ON ldsld.stock_list_id = ldrs.stocklist_id and ldsld.reservation_id = ldr.id
WHERE lddl.id=#{deliveryId} and ldrs.stock_list_status in ('1','2') and ldsld.stock_package_code =#{stockPackageCode}
WHERE
lddl.id=#{deliveryId} and ldrs.stock_list_status in ('1','3') and ldsld.stock_package_code =#{stockPackageCode}
</select>
<select id="selectRetentionPackage" resultType="com.logpm.distribution.vo.DistributionRetentionScanVo">
SELECT

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

@ -274,4 +274,37 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
* @return
*/
List<SignPushDataContactDTO> selectPushOldCustomer(@Param("reservationId") Long reservationId);
/**
* 取消预约包件
* @param reservationId
* @param orderPackageId
* @return
*/
int cancelReservationPackage(@Param("reservationId") Long reservationId, @Param("packageId") Long orderPackageId);
/**
* 取消库存品包件信息
* @param reservationId
* @param orderPackageId
* @return
*/
int cancelReservationInventory(@Param("reservationId")Long reservationId,@Param("orderPackageId") Long orderPackageId);
/**
* 查询对应的库存品包件上级信息
* @param reservationId
* @param stockListId
* @return
*/
DistributionReservationStocklistEntity selectInventoryInfoByReservationIdAndInventoryId(@Param("reservationId")Long reservationId,@Param("stockListId") Long stockListId);
/**
* 滞留零担包件数量
* @param reservationId
* @param orderPackageId
* @param retentionQuantity
* @return
*/
int cancelReservationZeroPackage(Long reservationId, Long orderPackageId, Integer retentionQuantity);
}

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

@ -66,6 +66,18 @@
</if>
</where>
</delete>
<delete id="cancelReservationPackage">
UPDATE logpm_distribution_reservation_package
SET packet_bar_status = 2
WHERE
reservation_id = #{reservationId} AND parce_list_id = #{packageId}
</delete>
<update id="cancelReservationZeroPackage">
</update>
<update id="cancelReservationInventory">
update logpm_dis_stock_list_detail SET stock_package_status = 2 WHERE reservation_id = #{reservationId} AND id=#{orderPackageId} and is_deleted = 0
</update>
<select id="selectDistrbutionReservationPage" resultMap="reservationResultMap">
@ -1139,5 +1151,39 @@
LEFT JOIN logpm_distribution_delivery_list AS lddl ON lds.delivery_id = lddl.id AND lddl.is_deleted = 0
WHERE lds.reservation_id =#{reservationId} AND lds.is_deleted = 0
</select>
<select id="selectInventoryInfoByReservationIdAndInventoryId"
resultType="com.logpm.distribution.entity.DistributionReservationStocklistEntity">
SELECT
ldrs.id,
ldrs.tenant_id,
ldrs.create_user,
ldrs.create_time,
ldrs.update_user,
ldrs.update_time,
ldrs.status,
ldrs.is_deleted,
ldrs.create_dept,
ldrs.reservation_id,
ldrs.stocklist_id,
ldrs.reservation_num,
ldrs.reserve1,
ldrs.reserve2,
ldrs.reserve3,
ldrs.reserve4,
ldrs.reserve5,
ldrs.stock_article_code,
ldrs.is_have_data,
ldrs.unit,
ldrs.is_unpack_product,
ldrs.stock_list_status,
ldrs.reality_num,
ldrs.loading_status,
ldrs.signing_status
FROM
logpm_distribution_reservation AS ldr
LEFT JOIN logpm_distribution_reservation_stocklist AS ldrs ON ldrs.reservation_id = ldr.id
WHERE
ldr.id = #{reservationId} AND ldrs.stocklist_id = #{stockListId}
</select>
</mapper>

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

@ -142,7 +142,7 @@
JOIN logpm_distribution_stock_article ldsa ON ldrs.stock_article_id = ldsa.id
join logpm_distribution_reservation_package ldrp on ldr.id = ldrp.reservation_id
<where>
lds.is_deleted = 0
lds.is_deleted = 0 and ldr.is_deleted = 0
<if test="param.serviceNumber!=null and param.serviceNumber!=''">
and ldr.service_number like concat('%',#{param.serviceNumber},'%')
</if>

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

@ -266,4 +266,22 @@ public interface DistributionSignforMapper extends BaseMapper<DistributionSignfo
* @return
*/
SignPushDataUnitDTO selectPushOldInventory(@Param("reservationId")Long reservationId, @Param("deliveryId")Long deliveryId);
/**
* 减少装车数
* @param reservationId
* @param deliveryId
* @param loadedNub
* @return
*/
int deductionLoadingPacjageNum(@Param("reservationId") Long reservationId,@Param("deliveryId") Long deliveryId,@Param("nub") Integer loadedNub);
/**
* 扣减装车的库存品包件数量
* @param reservationId
* @param deliveryId
* @param loadedNub
* @return
*/
int deductionLoadingInventoryNum(@Param("reservationId")Long reservationId,@Param("deliveryId") Long deliveryId,@Param("nub") Integer loadedNub);
}

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

@ -63,6 +63,12 @@
<update id="updatesignforByinvn">
UPDATE logpm_distribution_signfor lds set lds.receivedin_quantity = ( lds.receivedin_quantity + #{packageNub} ) WHERE lds.is_deleted =0 and lds.reservation_id = #{reservationId} and lds.delivery_id =#{deliveryId}
</update>
<update id="deductionLoadingPacjageNum">
UPDATE logpm_distribution_signfor lds set lds.loaded_number = ( lds.loaded_number - #{nub} ) WHERE lds.is_deleted =0 and lds.reservation_id = #{reservationId} and loaded_number !=0 and lds.delivery_id = #{deliveryId}
</update>
<update id="deductionLoadingInventoryNum">
UPDATE logpm_distribution_signfor lds set lds.loadedin_number = ( lds.loadedin_number - #{nub} ) WHERE lds.is_deleted =0 and lds.reservation_id = #{reservationId} and loadedin_number !=0 and lds.delivery_id = #{deliveryId}
</update>
<delete id="deleteByReservationAndDeliveryId">
DELETE FROM logpm_distribution_signfor
<where>
@ -326,7 +332,7 @@
JOIN logpm_distribution_delivery_list lddl ON lddl.id = lds.delivery_id
JOIN logpm_distribution_reservation ldr ON ldr.id = lds.reservation_id
<where>
lds.is_deleted = 0
lds.is_deleted = 0 and ldr.is_deleted = 0
<if test="param.mallName != null and param.mallName!=''">
and ldr.mall_name like concat('%',#{param.mallName},'%')
</if>
@ -445,7 +451,7 @@
JOIN logpm_distribution_delivery_list lddl ON lddl.id = lds.delivery_id
JOIN logpm_distribution_reservation ldr ON ldr.id = lds.reservation_id
<where>
lds.is_deleted = 0 and lds.driver_signing ='1'
lds.is_deleted = 0 and lds.driver_signing ='1' and ldr.is_deleted = 0
<if test="param.mallName != null and param.mallName!=''">
and ldr.mall_name like concat('%',#{param.mallName},'%')
</if>
@ -491,7 +497,7 @@
JOIN logpm_distribution_delivery_list lddl ON lddl.id = lds.delivery_id
JOIN logpm_distribution_reservation ldr ON ldr.id = lds.reservation_id
<where>
lds.is_deleted = 0 and lds.signing_status ='1'
lds.is_deleted = 0 and lds.signing_status ='1' and ldr.is_deleted = 0
<if test="param.mallName != null and param.mallName!=''">
and ldr.mall_name like concat('%',#{param.mallName},'%')
</if>

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

@ -235,4 +235,19 @@ public interface IDistributionAsyncService {
* @param deliveryId
*/
void checkSignStatus(Long packageId, Long reservationId, Long deliveryId);
/**
* 维护滞留之后预约和包件的数量状态
* @param reservationId
* @param deliveryId
*/
void checkRetentionReservationAndDeliveryInfo(Long reservationId, Long deliveryId);
/**
* 取消滞留库存品包件信息并维护预约单数量信息
* @param reservationId
* @param deliveryId
* @param orderPackageId
*/
void checkRetentionInventoryReservationAndDeliveryInfo(Long reservationId, Long deliveryId, Long orderPackageId);
}

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

@ -334,6 +334,25 @@ public interface IDistributionDeliveryListService extends BaseService<Distributi
*/
boolean retentionDeliveryReservationPackage(Long deliveryId, Long reservationId, Long orderPackageId, Integer conditions);
/**
* 滞留取消库存品包件
* @param deliveryId
* @param reservationId
* @param orderPackageId
* @return
*/
boolean retentionDeliveryReservationInventory(Long deliveryId, Long reservationId, Long orderPackageId);
/**
* 滞留取消零担包件维护预约
* @param deliveryId
* @param reservationId
* @param orderPackageId
* @param retentionQuantity
* @return
*/
boolean retentionDeliveryReservationZeroPackage(Long deliveryId, Long reservationId, Long orderPackageId, Integer retentionQuantity,Long orderId);
// /**
// * 滞留取消配送
// * @param distributionRetentionScanVo

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

@ -14,6 +14,7 @@ import com.logpm.distribution.dto.app.StockupZeroDTO;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.mapper.*;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionStockPackageVO;
import com.logpm.distribution.vo.DistributionStockupSelfVO;
import com.logpm.distribution.vo.DistrilbutionBillStockVO;
@ -209,6 +210,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
/**
* 修改订单备货状态
*
* @param id 订单ID
*/
@Async
@ -216,38 +218,39 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
public void updateStockArticleStock(Long id) {
log.debug("###查询订单备货状态");
DistributionStockArticleEntity byId = distributionStockArticleService.getById(id);
if(byId.getStockupStatus().equals(OrderStockupStatusConstant.daibeihuo.getValue())){
if (byId.getStockupStatus().equals(OrderStockupStatusConstant.daibeihuo.getValue())) {
//
byId.setStockupStatus(OrderStockupStatusConstant.bufenbeihuo.getValue());
boolean b = distributionStockArticleService.updateById(byId);
log.debug("###执行结果={}",b);
}else if(byId.getStockupStatus().equals("1")){
log.debug("###执行结果={}", b);
} else if (byId.getStockupStatus().equals("1")) {
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListMapper.selectList(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getStockArticleId, id)
);
int sum = distributionParcelListEntities.stream().filter(i -> i.getOrderPackageStockupStatus().equals(OrderPackageStockupStatusConstant.daibeihuo.getValue())).collect(Collectors.toList()).stream().mapToInt(DistributionParcelListEntity::getQuantity).sum();
if(sum == 0 && byId.getStockupStatus().equals(OrderStockupStatusConstant.bufenbeihuo.getValue())){
if (sum == 0 && byId.getStockupStatus().equals(OrderStockupStatusConstant.bufenbeihuo.getValue())) {
byId.setStockupStatus(OrderStockupStatusConstant.yibeihu.getValue());
boolean b = distributionStockArticleService.updateById(byId);
log.debug("###执行结果={}",b);
log.debug("###执行结果={}", b);
}
}
}
/**
* 修改包件预约状态
*
* @param ids 订单ID
*/
@Async
@Override
public void updateParcelListReservation(List<Long> ids) {
log.debug("####修改包件预约状态");
ids.stream().forEach( i ->{
ids.stream().forEach(i -> {
DistributionParcelListEntity distributionParcelListEntity = new DistributionParcelListEntity();
distributionParcelListEntity.setId(i);
distributionParcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
int i1 = distributionParcelListMapper.updateById(distributionParcelListEntity);
log.debug("####修改包件预约数量===={}",i1);
log.debug("####修改包件预约数量===={}", i1);
});
}
@ -359,7 +362,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
@Async
@Override
@Transactional(isolation = Isolation.READ_UNCOMMITTED, rollbackFor = Exception.class)
public void changeMarketDeliveryListStatus(String barcode, Long deliveryId,Long reservationId) {
public void changeMarketDeliveryListStatus(String barcode, Long deliveryId, Long reservationId) {
//查询库存品
DisStockListDetailEntity loadingInventoryDetail = distributionDeliveryListMapper.getLoadingInventoryDetail(barcode, deliveryId);
@ -399,7 +402,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
log.error("####库存品记录错误+{" + reservationStockarticleEntityList + "}");
return;
}
checkReservationAndDeliveryLoadingStatus(deliveryId,reservationId);
checkReservationAndDeliveryLoadingStatus(deliveryId, reservationId);
}
@Async
@ -517,10 +520,10 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
} else {
inventorySigningFlag = distributionReservationStocklistEntities.stream().allMatch(i -> !i.getSigningStatus().equals(ReservationInventorySigningStatusConstant.yiqianshou.getValue()));
reservationSigningFlag = parcelListEntities.stream().allMatch(p -> !p.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue()));
if (inventorySigningFlag && reservationSigningFlag){
if (inventorySigningFlag && reservationSigningFlag) {
r.setSigningStatus(ReservationSigningStatusConstant.daiqianshou.getValue());
}else {
} else {
r.setSigningStatus(ReservationSigningStatusConstant.bufenqianshou.getValue());
}
}
@ -562,24 +565,24 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//查询一个配送任务下的所有客户
List<DistributionReservationEntity> reservationEntityList = distributionDeliveryListMapper.selectReservationByDeliveryListId(deliveryId);
boolean loadingStatusFlag = reservationEntityList.stream().allMatch(r -> r.getLoadingStatus().equals(ReservationLoadingStatusConstant.yizhuangche.getValue()));
if (loadingStatusFlag){
if (loadingStatusFlag) {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.yizhuangche.getValue());
}else {
} else {
loadingStatusFlag = reservationEntityList.stream().allMatch(r -> r.getLoadingStatus().equals(ReservationLoadingStatusConstant.daizhuangche.getValue()));
if (loadingStatusFlag){
if (loadingStatusFlag) {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.weizhuangche.getValue());
}else {
} else {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.bunfenzhuangche.getValue());
}
}
boolean signingStatusFlag = reservationEntityList.stream().allMatch(r -> r.getSigningStatus().equals(ReservationSigningStatusConstant.yiqianshou.getValue()));
if (signingStatusFlag){
if (signingStatusFlag) {
deliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.yiwancheng.getValue());
}else {
} else {
loadingStatusFlag = reservationEntityList.stream().allMatch(r -> r.getLoadingStatus().equals(ReservationSigningStatusConstant.daiqianshou.getValue()));
if (loadingStatusFlag){
if (loadingStatusFlag) {
deliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.daipeisong.getValue());
}else {
} else {
deliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.peisongzhong.getValue());
}
}
@ -589,14 +592,15 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
/**
* 判断包件是否该下架
*
* @param stockupDTO
*/
@Async
@Override
public void stockupSelfOffShelf(StockupDTO stockupDTO) throws InterruptedException {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
throw new CustomerException(403,"仓库信息不能为空");
if (Objects.isNull(myCurrentWarehouse)) {
throw new CustomerException(403, "仓库信息不能为空");
}
//判断类型
@ -613,7 +617,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//有
List<DistributionStockupSelfVO> collectY = distributionStockupSelfVO.stream().filter(o -> ObjectUtils.isNotNull(o.getAllocationId())).collect(Collectors.toList());
collectY.stream().collect(Collectors.groupingBy(DistributionStockupSelfVO::getAllocationId))
.forEach( (k,v) -> {
.forEach((k, v) -> {
List<String> list = new ArrayList<>();
AtomicInteger a = new AtomicInteger();
AtomicInteger b = new AtomicInteger();
@ -629,11 +633,11 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
if (a.get() == b.get()) {
//下架
list.forEach(i -> {
warehouseUpdownTypeClient.downPackage(i,myCurrentWarehouse.getId());
warehouseUpdownTypeClient.downPackage(i, myCurrentWarehouse.getId());
});
}
} );
});
//没有
/*List<DistributionStockupSelfVO> collectW = distributionStockupSelfVO.stream().filter(o -> ObjectUtils.isNull(o.getAllocationId())).collect(Collectors.toList());
@ -660,21 +664,21 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
@Override
@Transactional
public void checkLoadingByPackage(DistributionParcelListEntity parcelListEntity, Long deliveryId,Long reservationId) {
if (Func.isEmpty(parcelListEntity)){
log.error("############包件信息异常:{}",parcelListEntity);
public void checkLoadingByPackage(DistributionParcelListEntity parcelListEntity, Long deliveryId, Long reservationId) {
if (Func.isEmpty(parcelListEntity)) {
log.error("############包件信息异常:{}", parcelListEntity);
throw new RuntimeException("包件信息异常");
}
//维护包件所属订单是否均已完成装车,如果均已完成装车则订单进行装车状态的修改
if (parcelListEntity.getConditions() != 2){
if (parcelListEntity.getConditions() != 2) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelListEntity.getStockArticleId());
//查询出该订单的装车件数
Integer orderLoadingNum = distributionLoadscanMapper.selectOrderLoadingNum(stockArticleEntity.getId());
if (Func.isNotEmpty(orderLoadingNum) && orderLoadingNum > 0){
if (Func.isNotEmpty(orderLoadingNum) && orderLoadingNum > 0) {
//存在装车数量,需要对装车数量进行判定
if (orderLoadingNum == stockArticleEntity.getTotalNumber()){
if (orderLoadingNum == stockArticleEntity.getTotalNumber()) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.chuku.getValue());
}else {
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
}
distributionStockArticleService.updateById(stockArticleEntity);
@ -689,34 +693,34 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//判断客户是否完成装车
DistributionReservationEntity distributionReservationEntity = distributionReservationMapper.selectById(reservationId);
int reservationPackageTotal = distributionReservationEntity.getReservationNum() + distributionReservationEntity.getReservationStockListNum();
if (reservationPackageTotal!=0){
if (reservationPackageTotal != 0) {
DistributionLoadingNumDTO reservationLoadingNum = distributionReservationMapper.selectReservationLoadingNum(distributionReservationEntity.getId());
if (Func.isNotEmpty(reservationLoadingNum)){
int reservationLoadingQuantity = reservationLoadingNum.getPackageLoadingQuantity()+reservationLoadingNum.getInventoryLoadingQuantity();
if (reservationLoadingQuantity == reservationPackageTotal){
if (Func.isNotEmpty(reservationLoadingNum)) {
int reservationLoadingQuantity = reservationLoadingNum.getPackageLoadingQuantity() + reservationLoadingNum.getInventoryLoadingQuantity();
if (reservationLoadingQuantity == reservationPackageTotal) {
distributionReservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());
}else {
} else {
distributionReservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.bufenzhuangche.getValue());
}
distributionReservationMapper.updateById(distributionReservationEntity);
}
}else {
} else {
log.error("##########查询客户配送数量为0");
}
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId);
int deliveryPackageTotal = distributionDeliveryListEntity.getDeliveryNumber();
if (deliveryPackageTotal!=0){
if (deliveryPackageTotal != 0) {
DistributionLoadingNumDTO deliveryLoadingNum = distributionDeliveryListMapper.selectDeliveryLoadingNum(distributionDeliveryListEntity.getId());
if (Func.isNotEmpty(deliveryLoadingNum)){
int deliveryLoadingQuantity = deliveryLoadingNum.getPackageLoadingQuantity()+deliveryLoadingNum.getInventoryLoadingQuantity();
if (deliveryPackageTotal == deliveryLoadingQuantity){
if (Func.isNotEmpty(deliveryLoadingNum)) {
int deliveryLoadingQuantity = deliveryLoadingNum.getPackageLoadingQuantity() + deliveryLoadingNum.getInventoryLoadingQuantity();
if (deliveryPackageTotal == deliveryLoadingQuantity) {
distributionDeliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.yizhuangche.getValue());
}else {
} else {
distributionDeliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.bunfenzhuangche.getValue());
}
distributionDeliveryListMapper.updateById(distributionDeliveryListEntity);
}
}else {
} else {
log.error("##########查询客户配送数量为0");
}
}
@ -798,62 +802,61 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
// }
// }
@Override
public void checkLoadingByDelivery(Long deliveryId) {
DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId);
if (Func.isNotEmpty(deliveryListEntity)){
if (Func.isNotEmpty(deliveryListEntity)) {
List<DistributionParcelListEntity> deliveryParcelListEntities = distributionDeliveryListMapper.selectPackageListByDeliveryListId(deliveryId);
boolean deliveryLoadingFlag = deliveryParcelListEntities.stream().allMatch(p->p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue()));
if (deliveryLoadingFlag){
boolean deliveryLoadingFlag = deliveryParcelListEntities.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue()));
if (deliveryLoadingFlag) {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.yizhuangche.getValue());
}else {
deliveryLoadingFlag = deliveryParcelListEntities.stream().allMatch(p->p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue()));
if (deliveryLoadingFlag){
} else {
deliveryLoadingFlag = deliveryParcelListEntities.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue()));
if (deliveryLoadingFlag) {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.weizhuangche.getValue());
}else {
} else {
deliveryListEntity.setDeliveryListLoadingStatus(DeliveryLoadingStatusConstant.bunfenzhuangche.getValue());
}
}
distributionDeliveryListMapper.updateById(deliveryListEntity);
}
List<DistributionReservationEntity> reservationEntityList = distributionDeliveryListMapper.selectReservationByDeliveryListId(deliveryId);
if (Func.isNotEmpty(reservationEntityList) && reservationEntityList.size()>0){
if (Func.isNotEmpty(reservationEntityList) && reservationEntityList.size() > 0) {
for (DistributionReservationEntity reservationEntity : reservationEntityList) {
List<DistributionParcelListEntity> parcelListEntities = distributionReservationMapper.selectPackageListByReservationId(reservationEntity.getId());
Map<Long, List<DistributionParcelListEntity>> order = parcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getStockArticleId));
order.forEach((k,v)->{
order.forEach((k, v) -> {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(k);
List<DistributionParcelListEntity> stockArticlePackageList = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId, k));
if (stockArticlePackageList.size() == v.size()){
if (stockArticlePackageList.size() == v.size()) {
boolean orderLoadingFlag = v.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue()));
if (orderLoadingFlag){
if (orderLoadingFlag) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.chuku.getValue());
}else {
} else {
orderLoadingFlag = v.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue()));
if (!orderLoadingFlag){
if (!orderLoadingFlag) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
}
}
}else {
} else {
boolean orderbufenLoadingFlag = v.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue()));
if (orderbufenLoadingFlag){
if (orderbufenLoadingFlag) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
}
}
distributionStockArticleService.updateById(stockArticleEntity);
});
boolean reservationLoadingFlag = parcelListEntities.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue()));
if (reservationLoadingFlag){
if (reservationLoadingFlag) {
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());
}else {
} else {
reservationLoadingFlag = parcelListEntities.stream().allMatch(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue()));
if (reservationLoadingFlag){
if (reservationLoadingFlag) {
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.daizhuangche.getValue());
}else {
} else {
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.bufenzhuangche.getValue());
}
}
@ -868,13 +871,13 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId);
parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
distributionParcelListService.updateById(parcelListEntity);
if (Func.isNotEmpty(parcelListEntity)){
if (Func.isNotEmpty(parcelListEntity)) {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelListEntity.getStockArticleId());
Integer orderLoadingNum = distributionLoadscanMapper.selectOrderLoadingNum(stockArticleEntity.getId());
if (Func.isNotEmpty(orderLoadingNum) && orderLoadingNum > 0){
if (stockArticleEntity.getTotalNumber() ==orderLoadingNum ){
if (Func.isNotEmpty(orderLoadingNum) && orderLoadingNum > 0) {
if (stockArticleEntity.getTotalNumber() == orderLoadingNum) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.chuku.getValue());
}else {
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
}
distributionStockArticleService.updateById(stockArticleEntity);
@ -888,13 +891,13 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
.eq(DistributionParcelListEntity::getStockArticleId, parcelListEntity.getStockArticleId()));
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelListEntity.getStockArticleId());
boolean flag = parcelListEntities.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.yiyueyue.getValue()));
if (flag){
if (flag) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}else {
} else {
flag = parcelListEntities.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.daiyuyue.getValue()));
if (flag){
if (flag) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
}else {
} else {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}
@ -912,40 +915,39 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
log.debug("修改备货数据》》》",stockupDTO);
log.debug("修改备货数据》》》", stockupDTO);
QueryWrapper<DistributionReservationZeroPackageEntity> queryWrapper = new QueryWrapper();
if(ObjectUtils.isNotNull(stockupDTO.getStockArticleId())){
queryWrapper.eq("stock_article_id",stockupDTO.getStockArticleId());
if (ObjectUtils.isNotNull(stockupDTO.getStockArticleId())) {
queryWrapper.eq("stock_article_id", stockupDTO.getStockArticleId());
}
if(stockupDTO.getStockArticleIdList() != null && !stockupDTO.getStockArticleIdList().equals(null)){
queryWrapper.in("stock_article_id",stockupDTO.getStockArticleIdList());
if (stockupDTO.getStockArticleIdList() != null && !stockupDTO.getStockArticleIdList().equals(null)) {
queryWrapper.in("stock_article_id", stockupDTO.getStockArticleIdList());
}
queryWrapper.eq("reservation_id",stockupDTO.getReservationId());
queryWrapper.eq("reservation_id", stockupDTO.getReservationId());
List<DistributionReservationZeroPackageEntity> list = reservationZeroPackageService.list(queryWrapper);
AtomicBoolean pian = new AtomicBoolean(true);
DistributionStockupEntity stockupEntity = new DistributionStockupEntity();
list.stream().forEach(i -> {
if(!i.getQuantity().equals(i.getRealityQuantity())){
if (!i.getQuantity().equals(i.getRealityQuantity())) {
//不同 不能修改为完成
pian.set(false);
}
});
if(pian.get()){
if (pian.get()) {
AtomicReference<Boolean> s = new AtomicReference<>(false);
if(stockupDTO.getTypeService().equals("3")){
if (stockupDTO.getTypeService().equals("3")) {
//自提
//查询有没有不是零担的订单
List<DistributionStockPackageVO> distributionStockPackageVOS = distrilbutionBillStockService.listPackageSelf(stockupDTO.getReservationId());
if(!distributionStockPackageVOS.isEmpty()){
if (!distributionStockPackageVOS.isEmpty()) {
distributionStockPackageVOS.forEach( i ->{
if(getDoneStockUp(i.getStockArticleId(), i.getParcelListId(), stockupDTO.getReservationId(), stockupDTO.getTypeService())){
distributionStockPackageVOS.forEach(i -> {
if (getDoneStockUp(i.getStockArticleId(), i.getParcelListId(), stockupDTO.getReservationId(), stockupDTO.getTypeService())) {
//没有扫
s.set(true);
}
});
}else{
} else {
//查询有没有库存品
@ -953,50 +955,50 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
.eq(DistributionDeliveryDetailsEntity::getBillLadingId, stockupDTO.getReservationId())
.in(DistributionDeliveryDetailsEntity::getInventoryStatus, "1", "3")
);
if(!distributionDeliveryDetailsEntities.isEmpty()){
if (!distributionDeliveryDetailsEntities.isEmpty()) {
int sum = distributionDeliveryDetailsEntities.stream().mapToInt(DistributionDeliveryDetailsEntity::getQuantity).sum(); //全部的库存数量
distributionDeliveryDetailsEntities.forEach(d ->{
if(!getDoneStockUpStock(d.getStockListId(),stockupDTO.getReservationId(),stockupDTO.getTypeService(),stockupDTO.getStockupId(),sum )){
distributionDeliveryDetailsEntities.forEach(d -> {
if (!getDoneStockUpStock(d.getStockListId(), stockupDTO.getReservationId(), stockupDTO.getTypeService(), stockupDTO.getStockupId(), sum)) {
s.set(true);
}
});
}
if(s.get()){
if (s.get()) {
stockupEntity.setStockupStatus(StockupStatusConstant.beihuozhong.getValue());
}else{
} else {
stockupEntity.setStockupStatus(StockupStatusConstant.yibeihuo.getValue());
stockupEntity.setFixTime(new Date());
}
}
}else{
} else {
//商,市
//查询数据
List<DistributionStockupInfoEntity> distributionStockupInfoEntities = distributionStockupInfoMapper.selectList(Wrappers.<DistributionStockupInfoEntity>query().lambda()
.eq(DistributionStockupInfoEntity::getStockupId, stockupDTO.getStockupId())
);
distributionStockupInfoEntities.forEach(v ->{
distributionStockupInfoEntities.forEach(v -> {
//查询包件数据
List<DistributionReservationPackageEntity> packageEntities = distributionReservationPackageMapper.selectList(Wrappers.<DistributionReservationPackageEntity>query().lambda()
.eq(DistributionReservationPackageEntity::getReservationId, v.getReservationId())
.eq(DistributionReservationPackageEntity::getPacketBarStatus, '1')
);
packageEntities.forEach( i ->{
if(getDoneStockUp(i.getStockArticleId(), i.getParceListId(), v.getReservationId(), stockupDTO.getTypeService())){
packageEntities.forEach(i -> {
if (getDoneStockUp(i.getStockArticleId(), i.getParceListId(), v.getReservationId(), stockupDTO.getTypeService())) {
//没有扫
s.set(true);
}
});
});
if(!s.get()){
if (!s.get()) {
//查询有没有库存品
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationStocklistMapper.selectList(Wrappers.<DistributionReservationStocklistEntity>query().lambda()
.eq(DistributionReservationStocklistEntity::getReservationId, stockupDTO.getReservationId())
.in(DistributionReservationStocklistEntity::getStockListStatus, "1", "3")
);
if(!distributionReservationStocklistEntities.isEmpty()){
if (!distributionReservationStocklistEntities.isEmpty()) {
int sum = distributionReservationStocklistEntities.stream().mapToInt(DistributionReservationStocklistEntity::getRealityNum).sum(); //全部的库存数量
distributionReservationStocklistEntities.forEach(d ->{
if(!getDoneStockUpStock(d.getStocklistId(),stockupDTO.getReservationId(),stockupDTO.getTypeService(),stockupDTO.getStockupId(),sum )){
distributionReservationStocklistEntities.forEach(d -> {
if (!getDoneStockUpStock(d.getStocklistId(), stockupDTO.getReservationId(), stockupDTO.getTypeService(), stockupDTO.getStockupId(), sum)) {
s.set(true);
}
});
@ -1005,14 +1007,14 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
stockupEntity.setFixTime(new Date());
}
}
if(s.get()){
if (s.get()) {
stockupEntity.setStockupStatus(StockupStatusConstant.beihuozhong.getValue());
}else{
} else {
stockupEntity.setStockupStatus(StockupStatusConstant.yibeihuo.getValue());
stockupEntity.setFixTime(new Date());
}
}else{
} else {
stockupEntity.setStockupStatus(StockupStatusConstant.beihuozhong.getValue());
}
stockupEntity.setId(stockupDTO.getStockupId());
@ -1025,10 +1027,10 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(parcelNumberEntity.getParcelListId());
//计算该品类的使用数量,这里数量被使用就一定会进行预约
int a = parcelNumber.getDeliveryQuantity() + parcelNumber.getOutboundQuantity();
if (a == 0){
if (a == 0) {
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
}else {
if (a == parcelNumberEntity.getHandQuantity()){
} else {
if (a == parcelNumberEntity.getHandQuantity()) {
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
}
}
@ -1036,17 +1038,17 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelListEntity.getStockArticleId());
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId, stockArticleEntity.getId()));
boolean flag = parcelListEntityList.stream().allMatch(p -> Func.equals(p.getOrderPackageReservationStatus(), OrderPackageReservationStatusConstant.yiyueyue.getValue()));
if (flag){
if (flag) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}else {
} else {
List<DistributionParcelNumberEntity> parcelNumberEntityList = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getStockArticleId, stockArticleEntity.getId()));
AtomicInteger atomicInteger = new AtomicInteger();
parcelNumberEntityList.forEach(p->{
parcelNumberEntityList.forEach(p -> {
atomicInteger.getAndAdd(p.getDeliveryQuantity() + p.getOutboundQuantity());
});
if (stockArticleEntity.getHandQuantity()> atomicInteger.get()){
if (stockArticleEntity.getHandQuantity() > atomicInteger.get()) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}else if (stockArticleEntity.getHandQuantity() == atomicInteger.get()){
} else if (stockArticleEntity.getHandQuantity() == atomicInteger.get()) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}
}
@ -1055,67 +1057,67 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
@Override
@Transactional
public void checkZeroStockArticleLoadingStatus(DistributionParcelNumberEntity parcelNumberEntity,Long deliveryId,Long reservationId) {
if (Func.isEmpty(parcelNumberEntity)){
log.error("#################parcelNumberEntity参数错误:{}",parcelNumberEntity);
public void checkZeroStockArticleLoadingStatus(DistributionParcelNumberEntity parcelNumberEntity, Long deliveryId, Long reservationId) {
if (Func.isEmpty(parcelNumberEntity)) {
log.error("#################parcelNumberEntity参数错误:{}", parcelNumberEntity);
return;
}
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelNumberEntity.getStockArticleId());
if (Func.equals(stockArticleEntity.getIsZero(),IsOrNoConstant.no.getValue())){
log.error("#################查询订单异常,订单ID为:{}",parcelNumberEntity.getStockArticleId());
if (Func.equals(stockArticleEntity.getIsZero(), IsOrNoConstant.no.getValue())) {
log.error("#################查询订单异常,订单ID为:{}", parcelNumberEntity.getStockArticleId());
return;
}
List<DistributionParcelNumberEntity> parcelNumberEntities = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getStockArticleId, stockArticleEntity.getId()));
if (Func.isEmpty(parcelNumberEntities)){
log.error("#################查询零担订单包件品类异常,订单ID为:{}",stockArticleEntity.getId());
if (Func.isEmpty(parcelNumberEntities)) {
log.error("#################查询零担订单包件品类异常,订单ID为:{}", stockArticleEntity.getId());
return;
}
parcelNumberEntities.forEach(p->{
parcelNumberEntities.forEach(p -> {
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParcelListId());
if (p.getOutboundQuantity() == p.getQuantity()){
if (p.getOutboundQuantity() == p.getQuantity()) {
parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
}else {
} else {
parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.weizhuancghe.getValue());
}
distributionParcelListService.updateById(parcelListEntity);
});
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getStockArticleId, stockArticleEntity.getId()));
if (Func.isEmpty(parcelListEntityList)){
log.error("#################查询零担订单包件异常,订单ID为:{}",stockArticleEntity.getId());
if (Func.isEmpty(parcelListEntityList)) {
log.error("#################查询零担订单包件异常,订单ID为:{}", stockArticleEntity.getId());
return;
}
int outboundQuantity = parcelNumberEntities.stream().mapToInt(DistributionParcelNumberEntity::getOutboundQuantity).sum();
if (outboundQuantity > 0 && outboundQuantity < stockArticleEntity.getTotalNumber()){
if (outboundQuantity > 0 && outboundQuantity < stockArticleEntity.getTotalNumber()) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenchuku.getValue());
stockArticleEntity.setDeliveryQuantity(stockArticleEntity.getDeliveryQuantity() + outboundQuantity);
}
if (stockArticleEntity.getTotalNumber() == outboundQuantity){
if (stockArticleEntity.getTotalNumber() == outboundQuantity) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.chuku.getValue());
stockArticleEntity.setDeliveryQuantity(stockArticleEntity.getDeliveryQuantity() + outboundQuantity);
}
distributionStockArticleService.updateById(stockArticleEntity);
//维护预约客户和配送任务装车状态
checkReservationAndDeliveryLoadingStatus(deliveryId,reservationId);
checkReservationAndDeliveryLoadingStatus(deliveryId, reservationId);
}
@Override
public void checkSignStatus(Long packageId, Long reservationId, Long deliveryId) {
if (Func.isNotEmpty(packageId)){
if (Func.isNotEmpty(packageId)) {
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId);
//维护包件所属订单签收状态
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(parcelListEntity.getStockArticleId());
//维护该订单的签收状态
if (Func.isNotEmpty(stockArticleEntity)){
if (Func.isNotEmpty(stockArticleEntity)) {
Integer totalNumber = stockArticleEntity.getTotalNumber();
Integer orderSignNum = distributionLoadscanMapper.selectOrderSignNum(stockArticleEntity.getId());
Integer orderLoadingNum = distributionLoadscanMapper.selectOrderLoadingNum(stockArticleEntity.getId());
if (Func.isNotEmpty(orderSignNum) && orderSignNum>0){
if (totalNumber ==orderSignNum){
if (Func.isNotEmpty(orderSignNum) && orderSignNum > 0) {
if (totalNumber == orderSignNum) {
stockArticleEntity.setOrderStatus(OrderStatusConstant.qianshou.getValue());
}else {
} else {
stockArticleEntity.setOrderStatus(OrderStatusConstant.bufenqianshou.getValue());
}
}
@ -1124,27 +1126,150 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
checkReservationAndDeliveryLoadingStatus(deliveryId,reservationId);
checkReservationAndDeliveryLoadingStatus(deliveryId, reservationId);
checkReservationAndDeliverySigningStatus(reservationId, deliveryId);
//注意:这里对于异常装车的包件也需要进行统计
}
@Override
public void checkRetentionReservationAndDeliveryInfo(Long reservationId, Long deliveryId) {
DistributionReservationEntity distributionReservationEntity = distributionReservationMapper.selectById(reservationId);
if (Func.isNotEmpty(distributionReservationEntity)) {
//重新统计预约单包件数量
List<DistributionReservationStockarticleEntity> distributionReservationStockarticleEntities = distributionReservationMapper.selectStockArticleByReservationId(reservationId);
if (Func.isNotEmpty(distributionReservationStockarticleEntities)) {
for (DistributionReservationStockarticleEntity distributionReservationStockarticleEntity : distributionReservationStockarticleEntities) {
if (distributionReservationStockarticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) {
List<DistributionParcelListEntity> distributionParcelListEntities = distributionReservationMapper.selectPackageByReservationAndStockArticle(reservationId, distributionReservationStockarticleEntity.getStockArticleId());
if (Func.isNotEmpty(distributionParcelListEntities)) {
if (distributionParcelListEntities.size() != distributionReservationStockarticleEntity.getReservationNum()) {
distributionReservationStockarticleEntity.setReservationNum(distributionParcelListEntities.size());
distributionReservationStockarticleMapper.updateById(distributionReservationStockarticleEntity);
}
} else {
distributionReservationStockarticleEntity.setReservationNum(0);
distributionReservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
distributionReservationStockarticleMapper.updateById(distributionReservationStockarticleEntity);
}
} else if (distributionReservationStockarticleEntity.getIsZero().equals(IsOrNoConstant.yes.getValue())) {
//零担需要判断是否已经进行了全部的滞留操作
List<DistributionParcelNumberVO> distributionParcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(distributionReservationStockarticleEntity.getStockArticleId(), distributionReservationStockarticleEntity.getReservationId());
if (Func.isNotEmpty(distributionParcelNumberVOS)) {
int sum = distributionParcelNumberVOS.stream().mapToInt(DistributionParcelNumberVO::getReservationNum).sum();
if (distributionReservationStockarticleEntity.getReservationNum() != sum) {
distributionReservationStockarticleEntity.setReservationNum(sum);
if (sum == 0) {
distributionReservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
distributionReservationStockarticleMapper.updateById(distributionReservationStockarticleEntity);
}
}
}
}
}
//维护预约的预约数量
maintenanceReservationPackageNum(reservationId);
maintenanceDeliveryPackageNum(deliveryId);
}
}
@Override
public void checkRetentionInventoryReservationAndDeliveryInfo(Long reservationId, Long deliveryId, Long orderPackageId) {
DisStockListDetailEntity disStockListDetail = disStockListDetailService.getById(orderPackageId);
if (Func.isNotEmpty(disStockListDetail)){
DistributionReservationStocklistEntity reservationStocklistEntity = distributionReservationMapper.selectInventoryInfoByReservationIdAndInventoryId(reservationId,disStockListDetail.getStockListId());
if (Func.isNotEmpty(reservationStocklistEntity)){
//查询该类型的库存品是否进行了全部滞留
List<DisStockListDetailEntity> list = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, reservationStocklistEntity.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, reservationStocklistEntity.getStocklistId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
reservationStocklistEntity.setReservationNum(0);
if (Func.isNotEmpty(list)){
int sum = list.stream().mapToInt(DisStockListDetailEntity::getNum).sum();
reservationStocklistEntity.setReservationNum(sum);
}
if (reservationStocklistEntity.getReservationNum()==0){
reservationStocklistEntity.setStockListStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
distributionReservationStocklistMapper.updateById(reservationStocklistEntity);
}
}
//维护预约的预约数量
maintenanceReservationPackageNum(reservationId);
maintenanceDeliveryPackageNum(deliveryId);
}
/**
* 维护配送数量和状态
* @param deliveryId
*/
@Transactional
private void maintenanceDeliveryPackageNum(Long deliveryId) {
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId);
if (Func.isNotEmpty(distributionDeliveryListEntity)){
List<DistributionReservationEntity> distributionReservationEntities = distributionDeliveryListMapper.selectReservationByDeliveryListId(distributionDeliveryListEntity.getId());
if (Func.isNotEmpty(distributionReservationEntities)){
int sum = distributionReservationEntities.stream().mapToInt(DistributionReservationEntity::getReservationNum).sum() + distributionReservationEntities.stream().mapToInt(DistributionReservationEntity::getReservationStockListNum).sum();
distributionDeliveryListEntity.setDeliveryNumber(sum);
}else {
distributionDeliveryListEntity.setDeliveryNumber(0);
}
distributionDeliveryListMapper.updateById(distributionDeliveryListEntity);
if (distributionDeliveryListEntity.getDeliveryNumber() == 0){
distributionDeliveryListMapper.deleteById(distributionDeliveryListEntity);
}
}
}
/**
* 维护预约数量和状态
* @param reservationId
*/
@Transactional
private void maintenanceReservationPackageNum(Long reservationId) {
DistributionReservationEntity distributionReservationEntity = distributionReservationMapper.selectById(reservationId);
if (Func.isNotEmpty(distributionReservationEntity)){
List<DistributionReservationStockarticleEntity> distributionReservationStockarticleEntities = distributionReservationMapper.selectStockArticleByReservationId(distributionReservationEntity.getId());
if (Func.isNotEmpty(distributionReservationStockarticleEntities)){
int sum = distributionReservationStockarticleEntities.stream().mapToInt(DistributionReservationStockarticleEntity::getReservationNum).sum();
distributionReservationEntity.setReservationNum(sum);
}else {
distributionReservationEntity.setReservationNum(0);
}
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(distributionReservationEntity.getId());
if (Func.isNotEmpty(distributionReservationStocklistEntities)){
//统计库存品数
int sum = distributionReservationStocklistEntities.stream().mapToInt(DistributionReservationStocklistEntity::getReservationNum).sum();
distributionReservationEntity.setReservationStockListNum(sum);
}else {
distributionReservationEntity.setReservationStockListNum(0);
}
distributionReservationMapper.updateById(distributionReservationEntity);
if (distributionReservationEntity.getReservationNum() ==0 && distributionReservationEntity.getReservationStockListNum() == 0){
distributionReservationMapper.deleteById(distributionReservationEntity);
}
}
}
@Transactional
private void checkReservationAndDeliverySigningStatus(Long reservationId, Long deliveryId) {
//维护客户签收状态
DistributionReservationEntity distributionReservationEntity = distributionReservationMapper.selectById(reservationId);
if (Func.isNotEmpty(distributionReservationEntity)){
if (Func.isNotEmpty(distributionReservationEntity)) {
int reservationTotal = distributionReservationEntity.getReservationNum() + distributionReservationEntity.getReservationStockListNum();
//查询该客户的签收数量
DistributionLoadingNumDTO reservationSigningNum= distributionReservationMapper.selectReservationSigningNum(distributionReservationEntity.getId());
if (Func.isNotEmpty(reservationSigningNum)){
DistributionLoadingNumDTO reservationSigningNum = distributionReservationMapper.selectReservationSigningNum(distributionReservationEntity.getId());
if (Func.isNotEmpty(reservationSigningNum)) {
int reservationSigningQuantity = reservationSigningNum.getPackageSigningQuantity() + reservationSigningNum.getInventorySigningQuantity();
if (reservationSigningQuantity>0){
if (reservationTotal ==reservationSigningQuantity){
if (reservationSigningQuantity > 0) {
if (reservationTotal == reservationSigningQuantity) {
distributionReservationEntity.setSigningStatus(ReservationSigningStatusConstant.yiqianshou.getValue());
}else {
} else {
distributionReservationEntity.setSigningStatus(ReservationSigningStatusConstant.bufenqianshou.getValue());
}
distributionReservationMapper.updateById(distributionReservationEntity);
@ -1155,15 +1280,15 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//维护配送任务签收状态
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(deliveryId);
if (Func.isNotEmpty(distributionDeliveryListEntity)){
if (Func.isNotEmpty(distributionDeliveryListEntity)) {
Integer deliverySigningTotal = distributionDeliveryListEntity.getDeliveryNumber();
DistributionLoadingNumDTO deliverySigningNum= distributionDeliveryListMapper.selectDeliverySigningNum(distributionReservationEntity.getId());
if (Func.isNotEmpty(deliverySigningNum)){
DistributionLoadingNumDTO deliverySigningNum = distributionDeliveryListMapper.selectDeliverySigningNum(distributionReservationEntity.getId());
if (Func.isNotEmpty(deliverySigningNum)) {
int deliverySigningQuantity = deliverySigningNum.getPackageSigningQuantity() + deliverySigningNum.getInventorySigningQuantity();
if (deliverySigningQuantity>0){
if (deliverySigningTotal ==deliverySigningQuantity){
if (deliverySigningQuantity > 0) {
if (deliverySigningTotal == deliverySigningQuantity) {
distributionDeliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.yiwancheng.getValue());
}else {
} else {
distributionDeliveryListEntity.setDeliveryStatus(DeliveryStatusConstant.peisongzhong.getValue());
}
distributionDeliveryListMapper.updateById(distributionDeliveryListEntity);
@ -1198,10 +1323,10 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
.eq(DistributionReservationZeroPackageEntity::getIsDeleted, 0)
.in(DistributionReservationZeroPackageEntity::getZeroPackageStatus, "1", "3")
);
if(!list3.isEmpty()){
if (!list3.isEmpty()) {
//零担数据
int sum = list3.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum();
pack.set(pack.get()+sum);
pack.set(pack.get() + sum);
}
boolean apj = false;
@ -1225,7 +1350,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//查询包件数量
List<DistributionStockPackageVO> distributionStockPackageVOS = distrilbutionBillStockService.listPackageSelf(billLadingId);
int size = distributionStockPackageVOS.size(); //包件数量
pack.set(pack.get()+size);
pack.set(pack.get() + size);
//查询签收数量
List<DistributionBillLadingScanEntity> list2 = distributionBillLadingScanMapper.selectList(Wrappers.<DistributionBillLadingScanEntity>query().lambda()
.eq(DistributionBillLadingScanEntity::getBillLadingId, billLadingId)
@ -1417,10 +1542,10 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
public void changeOrderReservationStatus(DistributionStockArticleDTO stockArticleDTO) {
Long id = stockArticleDTO.getId();
DistributionStockArticleEntity stockArticleEntity = Func.copy(stockArticleDTO, DistributionStockArticleEntity.class);
if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())){
if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) {
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListService.getBaseMapper().selectList(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId, id));
boolean flag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.yiyueyue.getValue()));
if (flag && stockArticleEntity.getTotalNumber()==parcelListEntityList.size()) {
if (flag && stockArticleEntity.getTotalNumber() == parcelListEntityList.size()) {
assert stockArticleEntity != null;
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else {
@ -1433,19 +1558,19 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}
}
}else {
} else {
//检测零担订单是否完成预约
List<DistributionParcelNumberEntity> parcelNumberEntities = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getStockArticleId, stockArticleDTO.getId()));
AtomicInteger unavailableNum = new AtomicInteger();
parcelNumberEntities.forEach(p->{
parcelNumberEntities.forEach(p -> {
unavailableNum.getAndAdd(p.getOutboundQuantity() + p.getDeliveryQuantity());
});
if (unavailableNum.get() == stockArticleDTO.getHandQuantity()){
if (unavailableNum.get() == stockArticleDTO.getHandQuantity()) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}else if (unavailableNum.get() < stockArticleDTO.getHandQuantity()){
} else if (unavailableNum.get() < stockArticleDTO.getHandQuantity()) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}else if (unavailableNum.get() == 0){
} else if (unavailableNum.get() == 0) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
}
}
@ -1505,18 +1630,18 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void stockupUpdateState(StockupDTO stockupDTO,int num) {
public void stockupUpdateState(StockupDTO stockupDTO, int num) {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(stockupDTO.getScanType().equals(1)){
if (stockupDTO.getScanType().equals(1)) {
//包件
//查询包件备货状态
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListMapper.selectList(Wrappers.<DistributionParcelListEntity>query().lambda()
.eq(DistributionParcelListEntity::getOrderPackageCode, stockupDTO.getPacketBarCode())
.eq(ObjectUtils.isNotNull(myCurrentWarehouse),DistributionParcelListEntity::getWarehouseId,myCurrentWarehouse.getId() )
.eq(ObjectUtils.isNotNull(myCurrentWarehouse), DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId())
);
//修改
if(!distributionParcelListEntities.isEmpty()){
if (!distributionParcelListEntities.isEmpty()) {
DistributionParcelListEntity distributionParcelListEntity = new DistributionParcelListEntity();
distributionParcelListEntity.setId(distributionParcelListEntities.get(0).getId());
distributionParcelListEntity.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
@ -1545,7 +1670,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
.eq(DistributionStockEntity::getReservationId, i.getReservationId())
.eq(DistributionStockEntity::getStockupId, stockupDTO.getStockupId())
);
if(!list.isEmpty()){
if (!list.isEmpty()) {
int size = list.stream().mapToInt(DistributionStockEntity::getStockQuantity).sum();
nuy.set(nuy.get() + size);
}
@ -1559,7 +1684,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
nu.set(nu.get() + sum);
}
//修改预约备货状态
if(nuy.get() >= nu.get()){
if (nuy.get() >= nu.get()) {
DistributionReservationEntity reservationEntity = new DistributionReservationEntity();
reservationEntity.setId(i.getReservationId());
reservationEntity.setStockupStatus(ReservationStockupStatusConstant.yibeihuo.getValue());
@ -1631,7 +1756,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
* @param stockupDTO
*/
@Override
public void stockupSelfUpdateState(StockupDTO stockupDTO,int num) {
public void stockupSelfUpdateState(StockupDTO stockupDTO, int num) {
//查询全部订单数据
List<DistrilbutionBillStockEntity> distrilbutionBillStockEntities = distrilbutionBillStockMapper.selectList(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
@ -1647,7 +1772,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
// AtomicReference<Boolean> z = new AtomicReference<>(false);
// AtomicReference<Integer> zeroNum = new AtomicReference<>(0); //零担已备货的数量
AtomicReference<Integer> zeroYuNum = new AtomicReference<>(0); //零担预约的数量
if(!listZero.isEmpty()){
if (!listZero.isEmpty()) {
int sum = listZero.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum();
zeroYuNum.set(sum);
//有
@ -1672,9 +1797,9 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//查询订单的非零担数据
List<DistributionStockPackageVO> distributionStockPackageVOS = distrilbutionBillStockService.listPackageSelf(stockupDTO.getReservationId());
//计算全部预约件数
if(!distributionStockPackageVOS.isEmpty()){
if (!distributionStockPackageVOS.isEmpty()) {
nu.set(distributionStockPackageVOS.size() + zeroYuNum.get());
}else{
} else {
nu.set(zeroYuNum.get());
}
// distrilbutionBillStockEntities.forEach(i -> {
@ -1727,11 +1852,11 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
//修改
}
} else {
if(i == 0){
if (i == 0) {
//修改备货状态
distributionStockup.setId(stockupDTO.getStockupId());
distributionStockup.setStockupStatus(StockupStatusConstant.yibeihuo.getValue());
}else{
} else {
//修改备货状态
distributionStockup.setId(stockupDTO.getStockupId());
distributionStockup.setStockupStatus(StockupStatusConstant.beihuozhong.getValue());
@ -1748,27 +1873,28 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
/**
* 查询是否有没有备货的数据
*
* @param stockArticleId
* @param parcelListId
* @param reservationId
* @param typeService
* @return
*/
public Boolean getDoneStockUp(Long stockArticleId,Long parcelListId,Long reservationId,String typeService){
public Boolean getDoneStockUp(Long stockArticleId, Long parcelListId, Long reservationId, String typeService) {
QueryWrapper<DistributionStockEntity> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("stock_article",stockArticleId);
queryWrapper1.eq("parcel_list_id",parcelListId);
queryWrapper1.eq("stock_article", stockArticleId);
queryWrapper1.eq("parcel_list_id", parcelListId);
if(typeService.equals("3")){
queryWrapper1.eq("bill_lading_id",reservationId);
}else{
queryWrapper1.eq("reservation_id",reservationId);
if (typeService.equals("3")) {
queryWrapper1.eq("bill_lading_id", reservationId);
} else {
queryWrapper1.eq("reservation_id", reservationId);
}
DistributionStockEntity stockEntity = distributionStockService.selectOne(queryWrapper1);
if(ObjectUtils.isNull(stockEntity)){
if (ObjectUtils.isNull(stockEntity)) {
//没有扫
return true;
}else{
} else {
return false;
}
@ -1776,26 +1902,27 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
/**
* 查询是否有没有备货的库存品数据
*
* @param stockListId
* @param reservationId
* @param typeService
* @return
*/
public Boolean getDoneStockUpStock(Long stockListId,Long reservationId,String typeService,Long stockupId,Integer num ){
public Boolean getDoneStockUpStock(Long stockListId, Long reservationId, String typeService, Long stockupId, Integer num) {
QueryWrapper<DistributionStockEntity> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("stock_list_id",stockListId);
queryWrapper1.eq("stockup_id",stockupId);
queryWrapper1.eq("type","2");
queryWrapper1.eq("stock_list_id", stockListId);
queryWrapper1.eq("stockup_id", stockupId);
queryWrapper1.eq("type", "2");
if(typeService.equals("3")){
queryWrapper1.eq("bill_lading_id",reservationId);
}else{
queryWrapper1.eq("reservation_id",reservationId);
if (typeService.equals("3")) {
queryWrapper1.eq("bill_lading_id", reservationId);
} else {
queryWrapper1.eq("reservation_id", reservationId);
}
List<DistributionStockEntity> stockEntityList = distributionStockService.selectList(queryWrapper1);
if(!stockEntityList.isEmpty() && stockEntityList.size() >= num){
if (!stockEntityList.isEmpty() && stockEntityList.size() >= num) {
return true; //已完成
} else{
} else {
return false; //未完成
}

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

File diff suppressed because it is too large Load Diff

118
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java

@ -16,24 +16,17 @@
*/
package com.logpm.warehouse.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DisStockListDetailEntity;
import com.logpm.distribution.entity.DistributionLoadscanEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionParcelNumberEntity;
import com.logpm.distribution.feign.IDistributionDeliveryListClient;
import com.logpm.distribution.feign.IDistributionLoadscanClient;
import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.distribution.feign.IDistributionReservationClient;
import com.logpm.distribution.vo.DistributionDeliveryListVO;
import com.logpm.distribution.vo.DistributionDeliverySelfVO;
import com.logpm.oldproject.feign.IWarehouseClient;
import com.logpm.warehouse.bean.Resp;
import com.logpm.warehouse.dto.*;
import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
@ -43,7 +36,6 @@ import com.logpm.warehouse.mapper.WarehouseRetentionRecordMapper;
import com.logpm.warehouse.service.IWarehouseRetentionRecordService;
import com.logpm.warehouse.service.IWarehouseRetentionScanService;
import com.logpm.warehouse.vo.WarehouseRetentionRecordVO;
import com.logpm.warehouse.vo.WarehouseRetentionScanVO;
import com.logpm.warehouse.vo.WarehouseWaybillDetentionVO;
import com.logpm.warehouse.wrapper.WarehouseRetentionRecordWrapper;
import com.logpm.warehouse.wrapper.WarehouseRetentionScanWrapper;
@ -52,7 +44,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.retention.RetentionTypeConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
@ -64,6 +55,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -84,7 +76,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
private final IWarehouseRetentionScanService warehouseRetentionScanService;
private final IDistributionDeliveryListClient deliveryListClient;
private final IBasicdataWarehouseClient warehouseClient;
// private final IDistributionReservationClient distributionReservationClient;
// private final IDistributionReservationClient distributionReservationClient;
private final IDistributionDeliveryListClient distributionDeliveryListClient;
@Override
@ -94,7 +86,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
@Override
public IPage<WarehouseWaybillDetentionVO> selectWarehouseRetentionWaybillPage(IPage<WarehouseWaybillDetentionVO> page, WarehouseWaybillDetentionVO warehouseWaybillDetentionVO) {
List<WarehouseWaybillDetentionVO> warehouseRetentionRecordVOS = baseMapper.selectWarehouseWaybillRecordPage(page,warehouseWaybillDetentionVO);
List<WarehouseWaybillDetentionVO> warehouseRetentionRecordVOS = baseMapper.selectWarehouseWaybillRecordPage(page, warehouseWaybillDetentionVO);
return page.setRecords(warehouseRetentionRecordVOS);
}
@ -105,7 +97,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
page.setCurrent(retentionDTO.getPageNum());
page.setSize(retentionDTO.getPageSize());
IPage<WarehouseRetentionRecordEntity> pageList = baseMapper.retentionPackageList(page,retentionDTO);
IPage<WarehouseRetentionRecordEntity> pageList = baseMapper.retentionPackageList(page, retentionDTO);
return WarehouseRetentionRecordWrapper.build().pageVO(pageList);
}
@ -116,14 +108,14 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
//查询装车记录表,存入滞留包件记录
//查询配送装车记录表是否有包件记录
DistributionLoadscanEntity loadscanEntity = distributionLoadscanClient.getByOrderPackageCode(orderPackageCode);
if(Objects.isNull(loadscanEntity)){
log.warn("#################retentionScanPackage: 未找到配送装车记录 orderPackageCode="+orderPackageCode);
return R.fail(403,"未找到配送装车记录");
if (Objects.isNull(loadscanEntity)) {
log.warn("#################retentionScanPackage: 未找到配送装车记录 orderPackageCode=" + orderPackageCode);
return R.fail(403, "未找到配送装车记录");
}
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCode(orderPackageCode);
if(Objects.isNull(parcelListEntity)){
log.warn("#################retentionScanPackage: 未找到包件数据 orderPackageCode="+orderPackageCode);
return R.fail(403,"未找到包件数据");
if (Objects.isNull(parcelListEntity)) {
log.warn("#################retentionScanPackage: 未找到包件数据 orderPackageCode=" + orderPackageCode);
return R.fail(403, "未找到包件数据");
}
WarehouseRetentionRecordEntity retentionRecordEntity = new WarehouseRetentionRecordEntity();
@ -147,7 +139,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
WarehouseRetentionRecordEntity retentionRecordEntity = this.getOne(Wrappers.<WarehouseRetentionRecordEntity>query().lambda()
.eq(WarehouseRetentionRecordEntity::getRetentionType, RetentionTypeConstant.peisongzhiliu.getValue())
.eq(WarehouseRetentionRecordEntity::getTaskId, deliveryId));
if (Func.isEmpty(retentionRecordEntity)){
if (Func.isEmpty(retentionRecordEntity)) {
return null;
}
WarehouseRetentionRecordVO warehouseRetentionRecordVO = WarehouseRetentionRecordWrapper.build().entityVO(retentionRecordEntity);
@ -155,7 +147,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
List<WarehouseRetentionScanEntity> retentionScanEntityList = warehouseRetentionScanService.list(Wrappers.<WarehouseRetentionScanEntity>query().lambda()
.eq(WarehouseRetentionScanEntity::getDeliveryId, retentionRecordEntity.getTaskId())
.eq(WarehouseRetentionScanEntity::getRefId, retentionRecordEntity.getId()));
if (Func.isNotEmpty(retentionScanEntityList)){
if (Func.isNotEmpty(retentionScanEntityList)) {
warehouseRetentionRecordVO.setRetentionScanVOList(WarehouseRetentionScanWrapper.build().listVO(retentionScanEntityList));
}
return warehouseRetentionRecordVO;
@ -165,13 +157,13 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
@Transactional
public R saveRetentionList(WarehouseRetentionRecordDTO warehouseRetentionRecordDTO) {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)){
if (Func.isEmpty(myCurrentWarehouse)) {
return null;
}
List<WarehouseRetentionScanDTO> warehouseRetentionScanDTOS = warehouseRetentionRecordDTO.getWarehouseRetentionScanDTOS();
if (Func.isEmpty(warehouseRetentionScanDTOS)){
if (Func.isEmpty(warehouseRetentionScanDTOS)) {
log.error("############用户提交空滞留列表");
return Resp.scanFail("操作失败","无滞留包件信息");
return Resp.scanFail("操作失败", "无滞留包件信息");
}
BladeUser user = AuthUtil.getUser();
//TODO 保存车次数据还需要处理
@ -187,7 +179,8 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
warehouseRetentionRecordEntity.setRetentionCreateUserName(user.getUserName());
this.save(warehouseRetentionRecordEntity);
AtomicInteger retentionTotal = new AtomicInteger();
warehouseRetentionScanDTOS.forEach(r->{
AtomicBoolean saveFlah = new AtomicBoolean(false);
warehouseRetentionScanDTOS.forEach(r -> {
//查询是否进行多次滞留
WarehouseRetentionScanEntity retentionScanServiceOne = warehouseRetentionScanService.getOne(Wrappers.<WarehouseRetentionScanEntity>query().lambda()
.eq(WarehouseRetentionScanEntity::getConditions, r.getConditions())
@ -199,31 +192,44 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
.ne(WarehouseRetentionScanEntity::getCancelRetentionStatus, IsOrNoConstant.no.getValue())
);
//避免重复添加相同的滞留包件数据
if (Func.isEmpty(retentionScanServiceOne)){
if (Func.isEmpty(retentionScanServiceOne)) {
r.setRetentionScanTime(new Date());
r.setRetentionScanUserId(user.getUserId());
r.setRetentionScanUsername(user.getNickName());
r.setRetentionQuantity(r.getRetentionQuantity());
retentionTotal.getAndAdd(r.getRetentionQuantity());
r.setDeliveryId(warehouseRetentionRecordDTO.getDeliveryId());
r.setRefId(warehouseRetentionRecordEntity.getId());
warehouseRetentionScanService.save(Func.copy(r,WarehouseRetentionScanEntity.class));
warehouseRetentionScanService.save(Func.copy(r, WarehouseRetentionScanEntity.class));
//进行滞留之后需要对包件进行取消配送的操作
if (r.getConditions().equals(3)){
//零担滞留
}else {
//包件滞留
distributionDeliveryListClient.retentionDeliveryReservationPackage(r.getDeliveryId(),r.getReservationId(),r.getOrderPackageId(),r.getConditions());
Integer conditions = r.getConditions();
switch (conditions) {
case 1:
//订制品
saveFlah.set(distributionDeliveryListClient.retentionDeliveryReservationPackage(r.getDeliveryId(), r.getReservationId(), r.getOrderPackageId(), r.getConditions()));
break;
case 2:
//库存品
saveFlah.set(distributionDeliveryListClient.retentionDeliveryReservationInventory(r.getDeliveryId(), r.getReservationId(), r.getOrderPackageId()));
break;
case 3:
//零担
saveFlah.set(distributionDeliveryListClient.retentionDeliveryReservationZeroPackage(r.getDeliveryId(), r.getReservationId(), r.getOrderPackageId(),r.getRetentionQuantity(),r.getOrderId()));
break;
}
}
//进行滞留操作的包件需要和原来订单 预约进行绑定解除
//TODO 需要一个取消配送包件的方法
// reservationClient.retentionCancelReservationPack();
});
if (saveFlah.get()){
warehouseRetentionRecordEntity.setRetentionQuantity(retentionTotal.get());
this.updateById(warehouseRetentionRecordEntity);
return Resp.scanSuccess("操作成功","操作成功");
return Resp.scanSuccess("操作成功", "操作成功");
}else {
throw new RuntimeException("服务器正忙...");
}
}
@Override
@ -231,13 +237,13 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
// 获取当前登录的仓库信息
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(ObjectUtils.isNull(myCurrentWarehouse)){
if (ObjectUtils.isNull(myCurrentWarehouse)) {
throw new ServiceException("没有仓库信息!");
}
// 用户勾选数据的ids
Object ids = paramMap.get("ids");
List<String> idArr = null;
if (null != ids && !ids.toString().equals("")){
if (null != ids && !ids.toString().equals("")) {
idArr = Arrays.asList(paramMap.get("ids").toString().split(","));
}
@ -255,13 +261,13 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
public R updateRetentionList(WarehouseRetentionRecordDTO warehouseRetentionScanDTOS) {
// 获取当前登录的仓库信息
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(ObjectUtils.isNull(myCurrentWarehouse)){
return R.fail(403,"无仓库信息");
if (ObjectUtils.isNull(myCurrentWarehouse)) {
return R.fail(403, "无仓库信息");
}
List<WarehouseRetentionScanDTO> warehouseRetentionScanDTOList = warehouseRetentionScanDTOS.getWarehouseRetentionScanDTOS();
if (Func.isEmpty(warehouseRetentionScanDTOList)){
log.error("##########缺少滞留包件列表:{}",warehouseRetentionScanDTOList);
return Resp.scanFail("无滞留包件信息","无滞留包件信息");
if (Func.isEmpty(warehouseRetentionScanDTOList)) {
log.error("##########缺少滞留包件列表:{}", warehouseRetentionScanDTOList);
return Resp.scanFail("无滞留包件信息", "无滞留包件信息");
}
//如果滞留全部为空,这里执行删除操作
//查询出该滞留任务是否存在
@ -269,21 +275,21 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
.eq(WarehouseRetentionScanEntity::getDeliveryId, warehouseRetentionScanDTOS.getDeliveryId())
.eq(WarehouseRetentionScanEntity::getRefId, warehouseRetentionScanDTOS.getId()));
WarehouseRetentionRecordEntity retentionRecordEntity = this.getById(warehouseRetentionScanDTOS.getId());
if(Func.isNotEmpty(retentionScanEntityList)){
if (Func.isNotEmpty(retentionScanEntityList)) {
BladeUser user = AuthUtil.getUser();
Map<Long, WarehouseRetentionScanEntity> retentionPackageMap = retentionScanEntityList.stream().collect(Collectors.toMap(WarehouseRetentionScanEntity::getOrderPackageId, Function.identity(), (k1, k2) -> k2));
warehouseRetentionScanDTOList.forEach(rs->{
if (Func.isNotEmpty(retentionPackageMap.get(rs.getOrderPackageId()))){
warehouseRetentionScanDTOList.forEach(rs -> {
if (Func.isNotEmpty(retentionPackageMap.get(rs.getOrderPackageId()))) {
//查看是否是零担,如果是零担需要查看是否发生数量修改
WarehouseRetentionScanEntity warehouseRetentionScanEntity = retentionPackageMap.get(rs.getOrderPackageId());
if (retentionPackageMap.get(rs.getOrderPackageId()).getConditions()==3){
if (retentionPackageMap.get(rs.getOrderPackageId()).getConditions() == 3) {
//零担查看是否发生数据修改
if (warehouseRetentionScanEntity.getRetentionQuantity() != rs.getRetentionQuantity() && rs.getRetentionQuantity()>0){
if (warehouseRetentionScanEntity.getRetentionQuantity() != rs.getRetentionQuantity() && rs.getRetentionQuantity() > 0) {
warehouseRetentionScanEntity.setRetentionQuantity(rs.getRetentionQuantity());
warehouseRetentionScanService.updateById(warehouseRetentionScanEntity);
}
}
}else {
} else {
//在原列表中查询不到,这里视为新增滞留包件
rs.setRetentionScanTime(new Date());
rs.setRetentionScanUserId(user.getUserId());
@ -292,7 +298,21 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
// retentionTotal.getAndAdd(r.getRetentionQuantity());
rs.setDeliveryId(warehouseRetentionScanDTOS.getDeliveryId());
rs.setRefId(retentionRecordEntity.getId());
warehouseRetentionScanService.save(Func.copy(rs,WarehouseRetentionScanEntity.class));
warehouseRetentionScanService.save(Func.copy(rs, WarehouseRetentionScanEntity.class));
switch (rs.getConditions()){
case 1:
//订制品
distributionDeliveryListClient.retentionDeliveryReservationPackage(rs.getDeliveryId(), rs.getReservationId(), rs.getOrderPackageId(), rs.getConditions());
break;
case 2:
//库存品
distributionDeliveryListClient.retentionDeliveryReservationInventory(rs.getDeliveryId(), rs.getReservationId(), rs.getOrderPackageId());
break;
case 3:
//零担
// distributionDeliveryListClient.retentionDeliveryReservationZeroPackage(rs.getDeliveryId(), rs.getReservationId(), rs.getOrderPackageId(),rs.getRetentionQuantity());
break;
}
}
});
}
@ -302,7 +322,7 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
.eq(WarehouseRetentionScanEntity::getRefId, warehouseRetentionScanDTOS.getId())).stream().mapToInt(WarehouseRetentionScanEntity::getRetentionQuantity).sum();
retentionRecordEntity.setRetentionQuantity(retentionTotal);
this.updateById(retentionRecordEntity);
return Resp.scanSuccess("操作成功","操作成功");
return Resp.scanSuccess("操作成功", "操作成功");
}
@Override

Loading…
Cancel
Save