|
|
@ -25,6 +25,9 @@ import org.nl.wms.basedata_manage.service.IStructattrService; |
|
|
|
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; |
|
|
|
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; |
|
|
|
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; |
|
|
|
import org.nl.wms.basedata_manage.service.dto.StrategyStructMaterialVO; |
|
|
|
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; |
|
|
|
import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto; |
|
|
|
import org.nl.wms.sch_manage.enums.TaskStatus; |
|
|
|
import org.nl.wms.sch_manage.service.ISchBaseTaskService; |
|
|
|
import org.nl.wms.sch_manage.service.dao.SchBasePoint; |
|
|
@ -70,13 +73,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
@Resource |
|
|
|
private IStructattrService iStructattrService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; |
|
|
|
/** |
|
|
|
* 组盘记录mapper |
|
|
|
*/ |
|
|
|
@Autowired |
|
|
|
private MdPbGroupplateMapper mdPbGroupplateMapper; |
|
|
|
/** |
|
|
|
* 载具扩展属性mapper |
|
|
|
*/ |
|
|
@ -346,7 +342,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
|
|
String nickName = SecurityUtils.getCurrentNickName(); |
|
|
|
String now = DateUtil.now(); |
|
|
|
|
|
|
|
String sectCode = whereJson.getString("sect_code"); |
|
|
|
String iostorinv_id = whereJson.getString("iostorinv_id"); |
|
|
|
|
|
|
|
//查询主表信息
|
|
|
@ -361,39 +357,33 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
queryDtl.put("unassign_flag", BaseDataEnum.IS_YES_NOT.code("是")); |
|
|
|
queryDtl.put("iostorinv_id", iostorinv_id); |
|
|
|
List<IOStorInvDtlDto> dtls = ioStorInvMapper.getIODtl(queryDtl); |
|
|
|
// List<IOStorInvDtl> dtls = ioStorInvDtlMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDtl.class)
|
|
|
|
// .le(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("分配完"))
|
|
|
|
// .gt(IOStorInvDtl::getUnassign_qty,0)
|
|
|
|
// .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id));
|
|
|
|
if (ObjectUtil.isEmpty(dtls)) { |
|
|
|
throw new BadRequestException("当前订单无可分配出库明细"); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < dtls.size(); i++) { |
|
|
|
IOStorInvDtlDto dtl = dtls.get(i); |
|
|
|
double unassign_qty = dtl.getUnassign_qty().doubleValue(); |
|
|
|
BigDecimal unassign_qty = dtl.getUnassign_qty(); |
|
|
|
String pcsn = dtl.getPcsn(); |
|
|
|
String material_id = dtl.getMaterial_id(); |
|
|
|
|
|
|
|
String material_code = dtl.getMaterial_code(); |
|
|
|
// 根据物料和批次号查询库存可用
|
|
|
|
BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSum(pcsn,material_id); |
|
|
|
|
|
|
|
if (ObjectUtil.isEmpty(canuseSum) || canuseSum.doubleValue()<unassign_qty){ |
|
|
|
throw new BadRequestException("物料编号:"+ dtl.getMaterial_code() +"出库分配数量不满足"); |
|
|
|
} |
|
|
|
List<StrategyStructMaterialVO> structMaterials = iStructattrService.outBoundSectDiv( |
|
|
|
StrategyStructParam.builder() |
|
|
|
.qty(unassign_qty) |
|
|
|
.pcsn(pcsn) |
|
|
|
.material_code(material_code) |
|
|
|
.stor_code(ioStorInv.getStor_code()) |
|
|
|
.sect_code(sectCode) |
|
|
|
.build() |
|
|
|
); |
|
|
|
|
|
|
|
/* |
|
|
|
* 分配规则: |
|
|
|
* 1.按批次先进先出 |
|
|
|
* 2.相同批次载具量小优先 |
|
|
|
*/ |
|
|
|
|
|
|
|
//出库分配查询货位信息
|
|
|
|
List<MdPbStoragevehicleextDto> outAllocationList = mdPbStoragevehicleextMapper.queryOutAllocation(pcsn,material_id); |
|
|
|
|
|
|
|
int seq_no = 1; |
|
|
|
double allocation_canuse_qty = 0; |
|
|
|
for (MdPbStoragevehicleextDto outAllocation : outAllocationList) { |
|
|
|
BigDecimal allocation_canuse_qty=BigDecimal.ZERO; |
|
|
|
for (StrategyStructMaterialVO outAllocation : structMaterials) { |
|
|
|
//分配明细
|
|
|
|
IOStorInvDis ioStorInvDis = new IOStorInvDis(); |
|
|
|
ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId()); |
|
|
@ -402,7 +392,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
ioStorInvDis.setSeq_no((seq_no++)+""); |
|
|
|
ioStorInvDis.setSect_id(outAllocation.getSect_id()); |
|
|
|
ioStorInvDis.setPcsn(outAllocation.getPcsn()); |
|
|
|
ioStorInvDis.setMaterial_id(material_id); |
|
|
|
ioStorInvDis.setMaterial_id(outAllocation.getMaterial_id()); |
|
|
|
ioStorInvDis.setMaterial_code(outAllocation.getMaterial_code()); |
|
|
|
ioStorInvDis.setSect_name(outAllocation.getSect_name()); |
|
|
|
ioStorInvDis.setSect_code(outAllocation.getSect_code()); |
|
|
|
ioStorInvDis.setStruct_id(outAllocation.getStruct_id()); |
|
|
@ -413,22 +404,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
ioStorInvDis.setQty_unit_id(outAllocation.getQty_unit_id()); |
|
|
|
ioStorInvDis.setQty_unit_name(outAllocation.getQty_unit_name()); |
|
|
|
ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成")); |
|
|
|
|
|
|
|
// 未分配数量 - 该库位上的可用数量 < 0 目前做整出
|
|
|
|
// double canuse_qty = outAllocation.getCanuse_qty().doubleValue();
|
|
|
|
// if (unassign_qty-canuse_qty>=0){
|
|
|
|
// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(canuse_qty));
|
|
|
|
// }else {
|
|
|
|
// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(unassign_qty));
|
|
|
|
// }
|
|
|
|
// unassign_qty = unassign_qty-canuse_qty;
|
|
|
|
unassign_qty = unassign_qty-outAllocation.getCanuse_qty().doubleValue(); |
|
|
|
if (unassign_qty<0){ |
|
|
|
unassign_qty=0; |
|
|
|
} |
|
|
|
allocation_canuse_qty = allocation_canuse_qty + outAllocation.getCanuse_qty().doubleValue(); |
|
|
|
ioStorInvDis.setPlan_qty(outAllocation.getCanuse_qty()); |
|
|
|
|
|
|
|
ioStorInvDis.setPlan_qty(outAllocation.getFrozen_qty()); |
|
|
|
//锁定货位
|
|
|
|
JSONObject lock_map = new JSONObject(); |
|
|
|
lock_map.put("struct_code", outAllocation.getStruct_code()); |
|
|
@ -437,34 +413,27 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
lock_map.put("inv_type", ioStorInv.getBill_type()); |
|
|
|
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); |
|
|
|
iStructattrService.updateStatusByCode("0",lock_map); |
|
|
|
|
|
|
|
//更新组盘表冻结数量状态
|
|
|
|
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>() |
|
|
|
.set(GroupPlate::getFrozen_qty, outAllocation.getFrozen_qty()) |
|
|
|
.set(GroupPlate::getUpdate_time, now) |
|
|
|
.eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code()) |
|
|
|
.eq(GroupPlate::getPcsn, outAllocation.getPcsn()) |
|
|
|
.eq(GroupPlate::getMaterial_id, outAllocation.getMaterial_id()) |
|
|
|
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))); |
|
|
|
//生成分配明细
|
|
|
|
ioStorInvDisMapper.insert(ioStorInvDis); |
|
|
|
|
|
|
|
//更新库存 加冻结减可用
|
|
|
|
List<JSONObject> updateIvtList = new ArrayList<>(); |
|
|
|
JSONObject jsonIvt = new JSONObject(); |
|
|
|
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN); |
|
|
|
jsonIvt.put("storagevehicle_code", outAllocation.getStoragevehicle_code()); |
|
|
|
jsonIvt.put("material_id", outAllocation.getMaterial_id()); |
|
|
|
jsonIvt.put("pcsn", outAllocation.getPcsn()); |
|
|
|
jsonIvt.put("qty_unit_id", outAllocation.getQty_unit_id()); |
|
|
|
jsonIvt.put("qty_unit_name", outAllocation.getQty_unit_name()); |
|
|
|
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); |
|
|
|
updateIvtList.add(jsonIvt); |
|
|
|
iMdPbGroupPlateService.updateIvt(updateIvtList); |
|
|
|
|
|
|
|
allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty()); |
|
|
|
//分配完成 结束分配
|
|
|
|
if (unassign_qty==0){ |
|
|
|
if (unassign_qty.doubleValue() <= 0){ |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新详情
|
|
|
|
dtl.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); |
|
|
|
double assign_qty = allocation_canuse_qty + dtl.getAssign_qty().doubleValue(); |
|
|
|
dtl.setUnassign_qty(BigDecimal.valueOf(unassign_qty)); |
|
|
|
dtl.setAssign_qty(BigDecimal.valueOf(assign_qty)); |
|
|
|
dtl.setUnassign_qty(unassign_qty); |
|
|
|
dtl.setAssign_qty(dtl.getAssign_qty().add(allocation_canuse_qty)); |
|
|
|
ioStorInvDtlMapper.updateById(dtl); |
|
|
|
} |
|
|
|
|
|
|
@ -560,13 +529,11 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void autoDiv(JSONObject whereJson) { |
|
|
|
|
|
|
|
String currentUserId = SecurityUtils.getCurrentUserId(); |
|
|
|
String nickName = SecurityUtils.getCurrentNickName(); |
|
|
|
String now = DateUtil.now(); |
|
|
|
|
|
|
|
String sectCode = whereJson.getString("sect_code"); |
|
|
|
String iostorinv_id = whereJson.getString("iostorinv_id"); |
|
|
|
|
|
|
|
//查询主表信息
|
|
|
|
IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id); |
|
|
|
if (ObjectUtil.isEmpty(ioStorInv)) { |
|
|
@ -583,32 +550,24 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
if (ObjectUtil.isEmpty(dtls)) { |
|
|
|
throw new BadRequestException("当前订单无可分配出库明细"); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < dtls.size(); i++) { |
|
|
|
IOStorInvDtlDto dtl = dtls.get(i); |
|
|
|
double unassign_qty = dtl.getUnassign_qty().doubleValue(); |
|
|
|
BigDecimal unassign_qty = dtl.getUnassign_qty(); |
|
|
|
String pcsn = dtl.getPcsn(); |
|
|
|
String material_id = dtl.getMaterial_id(); |
|
|
|
|
|
|
|
// 根据物料和批次号查询库存可用
|
|
|
|
BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSum(pcsn,material_id); |
|
|
|
|
|
|
|
if (canuseSum.doubleValue()<unassign_qty){ |
|
|
|
throw new BadRequestException("物料编号:"+ dtl.getMaterial_code() +"出库分配数量不满足"); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 分配规则: |
|
|
|
* 1.按批次先进先出 |
|
|
|
* 2.相同批次载具量小优先 |
|
|
|
*/ |
|
|
|
|
|
|
|
//出库分配查询货位信息
|
|
|
|
List<MdPbStoragevehicleextDto> outAllocationList = mdPbStoragevehicleextMapper.queryOutAllocation(pcsn,material_id); |
|
|
|
|
|
|
|
String material_code = dtl.getMaterial_code(); |
|
|
|
//调用分配规则获取分配的库位:如果库存不足则直接报错
|
|
|
|
List<StrategyStructMaterialVO> structMaterials = iStructattrService.outBoundSectDiv( |
|
|
|
StrategyStructParam.builder() |
|
|
|
.qty(unassign_qty) |
|
|
|
.pcsn(pcsn) |
|
|
|
.material_code(material_code) |
|
|
|
.stor_code(ioStorInv.getStor_code()) |
|
|
|
.sect_code(sectCode) |
|
|
|
.build() |
|
|
|
); |
|
|
|
int seq_no = 1; |
|
|
|
double allocation_canuse_qty = 0; |
|
|
|
for (MdPbStoragevehicleextDto outAllocation : outAllocationList) { |
|
|
|
BigDecimal allocation_canuse_qty=BigDecimal.ZERO; |
|
|
|
for (StrategyStructMaterialVO outAllocation : structMaterials) { |
|
|
|
//分配明细
|
|
|
|
IOStorInvDis ioStorInvDis = new IOStorInvDis(); |
|
|
|
ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId()); |
|
|
@ -617,7 +576,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
ioStorInvDis.setSeq_no((seq_no++)+""); |
|
|
|
ioStorInvDis.setSect_id(outAllocation.getSect_id()); |
|
|
|
ioStorInvDis.setPcsn(outAllocation.getPcsn()); |
|
|
|
ioStorInvDis.setMaterial_id(material_id); |
|
|
|
ioStorInvDis.setMaterial_id(outAllocation.getMaterial_id()); |
|
|
|
ioStorInvDis.setMaterial_code(outAllocation.getMaterial_code()); |
|
|
|
ioStorInvDis.setSect_name(outAllocation.getSect_name()); |
|
|
|
ioStorInvDis.setSect_code(outAllocation.getSect_code()); |
|
|
|
ioStorInvDis.setStruct_id(outAllocation.getStruct_id()); |
|
|
@ -628,22 +588,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
ioStorInvDis.setQty_unit_id(outAllocation.getQty_unit_id()); |
|
|
|
ioStorInvDis.setQty_unit_name(outAllocation.getQty_unit_name()); |
|
|
|
ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成")); |
|
|
|
|
|
|
|
// 未分配数量 - 该库位上的可用数量 < 0 目前做整出
|
|
|
|
// double canuse_qty = outAllocation.getCanuse_qty().doubleValue();
|
|
|
|
// if (unassign_qty-canuse_qty>=0){
|
|
|
|
// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(canuse_qty));
|
|
|
|
// }else {
|
|
|
|
// ioStorInvDis.setPlan_qty(BigDecimal.valueOf(unassign_qty));
|
|
|
|
// }
|
|
|
|
// unassign_qty = unassign_qty-canuse_qty;
|
|
|
|
unassign_qty = unassign_qty-outAllocation.getCanuse_qty().doubleValue(); |
|
|
|
if (unassign_qty<0){ |
|
|
|
unassign_qty=0; |
|
|
|
} |
|
|
|
allocation_canuse_qty = allocation_canuse_qty + outAllocation.getCanuse_qty().doubleValue(); |
|
|
|
ioStorInvDis.setPlan_qty(outAllocation.getCanuse_qty()); |
|
|
|
|
|
|
|
ioStorInvDis.setPlan_qty(outAllocation.getFrozen_qty()); |
|
|
|
//锁定货位
|
|
|
|
JSONObject lock_map = new JSONObject(); |
|
|
|
lock_map.put("struct_code", outAllocation.getStruct_code()); |
|
|
@ -652,44 +597,34 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
lock_map.put("inv_type", ioStorInv.getBill_type()); |
|
|
|
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); |
|
|
|
iStructattrService.updateStatusByCode("0",lock_map); |
|
|
|
|
|
|
|
//更新组盘表冻结数量状态
|
|
|
|
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>() |
|
|
|
.set(GroupPlate::getFrozen_qty, outAllocation.getFrozen_qty()) |
|
|
|
.set(GroupPlate::getUpdate_time, now) |
|
|
|
.eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code()) |
|
|
|
.eq(GroupPlate::getPcsn, outAllocation.getPcsn()) |
|
|
|
.eq(GroupPlate::getMaterial_id, outAllocation.getMaterial_id()) |
|
|
|
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))); |
|
|
|
//生成分配明细
|
|
|
|
ioStorInvDisMapper.insert(ioStorInvDis); |
|
|
|
|
|
|
|
//更新库存 加冻结减可用
|
|
|
|
List<JSONObject> updateIvtList = new ArrayList<>(); |
|
|
|
JSONObject jsonIvt = new JSONObject(); |
|
|
|
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN); |
|
|
|
jsonIvt.put("storagevehicle_code", outAllocation.getStoragevehicle_code()); |
|
|
|
jsonIvt.put("material_id", outAllocation.getMaterial_id()); |
|
|
|
jsonIvt.put("pcsn", outAllocation.getPcsn()); |
|
|
|
jsonIvt.put("qty_unit_id", outAllocation.getQty_unit_id()); |
|
|
|
jsonIvt.put("qty_unit_name", outAllocation.getQty_unit_name()); |
|
|
|
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); |
|
|
|
updateIvtList.add(jsonIvt); |
|
|
|
iMdPbGroupPlateService.updateIvt(updateIvtList); |
|
|
|
|
|
|
|
allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty()); |
|
|
|
//分配完成 结束分配
|
|
|
|
if (unassign_qty==0){ |
|
|
|
if (unassign_qty.doubleValue() <= 0){ |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新详情
|
|
|
|
dtl.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); |
|
|
|
double assign_qty = allocation_canuse_qty + dtl.getAssign_qty().doubleValue(); |
|
|
|
dtl.setUnassign_qty(BigDecimal.valueOf(unassign_qty)); |
|
|
|
dtl.setAssign_qty(BigDecimal.valueOf(assign_qty)); |
|
|
|
dtl.setUnassign_qty(unassign_qty); |
|
|
|
dtl.setAssign_qty(dtl.getAssign_qty().add(allocation_canuse_qty)); |
|
|
|
ioStorInvDtlMapper.updateById(dtl); |
|
|
|
} |
|
|
|
|
|
|
|
//更新主表
|
|
|
|
//根据单据标识判断明细是否都已经分配完成
|
|
|
|
int disCount = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) |
|
|
|
.eq(IOStorInvDtl::getIostorinv_id,iostorinv_id) |
|
|
|
.lt(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("分配完")) |
|
|
|
); |
|
|
|
|
|
|
|
// 根据分配货位情况 更新主表单据状态
|
|
|
|
IOStorInv ios = new IOStorInv(); |
|
|
|
ios.setIostorinv_id(iostorinv_id); |
|
|
@ -1121,7 +1056,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
updateIvtList.add(jsonIvt); |
|
|
|
iMdPbGroupPlateService.updateIvt(updateIvtList); |
|
|
|
} |
|
|
|
|
|
|
|
//更新分配明细数据
|
|
|
|
ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class) |
|
|
|
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) |
|
|
@ -1129,12 +1063,10 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
.eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id()) |
|
|
|
.ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) |
|
|
|
); |
|
|
|
|
|
|
|
//添加需要更新的明细标识
|
|
|
|
dtlSet.add(ioStorInvDis.getIostorinvdtl_id()); |
|
|
|
|
|
|
|
//更新组盘记录表
|
|
|
|
mdPbGroupplateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) |
|
|
|
iMdPbGroupPlateService.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) |
|
|
|
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库")) |
|
|
|
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn()) |
|
|
|
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id()) |
|
|
@ -1200,18 +1132,12 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i |
|
|
|
finish_map.put("inv_id", null); |
|
|
|
finish_map.put("inv_code", null); |
|
|
|
iStructattrService.updateStatusByCode("1",finish_map); |
|
|
|
//修改库存 恢复库存 手持进行减扣
|
|
|
|
List<JSONObject> updateIvtList = new ArrayList<>(); |
|
|
|
JSONObject jsonIvt = new JSONObject(); |
|
|
|
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); |
|
|
|
jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); |
|
|
|
jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); |
|
|
|
jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); |
|
|
|
jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); |
|
|
|
jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); |
|
|
|
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); |
|
|
|
updateIvtList.add(jsonIvt); |
|
|
|
iMdPbGroupPlateService.updateIvt(updateIvtList); |
|
|
|
//库存变动
|
|
|
|
StructattrChangeDto changeDto = StructattrChangeDto.builder() |
|
|
|
.inv(ioStorInvDis.getIostorinv_id()) |
|
|
|
.storagevehicleCode(ioStorInvDis.getStoragevehicle_code()) |
|
|
|
.structCode(ioStorInvDis.getStruct_code()).taskType(task.getConfig_code()).inBound(false).build(); |
|
|
|
iStructattrService.changeStruct(changeDto); |
|
|
|
// 查询该明细下是否还有未完成的分配明细
|
|
|
|
int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) |
|
|
|
.eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id()) |
|
|
|