Browse Source

Merge branch 'dev' into pre-production

newStockUp
pref_mail@163.com 1 year ago
parent
commit
f5ca374da5
  1. 312
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java
  2. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/app/StockupDTO.java
  3. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  4. 156
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  5. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionReservationService.java
  6. 25
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  7. 8
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java
  8. 24
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml
  9. 41
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java

312
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java

@ -41,6 +41,7 @@ import com.logpm.distribution.mapper.DistributionReservationMapper;
import com.logpm.distribution.mapper.DistributionReservationStocklistMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.warehouse.entity.WarehouseGoodsAllocationEntity;
import com.logpm.warehouse.entity.WarehouseUpdownGoodsEntity;
import com.logpm.warehouse.feign.*;
import io.swagger.annotations.Api;
@ -675,44 +676,105 @@ public class DistributionStockupAppController extends BladeController {
if (!distributionParcelListEntity.getMaterialCode().equals(cargoNumber)){
//不属于该物料库存品包件
return Resp.scanFail(60006,"无效的库存品包件!!!","无效的库存品包件!!!","");
}
//该包件不在此库位
WarehouseUpdownGoodsEntity warehouseUpdownGoodsEntity = new WarehouseUpdownGoodsEntity();
warehouseUpdownGoodsEntity.setAssociationValue(stockupDTO.getPacketBarCode());
warehouseUpdownGoodsEntity.setAssociationType("3");
warehouseUpdownGoodsEntity.setAllocationId(stockupDTO.getAllocationId());
warehouseUpdownGoodsEntity.setWarehouseId(myCurrentWarehouse.getId());
WarehouseUpdownGoodsEntity locationInformation = warehouseUpdownGoodsClient.getLocationInformation(warehouseUpdownGoodsEntity);
if (Func.isEmpty(locationInformation)){
return Resp.scanFail(60007,"库位无此包件!!!","库位无此包件!!!","");
}
//判断是否可以继续备货
//判断扫描的包件是否可以继续进行该预约的库存品备货
int isStockUp = judgmentIsStockUp(stockupDTO.getReservationId(),stockupDTO.getStockListId(),distributionParcelListEntity,myCurrentWarehouse.getId(),stockupDTO.getCargoNumber());
DistributionStockListEntity distributionStockListEntities = distributionStockupService.selectStockListInfoByCargoNumberList(stockupDTO.getReservationId(), stockupDTO.getCargoNumber(), stockupDTO.getAllocationId(), stockupDTO.getPacketBarCode());
if (ObjectUtils.isNull(distributionStockListEntities)) {
return R.data(60003, "", "该包件还未上架!");
switch (isStockUp){
case 1:
return Resp.scanFail(60008,"包件不属于此计划!!!","包件不属于此计划!!!","");
case 2:
return R.data(60002, distributionStockListEntities.getId(), "当前包件批次号与入库批次号不符,是否确认修改计划批次");
case 3:
//查询其他所用的页面信息
DistributionStockupStockListVO distributionStockupStockListVO = distributionReservationService.selectStockupStockListByStockListId(reservationId,distributionStockListEntities.getId());
return R.data(200, distributionStockupStockListVO, "扫描成功!");
case 4:
return R.data(200, distributionStockListEntities.getId(), "扫描成功!");
}
//判断是否可以继续备货
// if (ObjectUtils.isNull(distributionStockListEntities)) {
// return R.data(60003, "", "该包件还未上架!");
// }
// 通过当前预约单和货物定位当前计划的库存品批次
List<DistributionStockListEntity> planDistributionStockListEntities = getPlanDistributionStockListEntities(stockupDTO);
// List<DistributionStockListEntity> planDistributionStockListEntities = getPlanDistributionStockListEntities(stockupDTO);
//是否更新计划
boolean isUpdate = false;
Long updateStockListId = null;
// //是否更新计划
// boolean isUpdate = false;
// Long updateStockListId = null;
// 验证当前货位的货位和计划批次是否相同
// 验证当前扫描的库存品包件是否属于该计划的库存品批次
// List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(stockupDTO.getReservationId());
// distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).filter(drs->)
// for (DistributionStockListEntity planDistributionStockListEntity : planDistributionStockListEntities) {
// if (planDistributionStockListEntity.getSourceType().equals("2")) {
// if (planDistributionStockListEntity.getOrderCode().equals(distributionStockListEntities.getIncomingBatch())) {
// isUpdate = true;
// updateStockListId = distributionStockListEntities.getId();
// break;
// }
// }
// }
// if (isUpdate) {
// return R.data(60002, updateStockListId, "当前包件批次号与入库批次号不符,是否确认修改计划批次");
// }
for (DistributionStockListEntity planDistributionStockListEntity : planDistributionStockListEntities) {
if (planDistributionStockListEntity.getSourceType().equals("2")) {
if (planDistributionStockListEntity.getOrderCode().equals(distributionStockListEntities.getIncomingBatch())) {
isUpdate = true;
updateStockListId = distributionStockListEntities.getId();
break;
}
}
}
return R.data(200, "", "扫描成功!");
}
private int judgmentIsStockUp(Long reservationId,Long stockListId, DistributionParcelListEntity distributionParcelListEntity, Long warehouseId,String cargoNumber) {
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(reservationId);
if (Func.isNotEmpty(distributionReservationStocklistEntities)){
List<Long> stockListIds = distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).collect(Collectors.toList());
//查询库存品信息
List<DistributionStockListEntity> stockListEntityList = distributionStockListService.list(Wrappers.<DistributionStockListEntity>query().lambda()
.in(DistributionStockListEntity::getId, stockListId)
.eq(DistributionStockListEntity::getWarehouseId, warehouseId)
.eq(DistributionStockListEntity::getCargoNumber, cargoNumber)
);
//判断该库存品包件是否属于计划库存品的物料
boolean isHave = stockListEntityList.stream().map(DistributionStockListEntity::getCargoNumber).anyMatch(s -> s.contains(distributionParcelListEntity.getMaterialCode()));
if (!isHave){
return 1;
}
if (isUpdate) {
return R.data(60002, updateStockListId, "当前包件批次号与入库批次号不符,是否确认修改计划批次");
//判断该库存品包件是否属于计划的批次
boolean isHaveIncomingBatch = stockListEntityList.stream().map(DistributionStockListEntity::getIncomingBatch).anyMatch(s -> s.contains( distributionParcelListEntity.getOrderCode()));
if (!isHaveIncomingBatch){
//判断计划下是否还存在哟该物料的库存品
List<DistributionStockListEntity> distributionStockListEntities = distributionStockListService.list(Wrappers.<DistributionStockListEntity>query().lambda()
.in(DistributionStockListEntity::getId, stockListId)
.eq(DistributionStockListEntity::getWarehouseId, warehouseId)
.eq(DistributionStockListEntity::getCargoNumber, cargoNumber)
);
boolean isOther = distributionStockListEntities.stream().map(DistributionStockListEntity::getCargoNumber).anyMatch(s -> s.contains(distributionParcelListEntity.getMaterialCode()));
if (isOther){
//是否是计划下同物料的库存品
return 3;
}else {
//不属于计划中同物料的库存品
return 2;
}
}
}
return R.data(200, "", "扫描成功!");
return 4;
}
/**
@ -737,104 +799,148 @@ public class DistributionStockupAppController extends BladeController {
//todo 这里代码没有写完 等TJJ 和CYZ 空了来写
@ResponseBody
@PostMapping("/updateStockup")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "修改批次", notes = "传入stockupDTO")
// 修改预约备货信息 需要传入修改的包条
public R updateStockup(@RequestBody StockupDTO stockupDTO) {
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = distributionReservationMapper.selectStockListByReservationId(stockupDTO.getReservationId());
//当前预约是否存在该批次库存品计划
if (Func.isNotEmpty(distributionReservationStocklistEntities)){
boolean isAdd = distributionReservationStocklistEntities.stream().map(DistributionReservationStocklistEntity::getStocklistId).anyMatch(s -> s.equals(stockupDTO.getStockListId()));
//扣减对应的库存品信息
// DistributionStockListEntity newStockListEntity = distributionStockListService.getById(stockupDTO.getStockListId());
if (!isAdd){
///先进行对应的扣减
//查询该预约该物料的库存品信息
List<DistributionReservationStocklistEntity> reservationStocklistEntities = distributionReservationMapper.selectInventoryListByIdAndMateriel(stockupDTO.getReservationId(),stockupDTO.getCargoNumber());
//可能会出现同一物料不同批次的库存品
List<DistributionReservationStocklistEntity> reservationStockList = reservationStocklistEntities.stream().filter(drs -> drs.getReservationNum() > 0 && drs.getRealityNum() < drs.getReservationNum()).collect(Collectors.toList());
if (Func.isNotEmpty(reservationStockList)){
DistributionReservationStocklistEntity oldReservationStocklistEntity = reservationStockList.get(0);
//扣减计划数量
oldReservationStocklistEntity.setReservationNum(oldReservationStocklistEntity.getReservationNum() - 1);
distributionReservationStocklistService.updateById(oldReservationStocklistEntity);
//维护对应的库存品包件
List<DisStockListDetailEntity> stockListDetailEntities = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, oldReservationStocklistEntity.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, oldReservationStocklistEntity.getStocklistId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
// 增加实际扫描的包件对应的库存品信息 增加在预约库存品中间表上
DistributionReservationStocklistEntity reservationStocklistEntity = new DistributionReservationStocklistEntity();
reservationStocklistEntity.setReservationId(stockupDTO.getReservationId());
reservationStocklistEntity.setReservationNum(1);
reservationStocklistEntity.setLoadingStatus("10");
reservationStocklistEntity.setSigningStatus("10");
reservationStocklistEntity.setStockListStatus("3");
DistributionStockListEntity stockListEntity = distributionStockListService.getById(stockupDTO.getStockListId());
if(ObjectUtils.isNotNull(stockListEntity)){
reservationStocklistEntity.setStocklistId(stockListEntity.getId());
reservationStocklistEntity.setUnit(stockListEntity.getCargoUnit());
reservationStocklistEntity.setRealityNum(0);
}
distributionReservationStocklistService.save(reservationStocklistEntity);
//扣减对应的库存品信息
DistributionStockListEntity newStockListEntity = distributionStockListService.getById(stockListEntity.getId());
newStockListEntity.setQuantityStock(newStockListEntity.getQuantityStock() - reservationStocklistEntity.getReservationNum());
distributionStockListService.updateById(newStockListEntity);
//查询该预约该物料的库存品信息
List<DistributionReservationStocklistEntity> reservationStocklistEntities = distributionReservationMapper.selectInventoryListByIdAndMateriel(reservationStocklistEntity.getId(),stockListEntity.getMarketCode());
//可能会出现同一物料不同批次的库存品
//根据情况进行计划的数量扣减
Map<Long, List<DistributionReservationStocklistEntity>> stockListMap;
if (Func.isNotEmpty(reservationStocklistEntities)){
//查询是否进行备货
stockListMap = reservationStocklistEntities.stream().collect(Collectors.groupingBy(DistributionReservationStocklistEntity::getStocklistId));
//过滤已经完成备货的预约库存品批次
stockListMap.forEach((k,v)->{
//查询该预约的库存品包件是否完成备货
v.forEach(o->{
//查询包件是否完成备货
DistributionStockListEntity oldStockListEntity = distributionStockListService.getById(oldReservationStocklistEntity.getStocklistId());
oldStockListEntity.setQuantityOccupied(oldStockListEntity.getQuantityOccupied() - 1);
distributionStockListService.updateById(oldStockListEntity);
//对指定库存品包件进行库存品ID修改
DisStockListDetailEntity disStockListDetailEntity = stockListDetailEntities.stream().filter(sd -> Func.isEmpty(sd.getStockPackageCode())).collect(Collectors.toList()).get(0);
if (Func.isNotEmpty(disStockListDetailEntity)){
disStockListDetailEntity.setStockListId(stockupDTO.getStockListId());
disStockListDetailService.updateById(disStockListDetailEntity);
}
//维护对应库存品的冻结数量
DistributionStockListEntity newStockListEntity = distributionStockListService.getById(stockupDTO.getStockListId());
newStockListEntity.setQuantityOccupied(oldStockListEntity.getQuantityOccupied() + 1);
distributionStockListService.updateById(newStockListEntity);
}
// 增加实际扫描的包件对应的库存品信息 增加在预约库存品中间表上
DistributionReservationStocklistEntity reservationStocklistEntity = new DistributionReservationStocklistEntity();
reservationStocklistEntity.setReservationId(stockupDTO.getReservationId());
reservationStocklistEntity.setReservationNum(1);
reservationStocklistEntity.setLoadingStatus("10");
reservationStocklistEntity.setSigningStatus("10");
reservationStocklistEntity.setStockListStatus("3");
DistributionStockListEntity stockListEntity = distributionStockListService.getById(stockupDTO.getStockListId());
if(ObjectUtils.isNotNull(stockListEntity)){
reservationStocklistEntity.setStocklistId(stockListEntity.getId());
reservationStocklistEntity.setUnit(stockListEntity.getCargoUnit());
reservationStocklistEntity.setRealityNum(0);
}
distributionReservationStocklistService.save(reservationStocklistEntity);
}else {
//扣减该物料的计划库存品
List<DistributionReservationStocklistEntity> reservationStocklistEntityList = distributionReservationMapper.selectStockListByReservationIdAndCargoNumber(stockupDTO.getReservationId(), stockupDTO.getCargoNumber(), stockupDTO.getStockListId());
List<DistributionReservationStocklistEntity> oldReservationStockList = reservationStocklistEntityList.stream().filter(rs -> rs.getReservationNum() > 0 && rs.getRealityNum() < rs.getReservationNum()).collect(Collectors.toList());
if (Func.isNotEmpty(oldReservationStockList)){
//对老的计划数量进行减少
DistributionReservationStocklistEntity reservationStocklistEntity = oldReservationStockList.get(0);
reservationStocklistEntity.setReservationNum(reservationStocklistEntity.getReservationNum() - 1);
distributionReservationStocklistService.updateById(reservationStocklistEntity);
//维护对应库存品的冻结数量
DistributionStockListEntity oldStockListEntity = distributionStockListService.getById(reservationStocklistEntity.getStocklistId());
oldStockListEntity.setQuantityOccupied(oldStockListEntity.getQuantityOccupied() - 1);
distributionStockListService.updateById(oldStockListEntity);
//维护对应的库存品包件
List<DisStockListDetailEntity> stockListDetailEntities = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, o.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, o.getStocklistId())
.eq(DisStockListDetailEntity::getReservationId, reservationStocklistEntity.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, reservationStocklistEntity.getStocklistId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
boolean stockFlag = stockListDetailEntities.stream().allMatch(s -> Func.isNotEmpty(s.getStockPackageCode()));
if (stockFlag){
stockListMap.remove(k);
//对指定库存品包件进行库存品ID修改
DisStockListDetailEntity disStockListDetailEntity = stockListDetailEntities.stream().filter(sd -> Func.isEmpty(sd.getStockPackageCode())).collect(Collectors.toList()).get(0);
if (Func.isNotEmpty(disStockListDetailEntity)){
disStockListDetailEntity.setStockListId(stockupDTO.getStockListId());
disStockListDetailService.updateById(disStockListDetailEntity);
distributionReservationStocklistService.updateById(reservationStocklistEntity);
}
});
});
} else {
stockListMap = null;
}
//stockListMap此时剩下的都是满足进行修改的库存品,这里就需要去进行指定删除哪一个库存品,这里默认添加数量为一需要指定一个进行扣减,
if (Func.isNotEmpty(stockListMap)){
List<DistributionReservationStocklistEntity> distributionReservationStocklistEntities = stockListMap.get(0);
DistributionReservationStocklistEntity reservationStocklist = distributionReservationStocklistEntities.get(0);
reservationStocklist.setReservationNum(reservationStocklist.getReservationNum() - reservationStocklistEntity.getReservationNum());
if (reservationStocklist.getReservationNum() == 0){
reservationStocklist.setStockListStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
//查询包件是否完成备货
List<DisStockListDetailEntity> stockListDetailEntities = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, reservationStocklist.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, reservationStocklist.getStocklistId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
//对指定库存品包件进行库存品ID修改
DisStockListDetailEntity disStockListDetailEntity = stockListDetailEntities.stream().filter(sd -> Func.isEmpty(sd.getStockPackageCode())).collect(Collectors.toList()).get(0);
if (Func.isNotEmpty(disStockListDetailEntity)){
disStockListDetailEntity.setStockListId(stockListEntity.getId());
disStockListDetailService.updateById(disStockListDetailEntity);
distributionReservationStocklistService.updateById(reservationStocklist);
//维护对应库存品的冻结数量
DistributionStockListEntity oldStockListEntity = distributionStockListService.getById(reservationStocklist.getStocklistId());
oldStockListEntity.setQuantityStock(oldStockListEntity.getQuantityStock() + reservationStocklistEntity.getReservationNum());
distributionStockListService.updateById(oldStockListEntity);
}
}
// 默认 计划数量和实际数量为0
//新的数量进行增加
DistributionReservationStocklistEntity stocklistEntity = distributionReservationStocklistService.getOne(Wrappers.<DistributionReservationStocklistEntity>query().lambda()
.eq(DistributionReservationStocklistEntity::getReservationId, stockupDTO.getReservationId())
.eq(DistributionReservationStocklistEntity::getStocklistId, stockupDTO.getStockListId())
.ne(DistributionReservationStocklistEntity::getStockListStatus, ReservationOrderStatusConstant.quxiao.getValue())
);
stocklistEntity
.setReservationNum(stocklistEntity.getReservationNum() + 1);
distributionReservationStocklistService.updateById(stocklistEntity);
return R.fail("操作成功");
//维护对应库存品的冻结数量
DistributionStockListEntity newStockListEntity = distributionStockListService.getById(stockupDTO.getStockListId());
newStockListEntity.setQuantityOccupied(oldStockListEntity.getQuantityOccupied() + 1);
distributionStockListService.updateById(newStockListEntity);
//查询出原来的库存品信息
// DistributionReservationStocklistEntity reservationStocklist = distributionReservationStocklistService.getOne(Wrappers.<DistributionReservationStocklistEntity>query().lambda()
// .eq(DistributionReservationStocklistEntity::getReservationId, stockupDTO.getReservationId())
// .eq(DistributionReservationStocklistEntity::getStocklistId, stockupDTO.getStockListId())
// .ne(DistributionReservationStocklistEntity::getStockListStatus, ReservationOrderStatusConstant.quxiao.getValue())
// );
// 再次执行扫描 读取这预约计划下面正常的库存品信息 扣减数量 对新增的预约库存品信息进行增加预约数量和实际数量
}
// 修改logpm_dis_stock_list_detail 这张表上的库存品ID和包件ID
// List<DistributionReservationStocklistEntity> reservationStocklistEntities = stockListMap.get(stockupDTO.getStockListId());
// DistributionReservationStocklistEntity reservationStocklistEntity = reservationStocklistEntities.get(0);
// reservationStocklistEntity.setReservationNum(reservationStocklistEntity.getReservationNum() + 1);
// distributionReservationStocklistService.updateById(reservationStocklistEntity);
// if (newStockListEntity.getQuantityOccupied() +1 +newStockListEntity.getQuantityOccupied() <= newStockListEntity.getQuantityStock()){
// newStockListEntity.setQuantityOccupied(newStockListEntity.getQuantityStock() + 1);
// }
// //修改对应库存品的冻结数量
// //查询出原来计划的库存品进行扣减
// List<DistributionReservationStocklistEntity> distributionReservationStocklistEntityList = distributionReservationMapper.selectStockListByReservationIdAndCargoNumber(stockupDTO.getReservationId(),stockupDTO.getCargoNumber(),stockupDTO.getStockListId());
// //过滤备货未完成的计划进行数量扣减
// DistributionReservationStocklistEntity reservationStocklist = distributionReservationStocklistEntityList.stream().filter(drs -> drs.getReservationNum() > 0 && drs.getRealityNum() < drs.getReservationNum()).collect(Collectors.toList()).get(0);
// reservationStocklist.setReservationNum(reservationStocklist.getReservationNum() - 1);
// distributionReservationStocklistService.updateById(reservationStocklist);
//
// //维护库存品对应数量
// DistributionStockListEntity stockListEntity = distributionStockListService.getById(reservationStocklist.getStocklistId());
// stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + 1);
// distributionStockListService.updateById(stockListEntity);
// //存在 进行新增计划
}
//这里扣减原来的需要排除备货完成的
}
// 默认 计划数量和实际数量为0
return R.success("操作成功");
}

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

@ -62,6 +62,7 @@ public class StockupDTO implements Serializable {
private Long stockupId;//备货任务区Id
private String type;//类型 1 扫码 2 选择
private Long stockListId;//库存品id
private Long newStockListId;//库存品id
private Integer packageNum;//包条数量
private String isZero;//零担标识 0否 1是

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

@ -323,4 +323,14 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
* @return
*/
List<DistributionReservationStocklistEntity> selectInventoryListByIdAndMateriel(@Param("reservationId") Long id,@Param("cargoNumber") String marketCode);
List<DistributionReservationStocklistEntity> selectStockListByReservationIdAndCargoNumber(@Param("reservationId") Long reservationId,@Param("cargoNumber") String cargoNumber,@Param("oldStockId") Long stockListId);
/**
* 查询预约计划下指定批次的库存品信息
* @param reservationId
* @param id
* @return
*/
DistributionStockupStockListVO selectStockupStockListByStockListId(@Param("reservationId") Long reservationId,@Param("stockListId") Long id);
}

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

