feat: 分切下料2

fix: 分切下料不在校验分切计划05状态
fix:分切桁架做完任务更新计划失败报错
This commit is contained in:
2025-03-13 21:25:03 +08:00
parent 42e595a906
commit 473241c84e
5 changed files with 51 additions and 33 deletions

View File

@@ -40,6 +40,13 @@ public class SlitterPdaController {
return new ResponseEntity<>(slitterDevices.downRolls(param), HttpStatus.OK);
}
@PostMapping("/downRolls2")
@Log("下卷2")
@SaIgnore
public ResponseEntity<Object> downRolls2(@RequestBody JSONObject param) {
return new ResponseEntity<>(slitterDevices.downRolls2(param), HttpStatus.OK);
}
@PostMapping("/moveVehicle")
@Log("搬运废箔斗")
@SaIgnore

View File

@@ -141,26 +141,28 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
log.info("即将上卷的气胀轴编码数据:{}", upQzzNos);
if (upQzzNos.size() > 0) {
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByQzzNos(upQzzNos);
PdmBiSlittingproductionplan pp = plans.get(0);
// 需要把重量记录到分切机上
point1.setRemark(SlitterTaskUtil.getPaperWeightStr(plans));
if (pp.getContainer_name().contains("虚拟")) {
// 如果是虚拟卷,需要执行删除标记,并且清空数据
// 将分切计划删除,设备禁用
plans.forEach(p1 -> {
p1.setIs_delete("1");
p1.setQzzno("");
p1.setUpdate_time(DateUtil.now());
p1.setUpdate_optname(SecurityUtils.getCurrentNickName());
p1.setUpdate_optid(SecurityUtils.getCurrentUserId());
});
slittingproductionplanService.updateBatchById(plans);
// 设备禁用
point1.setUp_qzzno("");
point1.setDown_qzzno("");
} else {
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, upQzzNos));
if (plans.size() > 0) {
PdmBiSlittingproductionplan pp = plans.get(0);
// 需要把重量记录到分切机上
point1.setRemark(SlitterTaskUtil.getPaperWeightStr(plans));
if (pp.getContainer_name().contains("虚拟")) {
// 如果是虚拟卷,需要执行删除标记,并且清空数据
// 将分切计划删除,设备禁用
plans.forEach(p1 -> {
p1.setIs_delete("1");
p1.setQzzno("");
p1.setUpdate_time(DateUtil.now());
p1.setUpdate_optname(SecurityUtils.getCurrentNickName());
p1.setUpdate_optid(SecurityUtils.getCurrentUserId());
});
slittingproductionplanService.updateBatchById(plans);
// 设备禁用
point1.setUp_qzzno("");
point1.setDown_qzzno("");
} else {
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, upQzzNos));
}
}
}
point1.setUpdate_optid(3L);

View File

@@ -146,7 +146,6 @@
p.split_group,
p.up_or_down,
p.qzz_size,
p.`status`,
p.qzz_generation,
MIN(p.start_time) AS start_time
FROM
@@ -168,6 +167,6 @@
p.qzz_size,
p.qzz_generation
ORDER BY
start_time DESC, `status`
start_time DESC
</select>
</mapper>

View File

@@ -313,4 +313,11 @@ public interface SlitterService {
* @return
*/
List<CallPlanViewVO> showManualView(JSONObject param);
/**
* 子卷下料2
* @param param
* @return
*/
JSONObject downRolls2(JSONObject param);
}

View File

@@ -487,12 +487,11 @@ public class SlitterServiceImpl implements SlitterService {
log.error("子卷参数不能为空!");
throw new BadRequestException("子卷参数不能为空!");
}
// 获取分切计划最多4个需要出站的任务
// 获取分切计划最多4个需要出站的任务 (不在校验05状态)
List<PdmBiSlittingproductionplan> currentPlans = slittingproductionplanService.list(
new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getContainer_name, containerList)
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO)
.eq(PdmBiSlittingproductionplan::getStatus, "05"));
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO));
if (currentPlans.size() == 0) {
log.error("当前子卷已经出卷或者不存在!");
throw new BadRequestException("当前子卷已经出卷或者不存在!");
@@ -515,14 +514,6 @@ public class SlitterServiceImpl implements SlitterService {
}
String area = device.getProduct_area();
// 获取当前分切机的下一组分切计划(最多四条分切计划)
// hint: 获取到的分切可能是不同组的但具有一定时间顺序
// List<PdmBiSlittingproductionplan> timePlans = slittingproductionplanService.list(
// new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
// .eq(PdmBiSlittingproductionplan::getResource_name, actualDeviceCode)
// .eq(PdmBiSlittingproductionplan::getStatus, "03")
// .eq(PdmBiSlittingproductionplan::getIs_delete, "0")
// .orderByAsc(PdmBiSlittingproductionplan::getUpdate_time));
// log.info("获取下一组分切计划(可能存在脏数据){}", timePlans);
// 寻找备好轴的对接点位
List<BstIvtCutpointivt> cutPointList = slitterMapper.getReadyShaftPoint(actualDeviceCode);
// 任务参数
@@ -2118,4 +2109,16 @@ public class SlitterServiceImpl implements SlitterService {
public List<CallPlanViewVO> showManualView(JSONObject param) {
return slitterMapper.showManualView();
}
@Override
public JSONObject downRolls2(JSONObject param) {
log.info("下卷2的输入参数为{}", param);
// param: device_code, container
String device_code = param.getString("device_code");
List<SchBaseTask> tasks = taskService.checkHaveTask(device_code);
if (tasks.size() > 0) {
throw new BadRequestException("分切机" + device_code + " 已经有存在的任务");
}
return mesSlittingMachineSendMaterial(param);
}
}