Browse Source

库存品增加拆包明细、增加取消拆包、零担批量签收维护

pull/24/head
汤建军 11 months ago
parent
commit
3bb3a26f7e
  1. 36
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionUnpackingDetailsEntity.java
  2. 5
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionUnpackingDetailsVO.java
  3. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockListController.java
  4. 22
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionUnpackingDetailsController.java
  5. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionUnpackingDetailsMapper.java
  6. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionUnpackingDetailsMapper.xml
  7. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionUnpackingDetailsService.java
  8. 26
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  9. 95
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  10. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  11. 46
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java
  12. 140
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionUnpackingDetailsServiceImpl.java
  13. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

36
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionUnpackingDetailsEntity.java

@ -76,6 +76,12 @@ public class DistributionUnpackingDetailsEntity extends TenantEntity {
*/
@ApiModelProperty(value = "订单ID")
private Long stockArticleId;
/**
* 目标库存品ID
*/
@ApiModelProperty(value = "订单ID")
private Long aimStockListId;
/**
* 库存品Id
*/
@ -91,6 +97,36 @@ public class DistributionUnpackingDetailsEntity extends TenantEntity {
*/
@ApiModelProperty(value = "物品名称")
private String itemName;
/**
* 目标物品名称
*/
@ApiModelProperty(value = "目标物品名称")
private String aimItemName;
/**
* 仓库ID
*/
@ApiModelProperty(value = "仓库ID")
private Long warehhouseId;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 拆包执行人
*/
@ApiModelProperty(value = "拆包执行人")
private String unpackUser;
/**
* 取消拆包执行人
*/
@ApiModelProperty(value = "取消拆包执行人")
private String cancelUnpackUser;
/**
* 拆包数量
*/

5
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionUnpackingDetailsVO.java

@ -31,4 +31,9 @@ import lombok.EqualsAndHashCode;
public class DistributionUnpackingDetailsVO extends DistributionUnpackingDetailsEntity {
private static final long serialVersionUID = 1L;
private String specification;
private String marketName;
}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockListController.java

@ -219,7 +219,7 @@ public class DistributionStockListController extends BladeController {
*/
@PostMapping("/parcels")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "新增或修改", notes = "传入distributionStockList")
@ApiOperation(value = "库存品管理 拆包", notes = "传入distributionStockList")
public R parcels(@Valid @RequestBody DistributionStockListDTO distributionStockListDTO) {
return R.status(distributionStockListService.parcels(distributionStockListDTO));
}

22
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionUnpackingDetailsController.java

@ -79,6 +79,28 @@ public class DistributionUnpackingDetailsController extends BladeController {
return R.data(pages);
}
/**
* 拆包明细记录 分页
*/
@GetMapping("/stockListUnpackDetail")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionUnpackingDetails")
public R<IPage<DistributionUnpackingDetailsVO>> stockListUnpackDetail(@ApiIgnore @RequestParam Long stockListId,Query query) {
IPage<DistributionUnpackingDetailsVO> pages = distributionUnpackingDetailsService.stockListUnpackDetail(Condition.getPage(query),stockListId);
return R.data(pages);
}
/**
* 拆包明细记录 分页
*/
@GetMapping("/cancelUnpack")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionUnpackingDetails")
public R cancelUnpack(@ApiIgnore @RequestParam String ids) {
return distributionUnpackingDetailsService.cancelUnpack(ids);
}
/**
* 拆包明细记录 自定义分页
*/

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

@ -52,4 +52,5 @@ public interface DistributionUnpackingDetailsMapper extends BaseMapper<Distribut
*/
List<DistributionUnpackingDetailsExcel> exportDistributionUnpackingDetails(@Param("ew") Wrapper<DistributionUnpackingDetailsEntity> queryWrapper);
IPage<DistributionUnpackingDetailsVO> stockListUnpackDetail(IPage<DistributionUnpackingDetailsVO> page,@Param("stockListId") Long stockListId);
}

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionUnpackingDetailsMapper.xml

@ -35,5 +35,22 @@
<select id="exportDistributionUnpackingDetails" resultType="com.logpm.distribution.excel.DistributionUnpackingDetailsExcel">
SELECT * FROM logpm_distribution_unpacking_details ${ew.customSqlSegment}
</select>
<select id="stockListUnpackDetail" resultType="com.logpm.distribution.vo.DistributionUnpackingDetailsVO">
SELECT
ldud.id AS id,
ldud.create_time AS createTime,
ldud.unpack_user AS unpackUser,
ldud.unpacking_quantity AS unpackingQuantity,
ldsl.incoming_batch AS incomingPatch,
ldsl.description_goods AS descriptionGoods,
ldsl.cargo_number AS cargoNumber,
ldsl.market_name AS marketName,
CONCAT(ldsl.cargo_norms ,'/',ldsl.cargo_unit) AS specification
FROM
logpm_distribution_unpacking_details AS ldud
LEFT JOIN logpm_distribution_stock_list AS ldsl ON ldud.aim_stock_list_id = ldsl.id
WHERE
ldud.stock_list_id = #{stockListId} AND ldud.is_deleted = 0
</select>
</mapper>

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

@ -22,6 +22,7 @@ import com.logpm.distribution.entity.DistributionUnpackingDetailsEntity;
import com.logpm.distribution.excel.DistributionUnpackingDetailsExcel;
import com.logpm.distribution.vo.DistributionUnpackingDetailsVO;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import java.util.List;
@ -50,4 +51,18 @@ public interface IDistributionUnpackingDetailsService extends BaseService<Distri
*/
List<DistributionUnpackingDetailsExcel> exportDistributionUnpackingDetails(Wrapper<DistributionUnpackingDetailsEntity> queryWrapper);
/**
* 查询库存品拆包明细
* @param page
* @param stockListId
* @return
*/
IPage<DistributionUnpackingDetailsVO> stockListUnpackDetail(IPage<DistributionUnpackingDetailsVO> page, Long stockListId);
/**
* 取消拆包
* @param stockListIds
* @return
*/
R cancelUnpack(String stockListIds);
}

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

