Browse Source

装车库存品

dist.1.3.0
汤建军 7 months ago
parent
commit
11c5138365
  1. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.java
  2. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
  3. 416
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java

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

@ -552,4 +552,13 @@ public interface DistributionDeliveryListMapper extends BaseMapper<DistributionD
* @param deliveryId
*/
Long selectPackageByorderPackageCodeAndDeliveryId(@Param("orderPackageCode")String orderPackageCode,@Param("deliveryId") Long deliveryId,@Param("warehouseId") Long warehouseId);
/**
* 查询库存品包件
* @param deliveryId
* @param inventoryPackageCode
* @return
*/
Long selectInventoryPackageByDeliveryIdAndInventoryPackageCode(@Param("deliveryId")Long deliveryId,@Param("inventoryPackageCode") String inventoryPackageCode);
}

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

@ -2593,5 +2593,20 @@
AND ldrp.packet_bar_status != 2
AND ldpl.warehouse_id = #{warehouseId}
</select>
<select id="selectInventoryPackageByDeliveryIdAndInventoryPackageCode"
resultType="java.lang.Long">
SSELECT
lds.reservation_id
FROM
logpm_dis_stock_list_detail AS ldsld
LEFT JOIN logpm_distribution_signfor AS lds ON lds.reservation_id = ldsld.reservation_id
LEFT JOIN logpm_distribution_delivery_list AS lddl ON lds.delivery_id = lddl.id
AND lddl.is_deleted = 0
WHERE
ldsld.stock_package_code = #{inventoryPackageCode}
AND lddl.id = #{deliveryId}
AND ldsld.stock_package_status != 2
AND ldsld.is_deleted = 0
</select>
</mapper>

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