@ -298,40 +298,78 @@
</select>
<select id="selectStockupStockListNew" resultType="com.logpm.distribution.vo.DistributionStockupStockListVO">
<!-- SELECT-->
<!--&lt;!&ndash; ldslNew.id AS stockListId,&ndash;&gt;-->
<!-- ldslNew.sku AS sku,-->
<!-- ldslNew.cargo_number AS cargoNumber,-->
<!-- ldslNew.description_goods AS materialName,-->
<!-- ldslNew.cargo_norms AS cargoNorms,-->
<!-- ldslNew.cargo_unit AS cargoUnit,-->
<!-- ldslNew.tray_name AS trayName,-->
<!-- ldslNew.unpack AS unpack,-->
<!-- ldslNew.source_type AS sourceType,-->
<!-- count(ldss.id) AS realNum,-->
<!--&lt;!&ndash; t.deliveryDetailsId AS deliveryDetailsId,&ndash;&gt;-->
<!-- t.reservation_num as planNum,-->
<!-- (-->
<!-- select GROUP_CONCAT( DISTINCT (allocation_id)) from logpm_warehouse_updown_goods where association_value =ldslNew.cargo_number or association_value in (-->
<!-- SELECT order_package_code from logpm_distribution_parcel_list where conditions=2 and material_code=ldslNew.cargo_number)-->
<!-- ) as allocations-->
<!-- FROM-->
<!-- (-->
<!-- SELECT-->
<!-- ldsl.cargo_number,-->
<!-- ldsl.description_goods,-->
<!-- ldsl.id,-->
<!-- ldrs.id as deliveryDetailsId,-->
<!-- ldrs.reservation_num-->
<!-- FROM-->
<!-- logpm_distribution_reservation_stocklist ldrs-->
<!-- LEFT JOIN logpm_distribution_stock_list ldsl ON ldrs.stocklist_id = ldsl.id-->
<!-- WHERE-->
<!-- ldrs.reservation_id = #{reservationId}-->
<!-- ) t-->
<!-- LEFT JOIN logpm_distribution_stock_list ldslNew ON t.cargo_number = ldslNew.cargo_number-->
<!-- LEFT JOIN logpm_distribution_stock ldss ON ldss.stock_list_id = t.id where ldslNew.is_deleted = 0-->
SELECT
<!-- ldslNew.id AS stockListId,-->
ldslNew.sku AS sku,
ldslNew.cargo_number AS cargoNumber,
ldslNew.description_goods AS materialName,
ldslNew.cargo_norms AS cargoNorms,
ldslNew.cargo_unit AS cargoUnit,
ldslNew.tray_name AS trayName,
ldslNew.unpack AS unpack,
ldslNew.source_type AS sourceType,
count(ldss.id) AS realNum,
<!-- t.deliveryDetailsId AS deliveryDetailsId,-->
t.reservation_num as planNum,
(
select GROUP_CONCAT( DISTINCT (allocation_id)) from logpm_warehouse_updown_goods where association_value =ldslNew.cargo_number or association_value in (
SELECT order_package_code from logpm_distribution_parcel_list where conditions=2 and material_code=ldslNew.cargo_number)
) as allocations
FROM
ldsl.sku AS sku,
ldsl.cargo_number AS cargoNumber,
ldsl.description_goods AS materialName,
ldsl.cargo_norms AS cargoNorms,
ldsl.cargo_unit AS cargoUnit,
ldsl.tray_name AS trayName,
ldsl.unpack AS unpack,
ldsl.source_type AS sourceType,
ldrs.stocklist_id AS stockListId,
ldrs.reservation_num AS planNum,
(SELECT COUNT(ldss.id) FROM logpm_distribution_stock AS ldss WHERE ldss.stock_list_id = ldsl.id ) AS realNum,
CASE
ldsl.source_type
WHEN 1 THEN
(
SELECT
ldsl.cargo_number,
ldsl.description_goods,
ldsl.id,
ldrs.id as deliveryDetailsId,
ldrs.reservation_num
group_concat( DISTINCT lwug.allocation_id ) AS allocations
FROM
logpm_distribution_stock_list ldslnew
LEFT JOIN logpm_distribution_parcel_list ldpl ON ldpl.order_code = ldslnew.incoming_batch
AND ldpl.material_id = ldslnew.material_id
AND ldpl.conditions = '2'
LEFT JOIN logpm_warehouse_updown_goods lwug ON lwug.association_value = ldpl.order_package_code
WHERE
ldslnew.id = ldsl.id AND lwug.association_type = '3'
)
WHEN 2 THEN
( SELECT group_concat( DISTINCT lwug.allocation_id ) AS allocations FROM logpm_warehouse_updown_goods lwug WHERE lwug.association_id = ldsl.material_id AND lwug.association_type = '4')
END allocations
FROM
logpm_distribution_reservation_stocklist ldrs
LEFT JOIN logpm_distribution_stock_list ldsl ON ldrs.stocklist_id = ldsl.id
LEFT JOIN logpm_distribution_stock ldss ON ldss.stock_list_id = ldsl.id
WHERE
ldrs.reservation_id = #{reservationId}
) t
LEFT JOIN logpm_distribution_stock_list ldslNew ON t.cargo_number = ldslNew.cargo_number
LEFT JOIN logpm_distribution_stock ldss ON ldss.stock_list_id = t.id where ldslNew.is_deleted = 0
ldrs.reservation_id =#{reservationId}
</select>
<select id="selectOrderNumByReservationId" resultType="Integer">
@ -1292,10 +1330,7 @@
<select id="selectInventoryListByIdAndMateriel"
resultType="com.logpm.distribution.entity.DistributionReservationStocklistEntity">
SELECT
ldrs.*REPEAT
statement_list
UNTIL search_condition END REPEAT;
ldrs.*
FROM
logpm_distribution_reservation AS ldr
LEFT JOIN logpm_distribution_reservation_stocklist AS ldrs ON ldr.id = ldrs.reservation_id
@ -1303,5 +1338,64 @@
WHERE
ldr.id = #{reservationId} AND ldsl.cargo_number = #{cargoNumber}
</select>
<select id="selectStockListByReservationIdAndCargoNumber"
resultType="com.logpm.distribution.entity.DistributionReservationStocklistEntity">
SELECT
ldrs.*
FROM
logpm_distribution_reservation AS ldr
LEFT JOIN logpm_distribution_reservation_stocklist AS ldrs ON ldr.id = ldrs.reservation_id
LEFT JOIN logpm_distribution_stock_list AS ldsl ON ldrs.stocklist_id = ldsl.id
WHERE
ldr.id = #{reservationId} AND ldsl.cargo_number = #{cargoNumber} and ldrs.stocklist_id != #{oldStockId}
</select>
<select id="selectStockupStockListByStockListId"
resultType="com.logpm.distribution.vo.DistributionStockupStockListVO">
SELECT
ldsl.sku AS sku,
ldsl.cargo_number AS cargoNumber,
ldsl.description_goods AS materialName,
ldsl.cargo_norms AS cargoNorms,
ldsl.cargo_unit AS cargoUnit,
ldsl.tray_name AS trayName,
ldsl.unpack AS unpack,
ldsl.source_type AS sourceType,
ldrs.stocklist_id AS stockListId,
ldrs.reservation_num AS planNum,
-- count(ldss.id ) AS realNum,
(SELECT COUNT(ldss.id) FROM logpm_distribution_stock AS ldss WHERE ldss.stock_list_id = ldsl.id ) AS realNum,
CASE
ldsl.source_type
WHEN 1 THEN
(
SELECT
group_concat( DISTINCT lwug.allocation_id ) AS allocations
FROM
logpm_distribution_stock_list ldslnew
LEFT JOIN logpm_distribution_parcel_list ldpl ON ldpl.order_code = ldslnew.incoming_batch
AND ldpl.material_id = ldslnew.material_id
AND ldpl.conditions = '2'
LEFT JOIN logpm_warehouse_updown_goods lwug ON lwug.association_value = ldpl.order_package_code
WHERE
ldslnew.id = ldsl.id
AND lwug.association_type = '3'
)
WHEN 2 THEN
(
SELECT
group_concat( DISTINCT lwug.allocation_id ) AS allocations
FROM
logpm_warehouse_updown_goods lwug
WHERE
lwug.association_id = ldsl.material_id
AND lwug.association_type = '4'
)
END AS allocations
FROM
logpm_distribution_reservation_stocklist ldrs
LEFT JOIN logpm_distribution_stock_list ldsl ON ldrs.stocklist_id = ldsl.id
WHERE
ldrs.reservation_id = #{reservationId} and ldrs.stocklist_id = #{stockListId}
</select>
</mapper>

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

