Browse Source

市配零担订单预约

training
kilo 1 year ago
parent
commit
9437733ca6
  1. 45
      blade-biz-common/src/main/java/org/springblade/common/constant/common/IsOrNoConstant.java
  2. 6
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelNumberEntity.java
  3. 9
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelNumberVO.java
  4. 6
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionStockArticleVO.java
  5. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java
  6. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java
  7. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionParcelListDTO.java
  8. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleDTO.java
  9. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.xml
  10. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  11. 20
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  12. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
  13. 24
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
  14. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationService.java
  15. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java
  16. 37
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  17. 29
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java
  18. 6
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  19. 460
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  20. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java

45
blade-biz-common/src/main/java/org/springblade/common/constant/common/IsOrNoConstant.java

@ -0,0 +1,45 @@
package org.springblade.common.constant.common;
/**
* 订单冻结状态枚举
* 对应码表 freeze_status
* @author pref
*/
public enum IsOrNoConstant {
no("否","0"),
yes("是","1");
/**
* 状态
*/
private String name;
/**
*
*/
private String value;
private IsOrNoConstant(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

6
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionParcelNumberEntity.java

@ -92,4 +92,10 @@ public class DistributionParcelNumberEntity extends TenantEntity {
@ApiModelProperty(value = "签收数量")
private Integer signinQuantity;
/**
* 出库数量
*/
@ApiModelProperty(value = "出库数量")
private Integer outboundQuantity;
}

9
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionParcelNumberVO.java

@ -17,6 +17,7 @@
package com.logpm.distribution.vo;
import com.logpm.distribution.entity.DistributionParcelNumberEntity;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -32,4 +33,12 @@ import lombok.EqualsAndHashCode;
public class DistributionParcelNumberVO extends DistributionParcelNumberEntity {
private static final long serialVersionUID = 1L;
private String firsts; //零担包件名称
// private Integer quantity; //总数量
private String warehouse; //零担包件名称
private String orderCode; //订单自编码
private String serviceNumber; //服务号
private Integer reservationNum; //预约数量
private Long stockArticleId; //订单ID
}

6
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionStockArticleVO.java

@ -122,6 +122,12 @@ public class DistributionStockArticleVO extends DistributionStockArticleEntity {
@ApiModelProperty(value = "包件信息")
private List<DistributionParcelListVO> packageList;
/**
* 使用包件信息
*/
@ApiModelProperty(value = "包件信息")
private List<DistributionParcelNumberVO> parcelNumberVOS;
/**
* 装车数量

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

@ -26,6 +26,7 @@ import com.logpm.distribution.dto.DistributionReservationDTO;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.excel.DistributionReservationExcel;
import com.logpm.distribution.service.IDistributionReservationService;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionReservationVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.wrapper.DistributionReservationWrapper;
@ -332,6 +333,17 @@ public class DistributionReservationController extends BladeController {
return R.data(page);
}
/**
* 预约列表 详情
*/
@GetMapping("/getReservationZeroOrderDetail")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入distrbutionReservation")
public R<List<DistributionParcelNumberVO>> getReservationZeroOrderDetail(@ApiIgnore @RequestParam Long id,@ApiIgnore @RequestParam Long reservationId) {
List<DistributionParcelNumberVO> parcelNumberVOS = reservationService.getReservationZeroOrderDetail(id,reservationId);
return R.data(parcelNumberVOS);
}
}

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java

@ -28,6 +28,7 @@ import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.excel.DistributionStockArticleImporter;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.OrderPackgeCodeDataVO;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
@ -132,6 +133,22 @@ public class DistributionStockArticleController extends BladeController {
return R.data(pages);
}
/**
* 查询零担订单详情
*/
@GetMapping("/getZeroOrderDetail")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionStockArticle")
public R<List<DistributionParcelNumberVO>> getZeroOrderDetail(@ApiIgnore @RequestParam Long id) {
List<DistributionParcelNumberVO> parcelNumberVOS = distributionStockArticleService.getZeroOrderDetail(id);
return R.data(parcelNumberVOS);
// IPage<DistributionStockArticleEntity> pages = distributionStockArticleService.pageWhole(Condition.getPage(query), distributionStockArticle);
// return R.data(DistributionStockArticleWrapper.build().pageVO(pages));
}
// BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
// if (Func.isEmpty(myCurrentWarehouse)){

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionParcelListDTO.java

@ -39,6 +39,7 @@ public class DistributionParcelListDTO extends DistributionParcelListEntity {
private String materialName;
private String materialCode;
private String materialUnit;
private Integer reservationNum; //预约数量
private String sku;
private List<String> ids;

10
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleDTO.java

@ -19,6 +19,7 @@ package com.logpm.distribution.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -61,7 +62,14 @@ public class DistributionStockArticleDTO extends DistributionStockArticleEntity
// * 包件数量
// */
@TableField(exist = false)
private List<DistributionParcelListEntity> packageListInfo;
private List<DistributionParcelListDTO> packageListInfo;
/**
// * 零担订单品类信息
// */
@TableField(exist = false)
private List<DistributionParcelNumberVO> parcelNumberVOS;
}

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelNumberMapper.xml

@ -36,4 +36,5 @@
SELECT * FROM logpm_distribution_parcel_number ${ew.customSqlSegment}
</select>
</mapper>

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

@ -226,4 +226,12 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
* @return
*/
List<DistributionStockArticleVO> selectOrderInfoByReservationId(Long parseLong);
/**
* 查询预约零担订单详情
* @param id
* @param reservationId
* @return
*/
List<DistributionParcelNumberVO> selectReservationZeroOrderDetail(@Param("stockArticleId") Long id,@Param("reservationId") Long reservationId);
}

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

@ -966,5 +966,25 @@
LEFT JOIN logpm_distribution_stock_article AS ldsa ON ldrs.stock_article_id = ldsa.id
WHERE lds.id = #{reservationId} and ldrs.stock_article_status != 2
</select>
<select id="selectReservationZeroOrderDetail"
resultType="com.logpm.distribution.vo.DistributionParcelNumberVO">
SELECT
ldpl.firsts,
ldrzp.parcel_list_id AS parcelListId,
ldrs.stock_article_id AS stockArticleId,
ldrzp.quantity AS reservationNum ,
ldpn.quantity,
ldpn.hand_quantity,
ldpn.delivery_quantity,
ldpn.signin_quantity,
ldpn.outbound_quantity
FROM
logpm_distribution_reservation_stockarticle AS ldrs
LEFT JOIN logpm_distribution_reservation_zero_package AS ldrzp ON ldrs.stock_article_id = ldrzp.stock_article_id
LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldrzp.parcel_list_id = ldpl.id
LEFT JOIN logpm_distribution_parcel_number AS ldpn ON ldpl.id = ldpn.parcel_list_id
WHERE
ldrs.stock_article_id = #{stockArticleId} AND ldrzp.reservation_id=#{reservationId} and ldrs.stock_article_status in ('1','3')
</select>
</mapper>

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

@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.dto.DistributionStockArticleOweDTO;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionStockArticleQRCodeVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.app.queryOrderVO;
@ -99,4 +100,10 @@ public interface DistributionStockArticleMapper extends BaseMapper<DistributionS
List<DistributionStockArticleEntity> selectAllDistributionOrder(@Param("par")DistributionStockArticleOweDTO stockArticleEntity);
/**
* 查询零担订单详情
* @param id
* @return
*/
List<DistributionParcelNumberVO> getZeroOrderDetail(@Param("stockArticleId") Long id);
}

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