@ -41,6 +41,7 @@ import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.ibatis.javassist.runtime.Inner;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.constant.DictBizConstant;
@ -1572,6 +1573,11 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
List<DistributionParcelNumberVO> parcelNumberVOS = distributionStockArticleDTO.getParcelNumberVOS();
AtomicInteger zeroPackageNum = new AtomicInteger();
if (Func.isNotEmpty(parcelNumberVOS)) {
boolean flag = parcelNumberVOS.stream().allMatch(zero -> zero.getReservationNum() <= 0);
if (flag){
throw new RuntimeException(distributionStockArticleDTO.getOrderCode()+"数量录入错误!!!");
}
//进行录入数量的操作
parcelNumberVOS.forEach(p -> {
if (p.getReservationNum() > 0) {
@ -1596,6 +1602,10 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
} else {
//没有进行录入数量的操作,查询可进行添加的品类数量进行全部添加
List<DistributionParcelNumberVO> list = distributionStockArticleService.getZeroOrderDetail(distributionStockArticleDTO.getId());
if (!list.isEmpty()){
if (list.stream().mapToInt(DistributionParcelNumberVO::getHandQuantity).sum() > 0){
throw new RuntimeException(distributionStockArticleDTO.getOrderCode()+"在库数不足,请核对!!!");
}
list.forEach(l -> {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
distributionReservationZeroPackageEntity.setQuantity(l.getQuantity() - l.getDeliveryQuantity() - l.getOutboundQuantity());
@ -1615,10 +1625,12 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
packageLockIds.add(l.getParcelListId());
});
}
}
}
DistributionReservationStockarticleEntity reservationStockarticleEntity = new DistributionReservationStockarticleEntity();
reservationStockarticleEntity.setStockArticleStatus(ReservationOrderStatusConstant.zengjia.getValue());
reservationStockarticleEntity.setStockArticleCode(distributionStockArticleDTO.getStockArticleCode());
reservationStockarticleEntity.setStockArticleCode(distributionStockArticleDTO.getOrderCode());
reservationStockarticleEntity.setStockArticleId(distributionStockArticleDTO.getId());
reservationStockarticleEntity.setReservationId(id);
reservationStockarticleEntity.setReservationNum(packageNum.get());
@ -3313,6 +3325,11 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
List<DistributionParcelNumberVO> parcelNumberVOS = s.getParcelNumberVOS();
AtomicInteger zeroPackageNum = new AtomicInteger(0);
if (Func.isNotEmpty(parcelNumberVOS)) {
boolean inputFlag = parcelNumberVOS.stream().allMatch(zero -> zero.getReservationNum() <= 0);
if (inputFlag){
//判断零担品类录入是否都为0
throw new RuntimeException(s.getOrderCode()+"此零担订单数量录入错误!!!");
}
//存在零担订单的包件信息
parcelNumberVOS.forEach(p -> {
if (p.getReservationNum() > 0) {
@ -3341,6 +3358,11 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
// 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());
if (!list.isEmpty()){
int sum = list.stream().mapToInt(DistributionParcelNumberVO::getHandQuantity).sum();
if (sum == 0){
throw new RuntimeException(s.getOrderCode()+"此零担订单无在库数量!!!");
}
list.forEach(l -> {
if (l.getHandQuantity() > 0) {
DistributionReservationZeroPackageEntity distributionReservationZeroPackageEntity = new DistributionReservationZeroPackageEntity();
@ -3363,6 +3385,8 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
});
}
}
// distributionReservationStockarticleEntity.setIsZero(IsOrNoConstant.yes.getValue());
// distributionReservationStockarticleEntity.setReservationId(reservationId);
// distributionReservationStockarticleEntity.setStockArticleId(s.getId());

95
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -4436,21 +4436,25 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
}
//查询出该签收任务下的客户对应的所有包件和库存品信息
List<String> orderCodes = new ArrayList<>();
List<DistributionParcelListEntity> parcelListEntityList = distributionReservationMapper.selectPackageListByReservationId(distributionSignforEntity.getReservationId());
//包件不需要考虑备货、装车直接可进行签收 过滤已装车的包件
// List<DistributionParcelListEntity> noLoadingPackage = parcelListEntityList.stream().filter(p -> p.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).collect(Collectors.toList());
//查询该客户下的所有零担信息
List<DistributionParcelNumberDTO> parcelNumberEntityList = distributionReservationMapper.selectZeroPackageListByReservationId(distributionSignforEntity.getReservationId());
if (Func.isNotEmpty(parcelNumberEntityList)) {
loadingPackageNum += parcelNumberEntityList.stream().mapToInt(DistributionParcelNumberDTO::getReservationNum).sum();
signingPackageNum += parcelNumberEntityList.stream().mapToInt(DistributionParcelNumberDTO::getReservationNum).sum();
// loadingPackageNum += parcelNumberEntityList.stream().mapToInt(DistributionParcelNumberDTO::getReservationNum).sum();
// signingPackageNum += parcelNumberEntityList.stream().mapToInt(DistributionParcelNumberDTO::getReservationNum).sum();
for (DistributionParcelNumberDTO parcelNumberEntity : parcelNumberEntityList) {
DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(parcelNumberEntity.getParcelListId());
DistributionLoadscanEntity distributionLoadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionSignforEntity.getReservationId()).eq(DistributionLoadscanEntity::getPackageId, parcelNumberEntity.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
DistributionParcelNumberEntity parcelNumberServiceById = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getParcelListId, parcelNumberEntity.getId()));
Integer outboundQuantity = 0;
Integer signinQuantity = 0;
Integer deliveryQuantity = 0;
Integer handQuantity = 0;
DistributionParcelNumberEntity parcelNumberServiceById = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, parcelNumberEntity.getId())
);
// Integer outboundQuantity = 0;
// Integer signinQuantity = 0;
// Integer deliveryQuantity = 0;
// Integer handQuantity = 0;
if (Func.isNotEmpty(distributionLoadscanEntity)) {
//情况列举:
// 1、装车件数未按照计划数量
@ -4458,44 +4462,17 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
// 3、部分签收
// 4、完成签收
//不论什么情况均进行一次重新签收维护数量
DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getParcelListId, parcelNumberEntity.getId()));
if (distributionLoadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())) {
//装车数量和签收数量只会一样,
if (distributionLoadscanEntity.getReceivedQuantity() > 0 && distributionLoadscanEntity.getReceivedQuantity() <= parcelNumberEntity.getReservationNum()) {
outboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum();
signinQuantity = distributionParcelNumberEntity.getSigninQuantity() + distributionLoadscanEntity.getReceivedQuantity() - parcelNumberEntity.getReservationNum();
deliveryQuantity = distributionParcelNumberEntity.getDeliveryQuantity() + distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum();
handQuantity = distributionParcelNumberEntity.getHandQuantity() + distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum();
//装车按照计划完成装车
distributionLoadscanEntity.setPackageNub(parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setLoadedNub(parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setReceivedQuantity(parcelNumberEntity.getReservationNum());
distributionLoadscanService.updateById(distributionLoadscanEntity);
packageLockIds.add(distributionLoadscanEntity.getPackageId());
} else {
log.error("################扫描签收零担订单数量异常:{}", distributionLoadscanEntity);
return Resp.scanFail("数量录入错误", "数量录入错误");
}
} else if (distributionLoadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.weiqianshou.getValue())) {
outboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + (distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum());
signinQuantity = distributionParcelNumberEntity.getSigninQuantity() + distributionLoadscanEntity.getReceivedQuantity();
deliveryQuantity = distributionParcelNumberEntity.getDeliveryQuantity() + (distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum());
handQuantity = distributionParcelNumberEntity.getHandQuantity() + (distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setReceivedQuantity(parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setLoadedNub(parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setPackageNub(parcelNumberEntity.getReservationNum());
distributionLoadscanEntity.setSignforState(LoadScanSigningStatusConstant.yiqianshou.getValue());
if (distributionSignfor.getIsClerk()) {
distributionLoadscanEntity.setMsg("文员一键签收数据补录");
} else {
distributionLoadscanEntity.setMsg("司机一键签收数据补录");
}
distributionLoadscanService.updateById(distributionLoadscanEntity);
packageLockIds.add(distributionLoadscanEntity.getPackageId());
}
// DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda().eq(DistributionParcelNumberEntity::getParcelListId, parcelNumberEntity.getId()));
//扣除在库数量
parcelNumberServiceById.setHandQuantity(parcelNumberServiceById.getHandQuantity() + distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum());
//扣除冻结数量
parcelNumberServiceById.setDeliveryQuantity(parcelNumberServiceById.getDeliveryQuantity() + distributionLoadscanEntity.getLoadedNub() - parcelNumberEntity.getReservationNum());
//维护出库数量
parcelNumberServiceById.setOutboundQuantity(parcelNumberServiceById.getOutboundQuantity() - distributionLoadscanEntity.getLoadedNub() + parcelNumberEntity.getReservationNum());
//维护签收数量
parcelNumberServiceById.setSigninQuantity(parcelNumberServiceById.getSigninQuantity() - distributionLoadscanEntity.getLoadedNub() + parcelNumberEntity.getReservationNum());
loadingPackageNum += (parcelNumberEntity.getReservationNum()- distributionLoadscanEntity.getLoadedNub());
signingPackageNum += (parcelNumberEntity.getReservationNum()- distributionLoadscanEntity.getLoadedNub());
} else {
//不存在装车数据
DistributionLoadscanEntity loadscanEntity = new DistributionLoadscanEntity();
@ -4543,21 +4520,27 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
distributionLoadscanService.save(loadscanEntity);
packageLockIds.add(loadscanEntity.getPackageId());
//扣除在库数量
parcelNumberServiceById.setHandQuantity(parcelNumberServiceById.getHandQuantity() - parcelNumberEntity.getReservationNum());
//扣除冻结数量
parcelNumberServiceById.setDeliveryQuantity(parcelNumberServiceById.getDeliveryQuantity() - parcelNumberEntity.getReservationNum());
//维护出库数量
parcelNumberServiceById.setOutboundQuantity(parcelNumberServiceById.getOutboundQuantity() + parcelNumberEntity.getReservationNum());
//维护签收数量
parcelNumberServiceById.setSigninQuantity(parcelNumberServiceById.getSigninQuantity() + parcelNumberEntity.getReservationNum());
loadingPackageNum += parcelNumberEntity.getReservationNum();
signingPackageNum += parcelNumberEntity.getReservationNum();
}
//维护出库数量和签收数量
parcelNumberServiceById.setSigninQuantity(signinQuantity);
parcelNumberServiceById.setDeliveryQuantity(deliveryQuantity);
parcelNumberServiceById.setOutboundQuantity(outboundQuantity);
parcelNumberServiceById.setHandQuantity(handQuantity);
log.info(method + "维护零担信息:{}", parcelNumberServiceById);
distributionParcelNumberService.updateById(parcelNumberServiceById);
orderCodes.add(parcelListEntity.getOrderCode());
}
}
String signingTime = simpleDateFormat.format(new Date());
List<Long> packageIds = new ArrayList<>();
List<String> packageCodes = new ArrayList<>();
List<String> orderCodes = new ArrayList<>();
if (Func.isNotEmpty(parcelListEntityList)) {
loadingPackageNum += parcelListEntityList.stream().mapToInt(DistributionParcelListEntity::getQuantity).sum();
signingPackageNum += parcelListEntityList.stream().mapToInt(DistributionParcelListEntity::getQuantity).sum();
@ -4645,11 +4628,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
orderCodes.add(parcelListEntity.getOrderCode());
packageCodes.add(parcelListEntity.getOrderPackageCode());
}
//批量维护订单信息
if (Func.isNotEmpty(orderCodes)) {
String orderCode = orderCodes.stream().distinct().collect(Collectors.joining(","));
distributionStockArticleService.maintenanceOrderInfo(orderCode, myCurrentWarehouse.getId());
}
if (Func.isNotEmpty(packageIds)) {
@ -4670,6 +4648,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
warehouseUpdownTypeClient.downDeliveryPackage(map);
}
}
//批量维护订单信息
if (Func.isNotEmpty(orderCodes)) {
String orderCode = orderCodes.stream().distinct().collect(Collectors.joining(","));
distributionStockArticleService.maintenanceOrderInfo(orderCode, myCurrentWarehouse.getId());
}
//维护客户信息状态
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());

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