@ -240,4 +240,12 @@ public interface IDistributionReservationService extends BaseService<Distributio
* @return
*/
List<DistributionReservationEntity> getRetentionReservationList(String reservationIds);
/**
* 查询预约计划下指定批次库存品信息
* @param reservationId
* @param id
* @return
*/
DistributionStockupStockListVO selectStockupStockListByStockListId(Long reservationId, Long id);
}

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

@ -36,7 +36,9 @@ import com.logpm.distribution.vo.*;
import com.logpm.distribution.wrapper.*;
import com.logpm.oldproject.entity.WayBillEntity;
import com.logpm.oldproject.feign.IWayBillClient;
import com.logpm.warehouse.entity.WarehouseGoodsAllocationEntity;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseGoodsAllocationClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.DictBizConstant;
@ -188,6 +190,9 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
@Autowired
private IDistributionParcelNumberService distributionParcelNumberService;
@Autowired
private IWarehouseGoodsAllocationClient warehouseGoodsAllocationClient;
// @Autowired
// private IWarehouseWaybillClient warehouseWaybillClient;
@ -3233,4 +3238,24 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
List<DistributionReservationEntity> retentionReservationList = baseMapper.getRetentionReservationList(ids);
return retentionReservationList;
}
@Override
public DistributionStockupStockListVO selectStockupStockListByStockListId(Long reservationId, Long id) {
DistributionStockupStockListVO distributionStockupStockListVO = baseMapper.selectStockupStockListByStockListId(reservationId, id);
if (Func.isBlank(distributionStockupStockListVO.getAllocations())){
String[] ids = distributionStockupStockListVO.getAllocations().split(",");
List<WarehouseGoodsAllocationEntity> allocationInforByIds = warehouseGoodsAllocationClient.getAllocationInforByIds(ids);
for (WarehouseGoodsAllocationEntity allocationInforById : allocationInforByIds) {
if (distributionStockupStockListVO.getAllocationList() == null) {
distributionStockupStockListVO.setAllocationList(new ArrayList<>());
}
Map<String, Object> map = new HashMap<>();
map.put("id", allocationInforById.getId());
map.put("name", allocationInforById.getQrCode());
distributionStockupStockListVO.getAllocationList().add(map);
}
}
return distributionStockupStockListVO;
}
}