@ -269,6 +269,7 @@
ldsa.inventory_person_id,
ldsa.available_quantity,
ldsa.is_have_data,
ldsa.is_zero,
ldsa.stock_article_code,
ldsa.dealer_name,
ldsa.dealer_code,
@ -576,6 +577,29 @@
</where>
</select>
<select id="getZeroOrderDetail" resultType="com.logpm.distribution.vo.DistributionParcelNumberVO">
SELECT
ldpn.id AS id,
ldpn.stock_article_id AS stockArticleId,
ldpn.parcel_list_id AS parcelListId,
ldpl.firsts AS firsts,
ldpl.warehouse AS warehouse,
ldpl.order_code AS orderCode,
ldpl.service_number AS serviceNumber,
ldpl.brand_name AS brandName,
ldpn.quantity AS quantity,
ldpn.hand_quantity AS handQuantity,
ldpn.delivery_quantity AS deliveryQuantity,
ldpn.outbound_quantity AS outboundQuantity,
ldpn.signin_quantity AS signinQuantity,
0 AS reservationNum
FROM
logpm_distribution_stock_article AS ldsa
LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldsa.id = ldpl.stock_article_id
LEFT JOIN logpm_distribution_parcel_number AS ldpn ON ldpn.parcel_list_id = ldpl.id
WHERE
ldsa.id = #{stockArticleId}
</select>
<!-- <select id="selectAllDistributionOrder"-->
<!-- resultType="com.logpm.distribution.entity.DistributionStockArticleEntity">-->
<!-- SELECT-->

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

@ -22,10 +22,7 @@ import com.logpm.distribution.dto.DistributionDeliveryAllocationDTO;
import com.logpm.distribution.dto.DistributionReservationDTO;
import com.logpm.distribution.entity.DistributionReservationEntity;
import com.logpm.distribution.excel.DistributionReservationExcel;
import com.logpm.distribution.vo.DistributionReservationVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.DistributionStockupOrderListVO;
import com.logpm.distribution.vo.DistributionStockupStockListVO;
import com.logpm.distribution.vo.*;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
@ -213,4 +210,11 @@ public interface IDistributionReservationService extends BaseService<Distributio
* @return
*/
Integer getReservationNumStockSelf(Long reservationId, Long stockListId);
/**
* 查询预约计划中零担订单详情
* @param id
* @return
*/
List<DistributionParcelNumberVO> getReservationZeroOrderDetail(Long id,Long reservationId);
}

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java

@ -22,6 +22,7 @@ import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.app.queryOrderDTO;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.vo.DistributionParcelNumberVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.OrderPackgeCodeDataVO;
import com.logpm.distribution.vo.app.queryOrderVO;
@ -163,4 +164,11 @@ public interface IDistributionStockArticleService extends BaseService<Distributi
* @param data
*/
void importMaterial(List<DistributionStockArticleExcel> data);
/**
* 查询零担信息的详情
* @param id
* @return
*/
List<DistributionParcelNumberVO> getZeroOrderDetail(Long id);
}

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

