|
@@ -2975,17 +2975,20 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public R addMaterial(AddMaterialReq req) {
|
|
|
- if (ObjectUtil.isEmpty(req.getBatchNumbers())) {
|
|
|
- return R.error("批次号不可为空");
|
|
|
- }
|
|
|
+ //分割批次号
|
|
|
+ List<String> batchNumberList = new LinkedList<>();
|
|
|
+// if (ObjectUtil.isEmpty(req.getBatchNumbers())) {
|
|
|
+// return R.error("批次号不可为空");
|
|
|
+// }
|
|
|
if (ObjectUtil.isEmpty(req.getBlankId())) {
|
|
|
return R.error("坯料计划ID为空");
|
|
|
}
|
|
|
if (ObjectUtil.isEmpty(req.getProcessId())) {
|
|
|
return R.error("坯料计划第一道工序作业的ID为空");
|
|
|
}
|
|
|
- //分割批次号
|
|
|
- List<String> batchNumberList = Arrays.asList(req.getBatchNumbers().split(","));
|
|
|
+ if (ObjectUtil.isNotEmpty(req.getBatchNumbers())) {
|
|
|
+ batchNumberList = new LinkedList<>(Arrays.asList(req.getBatchNumbers().split(",")));
|
|
|
+ }
|
|
|
//查询坯料计划详情
|
|
|
ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(req.getBlankId());
|
|
|
//查询坯料计划第一道工序作业的详情
|
|
@@ -3018,20 +3021,43 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //如果批次号有重复,则错误提示:批次号{批次号}重复
|
|
|
+ for (String item : batchNumberList) {
|
|
|
+ if (batchNumberList.stream().filter(i -> i.equals(item)).count() > 1) {
|
|
|
+ return R.error("批次号" + item + "重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- //如果坯料类型=热轧,检查每个批次号
|
|
|
//如果批次号不是9位数,则错误提示:热轧坯料批次号{批次号}错误,应该是9位
|
|
|
+
|
|
|
+ for (String s : batchNumberList) {
|
|
|
+ if (s.length() != 9) {
|
|
|
+ return R.error("热轧坯料批次号" + s + "错误,应该是9位");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<ApsWorkInProgressInventoryDo> workInProgressInventoryDos = new LinkedList<>();
|
|
|
+ if (ObjectUtil.isNotEmpty(addBatchNumberList)) {
|
|
|
+ //查询新增的批次号
|
|
|
+ workInProgressInventoryDos =
|
|
|
+ apsWorkInProgressInventoryService.list(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
+ .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
+ .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果坯料类型=热轧,检查每个批次号
|
|
|
if (apsBlankOrderDo.getBlanktype().equals("热轧")) {
|
|
|
- for (String s : batchNumberList) {
|
|
|
- if (s.length() != 9) {
|
|
|
- return R.error("热轧坯料批次号" + s + "错误,应该是9位");
|
|
|
+ for (String s : addBatchNumberList) {
|
|
|
+ //如果该批次号物料在制品库存中存在,则错误提示:批次号{批次号}错误
|
|
|
+ ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = workInProgressInventoryDos.stream().filter(item -> item.getBatchnumber().equals(s)).findFirst().orElse(null);
|
|
|
+ if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo)) {
|
|
|
+ return R.error("批次号" + s + "错误");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 如果坯料类型=铸轧,检查每个批次号
|
|
|
- * 如果该批次号物料在制品库存中没找到,则错误提示:批次号{批次号}错误
|
|
|
+ * 如果坯料类型=铸轧,按以下步骤检查新增的每个批次号,如果该批次号物料在制品库存中存在
|
|
|
* 如果在制品备料计划ID不为空,并且不等于该坯料计划ID,错误提示:该坯料已经被其他坯料计划领料
|
|
|
* 如果在制品状态=待加工或加工中或待检验,错误提示:批次号{批次号}错误,该料卷在加工中
|
|
|
* 如果在制品状态=待入库或已入库或已出库,并且订单号对应订单的客户的客户类型不是内部客户,错误提示:批次号{批次号}错误,该料卷是其他客户订单的成品
|
|
@@ -3042,15 +3068,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
*/
|
|
|
//如果坯料类型=铸轧,检查每个批次号
|
|
|
if (apsBlankOrderDo.getBlanktype().equals("铸轧")) {
|
|
|
- List<ApsWorkInProgressInventoryDo> workInProgressInventoryDos =
|
|
|
- apsWorkInProgressInventoryService.list(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
- .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
- .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
|
|
|
for (String s : addBatchNumberList) {
|
|
|
//如果该批次号物料在制品库存中没找到,则错误提示:批次号{批次号}错误
|
|
|
ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = workInProgressInventoryDos.stream().filter(item -> item.getBatchnumber().equals(s)).findFirst().orElse(null);
|
|
|
if (ObjectUtil.isEmpty(apsWorkInProgressInventoryDo)) {
|
|
|
- return R.error("批次号" + s + "错误");
|
|
|
+ continue;
|
|
|
}
|
|
|
|
|
|
//如果在制品备料计划ID不为空,并且不等于该坯料计划ID,错误提示:该坯料已经被其他坯料计划领料
|
|
@@ -3060,24 +3082,24 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
return R.error("该坯料已经被坯料计划" + blankOrderDo.getBlanknumber() + "领料");
|
|
|
}
|
|
|
|
|
|
+ //如果在制品类型=不良在制品,错误提示:批次号{批次号}错误,该料卷检验不合格
|
|
|
+ if (apsWorkInProgressInventoryDo.getWorkinprocesstype().equals("不良在制品")) {
|
|
|
+ return R.error("批次号" + s + "错误,该料卷检验不合格");
|
|
|
+ }
|
|
|
+
|
|
|
//如果在制品状态=待加工或加工中或待检验,错误提示:批次号{批次号}错误,该料卷在加工中
|
|
|
if (Arrays.asList("待加工", "加工中", "待检验").contains(apsWorkInProgressInventoryDo.getWorkinprocessstatus())) {
|
|
|
return R.error("批次号" + s + "错误,该料卷在加工中");
|
|
|
}
|
|
|
|
|
|
- //如果在制品状态=备料中、待入库或已入库或已出库,并且订单号对应订单的客户的客户类型不是内部客户,错误提示:批次号{批次号}错误,该料卷是其他客户订单的成品
|
|
|
- if (Arrays.asList("备料中", "待入库", "已入库", "已出库").contains(apsWorkInProgressInventoryDo.getWorkinprocessstatus())) {
|
|
|
+ //如果在制品状态=待入库或已入库或已出库,并且订单号对应订单的客户的客户类型不是内部客户,错误提示:批次号{批次号}错误,该料卷是其他客户订单的成品
|
|
|
+ if (Arrays.asList("待入库", "已入库", "已出库").contains(apsWorkInProgressInventoryDo.getWorkinprocessstatus())) {
|
|
|
if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo.getOrdertype()) && apsWorkInProgressInventoryDo.getOrdertype().equals("客户订单")) {
|
|
|
return R.error("批次号" + s + "错误,该料卷是其他客户订单的成品");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- //如果在制品类型=不良在制品,错误提示:批次号{批次号}错误,该料卷检验不合格
|
|
|
- if (apsWorkInProgressInventoryDo.getWorkinprocesstype().equals("不良在制品")) {
|
|
|
- return R.error("批次号" + s + "错误,该料卷检验不合格");
|
|
|
- }
|
|
|
-
|
|
|
//查找该批次号物料=在制品的作业输出物料ID对应输出物料
|
|
|
//如果{该批次号物料的输入物料描述}与{坯料的输入物料描述}不相同,
|
|
|
//错误提示:该批次号{批次号}物料:{该批次号物料的输入物料描述}不是该坯料计划所需的坯料{坯料的输入物料描述}
|
|
@@ -3097,11 +3119,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
* 在制品的备料计划ID=该坯料计划ID
|
|
|
*/
|
|
|
//原批次号(修改前的值),对应的所有在制品的在制品状态=备料中,在制品的备料计划ID=(空)
|
|
|
- apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
- .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
|
|
|
- .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "备料中")
|
|
|
- .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
- .in(ApsWorkInProgressInventoryDo::getBatchnumber, delBatchNumberList));
|
|
|
+ if (ObjectUtil.isNotEmpty(delBatchNumberList)) {
|
|
|
+ apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
+ .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
|
|
|
+ .setSql("WORKINPROCESSSTATUS = REMARK")
|
|
|
+ .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
+ .in(ApsWorkInProgressInventoryDo::getBatchnumber, delBatchNumberList));
|
|
|
+ }
|
|
|
|
|
|
//更新坯料计划的第一道工序作业的所有工序作业明细的待加工料卷批次号=领料批次号逗号拼接
|
|
|
apsProcessOperationProcessEquService.update(new UpdateWrapper<ApsProcessOperationProcessEquDo>().lambda()
|
|
@@ -3111,11 +3135,14 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
//在制品的在制品状态=待加工
|
|
|
//在制品的备料计划ID=该坯料计划ID
|
|
|
- apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
- .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, req.getBlankId())
|
|
|
- .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "待加工")
|
|
|
- .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
- .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
|
|
|
+ if (ObjectUtil.isNotEmpty(addBatchNumberList)) {
|
|
|
+ apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
|
|
|
+ .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, req.getBlankId())
|
|
|
+ .setSql("REMARK = WORKINPROCESSSTATUS")
|
|
|
+ .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "待加工")
|
|
|
+ .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
|
|
|
+ .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
|
|
|
+ }
|
|
|
|
|
|
return R.ok();
|
|
|
}
|