8
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.java

@ -104,6 +104,14 @@ public interface TaskQuestMapper extends BaseMapper<TaskQuestEntity> {
* @return
*/
List<QuestDetailEntity> selectTaskInfo(@Param("questNum")String questNum,@Param("param") QuestDetailEntity questDetail);
/**
*查询盘点数据list
* @param questNum
* @param questDetail
* @return
*/
List<QuestDetailEntity> selectTaskInfoForIds(@Param("questNum")String questNum,@Param("param") QuestDetailEntity questDetail,@Param("ids")List<Long> ids);
/**
*根据ID查询盘点数据
* @param questNum

24
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/TaskQuestMapper.xml

@ -161,6 +161,30 @@
<if test="param.code != null and param.code!= '' ">and CONCAT(order_package_code, order_code) like concat('%',#{param.code},'%')</if>
</where>
</select>
<select id="selectTaskInfoForIds" resultType="com.logpm.warehouse.entity.QuestDetailEntity">
select *
from ${questNum}
<where>
is_deleted = 0
<if test="ids !=null">
and id in
<foreach collection="ids" item="a" open="(" close=")" separator=",">
#{a}
</foreach>
</if>
<if test="param.questId != null and param.questId != ''">and quest_id =#{param.questId } </if>
<if test="param.questType != null and param.questType != ''">and quest_type =#{param.questType } </if>
<if test="param.questTarget != null and param.questTarget != ''">and quest_target =#{param.questTarget } </if>
<if test="param.warehouseId != null and param.warehouseId != ''">and warehouse_id =#{param.warehouseId } </if>
<if test="param.allocationId != null and param.allocationId != ''">and allocation_id =#{param.allocationId } </if>
<if test="param.trayId != null and param.trayId != ''">and tray_id =#{param.trayId } </if>
<if test="param.orderCode != null and param.orderCode != ''">and order_code =#{param.orderCode } </if>
<if test="param.orderPackageCode != null and param.orderPackageCode != ''">and order_package_code =#{param.orderPackageCode } </if>
<if test="param.code != null and param.code!= '' ">and CONCAT(order_package_code, order_code) like concat('%',#{param.code},'%')</if>
</where>
</select>
<select id="selectOneTaskInfo" resultType="com.logpm.warehouse.entity.QuestDetailEntity">
select *
from ${questNum}

41
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/TaskQuestServiceImpl.java

@ -707,12 +707,28 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ
}*/
BladeUser user = AuthUtil.getUser();
QuestDetailEntity questDetailer = new QuestDetailEntity();
List<QuestDetailEntity> questDetailList = baseMapper.selectTaskInfo(questNum, questDetailer);
List<Long> ids = null;
if(ObjectUtils.isNotNull(taskSearchDTO.getQuestDetailIds())){
for (String questDetailId : taskSearchDTO.getQuestDetailIds()) {
if(ObjectUtils.isNull(ids)){
ids = new ArrayList<>();
}
ids.add(Long.parseLong(questDetailId));
}
}
List<QuestDetailEntity> questDetailList = baseMapper.selectTaskInfoForIds(questNum, questDetailer,ids);
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> questDetailList {}",questDetailList);
// 在库包件状态修改
if(ObjectUtils.isNotNull(taskSearchDTO.getQuestDetailIds()) && ObjectUtils.isNotNull(taskSearchDTO.getQuestDetailIds().get(0)) ){
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",1);
List<QuestDetailEntity> list = new ArrayList<>();
AtomicBoolean s = new AtomicBoolean(false);
taskSearchDTO.getQuestDetailIds().stream().forEach( i ->{
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",i);
//查询当前包件盘点状态
boolean b = questDetailList.stream().anyMatch(q -> q.getId().equals(i) && q.getQuestStatus().equals(1));
if(b){
@ -727,16 +743,24 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ
// questDetail.setQuestStatus(1);
list.add(questDetail);
});
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",1);
if(s.get()){
return Resp.scanFail("包含已盘点的数据!请勿重复提交!","包含已盘点的数据!请勿重复提交!");
}
baseMapper.updatePositionCodeList(questNum,list);
}
//处理盘点的包件
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",2);
if(ObjectUtils.isNotNull(taskSearchDTO.getQuestDetailList())){
List<QuestDetailEntity> detailEntityList = new ArrayList<>();
//处理的包件
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",4);
taskSearchDTO.getQuestDetailList().forEach(i ->{
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",45);
Long taskID;
if(ObjectUtils.isNotNull(i.getId())){
taskID = i.getId();
@ -825,10 +849,14 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ
detailEntityList.add(questDetail);
}
});
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",5);
//修改货位
if(!detailEntityList.isEmpty()){
baseMapper.updatePositionCodeList(questNum,detailEntityList);
}
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tag {}",6);
}
return R.success("成功");
}
@ -894,7 +922,16 @@ public class TaskQuestServiceImpl extends BaseServiceImpl<TaskQuestMapper, TaskQ
}
if(!i.getQuestStatus().equals(0)){
R<List<User>> listR = userSearchClient.listByUser(String.valueOf(i.getUpdateUser()));
questDetailVO.setInventoryPerson(listR.getData().get(0).getName());
if(ObjectUtils.isNotNull(listR.getData())){
List<User> data = listR.getData();
if(ObjectUtils.isNotNull(data)){
User user = data.get(0);
if(user!=null){
questDetailVO.setInventoryPerson(user.getName());
}
}
}
questDetailVO.setInventoryDate(i.getUpdateTime());
}

Loading…
Cancel
Save