@ -65,6 +65,7 @@ import org.apache.logging.log4j.util.Strings;
import org.jetbrains.annotations.NotNull;
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.Inventory.InventoryStockUpStatusConstant;
import org.springblade.common.constant.ModuleNameConstant;
@ -1786,7 +1787,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
* @return
*/
@NotNull
private static DistributionLoadscaninvnEntity getDistributionLoadscaninvnEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionDeliverySelfEntity distributionDeliverySelfEntity, List<DisStockListDetailEntity> disStockListDetailEntities, BasicdataWarehouseEntity warehouseEntity) {
private static DistributionLoadscaninvnEntity getDistributionLoadscaninvnEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO, DistributionDeliverySelfEntity distributionDeliverySelfEntity, DisStockListDetailEntity disStockListDetailEntity, BasicdataWarehouseEntity warehouseEntity) {
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = new DistributionLoadscaninvnEntity();
BladeUser user = AuthUtil.getUser();
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
@ -1810,125 +1811,20 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
distributionLoadscaninvnEntity.setScanType("1");
distributionLoadscaninvnEntity.setScanUser(user.getUserName());
distributionLoadscaninvnEntity.setScanTime(now);
distributionLoadscaninvnEntity.setOrderPackageCode(disStockListDetailEntities.get(0).getStockPackageCode());
distributionLoadscaninvnEntity.setInventoryId(disStockListDetailEntities.get(0).getStockListId());
distributionLoadscaninvnEntity.setReservationId(disStockListDetailEntities.get(0).getReservationId());
distributionLoadscaninvnEntity.setOrderPackageCode(disStockListDetailEntity.getStockPackageCode());
distributionLoadscaninvnEntity.setInventoryId(disStockListDetailEntity.getStockListId());
distributionLoadscaninvnEntity.setReservationId(disStockListDetailEntity.getReservationId());
distributionLoadscaninvnEntity.setOneClick(1);
distributionLoadscaninvnEntity.setWarehouseId(warehouseEntity.getId());
distributionLoadscaninvnEntity.setWarehouseName(warehouseEntity.getName());
distributionLoadscaninvnEntity.setInventoryPackageId(disStockListDetailEntities.get(0).getId());
distributionLoadscaninvnEntity.setLoadedNub(disStockListDetailEntities.get(0).getNum());
distributionLoadscaninvnEntity.setInventoryPackageId(disStockListDetailEntity.getId());
distributionLoadscaninvnEntity.setLoadedNub(disStockListDetailEntity.getNum());
distributionLoadscaninvnEntity.setDeliveryId(distrilbutionloadingscanDTO.getDeliveryId());
distributionLoadscaninvnEntity.setIsInsert(LoadingIsInsertConstant.zhengchang.getValue());
distributionLoadscaninvnEntity.setScanSynchronous(1);
return distributionLoadscaninvnEntity;
}
// if (distributionLoadscaninvnEntities.size() == 1) {
// return R.fail("重复扫描");
// }
//这里就需要将此库存品和计划中的进行校验,如果此时无法从
//查询出该客户下的所有库存品包件信息
// List<DisStockListDetailEntity> list = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda().eq(DisStockListDetailEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId()));
// if (list.size() < 0) {
// return R.fail("无效包条!!");
// }
// //1、不存在这个客户的库存品列表中,串货
// List<DisStockListDetailEntity> disStockListDetailEntities = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
// .eq(DisStockListDetailEntity::getReservationId, distrilbutionloadingscanDTO.getReservationId())
// .eq(DisStockListDetailEntity::getStockPackageCode, distrilbutionloadingscanDTO.getBarcode()));
// if (disStockListDetailEntities.size() == 1) {
// //这里就需要插入库存品扫描信息
// ArrayList<DistributionLoadscaninvnEntity> distributionLoadscaninvnEntityArrayList = new ArrayList<>();
// for (int i = 0; i < disStockListDetailEntities.size(); i++) {
// //依次插入该装车记录,设置车辆
// DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = new DistributionLoadscaninvnEntity();
// if (null != distributionDeliverySelfEntity.getDriverId()) {
// distributionLoadscaninvnEntity.setDriverId(distributionDeliverySelfEntity.getDriverId());
// }
// distributionLoadscaninvnEntity.setDriverName(distributionDeliverySelfEntity.getDriverName());
// distributionLoadscaninvnEntity.setScanStatus(LoadingStatusConstant.saomiao.getValue());
// distributionLoadscaninvnEntity.setScanType("1");
// BladeUser user = AuthUtil.getUser();
// distributionLoadscaninvnEntity.setScanUser(user.getNickName());
// distributionLoadscaninvnEntity.setScanTime(new Date());
// distributionLoadscaninvnEntity.setOrderPackageCode(disStockListDetailEntities.get(i).getStockPackageCode());
// if (null == distributionLoadscaninvnEntity.getPackageNub()) {
// distributionLoadscaninvnEntity.setPackageNub(1);
// }
// distributionLoadscaninvnEntity.setLoadingId(distrilbutionloadingscanDTO.getLoadingId());
// distributionLoadscaninvnEntity.setVehicleName(distributionDeliverySelfEntity.getVehicleNub());
// if (null != distributionDeliverySelfEntity.getDriverPhone()) {
// distributionLoadscaninvnEntity.setDriverPhone(distributionDeliverySelfEntity.getDriverPhone());
// }
// if (null != distributionDeliverySelfEntity.getVehicleId()) {
// distributionLoadscaninvnEntity.setVehicleId(distributionDeliverySelfEntity.getVehicleId());
// }
//
// distributionLoadscaninvnEntityArrayList.add(distributionLoadscaninvnEntity);
// }
// b = distributionLoadscaninvnService.saveBatch(distributionLoadscaninvnEntityArrayList);
//
// } else {
// return Resp.scanFail("重复包条码!!","4564");
// }
// //2、不存在这个车次中无效包条码
// //3、重复扫码
// distributionAsyncService.changeMarketDeliveryListStatus(distrilbutionloadingscanDTO.getBarcode(), distrilbutionloadingscanDTO.getDeliveryId());
//// return Resp.scanFail(b);
// // if (distrilbutionloadingscanDTO.getInventorytype() == 3) {
// //无拆包
// List<DistributionLoadscaninvnEntity> distributionLoadscanvnEntities = new ArrayList<>();
//// distributionLoadscanvnEntities = baseMapper.selectdeliveryworkVnScan(distrilbutionloadingscanDTO.getBarcode(), distrilbutionloadingscanDTO.getReservationId());
//// if (distributionLoadscanvnEntities.size() <= 0) {
// //拆包从备货查询
// distributionLoadscanvnEntities = baseMapper.selectdeliveryworkVnScanStock(distrilbutionloadingscanDTO.getBarcode(), distrilbutionloadingscanDTO.getReservationId(), distrilbutionloadingscanDTO.getDeliveryId());
//// if (distributionLoadscanvnEntities.size() <= 0) {
//// return R.fail(3001, "窜货");
//// }
//// }
// for (DistributionLoadscaninvnEntity distributionLoadscanEntity : distributionLoadscanvnEntities) {
// //查询是否重复扫码
//// List<DistributionLoadscanEntity> distributionLoadscanEntitiesflag = distributionLoadscanMapper.selectList(new QueryWrapper<DistributionLoadscanEntity>().lambda()
//// .eq(DistributionLoadscanEntity::getDeliveryId, distributionLoadscanEntity.getReservationId())
//// .eq(DistributionLoadscanEntity::getOrderPackageCode, distributionLoadscanEntity.getOrderPackageCode())
//// .ne(DistributionLoadscanEntity::getScanStatus, 1)
//// );
//// if (distributionLoadscanEntitiesflag.size() > 0) {
//// return R.fail(3002, "重复货物");
//// }
// //依次插入该装车记录,设置车辆
// if (null != distributionDeliverySelfEntity.getDriverId()) {
// distributionLoadscanEntity.setDriverId(distributionDeliverySelfEntity.getDriverId());
// }
// distributionLoadscanEntity.setDriverName(distributionDeliverySelfEntity.getDriverName());
// distributionLoadscanEntity.setScanStatus(2);
// distributionLoadscanEntity.setScanType("1");
// distributionLoadscanEntity.setScanTime(new Date());
// if (null == distributionLoadscanEntity.getPackageNub()) {
// distributionLoadscanEntity.setPackageNub(1);
// }
// distributionLoadscanEntity.setLoadingId(distrilbutionloadingscanDTO.getLoadingId());
// distributionLoadscanEntity.setVehicleName(distributionDeliverySelfEntity.getVehicleNub());
// if (null != distributionDeliverySelfEntity.getDriverPhone()) {
// distributionLoadscanEntity.setDriverPhone(distributionDeliverySelfEntity.getDriverPhone());
// }
// if (null != distributionDeliverySelfEntity.getVehicleId()) {
// distributionLoadscanEntity.setVehicleId(distributionDeliverySelfEntity.getVehicleId());
// }
// //查询本车次是否第一次扫码,没有则更新上车时间
// Integer i = distributionDeliveryListMapper.updateloadingTimeById(distrilbutionloadingscanDTO.getDeliveryId());
// //更新签收表的装车数量
// Integer j = distributionSignforMapper.updateloadByinvn(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
// }
// b = distributionLoadscaninvnService.saveBatch(distributionLoadscanvnEntities);
//// } else if (distrilbutionloadingscanDTO.getInventorytype() == 1) {
// //TODO 库存品手动输入
//
// }
// }
@Override
public IPage<DistributionDeliveryListPrintReponseVO> customListPage(IPage<DistributionDeliveryListPrintReponseVO> page, QueryWrapper<DistributionDeliveryListPrintRequestVO> queryWrapper) {
@ -8021,7 +7917,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return R.fail(403, "未授权!!!");
}
Integer type = distrilbutionloadingscanDTO.getType();
String orderPackageCode = distrilbutionloadingscanDTO.getBarcode();
Long deliveryId = distrilbutionloadingscanDTO.getDeliveryId();
Long warehouseId = myCurrentWarehouse.getId();
DistributionDeliveryListEntity deliveryListEntity = this.getById(deliveryId);
@ -8046,6 +7941,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
log.error(method + "参数缺失Barcode");
return Resp.fail("参数缺失,请联系管理员");
}
String orderPackageCode = distrilbutionloadingscanDTO.getBarcode();
List<JSONObject> packageLogs = new ArrayList<>();
DistributionParcelListEntity parcelListEntity = distributionParcelListMapper.selectByOrderPackageCode(orderPackageCode, myCurrentWarehouse.getId());
if (Objects.isNull(parcelListEntity)) {
@ -8080,7 +7976,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
if (Objects.isNull(reservationId)) {
//判定是否满足异常装车
Boolean isAbnormalLoadingFlag = judgeIsAbnormalLoading(deliveryId, parcelListEntity);
Boolean isAbnormalLoadingFlag = judgeIsAbnormalLoading(deliveryId, parcelListEntity,reservationId);
if (isAbnormalLoadingFlag) {
return R.fail(5000, "异常装车");
log.info("异常装车判定成功>>>>>>packageCode:{},reservationId:{}", distrilbutionloadingscanDTO.getBarcode(), distrilbutionloadingscanDTO.getReservationId());
@ -8088,7 +7984,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return Resp.scanFail("蹿货", "蹿货");
}
//正常进行装车
DistributionLoadscanEntity loadscanEntity = createdDistributionLoadscanEntity(deliveryListEntity,distributionDeliverySelfEntity,reservationId,parcelListEntity);
DistributionLoadscanEntity loadscanEntity = createdDistributionLoadscanEntity(deliveryListEntity,distributionDeliverySelfEntity,reservationId,parcelListEntity,myCurrentWarehouse,user);
distributionLoadscanService.save(loadscanEntity);
//更新包件装车状态
packageLockIds.add(parcelListEntity.getId());
@ -8122,14 +8018,200 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
break;
case 2:
if (Objects.isNull(distrilbutionloadingscanDTO.getReservationId())){
log.error(method + "参数缺失ReservationId");
return Resp.fail("参数缺失,请联系管理员");
}
if (Objects.isNull(distrilbutionloadingscanDTO.getParcelListDTOS())){
log.error(method + "参数缺失ParcelListDTOS");
return Resp.fail("参数缺失,请联系管理员");
}
List<DistributionParcelNumberDTO> parcelListDTOS = distrilbutionloadingscanDTO.getParcelListDTOS();
boolean flag = parcelListDTOS.stream().allMatch(d -> d.getLoadingNum() < 0);
if (flag) {
log.error("############################# parcelListDTOS装车数据无效:{}", parcelListDTOS);
return Resp.scanFail("装车失败", "请填写正确的装车数量!!!");
}
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
if (Func.isNotEmpty(distrilbutionloadingscanDTO.getReservationId())) {
//查询该订单是否属于当前配送任务
List<DistributionReservationStockarticleEntity> reservationStockarticleEntityList = distributionReservationMapper.selectStockArticleByReservationId(distrilbutionloadingscanDTO.getReservationId());
if (Func.isNotEmpty(reservationStockarticleEntityList)) {
//存在该计划,这里的异常装车只能
//这里就需要进行零担计划的查询
//对于零担订单对于同一个预约客户而言这里只能出现一种,这里就是单条结果
DistributionReservationStockarticleEntity reservationStockarticleEntity = reservationStockarticleEntityList.get(0);
List<DistributionReservationZeroPackageEntity> reservationZeroPackageEntityList = distributionReservationZeroPackageService.list(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda().
eq(DistributionReservationZeroPackageEntity::getReservationId, reservationStockarticleEntity.getReservationId()).
eq(DistributionReservationZeroPackageEntity::getStockArticleId, distrilbutionloadingscanDTO.getOrderId()).
ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue()));
if (Func.isNotEmpty(reservationZeroPackageEntityList)) {
//查询零担订单品类信息
List<Long> zeroPackageIds = reservationZeroPackageEntityList.stream().map(DistributionReservationZeroPackageEntity::getParcelListId).collect(Collectors.toList());
Map<Long, DistributionReservationZeroPackageEntity> reservationZeroPackageMap = reservationZeroPackageEntityList.stream().collect(Collectors.toMap(DistributionReservationZeroPackageEntity::getParcelListId, Function.identity(), (k1, k2) -> k2));
List<DistributionParcelNumberEntity> parcelNumberEntityList = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda().in(DistributionParcelNumberEntity::getParcelListId, zeroPackageIds));
if (Func.isEmpty(parcelNumberEntityList)) {
log.error("#######################查询零担品类信息错误,reservationID:{}", distrilbutionloadingscanDTO.getReservationId());
throw new RuntimeException("服务器正忙...");
}
Map<Long, DistributionParcelNumberEntity> zeroPackageMap = parcelNumberEntityList.stream().collect(Collectors.toMap(DistributionParcelNumberEntity::getParcelListId, Function.identity(), (k1, k2) -> k2));
List<Long> operationZeroPackageIds = parcelListDTOS.stream().map(DistributionParcelNumberDTO::getParcelListId).collect(Collectors.toList());
//查询是否已经有装车数据了
List<DistributionLoadscanEntity> loadscanEntityList = distributionLoadscanService.list(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, reservationStockarticleEntity.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, reservationStockarticleEntity.getStockArticleId()).in(DistributionLoadscanEntity::getPackageId, operationZeroPackageIds).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
Map<Long, List<DistributionLoadscanEntity>> loadMap = null;
if (Func.isNotEmpty(loadscanEntityList)) {
loadMap = loadscanEntityList.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getPackageId));
}
for (DistributionParcelNumberDTO parcelListDTO : parcelListDTOS) {
DistributionParcelListEntity zeroParcelListEntity = distributionParcelListService.getById(parcelListDTO.getParcelListId());
if (Func.isEmpty(reservationZeroPackageMap.get(parcelListDTO.getParcelListId()))) {
log.error("####################预约零担品类信息维护错误,parcelListDTO的ID:{}", parcelListDTO.getParcelListId());
throw new RuntimeException("服务器正忙...");
}
DistributionReservationZeroPackageEntity reservationZeroPackageEntity = reservationZeroPackageMap.get(parcelListDTO.getParcelListId());
if (parcelListDTO.getLoadingNum() > reservationZeroPackageEntity.getQuantity()) {
log.error("####################预约零担品类信息维护错误,parcelListDTO的ID:{}", parcelListDTO.getParcelListId());
throw new RuntimeException("计划数:" + reservationZeroPackageEntity.getQuantity());
}
if (Func.isNotEmpty(loadMap)) {
List<DistributionLoadscanEntity> loadscanEntities = loadMap.get(parcelListDTO.getParcelListId());
if (Func.isNotEmpty(loadscanEntities)) {
if (parcelListDTO.getLoadingNum() <= reservationZeroPackageEntity.getQuantity()) {
//零担修改装车
DistributionLoadscanEntity loadscanEntity = loadscanEntities.get(0);
updateZeroLoadingEntity(loadscanEntity,parcelListDTO,myCurrentWarehouse,zeroPackageMap);
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", zeroParcelListEntity.getOrderCode());
jsonObject.put("warehouseId", myCurrentWarehouse.getId());
jsonObject.put("taskId", distrilbutionloadingscanDTO.getReservationId());
jsonObject.put("type", 3);
jsonObject.put("num", 1);
jsonObject.put("remark", "装车下架");
jsonObjects.add(jsonObject);
}
} else {
if (parcelListDTO.getLoadingNum() <= reservationZeroPackageEntity.getQuantity()) {
//新增
addZeroLoadingEntity(distrilbutionloadingscanDTO,
distributionDeliverySelfEntity,
deliveryListEntity,
distrilbutionloadingscanDTO.getReservationId(),
parcelListDTO,myCurrentWarehouse,
user,
zeroPackageMap);
packageLockIds.add(parcelListDTO.getParcelListId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", zeroParcelListEntity.getOrderCode());
jsonObject.put("warehouseId", myCurrentWarehouse.getId());
jsonObject.put("taskId", distrilbutionloadingscanDTO.getReservationId());
jsonObject.put("type", 3);
jsonObject.put("num", 1);
jsonObject.put("remark", "装车下架");
jsonObjects.add(jsonObject);
}
}
} else {
if (parcelListDTO.getLoadingNum() <= reservationZeroPackageEntity.getQuantity()) {
//新增
addZeroLoadingEntity(distrilbutionloadingscanDTO,
distributionDeliverySelfEntity,
deliveryListEntity,
distrilbutionloadingscanDTO.getReservationId(),
parcelListDTO,myCurrentWarehouse,
user,
zeroPackageMap);
packageLockIds.add(parcelListDTO.getParcelListId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", zeroParcelListEntity.getOrderCode());
jsonObject.put("warehouseId", myCurrentWarehouse.getId());
jsonObject.put("taskId", distrilbutionloadingscanDTO.getReservationId());
jsonObject.put("type", 3);
jsonObject.put("num", 1);
jsonObject.put("remark", "装车下架");
jsonObjects.add(jsonObject);
}
}
}
} else {
log.error("#######################查询预约零担品类信息错误,reservationID:{}", distrilbutionloadingscanDTO.getReservationId());
}
} else {
log.error("#######################查询预约订单信息错误,reservationID:{}", distrilbutionloadingscanDTO.getReservationId());
}
}
break;
case 3:
if (Objects.isNull(distrilbutionloadingscanDTO.getBarcode())) {
log.error(method + "参数缺失Barcode");
return Resp.fail("参数缺失,请联系管理员");
}
String inventoryPackageCode = distrilbutionloadingscanDTO.getBarcode();
//查询库存品
Long reservationId = baseMapper.selectInventoryPackageByDeliveryIdAndInventoryPackageCode(deliveryId,inventoryPackageCode);
if (Objects.nonNull(reservationId)){
parcelListEntity = distributionParcelListMapper.selectByOrderPackageCode(inventoryPackageCode, myCurrentWarehouse.getId());
if (!Objects.isNull(parcelListEntity)) {
return Resp.scanFail("请在定制品页面扫描此码", "请在定制品页面扫描此码");
} else {
return Resp.scanFail("系统无编码", "系统无编码");
}
}
List<DisStockListDetailEntity> invemtoryPackageList = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, reservationId)
.eq(DisStockListDetailEntity::getStockPackageCode, inventoryPackageCode)
.ne(DisStockListDetailEntity::getStockPackageStatus, InventoryPackageStatusConstant.quxiao.getValue())
);
if (invemtoryPackageList.size() > 1) {
log.error(method+"此库存品包件在预约计划中存在多条,reservationId:{},inventoryPackageCode:{}",reservationId,inventoryPackageCode);
return Resp.scanFail("此包件数据错误", "此包件数据错误");
}
DisStockListDetailEntity disStockListDetailEntity = invemtoryPackageList.get(0);
disStockListDetailEntity.setStockLockingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
disStockListDetailService.updateById(disStockListDetailEntity);
//维护包件装车状态
boolean update = distributionParcelListService.update(
Wrappers.<DistributionParcelListEntity>update().lambda()
.eq(DistributionParcelListEntity::getOrderPackageCode, disStockListDetailEntity.getStockPackageCode())
.eq(DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId())
.eq(DistributionParcelListEntity::getMaterialCode, disStockListDetailEntity.getSku())
.set(DistributionParcelListEntity::getOrderPackageLoadingStatus, OrderPackageLoadingStatusConstant.yizhuangche.getValue())
.set(DistributionParcelListEntity::getOrderPackageReservationStatus, OrderPackageReservationStatusConstant.yiyueyue.getValue())
.set(DistributionParcelListEntity::getOrderPackageStatus, OrderPackageStatusConstant.yichuku.getValue())
);
if (update){
//修改成功 此包件是转的
DistributionParcelListEntity parcelListEntity1 = distributionParcelListService.selectByOrderPackageCode(inventoryPackageCode, myCurrentWarehouse.getId());
if (Objects.isNull(parcelListEntity1)){
pushList.add(parcelListEntity1);
}
}
log.info(">>>>>>>>>>>>>>>>>>>装车修改库存品包件>装车包件码:{},", disStockListDetailEntity.getStockPackageCode());
DistributionLoadscaninvnEntity distributionLoadscaninvnEntity = getDistributionLoadscaninvnEntity(distrilbutionloadingscanDTO, distributionDeliverySelfEntity, disStockListDetailEntity, myCurrentWarehouse);
packageLockIds.add(distributionLoadscaninvnEntity.getInventoryPackageId());
distributionLoadscaninvnService.save(distributionLoadscaninvnEntity);
//查询本车次是否第一次扫码,没有则更新上车时间
Integer a = distributionDeliveryListMapper.updateloadingTimeById(distributionLoadscaninvnEntity.getDeliveryId());
//更新签收表的装车数量
Integer j = distributionSignforMapper.updateloadByinvn(distributionLoadscaninvnEntity.getDeliveryId(), distributionLoadscaninvnEntity.getReservationId(), distributionLoadscaninvnEntity.getLoadedNub());
//处理出库问题
distributionStockListMapper.deductionQuantityStock(distributionLoadscaninvnEntity.getInventoryId(), distributionLoadscaninvnEntity.getLoadedNub());
//维护客户信息
distributionReservationService.maintenanceReservationInfo(distrilbutionloadingscanDTO.getReservationId());
//维护配送装车状态
distributionDeliveryListService.maintenanceDeliveryInfo(distrilbutionloadingscanDTO.getDeliveryId());
//备货库位下架
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", distributionLoadscaninvnEntity.getOrderPackageCode());
jsonObject.put("warehouseId", myCurrentWarehouse.getId());
jsonObject.put("taskId", distributionLoadscaninvnEntity.getReservationId());
jsonObject.put("type", 2);
jsonObject.put("num", 1);
jsonObject.put("remark", "装车下架");
jsonObjects.add(jsonObject);
break;
}
//添加缓存
if (!packageLockIds.isEmpty()) {
@ -8173,6 +8255,101 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return null;
}
private void updateZeroLoadingEntity(DistributionLoadscanEntity loadscanEntity, DistributionParcelNumberDTO parcelListDTO, BasicdataWarehouseEntity myCurrentWarehouse,Map<Long, DistributionParcelNumberEntity> zeroPackageMap) {
//维护零担出库数量
DistributionParcelNumberEntity parcelNumberEntity = zeroPackageMap.get(parcelListDTO.getParcelListId());
BigDecimal deliveryQuantity = new BigDecimal(parcelNumberEntity.getDeliveryQuantity());
BigDecimal handQuantity = new BigDecimal(parcelNumberEntity.getHandQuantity());
BigDecimal loadedNub = new BigDecimal(loadscanEntity.getLoadedNub());
BigDecimal outboundQuantity = new BigDecimal(parcelNumberEntity.getOutboundQuantity());
BigDecimal loadedNum = new BigDecimal(parcelListDTO.getLoadingNum());
parcelNumberEntity.setDeliveryQuantity(deliveryQuantity.add(loadedNub).subtract(loadedNum).intValue());
parcelNumberEntity.setOutboundQuantity(outboundQuantity.subtract(loadedNub).add(loadedNum).intValue());
parcelNumberEntity.setHandQuantity(handQuantity.subtract(loadedNum).add(loadedNub).intValue());
distributionParcelNumberService.updateById(parcelNumberEntity);
//维护装车数量
DistributionSignforEntity signforEntity = distributionSignforService.getOne(Wrappers.<DistributionSignforEntity>query().lambda().eq(DistributionSignforEntity::getDeliveryId, loadscanEntity.getDeliveryId()).eq(DistributionSignforEntity::getReservationId, loadscanEntity.getReservationId()));
BigDecimal loadedNumber = new BigDecimal(signforEntity.getLoadedNumber());
signforEntity.setLoadedNumber(loadedNumber.add(loadedNum).subtract(loadedNub).intValue());
distributionSignforService.updateById(signforEntity);
loadscanEntity.setLoadedNub(parcelListDTO.getLoadingNum());
loadscanEntity.setPackageNub(parcelListDTO.getLoadingNum());
loadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
loadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
distributionLoadscanService.updateById(loadscanEntity);
//维护零担订单装车状态
distributionAsyncService.checkZeroStockArticleLoadingStatus(parcelNumberEntity, loadscanEntity.getDeliveryId(), loadscanEntity.getReservationId());
}
private void addZeroLoadingEntity(DistrilbutionloadingscanDTO distrilbutionloadingscanDTO,
DistributionDeliverySelfEntity distributionDeliverySelfEntity,
DistributionDeliveryListEntity deliveryListEntity,
Long reservationId,
DistributionParcelNumberDTO parcelNumberDTO,
BasicdataWarehouseEntity myCurrentWarehouse,
BladeUser user,
Map<Long, DistributionParcelNumberEntity> zeroPackageMap) {
DistributionLoadscanEntity zeroLoadscanEntity = createdDistributionZeroLoadscanEntity(distributionDeliverySelfEntity,deliveryListEntity,distrilbutionloadingscanDTO.getReservationId(),parcelNumberDTO,myCurrentWarehouse,user);
distributionLoadscanService.save(zeroLoadscanEntity);
//更新装车时间
Integer i = distributionDeliveryListMapper.updateloadingTimeById(distrilbutionloadingscanDTO.getDeliveryId());
//更新装车数量
Integer j = distributionSignforMapper.updateloadByReservationId(zeroLoadscanEntity.getDeliveryId(), zeroLoadscanEntity.getReservationId(), zeroLoadscanEntity.getPackageNub());
//维护零担品类的数量
DistributionParcelNumberEntity parcelNumberEntity = zeroPackageMap.get(parcelNumberDTO.getParcelListId());
parcelNumberEntity.setOutboundQuantity(parcelNumberEntity.getOutboundQuantity() + parcelNumberDTO.getLoadingNum());
parcelNumberEntity.setDeliveryQuantity(parcelNumberEntity.getDeliveryQuantity() - parcelNumberDTO.getLoadingNum());
parcelNumberEntity.setHandQuantity(parcelNumberEntity.getHandQuantity() - parcelNumberDTO.getLoadingNum());
distributionParcelNumberService.updateById(parcelNumberEntity);
distributionAsyncService.checkZeroStockArticleLoadingStatus(parcelNumberEntity, zeroLoadscanEntity.getDeliveryId(), zeroLoadscanEntity.getReservationId());
}
private DistributionLoadscanEntity createdDistributionZeroLoadscanEntity(DistributionDeliverySelfEntity distributionDeliverySelfEntity,
DistributionDeliveryListEntity deliveryListEntity,
Long reservationId,
DistributionParcelNumberDTO parcelNumberDTO,
BasicdataWarehouseEntity myCurrentWarehouse,
BladeUser user) {
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
DistributionLoadscanEntity zeroLoadscanEntity = new DistributionLoadscanEntity();
if (Func.isNotEmpty(distributionDeliverySelfEntity.getDeliveryId())) {
zeroLoadscanEntity.setDriverId(distributionDeliverySelfEntity.getDriverId());
}
if (Func.isNotEmpty(distributionDeliverySelfEntity.getDriverName())) {
zeroLoadscanEntity.setDriverName(distributionDeliverySelfEntity.getDriverName());
}
if (Func.isNotEmpty(distributionDeliverySelfEntity.getVehicleNub())) {
zeroLoadscanEntity.setVehicleName(distributionDeliverySelfEntity.getVehicleNub());
}
if (Func.isNotEmpty(distributionDeliverySelfEntity.getVehicleId())) {
zeroLoadscanEntity.setVehicleId(distributionDeliverySelfEntity.getVehicleId());
}
if (Func.isNotEmpty(distributionDeliverySelfEntity.getDriverPhone())) {
zeroLoadscanEntity.setDriverPhone(distributionDeliverySelfEntity.getDriverPhone());
}
//添加车次号
zeroLoadscanEntity.setTrainNumber(deliveryListEntity.getTrainNumber());
zeroLoadscanEntity.setScanStatus(LoadingStatusConstant.saomiao.getValue());
zeroLoadscanEntity.setScanType("1");
zeroLoadscanEntity.setOneClick(1);
zeroLoadscanEntity.setWarehouseId(myCurrentWarehouse.getId());
zeroLoadscanEntity.setWarehouseName(myCurrentWarehouse.getName());
zeroLoadscanEntity.setPackageId(parcelNumberDTO.getParcelListId());
zeroLoadscanEntity.setPackageNub(parcelNumberDTO.getLoadingNum());
zeroLoadscanEntity.setLoadedNub(parcelNumberDTO.getLoadingNum());
zeroLoadscanEntity.setReservationId(reservationId);
zeroLoadscanEntity.setDeliveryId(deliveryListEntity.getId());
zeroLoadscanEntity.setOrderId(parcelNumberDTO.getStockArticleId());
zeroLoadscanEntity.setScanTime(now);
zeroLoadscanEntity.setScanUser(user.getNickName());
zeroLoadscanEntity.setLoadingId(distributionDeliverySelfEntity.getId()+"");
zeroLoadscanEntity.setIsAbnormalLoading(1);
return zeroLoadscanEntity;
}
private DistributionLoadscanEntity createdDistributionLoadscanEntity(DistributionDeliveryListEntity deliveryListEntity,
DistributionDeliverySelfEntity distributionDeliverySelfEntity,
Long reservationId,
@ -8251,16 +8428,15 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return distributionDeliverySelfEntity;
}
private Boolean judgeIsAbnormalLoading(Long deliveryId, DistributionParcelListEntity parcelListEntity) {
private Boolean judgeIsAbnormalLoading(Long deliveryId, DistributionParcelListEntity parcelListEntity,Long reservationId) {
List<DistributionReservationEntity> reservationEntityList = distributionDeliveryListMapper.selectReservationByDeliveryListId(deliveryId);
if (!reservationEntityList.isEmpty()) {
boolean shangpeiFlag = reservationEntityList.stream().allMatch(r -> r.getDeliveryType().equals(DistributionTypeConstant.shipie.getValue()));
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleMapper.selectById(parcelListEntity.getStockArticleId());
if (shangpeiFlag) {
List<DistributionReservationEntity> reservationEntities = reservationEntityList.stream().filter(r -> Func.isNotEmpty(r.getConsignee()) && r.getConsignee().equals(stockArticleEntity.getCustomerName()) && r.getDeliveryAddress().equals(stockArticleEntity.getCustomerAddress()) && r.getDeliveryPhone().equals(stockArticleEntity.getCustomerTelephone()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(distrilbutionloadingscanDTO.getReservationId())).collect(Collectors.toList());
List<DistributionReservationEntity> reservationEntities = reservationEntityList.stream().filter(r -> Func.isNotEmpty(r.getConsignee()) && r.getConsignee().equals(stockArticleEntity.getCustomerName()) && r.getDeliveryAddress().equals(stockArticleEntity.getCustomerAddress()) && r.getDeliveryPhone().equals(stockArticleEntity.getCustomerTelephone()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(reservationId)).collect(Collectors.toList());
//查看是否存在满足条件的预约单
boolean flag = reservationEntityList.stream().anyMatch(r -> Func.isNotEmpty(r.getConsignee()) && r.getConsignee().equals(stockArticleEntity.getCustomerName()) && r.getDeliveryAddress().equals(stockArticleEntity.getCustomerAddress()) && r.getDeliveryPhone().equals(stockArticleEntity.getCustomerTelephone()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(distrilbutionloadingscanDTO.getReservationId()));
boolean flag = reservationEntityList.stream().anyMatch(r -> Func.isNotEmpty(r.getConsignee()) && r.getConsignee().equals(stockArticleEntity.getCustomerName()) && r.getDeliveryAddress().equals(stockArticleEntity.getCustomerAddress()) && r.getDeliveryPhone().equals(stockArticleEntity.getCustomerTelephone()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(reservationId));
//存在多个,操作人指定具体客户即可
if (reservationEntities.size() == 1 && flag) {
return true;
@ -8270,7 +8446,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
} else {
shangpeiFlag = reservationEntityList.stream().allMatch(r -> r.getDeliveryType().equals(DistributionTypeConstant.shangpei.getValue()));
if (shangpeiFlag) {
List<DistributionReservationEntity> reservationEntities = reservationEntityList.stream().filter(r -> r.getReceivingUnit().equals(stockArticleEntity.getConsigneeUnit()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(distrilbutionloadingscanDTO.getReservationId())).collect(Collectors.toList());
List<DistributionReservationEntity> reservationEntities = reservationEntityList.stream().filter(r -> r.getReceivingUnit().equals(stockArticleEntity.getConsigneeUnit()) && r.getMallName().equals(stockArticleEntity.getMallName()) && r.getId().equals(reservationId)).collect(Collectors.toList());
//查询是否满足商配异常装车
boolean flag = reservationEntityList.stream().anyMatch(r -> r.getReceivingUnit().equals(stockArticleEntity.getConsigneeUnit()) && r.getMallName().equals(stockArticleEntity.getMallName()));
if (reservationEntities.size() == 1 && flag) {

Loading…
Cancel
Save