@ -23,6 +23,7 @@ import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.InventoryLoadingStatusConstant;
import org.springblade.common.constant.Inventory.InventoryPackageStatusConstant;
import org.springblade.common.constant.Inventory.InventorySigningStatusConstant;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
import org.springblade.common.constant.order.OrderReservationStatusConstant;
@ -81,6 +82,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
private final IWarehouseUpdownTypeClient warehouseUpdownTypeClient;
private final IBasicdataWarehouseClient warehouseClient;
private final IDistributionReservationZeroPackageService reservationZeroPackageService;
private final IDistributionParcelNumberService distributionParcelNumberService;
@Override
@ -1117,19 +1119,36 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
public void changeOrderReservationStatus(DistributionStockArticleDTO stockArticleDTO) {
Long id = stockArticleDTO.getId();
DistributionStockArticleEntity stockArticleEntity = Func.copy(stockArticleDTO, DistributionStockArticleEntity.class);
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) {
assert stockArticleEntity != null;
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else {
flag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.daiyuyue.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) {
assert stockArticleEntity != null;
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else {
assert stockArticleEntity != null;
flag = parcelListEntityList.stream().allMatch(p -> p.getOrderPackageReservationStatus().equals(OrderPackageReservationStatusConstant.daiyuyue.getValue()));
if (flag) {
assert stockArticleEntity != null;
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
} else {
assert stockArticleEntity != null;
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}
}
}else {
//检测零担订单是否完成预约
List<DistributionParcelNumberEntity> parcelNumberEntities = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getStockArticleId, stockArticleDTO.getId()));
AtomicInteger unavailableNum = new AtomicInteger();
parcelNumberEntities.forEach(p->{
unavailableNum.getAndAdd(p.getOutboundQuantity() + p.getDeliveryQuantity());
});
if (unavailableNum.get() == stockArticleDTO.getHandQuantity()){
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
}else if (unavailableNum.get() < stockArticleDTO.getHandQuantity()){
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.bufenyuyue.getValue());
}else if (unavailableNum.get() == 0){
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.daiyuyue.getValue());
}
}
distributionStockArticleService.updateById(stockArticleEntity);

29
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java