@ -1691,7 +1691,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
stockArticleEntity.setHandQuantity(inWarehouseQuantity);
//维护订单的配送件数
// deliveryQuantity = parcelNumberEntities.stream().mapToInt(DistributionParcelNumberEntity::getDeliveryQuantity).sum() + parcelNumberEntities.stream().mapToInt(DistributionParcelNumberEntity::getSigninQuantity).sum() + parcelNumberEntities.stream().mapToInt(DistributionParcelNumberEntity::getOutboundQuantity).sum();
stockArticleEntity.setDeliveryQuantity(deliveryQuantity);
stockArticleEntity.setDeliveryQuantity(loadingQuantity);
stockArticleEntity.setSigninQuantity(signingQuantity);
stockArticleEntity.setDeliveryQuantity(deliveryQuantity);
if (inWarehouseQuantity > 0) {

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

@ -266,13 +266,21 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
.eq(DistributionStockListEntity::getWarehouseId, myCurrentWarehouse.getId())
.eq(ObjectUtil.isNotEmpty(distributionStockListDTO.getStoreId()), DistributionStockListEntity::getStoreId, distributionStockListDTO.getStoreId())
);
if (Func.isEmpty(one)){
log.info("#############拆包查询父级库存品物不存在##############id:{},MarketId:{},WarehouseId:{}",distributionStockListDTO.getId(),distributionStockListDTO.getMarketId(),myCurrentWarehouse.getId());
return false;
}
if ((one.getQuantityStock() - one.getQuantityOccupied()) < distributionStockListDTO.getUnpackingQuantity()){
log.info("#############拆包查询父级库存品当前可用数量不足以支持拆包数量id:{},当前可用数量:{},拆包数量:{}",distributionStockListDTO.getId(),(one.getQuantityStock() - one.getQuantityOccupied()) ,distributionStockListDTO.getUnpackingQuantity());
return false;
}
if (Func.isNotEmpty(one2)) {
//查询是否存在有拆包产物
//存在则是进行数量的累加
//有修改
DistributionStockListEntity d = one2;
d.setId(one2.getId());
int i = one2.getQuantityStock() - Integer.parseInt(distributionStockListDTO.getPackageNum());
int i = one2.getQuantityStock() + (distributionStockListDTO.getUnpackingQuantity()* Integer.parseInt(distributionStockListDTO.getPackageNum())) ;
log.info(one2.getIncomingBatch()+"拆包剩余在库数量:{}",i);
d.setQuantityStock(i);
d.setWarehouseId(myCurrentWarehouse.getId());
@ -282,24 +290,17 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
BeanUtil.copyProperties(d, distributionStockListInfo);
distributionStockListInfo.setId(null);
distributionStockListInfo.setStockListId(d.getId());
// distributionStockListInfo.setOutboundQuantity(0);
distributionStockListInfo.setGroundingTime(new Date());
distributionStockListInfo.setQuantityStock((distributionStockListDTO.getStoreNum() * Integer.parseInt(distributionStockListDTO.getPackageNum())));
// distributionStockListInfo.setOrderCode(one.getOrderCode());
// distributionStockListInfo.setIncomingBatch(one.getIncomingBatch());
// distributionStockListInfo.setServiceNumber(one.getServiceNumber());
// distributionStockListInfo.setMallName(one.getMallName());
// distributionStockListInfo.setMarketId(one.getMarketId());
// distributionStockListInfo.setMarketId(one.getMarketId());
distributionStockListInfo.setPid(distributionStockListDTO.getId());
distributionStockListInfo.setSourceType("2");
distributionStockListInfoService.save(distributionStockListInfo);
//添加拆包记录
distributionUnpackingDetails.setStockArticleId(Optional.ofNullable(one2.getStockArticleId()).orElse(null));
distributionUnpackingDetails.setOrderSelfNumber(Optional.ofNullable(one2.getOrderCode()).orElse(null));
distributionUnpackingDetails.setItemName(Optional.ofNullable(one2.getDescriptionGoods()).orElse(null));
distributionUnpackingDetails.setUnpackingQuantity(Optional.ofNullable(one2.getUnpackingQuantity()).orElse(null));
distributionUnpackingDetails.setStockListId(Optional.ofNullable(distributionStockListDTO.getId()).orElse(null));
// distributionUnpackingDetails.setStockArticleId(Optional.ofNullable(one2.getStockArticleId()).orElse(null));
// distributionUnpackingDetails.setOrderSelfNumber(Optional.ofNullable(one2.getOrderCode()).orElse(null));
// distributionUnpackingDetails.setItemName(Optional.ofNullable(one2.getDescriptionGoods()).orElse(null));
// distributionUnpackingDetails.setUnpackingQuantity(Optional.ofNullable(one2.getUnpackingQuantity()).orElse(null));
// distributionUnpackingDetails.setStockListId(Optional.ofNullable(distributionStockListDTO.getId()).orElse(null));
} else {
if (one.getCargoNumber().equals(distributionStockListDTO.getCargoNumber())) {
log.error("库存品拆包选择目标物料一致:{}", distributionStockListDTO.getCargoNumber());
@ -331,7 +332,7 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
basicMaterialEntity = basicMaterialClient.getMaterialByProductCode(distributionStockListDTO.getCargoNumber());
aLong = basicMaterialEntity.getId();
}
if (Func.isNotEmpty(one)) {
if (Func.isEmpty(one2)) {
//生成新的库存品信息
DistributionStockListEntity distributionStockListEntity = new DistributionStockListEntity();
BeanUtils.copyProperties(one, distributionStockListEntity);
@ -339,7 +340,7 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
distributionStockListEntity.setPid(one.getId());
distributionStockListEntity.setCargoNumber(basicMaterialEntity.getProductCode());
distributionStockListEntity.setSku(distributionStockListDTO.getSku());
distributionStockListEntity.setQuantityStock((distributionStockListDTO.getStoreNum() * Integer.parseInt(distributionStockListDTO.getPackageNum())));
distributionStockListEntity.setQuantityStock((distributionStockListDTO.getUnpackingQuantity() * Integer.parseInt(distributionStockListDTO.getPackageNum())));
distributionStockListEntity.setUnpackingQuantity(0);
distributionStockListEntity.setOutboundQuantity(0);
distributionStockListEntity.setMaterialId(aLong);
@ -353,6 +354,7 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
distributionStockListEntity.setIncomingBatch(one.getIncomingBatch());
distributionStockListEntity.setId(null);
this.save(distributionStockListEntity);
one2 = distributionStockListEntity;
//新增入库记录
BeanUtil.copyProperties(distributionStockListEntity, distributionStockListInfo);
distributionStockListInfo.setId(null);
@ -370,17 +372,27 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
}
distributionStockListInfo.setId(null);
distributionUnpackingDetailsService.save(distributionUnpackingDetails);
//对原来的库存品进行数据维护
one.setQuantityStock(one.getQuantityStock() - distributionStockListDTO.getUnpackingQuantity());
one.setUnpackingQuantity(one.getUnpackingQuantity() + distributionStockListDTO.getUnpackingQuantity());
one.setUnpack(true);
one.setOutboundQuantity(one.getOutboundQuantity() + distributionStockListDTO.getUnpackingQuantity());
this.updateById(one);
BladeUser user = AuthUtil.getUser();
//添加拆包记录
distributionUnpackingDetails.setStockArticleId(Optional.ofNullable(one.getStockArticleId()).orElse(null));
distributionUnpackingDetails.setAimStockListId(one2.getId());
distributionUnpackingDetails.setAimItemName(one2.getDescriptionGoods());
distributionUnpackingDetails.setWarehhouseId(myCurrentWarehouse.getId());
distributionUnpackingDetails.setUnpackUser(user.getNickName());
distributionUnpackingDetails.setWarehouseName(myCurrentWarehouse.getName());
distributionUnpackingDetails.setOrderSelfNumber(Optional.ofNullable(one.getOrderCode()).orElse(null));
distributionUnpackingDetails.setItemName(Optional.ofNullable(one.getDescriptionGoods()).orElse(null));
distributionUnpackingDetails.setUnpackingQuantity(Optional.ofNullable(one.getUnpackingQuantity()).orElse(null));
distributionUnpackingDetails.setUnpackingQuantity(Optional.ofNullable(distributionStockListDTO.getUnpackingQuantity()).orElse(null));
distributionUnpackingDetails.setStockListId(Optional.ofNullable(distributionStockListDTO.getId()).orElse(null));
distributionUnpackingDetailsService.save(distributionUnpackingDetails);
return true;
}

140
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionUnpackingDetailsServiceImpl.java

@ -17,16 +17,35 @@
package com.logpm.distribution.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basic.entity.BasicMaterialEntity;
import com.logpm.basic.feign.IBasicMaterialClient;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DistributionStockListEntity;
import com.logpm.distribution.entity.DistributionUnpackingDetailsEntity;
import com.logpm.distribution.excel.DistributionUnpackingDetailsExcel;
import com.logpm.distribution.mapper.DistributionUnpackingDetailsMapper;
import com.logpm.distribution.service.IDistributionStockListService;
import com.logpm.distribution.service.IDistributionUnpackingDetailsService;
import com.logpm.distribution.vo.DistributionUnpackingDetailsVO;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.beans.Transient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
* 拆包明细记录 服务实现类
@ -37,6 +56,20 @@ import java.util.List;
@Service
public class DistributionUnpackingDetailsServiceImpl extends BaseServiceImpl<DistributionUnpackingDetailsMapper, DistributionUnpackingDetailsEntity> implements IDistributionUnpackingDetailsService {
@Autowired
@Lazy
private IDistributionStockListService distributionStockListService;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient;
@Autowired
private IBasicMaterialClient basicMaterialClient;
@Override
public IPage<DistributionUnpackingDetailsVO> selectDistributionUnpackingDetailsPage(IPage<DistributionUnpackingDetailsVO> page, DistributionUnpackingDetailsVO distributionUnpackingDetails) {
return page.setRecords(baseMapper.selectDistributionUnpackingDetailsPage(page, distributionUnpackingDetails));
@ -52,4 +85,111 @@ public class DistributionUnpackingDetailsServiceImpl extends BaseServiceImpl<Dis
return distributionUnpackingDetailsList;
}
/**
* @param page
* @param stockListId
* @return
*/
@Override
public IPage<DistributionUnpackingDetailsVO> stockListUnpackDetail(IPage<DistributionUnpackingDetailsVO> page, Long stockListId) {
return baseMapper.stockListUnpackDetail(page, stockListId);
}
/**
* @param stockListIds
* @return
*/
@Override
@Transient
public R cancelUnpack(String stockListIds) {
String method = "######################DistributionUnpackingDetailsServiceImpl.cancelUnpack";
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)){
log.error(method+"取消拆包失败,仓库未选择");
return R.fail(403,"未授权");
}
//根基拆包的记录进行数量的维护
if (Func.isEmpty(stockListIds)) {
log.error(method+"取消拆包失败,参数不能为空");
return R.fail("操作失败");
}
List<Long> list = Func.toLongList(stockListIds);
List<DistributionUnpackingDetailsEntity> distributionUnpackingDetailsEntities = this.listByIds(list);
if (!distributionUnpackingDetailsEntities.isEmpty()){
List<Long> sourceStockListId = distributionUnpackingDetailsEntities.stream().map(DistributionUnpackingDetailsEntity::getStockListId).distinct().collect(Collectors.toList());
if (sourceStockListId.size() == 1){
//查询父级库存品
DistributionStockListEntity stockListEntity = distributionStockListService.getById(sourceStockListId.get(0));
if (Func.isEmpty(stockListEntity)){
log.error(method+"取消拆包失败,查询父级库存品错误");
return R.fail("操作失败");
}
//查询父级库存品物料信息
BasicMaterialEntity basicMaterialEntity = basicMaterialClient.getMaterialOwnId(stockListEntity.getMaterialId());
if (Func.isEmpty(basicMaterialEntity)){
log.error(method+"取消拆包失败,查询父级库存品物料错误");
return R.fail("操作失败");
}
BladeUser user = AuthUtil.getUser();
AtomicReference<Integer> Quantity = new AtomicReference<>(0);
//收集需要进行删除记录ID
List<Long> ids = new ArrayList<>();
List<DistributionStockListEntity> distributionStockListEntities = new ArrayList<>();
Map<Long, List<DistributionUnpackingDetailsEntity>> collect = distributionUnpackingDetailsEntities.stream().collect(Collectors.groupingBy(DistributionUnpackingDetailsEntity::getAimStockListId));
if (!collect.isEmpty()) {
collect.forEach((k,v)->{
//统计需要进行恢复的拆包数量
int sum = v.stream().mapToInt(DistributionUnpackingDetailsEntity::getUnpackingQuantity).sum();
Quantity.updateAndGet(v1 -> v1 + sum);
List<Long> stockDetailIds = v.stream().map(DistributionUnpackingDetailsEntity::getId).collect(Collectors.toList());
ids.addAll(stockDetailIds);
for (DistributionUnpackingDetailsEntity detailsEntity : v) {
DistributionStockListEntity distributionStockListEntity = distributionStockListService.getById(detailsEntity.getAimStockListId());
distributionStockListEntity.setId(detailsEntity.getAimStockListId());
distributionStockListEntity.setQuantityStock(distributionStockListEntity.getQuantityStock() - (detailsEntity.getUnpackingQuantity() * Integer.parseInt(basicMaterialEntity.getPackageNum())) );
if (distributionStockListEntity.getQuantityStock() - distributionStockListEntity.getOutboundQuantity() < 0){
//收集无法进行拆包的库存品
throw new RuntimeException("在库数量不足取消拆包操作");
}else {
distributionStockListEntities.add(distributionStockListEntity);
}
}
});
if (!distributionStockListEntities.isEmpty()){
distributionStockListService.updateBatchById(distributionStockListEntities);
}
}
if (!ids.isEmpty()){
this.update(new UpdateWrapper<DistributionUnpackingDetailsEntity>().lambda()
.in(DistributionUnpackingDetailsEntity::getId,ids)
.set(DistributionUnpackingDetailsEntity::getIsDeleted,1)
.set(DistributionUnpackingDetailsEntity::getCancelUnpackUser,user.getNickName())
);
}
//查询是否还存在有拆包记录
List<DistributionUnpackingDetailsEntity> allLog = this.list(Wrappers.<DistributionUnpackingDetailsEntity>query().lambda().eq(DistributionUnpackingDetailsEntity::getStockListId, stockListEntity.getId()));
if (allLog.isEmpty()){
stockListEntity.setUnpack(false);
}
stockListEntity.setUnpackingQuantity(stockListEntity.getUnpackingQuantity() - Quantity.get());
stockListEntity.setOutboundQuantity(stockListEntity.getOutboundQuantity() - Quantity.get());
stockListEntity.setQuantityStock(stockListEntity.getQuantityStock() + Quantity.get());
distributionStockListService.updateById(stockListEntity);
}else {
log.error(method+"取消拆包失败,存在多个父级库存品ID");
throw new RuntimeException("操作失败");
}
}else {
//查询不到日志信息
log.error(method+"取消拆包失败,查询记录失败");
throw new RuntimeException("操作失败");
}
return R.success("操作成功");
}
}

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

@ -1721,7 +1721,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
public IPage<DistrilbutionBillLadingVO> pageList(IPage<Object> page, Map<String, Object> distrilbutionBillLading) {
DistrilbutionBillLadingDTO distrilbutionBillLadingDTO = JSONObject.parseObject(JSONObject.toJSONString(distrilbutionBillLading), DistrilbutionBillLadingDTO.class);
//获取当前登录人仓库
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse();
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWarehouseList();
List<Long> collect = myWatchWarehouse.stream()
.map(BasicdataWarehouseEntity::getId)
.collect(Collectors.toList());

Loading…
Cancel
Save