feat: 分切的部分注释、魔法值提取
This commit is contained in:
@@ -13,6 +13,7 @@ import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproducti
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
@@ -135,7 +136,7 @@ public class SendAirShaftAgvTask extends AbstractAcsTask {
|
||||
task.setVehicle_code(form.getString("vehicle_code1"));
|
||||
task.setVehicle_code2(form.getString("vehicle_code2"));
|
||||
task.setAcs_task_type("3");
|
||||
task.setIs_delete("0");
|
||||
task.setIs_delete(SlitterConstant.SLITTER_NO);
|
||||
task.setRequest_param(form.toJSONString());
|
||||
task.setTask_type(form.getString("task_type"));
|
||||
task.setProduct_area(form.getString("product_area"));
|
||||
@@ -159,7 +160,7 @@ public class SendAirShaftAgvTask extends AbstractAcsTask {
|
||||
TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getQzzno, collect));
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ public class SlitterDownAgvTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ public class TrussCallShaftCacheTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@ public class TrussSendAirShaftTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ class TrussSendShaftCacheTask extends AbstractAcsTask {
|
||||
task.setPriority(priority_jo.getString("value"));
|
||||
}
|
||||
taskService.save(task);
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ public class UpShaftTrussTask extends AbstractAcsTask {
|
||||
TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getQzzno, collect));
|
||||
// this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(null);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingprodu
|
||||
import org.nl.b_lms.sch.tasks.slitter.TrussCallAirShaftTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.TrussCallShaftCacheTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
@@ -49,6 +50,13 @@ public class AutoCallAirShaftTask {
|
||||
@Autowired
|
||||
private TrussCallShaftCacheTask trussCallShaftCacheTask;
|
||||
|
||||
/**
|
||||
* 执行套轴和拔轴任务的逻辑处理。
|
||||
* 该方法首先寻找空闲的插拔轴位,然后根据不同的条件(如标箔或锂电)来确定区域。接着,它会检查是否有分切计划需要执行,
|
||||
* 并根据计划来决定是进行套轴还是拔轴操作。如果需要套轴,它会寻找合适的套轴位置,并且在没有合适位置时会触发滚条气涨轴的操作。
|
||||
* 同时,该方法也会更新相关的分切计划状态。
|
||||
* 套拔轴缓存位满了、没有分切计划,则触发自动创建套拔轴任务
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void run() {
|
||||
// 1、获取空的插拔轴位(无任务)
|
||||
@@ -93,8 +101,8 @@ public class AutoCallAirShaftTask {
|
||||
.eq(PdmBiSlittingproductionplan::getResource_name, planDto.getResource_name())
|
||||
.eq(PdmBiSlittingproductionplan::getParent_container_name, planDto.getParent_container_name())
|
||||
.eq(PdmBiSlittingproductionplan::getUp_or_down, planDto.getUp_or_down())
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")
|
||||
.eq(PdmBiSlittingproductionplan::getIs_paper_ok, "1"));
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO)
|
||||
.eq(PdmBiSlittingproductionplan::getIs_paper_ok, SlitterConstant.SLITTER_YES));
|
||||
// 获取其中一条
|
||||
PdmBiSlittingproductionplan needPlan = needPlans.get(0);
|
||||
String qzzSize = needPlan.getQzz_size();
|
||||
@@ -124,24 +132,27 @@ public class AutoCallAirShaftTask {
|
||||
param.put("point_code2", empty.getPoint_code());
|
||||
param.put("vehicle_code", ObjectUtil.isNotEmpty(startPoint.getQzz_no1())
|
||||
? startPoint.getQzz_no1() : startPoint.getQzz_no2());
|
||||
// 气胀轴号
|
||||
param.put("qzz_no", ObjectUtil.isNotEmpty(startPoint.getQzz_no1())
|
||||
? startPoint.getQzz_no1() : startPoint.getQzz_no2());
|
||||
param.put("needPlan", planDto);
|
||||
param.put("is_pulling", "1");
|
||||
param.put("is_bushing", "1");
|
||||
param.put("task_type", "6");
|
||||
// 是否拔轴
|
||||
param.put("is_pulling", SlitterConstant.SLITTER_YES);
|
||||
// 是否套轴
|
||||
param.put("is_bushing", SlitterConstant.SLITTER_YES);
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>穿拔轴位"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
param.put("qzz_size", needPlan.getQzz_size());
|
||||
// 纸管规格、是否拔轴
|
||||
// 纸管规格
|
||||
for (PdmBiSlittingproductionplan plan : needPlans) {
|
||||
if ("1".equals(plan.getLeft_or_right())) {
|
||||
if ("1".equals(plan.getPaper_tube_or_FRP())) {
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) {
|
||||
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
|
||||
param.put("left", plan.getPaper_tube_model());
|
||||
} else {
|
||||
param.put("left", plan.getFRP_model());
|
||||
}
|
||||
} else {
|
||||
if ("1".equals(plan.getPaper_tube_or_FRP())) {
|
||||
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
|
||||
param.put("right", plan.getPaper_tube_model());
|
||||
} else {
|
||||
param.put("right", plan.getFRP_model());
|
||||
@@ -149,7 +160,7 @@ public class AutoCallAirShaftTask {
|
||||
}
|
||||
}
|
||||
trussCallAirShaftTask.createTask(param);
|
||||
// 将分切计划is_paper_ok 1 -> 2
|
||||
// 将分切计划is_paper_ok 1(纸管已经准备好) -> 2(已经套轴)
|
||||
needPlans.forEach(p -> {
|
||||
p.setIs_paper_ok("2");
|
||||
TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
@@ -206,8 +217,8 @@ public class AutoCallAirShaftTask {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", shafttubeivt.getPoint_code());
|
||||
param.put("point_code2", empty.getPoint_code());
|
||||
param.put("is_bushing", "1");
|
||||
param.put("task_type", "6");
|
||||
param.put("is_bushing", SlitterConstant.SLITTER_YES);
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴位<>气胀轴缓存位"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
param.put("qzz_size", qzzSize);
|
||||
trussCallShaftCacheTask.createTask(param);
|
||||
@@ -220,15 +231,15 @@ public class AutoCallAirShaftTask {
|
||||
* @param qzzSize 气涨轴尺寸
|
||||
*/
|
||||
private void saveCutPlanMessage(BstIvtShafttubeivt empty, List<PdmBiSlittingproductionplan> needPlans, String qzzSize) {
|
||||
empty.setHave_qzz("1");
|
||||
empty.setHave_qzz(SlitterConstant.SLITTER_YES);
|
||||
empty.setQzz_size(qzzSize);
|
||||
empty.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
empty.setUpdate_optname(SecurityUtils.getCurrentUsername());
|
||||
empty.setUpdate_time(DateUtil.now());
|
||||
for (PdmBiSlittingproductionplan plan : needPlans) {
|
||||
if ("1".equals(plan.getLeft_or_right())) {
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) {
|
||||
// 左卷
|
||||
if ("1".equals(plan.getPaper_tube_or_FRP())) {
|
||||
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
|
||||
empty.setTube_code1(plan.getPaper_tube_material());
|
||||
empty.setTube_name1(plan.getPaper_tube_model());
|
||||
} else {
|
||||
@@ -238,7 +249,7 @@ public class AutoCallAirShaftTask {
|
||||
empty.setContainer_name1(plan.getContainer_name());
|
||||
} else {
|
||||
// 右卷
|
||||
if ("1".equals(plan.getPaper_tube_or_FRP())) {
|
||||
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
|
||||
empty.setTube_code1(plan.getPaper_tube_material());
|
||||
empty.setTube_name1(plan.getPaper_tube_model());
|
||||
} else {
|
||||
@@ -250,7 +261,7 @@ public class AutoCallAirShaftTask {
|
||||
}
|
||||
bstIvtShafttubeivtService.updateById(empty);
|
||||
// 分切计划
|
||||
// 将分切计划is_paper_ok 1 -> 2
|
||||
// 将分切计划is_paper_ok 1(准备好纸管) -> 2(套好气胀轴)
|
||||
needPlans.forEach(p -> {
|
||||
p.setIs_paper_ok("2");
|
||||
TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
@@ -287,9 +298,10 @@ public class AutoCallAirShaftTask {
|
||||
param.put("qzz_no", qzzNo);
|
||||
// hint: 当前分切计划的气涨轴尺寸
|
||||
param.put("qzz_size", plan.getQzz_size());
|
||||
param.put("task_type", "6");
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>穿拔轴位"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
param.put("is_bushing", "0");
|
||||
param.put("is_bushing", SlitterConstant.SLITTER_NO);
|
||||
param.put("is_pulling", SlitterConstant.SLITTER_YES);
|
||||
trussCallAirShaftTask.createTask(param);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
|
||||
import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService;
|
||||
import org.nl.b_lms.sch.tasks.slitter.SendAirShaftAgvTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.redisson.api.RLock;
|
||||
@@ -57,7 +58,7 @@ public class AutoSendAirShaftAgvTask {
|
||||
// 最多4条分切计划
|
||||
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getQzzno, collect)
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, "0"));
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO));
|
||||
if (plans.size() == 0) {
|
||||
throw new BadRequestException("分切计划不存在");
|
||||
}
|
||||
@@ -74,7 +75,8 @@ public class AutoSendAirShaftAgvTask {
|
||||
.eq(PdmBiSlittingproductionplan::getParent_container_name, demoPlan.getParent_container_name())
|
||||
.eq(PdmBiSlittingproductionplan::getResource_name, demoPlan.getResource_name())
|
||||
.eq(PdmBiSlittingproductionplan::getSplit_group, demoPlan.getSplit_group())
|
||||
.ne(PdmBiSlittingproductionplan::getUp_or_down, demoPlan.getUp_or_down()));
|
||||
.ne(PdmBiSlittingproductionplan::getUp_or_down, demoPlan.getUp_or_down())
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO));
|
||||
if (list.size() > 0) {
|
||||
// 还有不同轴,所以不继续
|
||||
break;
|
||||
@@ -99,11 +101,11 @@ public class AutoSendAirShaftAgvTask {
|
||||
param.put("point_code2", endPoint.getPoint_code());
|
||||
param.put("vehicle_code1", cutPoint.getQzz_no1());
|
||||
param.put("vehicle_code2", cutPoint.getQzz_no2());
|
||||
param.put("task_type", "3");
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>穿拔轴位"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
sendAirShaftAgvTask.createTask(param);
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试");
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.slitter.SlitterDownAgvTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.redisson.api.RLock;
|
||||
@@ -70,14 +71,14 @@ public class AutoSlitterDownAgvTask {
|
||||
toCreateTask(cut, endPoint);
|
||||
return;
|
||||
} else {
|
||||
throw new BadRequestException("资源已被占用,请稍等!");
|
||||
throw new BadRequestException("系统繁忙,稍后在试!!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
} else if (areaEmptyNotTaskPoint.size() == 0 && "3".equals(cut.getPoint_type())) {
|
||||
} else if ("3".equals(cut.getPoint_type())) {
|
||||
// 2、没有位置,就去分切缓存位
|
||||
areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("3", "1", "0","0");
|
||||
}
|
||||
@@ -97,7 +98,7 @@ public class AutoSlitterDownAgvTask {
|
||||
param.put("point_code2", endPoint.getPoint_code());
|
||||
param.put("vehicle_code1", cut.getQzz_no1());
|
||||
param.put("vehicle_code2", cut.getQzz_no2());
|
||||
param.put("task_type", "3");
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV任务"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
slitterDownAgvTask.createTask(param);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.slitter.UpShaftTrussTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -40,47 +41,62 @@ public class AutoUpShaftTrussTask {
|
||||
@Autowired
|
||||
private SlitterMapper slitterMapper;
|
||||
|
||||
/**
|
||||
* 运行任务,主要负责校验分切机是否有未处理的任务,如果有则跳过;如果没有,会尝试为分切机创建新的任务。
|
||||
* 该过程包括:查找没有气涨轴的分切机点位,校验是否存在相关任务,寻找备好轴的对接点位,获取下一组分切计划,
|
||||
* 并根据计划创建相应的搬运任务。
|
||||
*/
|
||||
public void run() {
|
||||
// 获取没有气涨轴的分切机点位
|
||||
// 获取符合条件的分切机点位信息 hint: (目前暂定B2区域)
|
||||
List<StIvtCutpointivt> devicePoint = cutpointivtService.list(new LambdaQueryWrapper<StIvtCutpointivt>()
|
||||
.eq(StIvtCutpointivt::getProduct_area, "B2")
|
||||
.and(l1 -> l1.eq(StIvtCutpointivt::getUp_qzzno, "").or().isNull(StIvtCutpointivt::getUp_qzzno))
|
||||
.and(l2 -> l2.eq(StIvtCutpointivt::getDown_qzzno, "").or().isNull(StIvtCutpointivt::getDown_qzzno)));
|
||||
|
||||
// 遍历每个分切机点位进行任务的校验和创建
|
||||
devicePoint.forEach(device -> {
|
||||
// 校验任务
|
||||
// todo: 区域
|
||||
String productArea = device.getProduct_area();
|
||||
// 校验是否存在未完成的任务
|
||||
List<String> collect = Stream.of(device.getUp_point_code(), device.getDown_point_code()).collect(Collectors.toList());
|
||||
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, "07")
|
||||
.in(SchBaseTask::getPoint_code1, collect).in(SchBaseTask::getPoint_code2, collect)
|
||||
.in(SchBaseTask::getPoint_code3, collect).in(SchBaseTask::getPoint_code4, collect));
|
||||
if (list.size() > 0) {
|
||||
// 存在未完成任务,跳过当前点位
|
||||
return;
|
||||
}
|
||||
// 获取备好轴的对接点位
|
||||
|
||||
// 寻找备好轴的对接点位
|
||||
List<BstIvtCutpointivt> cutPointList = slitterMapper.getReadyShaftPoint(device.getExt_code());
|
||||
if (cutPointList.size() == 0) {
|
||||
log.warn("分切机【" + device.getExt_code() + "】未找到套好纸管的气涨轴");
|
||||
// 下个分切机
|
||||
// 未找到备好轴的对接点位
|
||||
return;
|
||||
}
|
||||
BstIvtCutpointivt newCutPoint = cutPointList.get(0);
|
||||
// 获取当前分切机的下一组分切计划(最多四条分切计划)
|
||||
|
||||
// 获取下一组分切计划
|
||||
List<String> qzzNos = Stream.of(newCutPoint.getQzz_no1(), newCutPoint.getQzz_no2())
|
||||
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
|
||||
List<PdmBiSlittingproductionplan> nextPlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getQzzno, qzzNos));
|
||||
if (nextPlans.size() == 0) {
|
||||
log.warn("分切机【" + device.getExt_code() + "】未找到套好轴的分切计划");
|
||||
// 下个分切机
|
||||
// 未找到分切计划
|
||||
return;
|
||||
}
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
// 筛选上下轴各一条
|
||||
PdmBiSlittingproductionplan nextUpPlan = nextPlans.stream().filter(p -> "1".equals(p.getUp_or_down())).findFirst().orElse(null);
|
||||
PdmBiSlittingproductionplan nextDownPlan = nextPlans.stream().filter(p -> "2".equals(p.getUp_or_down())).findFirst().orElse(null);
|
||||
// 查找对应的分切对接位
|
||||
// 根据计划筛选上下轴任务,并构建任务参数
|
||||
PdmBiSlittingproductionplan nextUpPlan = nextPlans.stream()
|
||||
.filter(p -> SlitterConstant.SLITTER_SHAFT_UP.equals(p.getUp_or_down())).findFirst().orElse(null);
|
||||
PdmBiSlittingproductionplan nextDownPlan = nextPlans.stream()
|
||||
.filter(p -> SlitterConstant.SLITTER_SHAFT_DOWN.equals(p.getUp_or_down())).findFirst().orElse(null);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(nextUpPlan) && ObjectUtil.isNotEmpty(nextDownPlan)) {
|
||||
// 双轴任务
|
||||
// 双轴任务参数构建
|
||||
param.put("point_code1", newCutPoint.getTruss_point_code1());
|
||||
param.put("point_code2", device.getUp_point_code());
|
||||
param.put("point_code3", newCutPoint.getTruss_point_code2());
|
||||
@@ -88,7 +104,7 @@ public class AutoUpShaftTrussTask {
|
||||
param.put("vehicle_code1", newCutPoint.getQzz_no1());
|
||||
param.put("vehicle_code2", newCutPoint.getQzz_no2());
|
||||
} else {
|
||||
// 单轴任务
|
||||
// 单轴任务参数构建
|
||||
if (ObjectUtil.isNotEmpty(nextUpPlan)) {
|
||||
// 上轴任务
|
||||
param.put("point_code1", newCutPoint.getTruss_point_code1());
|
||||
@@ -101,11 +117,16 @@ public class AutoUpShaftTrussTask {
|
||||
param.put("vehicle_code2", newCutPoint.getQzz_no2());
|
||||
}
|
||||
}
|
||||
|
||||
// 构建任务的其他参数
|
||||
param.put("truss_type", "1");
|
||||
param.put("empty_site", "0");
|
||||
param.put("task_type", "6");
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("分切机上气胀轴"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
|
||||
// 创建任务
|
||||
upShaftTrussTask.createTask(param);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,5 +35,29 @@ public interface SlitterConstant {
|
||||
* 区域:下
|
||||
*/
|
||||
String SLITTER_AREA_DOWN = "1";
|
||||
/**
|
||||
* 子卷:左边
|
||||
*/
|
||||
String SLITTER_SUB_VOLUME_LEFT = "1";
|
||||
/**
|
||||
* 子卷:右边
|
||||
*/
|
||||
String SLITTER_SUB_VOLUME_RIGHT = "2";
|
||||
/**
|
||||
* 子卷:上轴
|
||||
*/
|
||||
String SLITTER_SHAFT_UP = "1";
|
||||
/**
|
||||
* 子卷:下轴
|
||||
*/
|
||||
String SLITTER_SHAFT_DOWN = "2";
|
||||
/**
|
||||
* 子卷类型:纸管
|
||||
*/
|
||||
String SLITTER_TYPE_PAPER = "1";
|
||||
/**
|
||||
* 子卷类型:FRP
|
||||
*/
|
||||
String SLITTER_TYPE_FRP = "2";
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.nl.b_lms.sch.tasks.slitter.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 分切所需要的枚举
|
||||
* @Date: 2024/3/19
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum SlitterEnum {
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
TASK_TYPE(MapOf.of("穿拔轴缓存<>穿拔轴位", "010801", "穿拔轴缓存<>分切对接位", "010802", "穿拔轴位<>气胀轴缓存位", "010803"
|
||||
, "分切机下料AGV任务", "010804", "分切机上气胀轴", "010805", "分切机下气胀轴", "010806"));
|
||||
private Map<String, String> code;
|
||||
|
||||
public String code(String desc) {
|
||||
String code = this.getCode().get(desc);
|
||||
if (StringUtils.isNotEmpty(code)) {
|
||||
return code;
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||
}
|
||||
|
||||
public String check(String code) {
|
||||
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
|
||||
if (entry.getValue().equals("code")) {
|
||||
return entry.getValue();
|
||||
}
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ public class SlitterController {
|
||||
@PostMapping("/test3")
|
||||
@Log("1111")
|
||||
public ResponseEntity<Object> create3(@RequestBody JSONObject entity){
|
||||
List<String> collect = Stream.of("B2572312312002B1").collect(Collectors.toList());
|
||||
List<String> collect = Stream.of("B2652312312901A1").collect(Collectors.toList());
|
||||
entity.put("container", collect);
|
||||
return new ResponseEntity<>(slitterService.mesSlittingMachineSendMaterial(entity), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.nl.b_lms.sch.tasks.slitter.SlitterDownTrussTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.TrussCallShaftCacheTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.TrussSendAirShaftTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper;
|
||||
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
@@ -120,7 +121,7 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
BstIvtShafttubeivt CBJ = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
if (ObjectUtil.isEmpty(CBJ.getTube_code1()) && ObjectUtil.isEmpty(CBJ.getTube_code2())) {
|
||||
// 清空
|
||||
CBJ.setHave_qzz("0");
|
||||
CBJ.setHave_qzz(SlitterConstant.SLITTER_NO);
|
||||
TaskUtils.updateOptMessageByBShaftPoint(CBJ);
|
||||
shafttubeivtService.updateById(CBJ);
|
||||
}
|
||||
@@ -150,10 +151,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
res.put("data", r);
|
||||
r.put("device_code", deviceCode);
|
||||
for (PdmBiSlittingproductionplan plan : plans) {
|
||||
String s = String.valueOf("1".equals(plan.getPaper_tube_or_FRP())
|
||||
String s = String.valueOf(SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())
|
||||
? plan.getPaper_tube_model().split("\\|")[2].charAt(0)
|
||||
: plan.getFRP_model().split("\\|")[2].charAt(0));
|
||||
if ("1".equals(plan.getLeft_or_right())) {
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) {
|
||||
r.put("left_size", s);
|
||||
} else {
|
||||
r.put("right_size", s);
|
||||
@@ -189,6 +190,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
// 获取分切计划
|
||||
List<String> collect = Stream.of(startPoint.getContainer_name1(), startPoint.getContainer_name2())
|
||||
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
|
||||
if (collect.size() == 0) {
|
||||
log.error("找不到[{}]对应的分切计划!", deviceCode);
|
||||
throw new BadRequestException("找不到[" + deviceCode + "]对应的分切计划!");
|
||||
}
|
||||
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getContainer_name, collect)
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, "0"));
|
||||
@@ -226,7 +231,7 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
// 分切计划设置套轴完成
|
||||
String qzzNo = IdUtil.getSnowflake(1,1).nextIdStr();
|
||||
plans.forEach(plan -> {
|
||||
plan.setIs_child_tz_ok("1");
|
||||
plan.setIs_child_tz_ok(SlitterConstant.SLITTER_YES);
|
||||
plan.setQzzno(qzzNo);
|
||||
TaskUtils.updateOptMessageBySlitterPlan(plan);
|
||||
});
|
||||
@@ -234,15 +239,15 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
// 创建任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("point_code1", startPoint.getPoint_code());
|
||||
taskParam.put("point_code2", "1".equals(demoPlan.getUp_or_down())
|
||||
taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down())
|
||||
? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2());
|
||||
taskParam.put("vehicle_code1", "1".equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("vehicle_code2", "2".equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("task_type", "6");
|
||||
taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : "");
|
||||
taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>穿拔轴位"));
|
||||
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
trussSendAirShaftTask.createTask(taskParam);
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试");
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLockPoint) {
|
||||
@@ -281,7 +286,7 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
param.put("point_code2", shafttubeivt.getPoint_code());
|
||||
// hint: 当前分切计划的气涨轴尺寸
|
||||
param.put("qzz_size", qzzSize);
|
||||
param.put("task_type", "6");
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴位<>气胀轴缓存位"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
param.put("is_bushing", "0");
|
||||
trussCallShaftCacheTask.createTask(param);
|
||||
@@ -304,7 +309,7 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
// 获取分切计划,最多4个需要出站的任务
|
||||
List<PdmBiSlittingproductionplan> currentPlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getContainer_name, containerList)
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, SlitterConstant.SLITTER_NO)
|
||||
.eq(PdmBiSlittingproductionplan::getStatus, "05"));
|
||||
if (currentPlans.size() == 0) {
|
||||
throw new BadRequestException("当前子卷已经出卷或者不存在!");
|
||||
@@ -370,7 +375,7 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
slittingproductionplanService.updateBatchById(currentPlans);
|
||||
return res;
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试");
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
@@ -554,10 +559,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
throw new BadRequestException("查询不到气胀轴编码「" + qzzNo + "」对应的子卷信息!");
|
||||
}
|
||||
PdmBiSlittingproductionplan plan;
|
||||
if ("1".equals(direction)) {
|
||||
plan = plans.stream().filter(p -> "1".equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(direction)) {
|
||||
plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
} else {
|
||||
plan = plans.stream().filter(p -> "2".equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_RIGHT.equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
}
|
||||
if (plan == null) {
|
||||
log.error("设备{}, 找不到气胀轴编码{}对应的分切计划!参数:{}",deviceCode, qzzNo, param);
|
||||
|
||||
@@ -30,7 +30,7 @@ public class CodeUtil {
|
||||
map.put("code", ruleCode);
|
||||
return SpringContextHolder.getBean(ISysCodeRuleService.class).codeDemo(map);
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试");
|
||||
throw new BadRequestException("系统繁忙,稍后在试!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
|
||||
@@ -118,7 +118,7 @@ public class CheckOutBillController {
|
||||
}
|
||||
|
||||
@PostMapping("/allDivOne")
|
||||
@Log("出库单全部分2配")
|
||||
@Log("出库单自动分配")
|
||||
|
||||
public ResponseEntity<Object> allDivOne(@RequestBody JSONObject whereJson) {
|
||||
if (whereJson.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
|
||||
|
||||
Reference in New Issue
Block a user