@ -31,16 +31,14 @@ import com.logpm.distribution.service.IDistributionDeliveryInfoService;
import com.logpm.distribution.service.IDistributionLoadscanService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.vo.DistributionDeliveryInfoVO;
import com.logpm.distribution.vo.DistributionParcelListVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.DistributionStockListVO;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.app.DistributionAppParcelListVO;
import com.logpm.distribution.vo.app.DistributionAppStockArticleVO;
import com.logpm.distribution.wrapper.DistributionParcelListWrapper;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.loading.LoadingStatusConstant;
import org.springblade.common.constant.reservation.ReservationOrderStatusConstant;
import org.springblade.common.serviceConstant.ServiceConstant;
@ -180,11 +178,11 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<Distrib
distributionAppStockArticleVO.setReservationNum(ord.getReservationNum());
distributionAppStockArticleVO.setIsZero(ord.getIsZero());
Map<Long, DistributionLoadscanEntity> loadingPackage = new HashMap<>();
if (ord.getIsZero().equals("0")){
if (Func.isNotEmpty(orderInfo.get(ord.getId()))){
loadingPackage = orderInfo.get(ord.getId()).stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2));
}
if (ord.getIsZero().equals(IsOrNoConstant.no.getValue())){
List<DistributionParcelListEntity> parcelListEntities = distributionReservationMapper.selectPackageByReservationAndStockArticle(reservationId, ord.getId());
if (Func.isNotEmpty(orderInfo.get(ord.getId()))){
loadingPackage = orderInfo.get(ord.getId()).stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2));
}
List<DistributionAppParcelListVO> ks = new ArrayList<>();
AtomicInteger atomicInteger = new AtomicInteger();
// 装车数量
@ -198,7 +196,8 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<Distrib
loadingPackage.remove(parcelListEntity.getId());
loadingNum.getAndAdd(parcelListEntity.getQuantity());
//这里就是表示计划中的包件装车了
//需要对该包件的装车数量进行统计
//需要对该包件的装车数量进行统计.
}else {
//此时这个订单内还存在装车的包件,这些包件就是异常装车的包件了
appParcelListVO.setScanStatus(1);
@ -237,6 +236,18 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<Distrib
//查询该订单
}else {
//TODO 无数据源订单...
//查询该零担订单计划数量信息
List<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(ord.getId(), reservationId);
List<DistributionAppParcelListVO> ks = new ArrayList<>();
AtomicInteger atomicInteger = new AtomicInteger();
AtomicInteger loadingNum = new AtomicInteger();
for (DistributionParcelNumberVO parcelNumberVO : parcelNumberVOS) {
DistributionAppParcelListVO appParcelListVO = Func.copy(parcelNumberVO, DistributionAppParcelListVO.class);
}
}
distributionAppStockArticleVOS.add(distributionAppStockArticleVO);
if (Func.isNotEmpty(orderInfo.get(ord.getId()))){

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

@ -2267,7 +2267,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
//现在前端进行订单提交必然会携带包件信息
List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
AtomicInteger orderPackageNum = new AtomicInteger();
if (!packageListInfo.isEmpty()) {
packageListInfo.forEach(p -> {
@ -2386,7 +2386,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (Func.isEmpty(oldOrder.get(s.getId()))) {
//新增订单
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
if (packageListInfo.size() > 0) {
packageListInfo.forEach(p -> {
@ -2427,7 +2427,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
.ne(DistributionReservationPackageEntity::getPacketBarStatus, ReservationPackageStatusConstant.quxiao.getValue()))
.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getParceListId));
//查看订单包件是否发生变化
List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
//此订单包件数量统计
AtomicInteger packageNum = new AtomicInteger();
if (packageListInfo.size() > 0) {

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

@ -40,12 +40,11 @@ import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.*;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryLoadingStatusConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
import org.springblade.common.constant.order.OrderReservationStatusConstant;
import org.springblade.common.constant.orderpackage.OrderPackageFreezeStatusConstant;
import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant;
import org.springblade.common.constant.orderpackage.OrderPackageStockupStatusConstant;
import org.springblade.common.constant.orderpackage.*;
import org.springblade.common.constant.reservation.*;
import org.springblade.common.constant.signing.SignforStatusConstant;
import org.springblade.common.constant.stockup.StockAssignStatusConstant;
@ -72,6 +71,7 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -147,6 +147,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private IDistributionSignforService distributionSignforService;
@Autowired
private IDistributionReservationZeroPackageService distributionReservationZeroPackageService;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient;
@ -175,6 +179,12 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private IWayBillClient wayBillClient;
@Autowired
private IDistributionParcelNumberService distributionParcelNumberService;
@Autowired
private DistributionParcelNumberMapper distributionParcelNumberMapper;
@ -330,7 +340,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity();
//预约订单数量
AtomicInteger packageNum = new AtomicInteger();
List<DistributionParcelListEntity> packageList = s.getPackageListInfo();
List<DistributionParcelListDTO> packageList = s.getPackageListInfo();
if (Func.isEmpty(packageList)) {
Map<String, Object> map = new HashMap<>();
map.put("stockArticleId", s.getId());
@ -1072,12 +1082,19 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
List<DistributionStockArticleEntity> distrinbutionStockArticleVOS = distributionStockArticleMapper.getStockArticleByReservationId(reservationEntity.getId());
List<DistributionStockArticleVO> stockArticleVOS = DistributionStockArticleWrapper.build().listVO(distrinbutionStockArticleVOS);
stockArticleVOS.forEach(s -> {
//这里查询两个东西,一个是该订单在预约中所被选取的包件信息,以及该订单下所有的包件列表
List<DistributionParcelListEntity> pageVOList = distributionParcelListMapper.getPageVOList(s.getId());
s.setParcelListVOS(DistributionParcelListWrapper.build().listVO(pageVOList));
//这里查询出该订单下已经被选取的包件信息
List<DistributionParcelListEntity> packageVOList = distributionReservationPackageMapper.selectPackageVOList(reservationEntity.getId(), s.getId());
s.setPackageList(DistributionParcelListWrapper.build().listVO(packageVOList));
//区分正常订单和零担订单
if (s.getIsZero().equals(IsOrNoConstant.no.getValue())){
//这里查询两个东西,一个是该订单在预约中所被选取的包件信息,以及该订单下所有的包件列表
List<DistributionParcelListEntity> pageVOList = distributionParcelListMapper.getPageVOList(s.getId());
s.setParcelListVOS(DistributionParcelListWrapper.build().listVO(pageVOList));
//这里查询出该订单下已经被选取的包件信息
List<DistributionParcelListEntity> packageVOList = distributionReservationPackageMapper.selectPackageVOList(reservationEntity.getId(), s.getId());
s.setPackageList(DistributionParcelListWrapper.build().listVO(packageVOList));
}else {
List<DistributionParcelNumberVO> parcelNumberVOS = baseMapper.selectReservationZeroOrderDetail(s.getId(), Long.parseLong(reservationId));
s.setParcelNumberVOS(parcelNumberVOS);
}
});
reservationVO.setStockArticleList(stockArticleVOS);
List<DistributionStockListEntity> stockArticleEntityList = distributionReservationStocklistMapper.selectInventory(reservationEntity.getId());
@ -1114,22 +1131,82 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
newStockArticle.forEach((k, v) -> {
if (Func.isEmpty(oldStockArticle.get(k))) {
//这里发生了新增订单的操作
DistributionStockArticleDTO distributionStockArticleDTO = v.get(0);
List<DistributionParcelListEntity> packageListInfo = distributionStockArticleDTO.getPackageListInfo();
AtomicInteger packageNum = new AtomicInteger();
packageListInfo.forEach(p -> {
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
reservationPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
reservationPackageEntity.setPacketBarCode(p.getOrderPackageCode());
reservationPackageEntity.setParceListId(p.getId());
reservationPackageEntity.setReservationId(id);
distributionReservationPackageService.save(reservationPackageEntity);
packageNum.getAndAdd(p.getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
DistributionStockArticleDTO distributionStockArticleDTO = v.get(0);
if (distributionStockArticleDTO.getIsZero().equals(IsOrNoConstant.no)){
List<DistributionParcelListDTO> packageListInfo = distributionStockArticleDTO.getPackageListInfo();
packageListInfo.forEach(p -> {
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
reservationPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
reservationPackageEntity.setPacketBarCode(p.getOrderPackageCode());
reservationPackageEntity.setParceListId(p.getId());
reservationPackageEntity.setReservationId(id);
distributionReservationPackageService.save(reservationPackageEntity);
packageNum.getAndAdd(p.getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
}else {
//新增了零担订单
List<DistributionParcelNumberVO> parcelNumberVOS = distributionStockArticleDTO.getParcelNumberVOS();
AtomicInteger zeroPackageNum = new AtomicInteger();
if (Func.isNotEmpty(parcelNumberVOS)){
//进行录入数量的操作
parcelNumberVOS.forEach(p->{
if (p.getReservationNum() >0){
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
distributionReservationZeroPackageEntity.setQuantity(p.getReservationNum());
distributionReservationZeroPackageEntity.setReservationId(id);
distributionReservationZeroPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
distributionReservationZeroPackageEntity.setCategoryName(p.getFirsts());
distributionReservationZeroPackageEntity.setParcelListId(p.getParcelListId());
distributionReservationZeroPackageEntity.setType(DistributionTypeConstant.shipie.getValue());
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.zhengchang.getValue());
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
//统计数量
zeroPackageNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
//维护零担订单品类对应数量的冻结数量
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getById(p.getId());
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() + p.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
}
});
}else {
//没有进行录入数量的操作,查询可进行添加的品类数量进行全部添加
List<DistributionParcelNumberVO> list = distributionStockArticleService.getZeroOrderDetail(distributionStockArticleDTO.getId());
list.forEach(l->{
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
distributionReservationZeroPackageEntity.setQuantity(l.getQuantity() - l.getDeliveryQuantity() - l.getOutboundQuantity());
distributionReservationZeroPackageEntity.setReservationId(id);
distributionReservationZeroPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
distributionReservationZeroPackageEntity.setParcelListId(l.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(l.getFirsts());
distributionReservationZeroPackageEntity.setType(DistributionTypeConstant.shipie.getValue());
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.zhengchang.getValue());
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
//统计数量
zeroPackageNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
//维护零担订单品类对应数量的冻结数量
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getById(l.getId());
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() + l.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
});
}
// DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
//
// //首先这里需要进行
// reservationStockarticleEntity.setIsZero(IsOrNoConstant.yes.getValue());
// reservationStockarticleEntity.setReservationId(id);
// reservationStockarticleEntity.setStockArticleId(distributionStockArticleDTO.getId());
// reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zhengchang.getValue());
// reservationStockarticleEntity.setStockArticleCode(distributionStockArticleDTO.getOrderCode());
// reservationStockarticleEntity.setIsHaveData(distributionStockArticleDTO.getIsHaveData());
// reservationStockarticleEntity.setReservationNum(zeroPackageNum.get());
// distributionReservationStockarticleService.save(reservationStockarticleEntity);
// packTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
}
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zengjia.getValue());
reservationStockarticleEntity.setStockArticleCode(distributionStockArticleDTO.getStockArticleCode());
@ -1149,78 +1226,179 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
} else {
//查询出这个订单原来在这个预约中的勾选情况
DistributionStockArticleDTO distributionStockArticleDTO = v.get(0);
if (distributionStockArticleDTO.getIsZero().equals(IsOrNoConstant.no.getValue())){
List<DistributionReservationPackageEntity> packageEntityList = distributionReservationPackageMapper.selectPackageByReservationAndStockArticleId(id, k);
Map<Long, List<DistributionReservationPackageEntity>> oldPackage = packageEntityList.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getParceListId));
Map<Long, List<DistributionParcelListEntity>> newPackage = distributionStockArticleDTO.getPackageListInfo().stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getId));
AtomicInteger packageNum = new AtomicInteger();
AtomicInteger reduceNum = new AtomicInteger();
newPackage.forEach((m, n) -> {
if (Func.isEmpty(oldPackage.get(m))) {
DistributionParcelListEntity distributionParcelListEntity = n.get(0);
//新增
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
reservationPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
reservationPackageEntity.setPacketBarCode(distributionParcelListEntity.getOrderPackageCode());
reservationPackageEntity.setParceListId(distributionParcelListEntity.getId());
reservationPackageEntity.setReservationId(id);
distributionReservationPackageService.save(reservationPackageEntity);
packageNum.getAndAdd(distributionParcelListEntity.getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionParcelListEntity.getId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
} else {
oldPackage.remove(m);
//移除
}
//移除包件进行取消
oldPackage.forEach((o, p) -> {
DistributionReservationPackageEntity reservationPackageEntity = p.get(0);
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
distributionReservationPackageService.updateById(reservationPackageEntity);
//统计减少包件数量
reduceNum.getAndAdd(distributionParcelListService.getById(reservationPackageEntity.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(reservationPackageEntity.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
//对存在订单进行维护
DistributionReservationStockarticleEntity reservationStockarticleEntity = oldStockArticle.get(k).get(0);
Integer reservationNum = reservationStockarticleEntity.getReservationNum();
reservationStockarticleEntity.setReservationNum(reservationNum + packageNum.get() - reduceNum.get());
distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
packTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// oldStockArticle.remove(k);
distributionAsyncService.changeOrderReservationStatus(distributionStockArticleDTO);
});
oldStockArticle.remove(k);
}else {
//零担订单出现编辑操作,这里对于零担订单发生编辑操作一定会存在有录入数量的操作
List<DistributionParcelNumberVO> parcelNumberVOS = distributionStockArticleDTO.getParcelNumberVOS();
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntityList = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
.eq(DistributionReservationZeroPackageEntity::getReservationId, id)
.eq(DistributionReservationZeroPackageEntity::getStockArticleId, distributionStockArticleDTO.getId())
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus,"2"));
Map<Long, List<DistributionReservationZeroPackageEntity>> oldZeroPackage = reservationZeroPackageEntityList.stream().collect(Collectors.groupingBy(DistributionReservationZeroPackageEntity::getParcelListId));
if (Func.isEmpty(reservationZeroPackageEntityList)){
log.error("#############零担订单预约信息数据错误:{}",distributionStockArticleDTO);
}
AtomicInteger zeroPrderNum = new AtomicInteger();
parcelNumberVOS.forEach(p->{
List<DistributionReservationZeroPackageEntity> distributionReservationZeroPackageEntities = oldZeroPackage.get(p.getParcelListId());
if (Func.isNotEmpty(distributionReservationZeroPackageEntities)){
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = distributionReservationZeroPackageEntities.get(0);
Integer quantity = distributionReservationZeroPackageEntity.getQuantity();
if (p.getReservationNum() == 0){
distributionReservationZeroPackageEntity.setQuantity(0);
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.quxiao.getValue());
distributionReservationZeroPackageService.updateById(distributionReservationZeroPackageEntity);
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, distributionReservationZeroPackageEntity.getParcelListId()));
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() - quantity);
distributionParcelNumberService.updateById(parcelNumberEntity);
}else if (p.getReservationNum() != quantity){
distributionReservationZeroPackageEntity.setQuantity(p.getReservationNum());
distributionReservationZeroPackageService.updateById(distributionReservationZeroPackageEntity);
//进行修改操作
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, distributionReservationZeroPackageEntity.getParcelListId()));
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() - quantity + p.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
}
zeroPrderNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
}else {
//这里就是新增
DistributionReservationZeroPackageEntity zeroPackageEntity = new DistributionReservationZeroPackageEntity();
zeroPackageEntity.setParcelListId(p.getParcelListId());
zeroPackageEntity.setCategoryName(p.getFirsts());
zeroPackageEntity.setQuantity(p.getReservationNum());
zeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.zengjia.getValue());
zeroPackageEntity.setType(DistributionTypeConstant.shipie.getValue());
zeroPackageEntity.setReservationId(id);
zeroPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
distributionReservationZeroPackageService.save(zeroPackageEntity);
DistributionReservationStockarticleEntity reservationStockarticleEntity = distributionReservationStockarticleService.getOne(Wrappers.<DistributionReservationStockarticleEntity>query().lambda()
.eq(DistributionReservationStockarticleEntity::getReservationId, id)
.eq(DistributionReservationStockarticleEntity::getStockArticleId, distributionStockArticleDTO.getId())
.ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()));
reservationStockarticleEntity.setReservationNum(reservationStockarticleEntity.getReservationNum() + zeroPackageEntity.getQuantity());
distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
//维护具体的零担订单品类数量
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, p.getParcelListId()));
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() + zeroPackageEntity.getQuantity());
distributionParcelNumberService.updateById(parcelNumberEntity);
zeroPrderNum.getAndAdd(zeroPackageEntity.getQuantity());
}
//考虑情况:1、数量发生修改 2、数量修改为0表示取消该零担订单对应的品类 3、该零担订单新增品类
//该零担订单原有的品类信息
});
DistributionReservationStockarticleEntity reservationStockarticleEntity = oldStockArticle.get(k).get(0);
reservationStockarticleEntity.setReservationNum(zeroPrderNum.get());
distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
packTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
// oldStockArticle.remove(k);
distributionAsyncService.changeOrderReservationStatus(distributionStockArticleDTO);
oldStockArticle.remove(k);
}
warehouseNames.add(distributionStockArticleDTO.getWarehouse());
mallName.add(distributionStockArticleDTO.getMallName());
storeName.add(distributionStockArticleDTO.getStoreName());
receivingUnit.add(distributionStockArticleDTO.getConsigneeUnit());
List<DistributionReservationPackageEntity> packageEntityList = distributionReservationPackageMapper.selectPackageByReservationAndStockArticleId(id, k);
Map<Long, List<DistributionReservationPackageEntity>> oldPackage = packageEntityList.stream().collect(Collectors.groupingBy(DistributionReservationPackageEntity::getParceListId));
Map<Long, List<DistributionParcelListEntity>> newPackage = distributionStockArticleDTO.getPackageListInfo().stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getId));
AtomicInteger packageNum = new AtomicInteger();
AtomicInteger reduceNum = new AtomicInteger();
newPackage.forEach((m, n) -> {
if (Func.isEmpty(oldPackage.get(m))) {
DistributionParcelListEntity distributionParcelListEntity = n.get(0);
//新增
DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity();
reservationPackageEntity.setStockArticleId(distributionStockArticleDTO.getId());
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.xinzeng.getValue());
reservationPackageEntity.setPacketBarCode(distributionParcelListEntity.getOrderPackageCode());
reservationPackageEntity.setParceListId(distributionParcelListEntity.getId());
reservationPackageEntity.setReservationId(id);
distributionReservationPackageService.save(reservationPackageEntity);
packageNum.getAndAdd(distributionParcelListEntity.getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(distributionParcelListEntity.getId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
} else {
oldPackage.remove(m);
//移除
}
});
//移除包件进行取消
oldPackage.forEach((o, p) -> {
DistributionReservationPackageEntity reservationPackageEntity = p.get(0);
reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
distributionReservationPackageService.updateById(reservationPackageEntity);
//统计减少包件数量
reduceNum.getAndAdd(distributionParcelListService.getById(reservationPackageEntity.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(reservationPackageEntity.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
//对存在订单进行维护
DistributionReservationStockarticleEntity reservationStockarticleEntity = oldStockArticle.get(k).get(0);
Integer reservationNum = reservationStockarticleEntity.getReservationNum();
reservationStockarticleEntity.setReservationNum(reservationNum + packageNum.get() - reduceNum.get());
distributionReservationStockarticleService.updateById(reservationStockarticleEntity);
packTotal.getAndAdd(reservationStockarticleEntity.getReservationNum());
oldStockArticle.remove(k);
distributionAsyncService.changeOrderReservationStatus(distributionStockArticleDTO);
// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(distributionStockArticleDTO.getId());
// stockArticleEntity.setReservationStatus(status);
// distributionStockArticleService.updateById(stockArticleEntity);
}
});
oldStockArticle.forEach((i, j) -> {
//这里就是需要进行取消的订单信息
DistributionReservationStockarticleEntity reservationStockarticleEntity = j.get(0);
reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
List<DistributionReservationPackageEntity> packageEntityList = distributionReservationPackageMapper.selectPackageByReservationAndStockArticleId(id, reservationStockarticleEntity.getStockArticleId());
packageEntityList.forEach(p -> {
p.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
distributionReservationPackageService.updateById(p);
reduceTotal.getAndAdd(distributionParcelListService.getById(p.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
if (reservationStockarticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())){
reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
List<DistributionReservationPackageEntity> packageEntityList = distributionReservationPackageMapper.selectPackageByReservationAndStockArticleId(id, reservationStockarticleEntity.getStockArticleId());
packageEntityList.forEach(p -> {
p.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue());
distributionReservationPackageService.updateById(p);
reduceTotal.getAndAdd(distributionParcelListService.getById(p.getParceListId()).getQuantity());
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(p.getParceListId());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue());
distributionParcelListService.updateById(parcelListEntity);
});
}else {
//订单零担移除
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntities = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
.eq(DistributionReservationZeroPackageEntity::getReservationId, reservationStockarticleEntity.getReservationId())
.eq(DistributionReservationZeroPackageEntity::getStockArticleId, reservationStockarticleEntity.getStockArticleId())
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationOrderStatusConstant.quxiao.getValue()));
reservationZeroPackageEntities.forEach(zp->{
List<DistributionParcelNumberEntity> parcelNumberEntityList = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, zp.getParcelListId()));
if (parcelNumberEntityList.size()>1){
log.error("#############零担订单品类信息错误:{}",parcelNumberEntityList);
}
DistributionParcelNumberEntity parcelNumberEntity = parcelNumberEntityList.get(0);
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() - zp.getQuantity());
distributionParcelNumberService.updateById(parcelNumberEntity);
zp.setQuantity(0);
zp.setZeroPackageStatus(ReservationOrderStatusConstant.quxiao.getValue());
distributionReservationZeroPackageService.updateById(zp);
});
reservationStockarticleEntity.setReservationNum(0);
reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
//需要修改订单的状态
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(i);
DistributionStockArticleDTO stockArticleDTO = Func.copy(stockArticleEntity, DistributionStockArticleDTO.class);
distributionAsyncService.changeOrderReservationStatus(stockArticleDTO);
//这里需要根据包件状态进行订单状态的修改
//这里异步查看该订单下的包件信息是否都处于预约状态,如果不是那么为订单预约装填,部分那么订单为部分预约,没有那么订单处于待预约状态
distributionAsyncService.changeOrderReservationStatus(stockArticleDTO);
// distributionAsyncService.changeOrderReservationStatus(stockArticleDTO);
// String status = distributionReservationPackageService.judgmentStatus(stockArticleDTO);
// stockArticleEntity.setReservationStatus(status);
// reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.quxiao.getValue());
@ -1546,7 +1724,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
//
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
//现在前端进行订单提交必然会携带包件信息
List<DistributionParcelListEntity> packageListInfo = s.getPackageListInfo();
List<DistributionParcelListDTO> packageListInfo = s.getPackageListInfo();
AtomicInteger orderPackageNum = new AtomicInteger();
if (packageListInfo.size()>0){
packageListInfo.forEach(p->{
@ -2214,10 +2392,13 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity();
//预约订单数量
AtomicInteger packageNum = new AtomicInteger();
List<DistributionParcelListEntity> packageList = s.getPackageListInfo();
List<DistributionParcelListDTO> packageList = s.getPackageListInfo();
if (Func.isEmpty(packageList)) {
//添加订单下的所有在库订单的包件
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId,s.getId()));
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.list(Wrappers.<DistributionParcelListEntity>query().lambda().eq(DistributionParcelListEntity::getStockArticleId,s.getId())
.ne(DistributionParcelListEntity::getOrderPackageLoadingStatus, OrderPackageLoadingStatusConstant.yizhuangche.getValue())
.ne(DistributionParcelListEntity::getOrderPackageReservationStatus,OrderPackageReservationStatusConstant.yiyueyue.getValue())
.notIn(DistributionParcelListEntity::getOrderPackageStatus,new String[]{OrderPackageStatusConstant.yichuku.getValue(),OrderPackageStatusConstant.yiqianshou.getValue()}));
distributionParcelListEntities.forEach(p -> {
if (!Func.equals(p.getOrderPackageFreezeStatus(), OrderPackageFreezeStatusConstant.yidongjie.getValue()) && !Func.equals(p.getOrderPackageFreezeStatus(), OrderPackageReservationStatusConstant.yiyueyue.getValue())) {
DistributionReservationPackageEntity distributionReservationPackageEntity = new DistributionReservationPackageEntity();
@ -2275,14 +2456,94 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
distributionReservationStockarticleEntity.setIsHaveData(s.getIsHaveData());
distributionReservationStockarticleService.save(distributionReservationStockarticleEntity);
packageTotal.getAndAdd(distributionReservationStockarticleEntity.getReservationNum());
}else {
//TODO 零担订单处理
}else if (s.getIsZero().equals("1")){
//零担订单处理
DistributionReservationStockarticleEntity distributionReservationStockarticleEntity = new DistributionReservationStockarticleEntity();
if (Func.isNotBlank(s.getServiceNumber())) {
serviceNumber.add(s.getServiceNumber());
}
if (Func.isNotBlank(s.getWarehouse())) {
warehouseNames.add(s.getWarehouse());
}
if (Func.isNotBlank(s.getMallName())) {
mallName.add(s.getMallName());
}
if (Func.isNotBlank(s.getStoreName())) {
storeName.add(s.getStoreName());
}
if (Func.isNotBlank(s.getOrderCode())) {
orderNumber.add(s.getOrderCode());
}
if (Func.isNotBlank(s.getConsigneeUnit())) {
receivingUnit.add(s.getConsigneeUnit());
}
if (Func.isNotBlank(s.getWaybillNumber())) {
waybillNo.add(s.getWaybillNumber());
}
List<DistributionParcelNumberVO> parcelNumberVOS = s.getParcelNumberVOS();
AtomicInteger zeroPackageNum = new AtomicInteger(0);
if (Func.isNotEmpty(parcelNumberVOS)){
if (Func.isNotEmpty(parcelNumberVOS)){
//存在零担订单的包件信息
parcelNumberVOS.forEach(p->{
if (p.getReservationNum() > 0){
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
distributionReservationZeroPackageEntity.setQuantity(p.getReservationNum());
distributionReservationZeroPackageEntity.setReservationId(reservationId);
distributionReservationZeroPackageEntity.setStockArticleId(s.getId());
distributionReservationZeroPackageEntity.setCategoryName(p.getFirsts());
distributionReservationZeroPackageEntity.setParcelListId(p.getParcelListId());
distributionReservationZeroPackageEntity.setType(DistributionTypeConstant.shipie.getValue());
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.zhengchang.getValue());
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
//统计数量
zeroPackageNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
//维护零担订单品类对应数量的冻结数量
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getById(p.getId());
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() + p.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
}
});
}else {
//不存在录入数量的操作,此时进行全部可配送的品类进行添加
//查询出该零担订单的品类信息
// List<DistributionParcelNumberEntity> list = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getStockArticleId, s.getId()));
// List<DistributionParcelNumberVO> list = distributionParcelNumberMapper.selectZeroOrderPackageList(s.getId());
List<DistributionParcelNumberVO> list = distributionStockArticleService.getZeroOrderDetail(s.getId());
list.forEach(l->{
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
distributionReservationZeroPackageEntity.setQuantity(l.getQuantity() - l.getDeliveryQuantity() - l.getOutboundQuantity());
distributionReservationZeroPackageEntity.setReservationId(reservationId);
distributionReservationZeroPackageEntity.setStockArticleId(s.getId());
distributionReservationZeroPackageEntity.setParcelListId(l.getParcelListId());
distributionReservationZeroPackageEntity.setCategoryName(l.getFirsts());
distributionReservationZeroPackageEntity.setType(DistributionTypeConstant.shipie.getValue());
distributionReservationZeroPackageEntity.setZeroPackageStatus(ReservationOrderStatusConstant.zhengchang.getValue());
distributionReservationZeroPackageService.save(distributionReservationZeroPackageEntity);
//统计数量
zeroPackageNum.getAndAdd(distributionReservationZeroPackageEntity.getQuantity());
//维护零担订单品类对应数量的冻结数量
DistributionParcelNumberEntity parcelNumberEntity = distributionParcelNumberService.getById(l.getId());
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() + l.getReservationNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
});
}
//首先这里需要进行
distributionReservationStockarticleEntity.setIsZero(IsOrNoConstant.yes.getValue());
distributionReservationStockarticleEntity.setReservationId(reservationId);
distributionReservationStockarticleEntity.setStockArticleId(s.getId());
distributionReservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zhengchang.getValue());
distributionReservationStockarticleEntity.setStockArticleCode(s.getOrderCode());
distributionReservationStockarticleEntity.setIsHaveData(s.getIsHaveData());
distributionReservationStockarticleEntity.setReservationNum(zeroPackageNum.get());
distributionReservationStockarticleService.save(distributionReservationStockarticleEntity);
packageTotal.getAndAdd(distributionReservationStockarticleEntity.getReservationNum());
}else {
log.error("###################订单是否零担字段缺失:{}",s);
}
}
// WarehouseWaybillEntity byWaybillNo = warehouseWaybillClient.findByWaybillNo();
// String consigneeMobile = byWaybillNo.getConsigneeMobile();
});
}
//存在库存品构建预约库存品关联信息
@ -2364,8 +2625,13 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
reservationEntity.setMailPhone(String.join(",",marketPhone));
reservationEntity.setReceivingUnit(String.join(",",receivingUnit));
//统计数量
BigDecimal fee = initTotal.get().add(reservationEntity.getOtherFee());
reservationEntity.setFee(fee);
if (Func.isNotEmpty(reservationEntity.getOtherFee())){
BigDecimal fee = initTotal.get().add(reservationEntity.getOtherFee());
reservationEntity.setFee(fee);
}else {
reservationEntity.setFee(new BigDecimal(0));
}
reservationEntity.setReservationCode(reservationMa());
//设置预约为市配
reservationEntity.setDeliveryType(DistributionTypeConstant.shipie.getValue());
@ -2400,4 +2666,18 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
public Integer getReservationNumStockSelf(Long reservationId, Long stockListId) {
return baseMapper.getReservationNumStockSelf(reservationId,stockListId);
}
@Override
public List<DistributionParcelNumberVO> getReservationZeroOrderDetail(Long id,Long reservationId) {
List<DistributionParcelNumberVO> zeroOrderDetail = distributionStockArticleService.getZeroOrderDetail(id);
List<DistributionParcelNumberVO> parcelNumberVOS= baseMapper.selectReservationZeroOrderDetail(id,reservationId);
Map<Long, DistributionParcelNumberVO> reservationNum = parcelNumberVOS.stream().collect(Collectors.toMap(DistributionParcelNumberVO::getParcelListId, Function.identity(), (k1, k2) -> k2));
zeroOrderDetail.forEach(z->{
if (Func.isNotEmpty(reservationNum.get(z.getParcelListId()))){
z.setReservationNum(reservationNum.get(z.getParcelListId()).getReservationNum());
}
});
return zeroOrderDetail;
}
}

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

@ -40,10 +40,7 @@ import com.logpm.distribution.mapper.DistributionDeliveryListMapper;
import com.logpm.distribution.mapper.DistributionParcelListMapper;
import com.logpm.distribution.mapper.DistributionStockArticleMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.DistributionParcelListVO;
import com.logpm.distribution.vo.DistributionStockArticleQRCodeVO;
import com.logpm.distribution.vo.DistributionStockArticleVO;
import com.logpm.distribution.vo.OrderPackgeCodeDataVO;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.app.queryOrderVO;
import com.logpm.distribution.wrapper.DistributionParcelListWrapper;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
@ -1035,6 +1032,16 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
}
}
@Override
public List<DistributionParcelNumberVO> getZeroOrderDetail(Long id) {
List<DistributionParcelNumberVO> parcelNumberVOS = baseMapper.getZeroOrderDetail(id);
if (Func.isEmpty(parcelNumberVOS)){
log.error("###############零担订单无详情:{}",parcelNumberVOS);
return null;
}
return parcelNumberVOS;
}
@Override
public DistributionStockArticleEntity findZeroByOrderCodeAndWarehouseId(String orderCode, Long warehouseId) {

Loading…
Cancel
Save