rev: 成品入库修改
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
der.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
unit.unit_name AS qty_unit_name
|
||||
FROM
|
||||
mps_sale_order der
|
||||
|
||||
@@ -19,6 +19,8 @@ public enum IOSEnum {
|
||||
IO_TYPE(MapOf.of("入库", "0", "出库", "1")),
|
||||
//是否
|
||||
IS_USED(MapOf.of("是", "1", "否", "0")),
|
||||
//托盘超限类型
|
||||
VEHICLE_OVER_TYPE(MapOf.of("标准", "00", "横向超", "01","纵向超","02")),
|
||||
//单据类型
|
||||
BILL_TYPE(MapOf.of("生产入库", "11", "手工入库", "12", "原料入库", "13"
|
||||
, "领料出库", "21", "销售出库", "22", "手工出库", "23")),
|
||||
|
||||
@@ -75,11 +75,10 @@ public class IStivtlostorivnCpInController {
|
||||
}
|
||||
|
||||
@PostMapping("/vehicleCheck")
|
||||
@Log("校验载具是否存在")
|
||||
@ApiOperation("校验载具是否存在")
|
||||
public ResponseEntity<Object> vehicleCheck(@RequestBody JSONObject whereJson){
|
||||
iStIvtIostorinvCpService.vehicleCheck(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
@Log("生成载具")
|
||||
@ApiOperation("生成载具")
|
||||
public ResponseEntity<Object> vehicleCheck(){
|
||||
return new ResponseEntity<>(iStIvtIostorinvCpService.vehicleCheck(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmvehicle")
|
||||
|
||||
@@ -110,13 +110,13 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
|
||||
void delete(Long[] ids);
|
||||
|
||||
/**
|
||||
* 校验载具是否存在
|
||||
* @param whereJson
|
||||
* 生成载具编码
|
||||
* @return JSONObject
|
||||
* {
|
||||
* "storagevehicle_code" : 载具号
|
||||
* vehicle_code : 编码
|
||||
* }
|
||||
*/
|
||||
void vehicleCheck(JSONObject whereJson);
|
||||
JSONObject vehicleCheck();
|
||||
|
||||
/**
|
||||
* 分配
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -201,8 +202,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
1.插入分配明细表
|
||||
2.插入分配表
|
||||
3.更新明细表
|
||||
4.更新扩展属性表
|
||||
5.更新箱记录表 (有箱号才更新)
|
||||
4.更新箱记录表 (有箱号才更新)
|
||||
*/
|
||||
JSONObject jsonDtl = whereJson.getJSONObject("dtl_row");
|
||||
JSONArray tableDisDtl = whereJson.getJSONArray("tableMater");
|
||||
@@ -210,24 +210,15 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
/*
|
||||
处理有箱号分配明细: 要插入分配明细表
|
||||
*/
|
||||
|
||||
// 校验是否已经组盘
|
||||
StIvtIostorinvdisCp disIs = iostorinvdisCpService.getOne(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id"))
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(disIs)) throw new BadRequestException("此明细已组盘");
|
||||
|
||||
List<JSONObject> disDtlList = tableDisDtl
|
||||
.stream()
|
||||
.map(row -> (JSONObject) row)
|
||||
.filter(row -> ObjectUtil.isNotEmpty(row.getString("bucketunique")))
|
||||
.filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id")))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 1.处理分配明细数据
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("iostorinv_id",jsonDtl.getString("iostorinv_id"));
|
||||
param.put("iostorinvdtl_id",jsonDtl.getString("iostorinvdtl_id"));
|
||||
param.put("iostorinvdis_id",org.nl.common.utils.IdUtil.getStringId());
|
||||
|
||||
if (ObjectUtil.isNotEmpty(disDtlList)) {
|
||||
@@ -238,7 +229,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
// 3.根据托盘分组
|
||||
Map<String, List<StIvtIostorinvdisdtlCp>> collect = disDtlDaoListAll
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getStoragevehicle_code));
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getIostorinvdtl_id));
|
||||
|
||||
for (List<StIvtIostorinvdisdtlCp> disDtlDaoList : collect.values()) {
|
||||
// 3.调用服务插入分配明细
|
||||
@@ -256,8 +247,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
// 插入分配
|
||||
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
|
||||
.setIostorinvdis_id(IdUtil.getStringId())
|
||||
.setIostorinv_id(param.getString("iostorinv_id"))
|
||||
.setIostorinvdtl_id(param.getString("iostorinvdtl_id"))
|
||||
.setIostorinv_id(disDtlDao.getIostorinv_id())
|
||||
.setIostorinvdtl_id(disDtlDao.getIostorinvdtl_id())
|
||||
.setSeq_no(1)
|
||||
.setMaterial_id(disDtlDao.getMaterial_id())
|
||||
.setPcsn(disDtlDao.getPcsn())
|
||||
@@ -281,21 +272,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
new StIvtIostorinvdisdtlCp().setIostorinvdis_id(disDao.getIostorinvdis_id()),
|
||||
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, param.getString("iostorinvdis_id"))
|
||||
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id())
|
||||
);
|
||||
|
||||
// 6.更新载具扩展属性表
|
||||
MdPbStoragevehicleext vehicleDao = new MdPbStoragevehicleext();
|
||||
vehicleDao.setMaterial_id(disDtlDao.getMaterial_id());
|
||||
vehicleDao.setStorage_qty(qty);
|
||||
vehicleDao.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
vehicleDao.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
vehicleDao.setUpdate_time(new Date());
|
||||
|
||||
iMdPbStoragevehicleextService.update(
|
||||
vehicleDao,new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, disDtlDao.getStoragevehicle_code())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,6 +285,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
.stream()
|
||||
.map(row -> (JSONObject) row)
|
||||
.filter(row -> ObjectUtil.isEmpty(row.getString("bucketunique")))
|
||||
.filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id")))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (ObjectUtil.isNotEmpty(unDisDtlList)) {
|
||||
@@ -320,48 +300,53 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelConfirmvehicle(JSONObject whereJson) {
|
||||
String bucketunique = whereJson.getString("bucketunique");
|
||||
|
||||
// 1.校验是否分配了货位
|
||||
List<StIvtIostorinvdisCp> disDaoList = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(disDaoList)) throw new BadRequestException("没有可取消组盘的分配明细!");
|
||||
|
||||
boolean is_struct = disDaoList.stream()
|
||||
.anyMatch(row -> ObjectUtil.isNotEmpty(row.getStruct_id()));
|
||||
|
||||
if (is_struct) throw new BadRequestException("有分配明细已分配货位不可取消组盘!");
|
||||
|
||||
// 2.更新载具扩展属性、 箱记录
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect = disDaoList.stream().collect(Collectors.groupingBy(StIvtIostorinvdisCp::getStoragevehicle_code));
|
||||
|
||||
for (String storagevehicle_code : collect.keySet()) {
|
||||
// 更新载具扩展属性
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.set(MdPbStoragevehicleext::getMaterial_id, "")
|
||||
.set(MdPbStoragevehicleext::getStorage_qty, "0")
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, storagevehicle_code)
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("struct_id"))) throw new BadRequestException("已分配货位,不可取消组盘!");
|
||||
|
||||
// 2.判断是否有箱,有则更新箱记录表、分配表
|
||||
if (ObjectUtil.isNotEmpty(bucketunique)) {
|
||||
// 更新箱记录表
|
||||
iMdPbBucketrecordService.update(
|
||||
new UpdateWrapper<MdPbBucketrecord>().lambda()
|
||||
.set(MdPbBucketrecord::getStoragevehicle_code, "")
|
||||
.set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成"))
|
||||
.set(MdPbBucketrecord::getStoragevehicle_id, "")
|
||||
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘"))
|
||||
.eq(MdPbBucketrecord::getStoragevehicle_code, storagevehicle_code)
|
||||
.set(MdPbBucketrecord::getStoragevehicle_code, "")
|
||||
.set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成"))
|
||||
.set(MdPbBucketrecord::getStoragevehicle_id, "")
|
||||
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘"))
|
||||
.eq(MdPbBucketrecord::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
// 删除分配明细
|
||||
iStIvtIostorinvdisdtlCpService.remove(
|
||||
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
|
||||
.eq(StIvtIostorinvdisdtlCp::getBucketunique, bucketunique)
|
||||
);
|
||||
|
||||
// 更新分配表
|
||||
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id"));
|
||||
BigDecimal qty = NumberUtil.sub(disDao.getReal_qty(), whereJson.getBigDecimal("qty"));
|
||||
disDao.setReal_qty(qty);
|
||||
disDao.setPlan_qty(qty);
|
||||
|
||||
if (disDao.getReal_qty().doubleValue() <= 0) {
|
||||
// 删除分配
|
||||
iostorinvdisCpService.removeById(disDao);
|
||||
} else {
|
||||
// 更新
|
||||
iostorinvdisCpService.updateById(disDao);
|
||||
}
|
||||
|
||||
} else {
|
||||
// 3:无箱 - 直接删除分配
|
||||
iostorinvdisCpService.remove(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
|
||||
);
|
||||
}
|
||||
|
||||
// 3.删除分配表
|
||||
iostorinvdisCpService.remove(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -378,29 +363,13 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vehicleCheck(JSONObject whereJson) {
|
||||
public JSONObject vehicleCheck() {
|
||||
|
||||
// 1.校验载具是否存在
|
||||
MdPbStoragevehicleinfo daoVehicle = iMdPbStoragevehicleinfoService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(MdPbStoragevehicleinfo::getIs_used, true)
|
||||
);
|
||||
// 生成编码返回
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicle_code", CodeUtil.getNewCode("VEHICCLE_CODE_CDMTP"));
|
||||
return json;
|
||||
|
||||
if (ObjectUtil.isEmpty(daoVehicle)) throw new BadRequestException("此载具不存在或未启用");
|
||||
|
||||
// 2.校验载具是否已组盘
|
||||
MdPbStoragevehicleext daoVehicleExt = iMdPbStoragevehicleextService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(daoVehicleExt)) {
|
||||
throw new BadRequestException("此载具扩展属性不存在,请维护!");
|
||||
} else {
|
||||
if (ObjectUtil.isNotEmpty(daoVehicleExt.getMaterial_id()))
|
||||
throw new BadRequestException("此载具已组盘!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -430,7 +399,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
/* 自动分配 */
|
||||
|
||||
// 判断载具是否超限
|
||||
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code("是"))) {
|
||||
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
|
||||
whereJson.put("rule_type", RuleUtil.PRODUCTION_IN_2);
|
||||
} else {
|
||||
whereJson.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
@@ -465,11 +434,29 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
iStIvtStructattrService.updateById(attrDao);
|
||||
|
||||
// 4.更新库存
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao.getIostorinvdtl_id());
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
)
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
|
||||
|
||||
disDao.setStruct_id(attrDao.getStruct_id());
|
||||
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getSource_billdtl_id()));
|
||||
for (List<StIvtIostorinvdisCp> list : collect.values()) {
|
||||
|
||||
BigDecimal qty = list
|
||||
.stream()
|
||||
.map(StIvtIostorinvdisCp::getReal_qty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
StIvtIostorinvdisCp disDao_1 = list.get(0);
|
||||
disDao_1.setPlan_qty(qty);
|
||||
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id());
|
||||
|
||||
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getBase_billdtl_id()));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -503,7 +490,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
.setSect_code("")
|
||||
.setSect_name(""),
|
||||
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id())
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinv_id,disDao.getIostorinv_id())
|
||||
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
// 3.更新任务
|
||||
@@ -526,9 +514,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
);
|
||||
|
||||
// 判断载具是否超限
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getById(disDao.getStoragevehicle_id());
|
||||
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
|
||||
|
||||
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code("是"))) {
|
||||
// 解锁超限货位
|
||||
iStIvtStructattrService.update(
|
||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
@@ -538,41 +525,83 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
}
|
||||
|
||||
// 更新库存
|
||||
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
)
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
|
||||
|
||||
// 4.更新分配
|
||||
iostorinvdisCpService.updateById(
|
||||
disDao.setStruct_name("").setStruct_code("")
|
||||
.setStruct_id("").setSect_id("")
|
||||
.setSect_code("").setSect_name("")
|
||||
.setPoint_id("").setPoint_code("")
|
||||
.setPoint_name("")
|
||||
.setWork_status(IOSEnum.WORK_STATUS.code("生成"))
|
||||
);
|
||||
for (List<StIvtIostorinvdisCp> list : collect.values()) {
|
||||
|
||||
// 5.更新明细
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne(
|
||||
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id())
|
||||
);
|
||||
BigDecimal qty = list
|
||||
.stream()
|
||||
.map(StIvtIostorinvdisCp::getReal_qty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
StIvtIostorinvdisCp disDao_1 = list.get(0);
|
||||
disDao_1.setPlan_qty(qty);
|
||||
|
||||
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
|
||||
|
||||
if (StrUtil.equals(dtlDao.getBill_status(), IOSEnum.BILL_STATUS.code("生成"))) {
|
||||
throw new BadRequestException("没有可取消的分配明细!");
|
||||
}
|
||||
|
||||
dtlDao.setAssign_qty(NumberUtil.sub(dtlDao.getAssign_qty(),disDao.getReal_qty()));
|
||||
dtlDao.setUnassign_qty(disDao.getReal_qty());
|
||||
// 4.更新明细
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect2 = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
)
|
||||
.stream()
|
||||
.filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id()))
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
|
||||
|
||||
if (dtlDao.getAssign_qty().doubleValue() == 0) {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
} else if (dtlDao.getAssign_qty().doubleValue() > 0) {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
|
||||
for (List<StIvtIostorinvdisCp> collectList : collect2.values()) {
|
||||
// 计算已分配
|
||||
BigDecimal qty = collectList
|
||||
.stream()
|
||||
.map(StIvtIostorinvdisCp::getReal_qty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id());
|
||||
|
||||
// 明细已分配数量
|
||||
BigDecimal assign_qty = NumberUtil.sub(dtlDao.getAssign_qty(), qty);
|
||||
// 明细未分配数量
|
||||
BigDecimal unAssign_qty = NumberUtil.add(dtlDao.getUnassign_qty(), qty);
|
||||
|
||||
dtlDao.setAssign_qty(assign_qty);
|
||||
dtlDao.setUnassign_qty(unAssign_qty);
|
||||
|
||||
if (assign_qty.doubleValue() == 0) {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
} else {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
|
||||
}
|
||||
|
||||
iostorinvdtlCpService.updateById(dtlDao);
|
||||
}
|
||||
|
||||
iostorinvdtlCpService.updateById(dtlDao);
|
||||
// 5.更新分配
|
||||
iostorinvdisCpService.update(
|
||||
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.set(StIvtIostorinvdisCp::getStruct_id, "")
|
||||
.set(StIvtIostorinvdisCp::getStruct_code, "")
|
||||
.set(StIvtIostorinvdisCp::getStruct_name,"")
|
||||
.set(StIvtIostorinvdisCp::getSect_id,"")
|
||||
.set(StIvtIostorinvdisCp::getSect_code,"")
|
||||
.set(StIvtIostorinvdisCp::getSect_name, "")
|
||||
.set(StIvtIostorinvdisCp::getPoint_id, "")
|
||||
.set(StIvtIostorinvdisCp::getPoint_code, "")
|
||||
.set(StIvtIostorinvdisCp::getPoint_name,"")
|
||||
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id,whereJson.getString("iostorinv_id"))
|
||||
);
|
||||
|
||||
// 6.更新主表
|
||||
updateMst(dtlDao.getIostorinv_id());
|
||||
updateMst(disDao.getIostorinv_id());
|
||||
|
||||
}
|
||||
|
||||
@@ -603,12 +632,17 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
BussEventMulticaster.Publish(event);
|
||||
|
||||
// 3.更新分配表
|
||||
iostorinvdisCpService.updateById(
|
||||
disDao.setPoint_id(pointDao.getPoint_id())
|
||||
.setPoint_code(pointDao.getPoint_code())
|
||||
.setPoint_name(pointDao.getPoint_name())
|
||||
.setWork_status(IOSEnum.WORK_STATUS.code("生成"))
|
||||
iostorinvdisCpService.update(
|
||||
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.set(StIvtIostorinvdisCp::getPoint_id, pointDao.getPoint_id())
|
||||
.set(StIvtIostorinvdisCp::getPoint_code, pointDao.getPoint_code())
|
||||
.set(StIvtIostorinvdisCp::getPoint_name,pointDao.getPoint_name())
|
||||
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成"))
|
||||
.set(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id())
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -695,9 +729,6 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
String task_id = form.getString("task_id");
|
||||
String status = form.getString("status");
|
||||
|
||||
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getTask_id, task_id));
|
||||
|
||||
// 更新任务状态为完成
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
// 更新任务为完成
|
||||
@@ -712,12 +743,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
|
||||
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))
|
||||
);
|
||||
|
||||
// 调用分配完成
|
||||
JSONObject mst_jo = new JSONObject();
|
||||
mst_jo.put("iostorinvdtl_id", disDao.getIostorinvdtl_id());
|
||||
mst_jo.put("iostorinv_id", disDao.getIostorinv_id());
|
||||
mst_jo.put("is_out", false);
|
||||
iostorinvdisCpService.confirm(mst_jo);
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
|
||||
)
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
|
||||
|
||||
for(List<StIvtIostorinvdisCp> list : collect.values()) {
|
||||
StIvtIostorinvdisCp disDao_2 = list.get(0);
|
||||
JSONObject mst_jo = new JSONObject();
|
||||
mst_jo.put("iostorinvdtl_id", disDao_2.getIostorinvdtl_id());
|
||||
mst_jo.put("iostorinv_id", disDao_2.getIostorinv_id());
|
||||
mst_jo.put("is_out", false);
|
||||
iostorinvdisCpService.confirm(mst_jo);
|
||||
}
|
||||
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
// 更新任务为执行中
|
||||
@@ -734,6 +776,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
);
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
// 取消任务
|
||||
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getTask_id, task_id),false);
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("iostorinvdis_id",disDao.getIostorinvdis_id());
|
||||
delTask(param);
|
||||
@@ -753,12 +798,16 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
);
|
||||
|
||||
// 2.更新分配
|
||||
disDao.setTask_id("");
|
||||
disDao.setPoint_code("");
|
||||
disDao.setPoint_id("");
|
||||
disDao.setPoint_name("");
|
||||
disDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成"));
|
||||
iostorinvdisCpService.updateById(disDao);
|
||||
iostorinvdisCpService.update(
|
||||
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.set(StIvtIostorinvdisCp::getPoint_id, "")
|
||||
.set(StIvtIostorinvdisCp::getPoint_code, "")
|
||||
.set(StIvtIostorinvdisCp::getPoint_name,"")
|
||||
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("未生成"))
|
||||
.set(StIvtIostorinvdisCp::getTask_id, "")
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -847,7 +896,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
.setStruct_code(attrDao.getStruct_code())
|
||||
.setStruct_name(attrDao.getStruct_name()),
|
||||
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
|
||||
.eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
@@ -861,23 +910,45 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
|
||||
.setStruct_code(attrDao.getStruct_code())
|
||||
.setStruct_name(attrDao.getStruct_name()),
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
// 3.更新明细表
|
||||
BigDecimal unassign_qty = iostorinvdtlCpService.getOne(
|
||||
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
|
||||
).getUnassign_qty();
|
||||
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
|
||||
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
|
||||
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
)
|
||||
.stream()
|
||||
.filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id()))
|
||||
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
|
||||
|
||||
iostorinvdtlCpService.update(
|
||||
new StIvtIostorinvdtlCp()
|
||||
.setBill_status(IOSEnum.BILL_STATUS.code("分配完"))
|
||||
.setAssign_qty(unassign_qty)
|
||||
.setUnassign_qty(new BigDecimal(0)),
|
||||
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
|
||||
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
|
||||
);
|
||||
for (List<StIvtIostorinvdisCp> collectList : collect.values()) {
|
||||
// 计算已分配
|
||||
BigDecimal qty = collectList
|
||||
.stream()
|
||||
.map(StIvtIostorinvdisCp::getReal_qty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id());
|
||||
|
||||
// 明细已分配数量
|
||||
BigDecimal assign_qty = NumberUtil.add(dtlDao.getAssign_qty(), qty);
|
||||
// 明细未分配数量
|
||||
BigDecimal unAssign_qty = NumberUtil.sub(dtlDao.getUnassign_qty(), qty);
|
||||
|
||||
dtlDao.setAssign_qty(assign_qty);
|
||||
dtlDao.setUnassign_qty(unAssign_qty);
|
||||
|
||||
if (unAssign_qty.doubleValue() == 0) {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
} else {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
|
||||
}
|
||||
|
||||
iostorinvdtlCpService.updateById(dtlDao);
|
||||
}
|
||||
|
||||
// 4.更新主表
|
||||
updateMst(whereJson.getString("iostorinv_id"));
|
||||
|
||||
@@ -92,11 +92,6 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
|
||||
List<StIvtIostorinvdisCp> result = new ArrayList<>();
|
||||
|
||||
list.forEach(item -> {
|
||||
// 获取载具信息
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleinfo>()
|
||||
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
// 获取物料信息
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(
|
||||
@@ -108,10 +103,13 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
|
||||
new QueryWrapper<MdPbMeasureunit>().eq("measure_unit_id", materDao.getBase_unit_id())
|
||||
);
|
||||
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id"));
|
||||
|
||||
|
||||
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
|
||||
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
|
||||
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
|
||||
.setIostorinv_id(json.getString("iostorinv_id"))
|
||||
.setIostorinvdis_id(IdUtil.getStringId())
|
||||
.setIostorinvdtl_id(dtlDao.getIostorinvdtl_id())
|
||||
.setIostorinv_id(dtlDao.getIostorinv_id())
|
||||
.setSeq_no(1)
|
||||
.setMaterial_id(materDao.getMaterial_id())
|
||||
.setPcsn(DateUtil.today())
|
||||
@@ -119,9 +117,7 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
|
||||
.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"))
|
||||
.setIs_active(true)
|
||||
.setWork_status(IOSEnum.WORK_STATUS.code("未生成"))
|
||||
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
|
||||
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
|
||||
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
|
||||
.setStoragevehicle_code(item.getString("storagevehicle_code"))
|
||||
.setIs_issued(false)
|
||||
.setQty_unit_id(unitDao.getMeasure_unit_id())
|
||||
.setQty_unit_name(unitDao.getUnit_name())
|
||||
@@ -129,18 +125,6 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
|
||||
.setReal_qty(item.getBigDecimal("qty"));
|
||||
result.add(disDao);
|
||||
|
||||
// 更新载具扩展属性表
|
||||
MdPbStoragevehicleext vehicleExtDao = new MdPbStoragevehicleext();
|
||||
vehicleExtDao.setMaterial_id(item.getString("material_id"));
|
||||
vehicleExtDao.setStorage_qty(NumberUtil.add(vehicleExtDao.getStorage_qty(),item.getBigDecimal("qty")));
|
||||
vehicleExtDao.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
vehicleExtDao.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
vehicleExtDao.setUpdate_time(new Date());
|
||||
|
||||
iMdPbStoragevehicleextService.update(
|
||||
vehicleExtDao,new QueryWrapper<MdPbStoragevehicleext>().eq("storagevehicle_code", vehicleDao.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,9 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.storage_manage.IVTEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -52,6 +54,9 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
|
||||
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
|
||||
|
||||
|
||||
@Autowired
|
||||
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
|
||||
|
||||
@Override
|
||||
public void batchInsert(Collection<StIvtIostorinvdisdtlCp> list) {
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
@@ -69,20 +74,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
|
||||
List<StIvtIostorinvdisdtlCp> result = new ArrayList<>();
|
||||
|
||||
list.forEach(item -> {
|
||||
// 获取载具信息
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleinfo>()
|
||||
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
MdMeMaterialbase mataDao = iMdMeMaterialbaseService.getOne(
|
||||
new QueryWrapper<MdMeMaterialbase>().lambda()
|
||||
.eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code"))
|
||||
);
|
||||
|
||||
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id"));
|
||||
|
||||
StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp()
|
||||
.setIostorinv_id(json.getString("iostorinv_id"))
|
||||
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
|
||||
.setIostorinv_id(dtlDao.getIostorinv_id())
|
||||
.setIostorinvdtl_id(dtlDao.getIostorinvdtl_id())
|
||||
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
|
||||
.setIostorinvdisdtl_id(IdUtil.getStringId())
|
||||
.setSeq_no(new BigDecimal(1))
|
||||
@@ -91,9 +93,7 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
|
||||
.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品"))
|
||||
.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"))
|
||||
.setIs_active(true)
|
||||
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
|
||||
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
|
||||
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
|
||||
.setStoragevehicle_code(item.getString("storagevehicle_code"))
|
||||
.setBucketunique(item.getString("bucketunique"))
|
||||
.setQty_unit_id(item.getString("qty_unit_id"))
|
||||
.setQty_unit_name(item.getString("qty_unit_name"))
|
||||
@@ -103,9 +103,8 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
|
||||
// 更新箱记录表
|
||||
iMdPbBucketrecordService.update(
|
||||
MdPbBucketrecord.builder()
|
||||
.storagevehicle_id(vehicleDao.getStoragevehicle_id())
|
||||
.status(MasterEnum.BOX_STATUS.code("组盘"))
|
||||
.storagevehicle_code(vehicleDao.getStoragevehicle_code())
|
||||
.storagevehicle_code(item.getString("storagevehicle_code"))
|
||||
.instor_optid(Long.getLong(SecurityUtils.getCurrentUserId()))
|
||||
.instor_optname(SecurityUtils.getCurrentNickName())
|
||||
.instor_time(DateUtil.now())
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
|
||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.IVTEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
|
||||
@@ -50,6 +54,9 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
||||
@Autowired
|
||||
protected IStIvtIostorinvdisCpService iostorinvdisCpService;
|
||||
|
||||
@Autowired
|
||||
protected IMpsSaleOrderService iMpsSaleOrderService; // 销售订单服务
|
||||
|
||||
|
||||
@Override
|
||||
public void batchInsert(Collection<StIvtIostorinvdtlCp> list) {
|
||||
@@ -74,6 +81,21 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
||||
.eq(MdMeMaterialbase::getMaterial_code, json.getString("material_code"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(row.getSource_bill_code())) {
|
||||
MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(
|
||||
new QueryWrapper<MpsSaleOrder>().lambda()
|
||||
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
|
||||
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(orderDao))
|
||||
throw new BadRequestException("销售单号错误!");
|
||||
|
||||
row.setBase_billdtl_id(orderDao.getSale_id().toString());
|
||||
row.setBase_bill_code(orderDao.getSale_code());
|
||||
row.setBase_bill_type(orderDao.getSale_type());
|
||||
row.setBase_bill_table(orderDao.getSeq_no().toString());
|
||||
}
|
||||
|
||||
row.setIostorinv_id(iostorinvCp_id);
|
||||
row.setMaterial_id(materDao.getMaterial_id());
|
||||
row.setIostorinvdtl_id(org.nl.common.utils.IdUtil.getStringId());
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
<span v-show="scope.row.edit">{{ scope.row.material_code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" />
|
||||
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" />
|
||||
<el-table-column show-overflow-tooltip prop="plan_qty" label="入库数量">
|
||||
<template slot-scope="scope">
|
||||
@@ -168,8 +169,33 @@
|
||||
<el-input v-model="form.tableData[scope.$index].remark" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="source_bill_type" label="源单类型" />
|
||||
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单号" />
|
||||
<el-table-column show-overflow-tooltip prop="base_bill_type" label="源单类型" />
|
||||
<el-table-column show-overflow-tooltip prop="base_bill_code" label="源单号">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-show="!scope.row.edit"
|
||||
v-model="form.tableData[scope.$index].base_bill_code"
|
||||
clearable
|
||||
:controls="false"
|
||||
controls-position="right"
|
||||
size="small"
|
||||
/>
|
||||
<span v-show="scope.row.edit">{{ scope.row.base_bill_code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="base_bill_table" label="源单行号">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-show="!scope.row.edit"
|
||||
v-model="form.tableData[scope.$index].base_bill_table"
|
||||
clearable
|
||||
:controls="false"
|
||||
controls-position="right"
|
||||
size="small"
|
||||
/>
|
||||
<span v-show="scope.row.edit">{{ scope.row.base_bill_table }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="170" fixed="right">
|
||||
<template scope="scope">
|
||||
@@ -308,6 +334,14 @@ export default {
|
||||
this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
if (!row.base_bill_code) {
|
||||
this.crud.notify('销售单号不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
if (!row.base_bill_table) {
|
||||
this.crud.notify('销售单号行不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
deleteRow(index, rows) {
|
||||
@@ -329,6 +363,7 @@ export default {
|
||||
this.nowrow.material_id = row.material_id
|
||||
this.nowrow.material_code = row.material_code
|
||||
this.nowrow.material_name = row.material_name
|
||||
this.nowrow.material_spec = row.material_spec
|
||||
this.nowrow.plan_qty = '0'
|
||||
this.nowrow.qty_unit_name = row.unit_name
|
||||
this.nowrow.qty_unit_id = row.base_unit_id
|
||||
@@ -348,9 +383,10 @@ export default {
|
||||
data.plan_qty = row.product_qty
|
||||
data.qty_unit_name = row.qty_unit_name
|
||||
data.qty_unit_id = row.qty_unit_id
|
||||
data.source_billdtl_id = row.sale_id
|
||||
data.source_bill_type = row.sale_type
|
||||
data.source_bill_code = row.sale_code
|
||||
data.base_billdtl_id = row.sale_id
|
||||
data.base_bill_type = row.sale_type
|
||||
data.base_bill_code = row.sale_code
|
||||
data.base_bill_table = row.seq_no
|
||||
data.edit = true
|
||||
this.form.tableData.splice(-1, 0, data)
|
||||
this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty)
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="assign_qty" :formatter="crud.formatNum3" label="已分配数量" align="center" />
|
||||
@@ -66,14 +67,9 @@
|
||||
<el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}">
|
||||
<el-form ref="form2" :inline="true" :model="form" :rules="rules" size="mini">
|
||||
<el-form-item label="载具号:" prop="vehicle_code">
|
||||
<el-input
|
||||
v-model="form.vehicle_code"
|
||||
style="width: 200px"
|
||||
size="mini"
|
||||
clearable
|
||||
placeholder="载具号"
|
||||
@blur="vehicleCheck(form.vehicle_code)"
|
||||
/>
|
||||
<el-input v-model="form.vehicle_code" style="width: 200px" size="mini" disabled clearable placeholder="载具号">
|
||||
<el-button slot="append" @click="vehicleCheck" >生成</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="箱号:" prop="pageBox_code">
|
||||
@@ -91,6 +87,7 @@
|
||||
:controls="false"
|
||||
precision="3"
|
||||
:min="0"
|
||||
@change="changeQty"
|
||||
placeholder="数量"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -113,6 +110,23 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="载具超限类型:" prop="vehicle_overstruct_type">
|
||||
<el-select
|
||||
v-model="form.vehicle_overstruct_type"
|
||||
size="mini"
|
||||
placeholder="请选择"
|
||||
class="filter-item"
|
||||
style="width: 200px;"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.VEHICLE_OVER_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
<div class="crud-opts2">
|
||||
@@ -123,6 +137,7 @@
|
||||
<el-cascader
|
||||
placeholder="请选择"
|
||||
:options="sects"
|
||||
v-model="defaultList"
|
||||
:props="{ checkStrictly: true }"
|
||||
clearable
|
||||
@change="sectQueryChange"
|
||||
@@ -212,6 +227,7 @@
|
||||
>
|
||||
<el-table-column show-overflow-tooltip type="index" label="序号" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="托盘号" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" align="center" />
|
||||
@@ -252,7 +268,7 @@ export default {
|
||||
name: 'DivDialog',
|
||||
components: { StructDiv, AddBox },
|
||||
mixins: [crud()],
|
||||
dicts: ['IO_BILL_STATUS', 'MD_OVERSTRUCT_TYPE'],
|
||||
dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE'],
|
||||
props: {
|
||||
dialogShow: {
|
||||
type: Boolean,
|
||||
@@ -272,8 +288,8 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
stor_id: '',
|
||||
sect_id: '',
|
||||
stor_id: '1528627995269533696',
|
||||
sect_id: '1528631043496742912',
|
||||
sectProp: null,
|
||||
structShow: false,
|
||||
bucketObj: null,
|
||||
@@ -282,6 +298,7 @@ export default {
|
||||
addBoxShow: false,
|
||||
bucketuniqueObj: null,
|
||||
sects: [],
|
||||
defaultList: ['1528627995269533696', '1528631043496742912'],
|
||||
dis_row: null,
|
||||
form: {
|
||||
dtl_row: null,
|
||||
@@ -292,6 +309,7 @@ export default {
|
||||
vehicle_code: '',
|
||||
bucketunique: '',
|
||||
checked: true,
|
||||
vehicle_overstruct_type: '00',
|
||||
tableMater: []
|
||||
},
|
||||
storlist: [],
|
||||
@@ -309,7 +327,6 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
disabledIos(row) {
|
||||
debugger
|
||||
if (row.iostorinvdis_id === undefined) {
|
||||
return false
|
||||
} else {
|
||||
@@ -340,22 +357,34 @@ export default {
|
||||
},
|
||||
clcikRow(row, column, event) {
|
||||
this.form.dtl_row = row
|
||||
this.form.storage_qty = this.form.dtl_row.plan_qty
|
||||
crudProductIn.getIosInvDis({ 'iostorinv_id': row.iostorinv_id, 'iostorinvdtl_id': row.iostorinvdtl_id }).then(res => {
|
||||
this.form.tableMater = res
|
||||
debugger
|
||||
if (res.length !== 0) {
|
||||
this.form.tableMater = res
|
||||
}
|
||||
})
|
||||
},
|
||||
clcikRowDis(row, column, event) {
|
||||
this.dis_row = row
|
||||
},
|
||||
vehicleCheck(vehicle_code) {
|
||||
this.form.bucketunique = ''
|
||||
// 校验载具号是否存在&&是否已被组盘
|
||||
crudProductIn.vehicleCheck({ 'storagevehicle_code': vehicle_code }).then(res => {
|
||||
this.crud.notify('查询成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
vehicleCheck() {
|
||||
// 生成托盘
|
||||
crudProductIn.vehicleCheck().then(res => {
|
||||
this.form.tableMater = []
|
||||
this.form.vehicle_code = res.vehicle_code
|
||||
this.crud.notify('生成成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}).catch(() => {
|
||||
this.form.vehicle_code = ''
|
||||
|
||||
})
|
||||
},
|
||||
changeQty(val) {
|
||||
debugger
|
||||
if (parseFloat(this.form.dtl_row.plan_qty) < parseFloat(val)) {
|
||||
this.crud.notify('放入数量不能大于明细数量!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
this.$set(this.form, 'storage_qty', parseFloat(this.form.dtl_row.plan_qty))
|
||||
}
|
||||
},
|
||||
queryBox() {
|
||||
// 校验载具是否为空
|
||||
if (!this.form.vehicle_code) {
|
||||
@@ -393,6 +422,7 @@ export default {
|
||||
})
|
||||
|
||||
if (fla) {
|
||||
this.bucketuniqueObj.iostorinvdtl_id = this.form.dtl_row.iostorinvdtl_id
|
||||
this.form.tableMater.splice(-1, 0, this.bucketuniqueObj)
|
||||
this.form.bucketunique = ''
|
||||
}
|
||||
@@ -404,12 +434,24 @@ export default {
|
||||
}
|
||||
const item = {
|
||||
'storagevehicle_code': this.form.vehicle_code,
|
||||
'iostorinvdtl_id': this.form.dtl_row.iostorinvdtl_id,
|
||||
'material_id': this.form.dtl_row.material_id,
|
||||
'material_code': this.form.dtl_row.material_code,
|
||||
'material_spec': this.form.dtl_row.material_spec,
|
||||
'material_name': this.form.dtl_row.material_name,
|
||||
'qty': this.form.storage_qty
|
||||
}
|
||||
this.form.tableMater.splice(-1, 0, item)
|
||||
|
||||
let fla2 = true
|
||||
this.form.tableMater.forEach(res => {
|
||||
if (res.iostorinvdtl_id === item.iostorinvdtl_id && res.storagevehicle_code === item.storagevehicle_code) {
|
||||
fla2 = false
|
||||
}
|
||||
})
|
||||
|
||||
if (fla2) {
|
||||
this.form.tableMater.splice(-1, 0, item)
|
||||
}
|
||||
}
|
||||
},
|
||||
deleteRow(index, rows) {
|
||||
@@ -486,11 +528,11 @@ export default {
|
||||
})
|
||||
},
|
||||
cancelConfirmvehicle() {
|
||||
if (!this.form.dtl_row) {
|
||||
this.crud.notify('请选择一条明细', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
if (!this.dis_row) {
|
||||
this.crud.notify('请选择一条分配明细', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return
|
||||
}
|
||||
crudProductIn.cancelConfirmvehicle(this.form.dtl_row).then(res => {
|
||||
crudProductIn.cancelConfirmvehicle(this.dis_row).then(res => {
|
||||
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => {
|
||||
this.form.vehicle_code = ''
|
||||
this.form.bucketunique = ''
|
||||
@@ -579,6 +621,7 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
this.dis_row.vehicle_overstruct_type = this.form.vehicle_overstruct_type
|
||||
crudProductIn.unDivStruct(this.dis_row).then(res => {
|
||||
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => {
|
||||
this.openParam = res
|
||||
|
||||
@@ -40,11 +40,10 @@ export function getIosInvDis(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export function vehicleCheck(data) {
|
||||
export function vehicleCheck() {
|
||||
return request({
|
||||
url: '/api/productIn/vehicleCheck',
|
||||
method: 'post',
|
||||
data
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user