fix:自动创建拆单桁架任务
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
package org.nl.b_lms.sch.tasks.slitter.auto;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
|
||||
import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService;
|
||||
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.TrussDisassemblyCacheTask;
|
||||
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.nl.wms.pdm.ivt.deliverycache.service.IDeliverycachepointivtService;
|
||||
import org.nl.wms.pdm.ivt.deliverycache.service.dao.Deliverycachepointivt;
|
||||
import org.nl.wms.pdm.ivt.deliverycache.service.dto.AreaBCachePointDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 自动任务 创建拆单桁架任务
|
||||
* @Date: 2024/2/1
|
||||
*/
|
||||
@Slf4j
|
||||
@Deprecated
|
||||
@Component
|
||||
public class AutoSplitTrussTask {
|
||||
|
||||
@Autowired
|
||||
private IDeliverycachepointivtService deliverycachepointivtService;
|
||||
|
||||
@Autowired
|
||||
private TrussDisassemblyCacheTask trussDisassemblyCacheTask;
|
||||
|
||||
@Autowired
|
||||
private IBstIvtCutpointivtService bcutpointivtService;
|
||||
|
||||
@Autowired
|
||||
private IPdmBiSlittingproductionplanService slittingproductionplanService;
|
||||
|
||||
/**
|
||||
* 运行任务,主要负责校验分切机是否有未处理的任务,如果有则跳过;如果没有,会尝试为分切机创建新的任务。
|
||||
* 该过程包括:查找没有气涨轴的分切机点位,校验是否存在相关任务,寻找备好轴的对接点位,获取下一组分切计划,
|
||||
* 并根据计划创建相应的搬运任务。
|
||||
*/
|
||||
public void run() {
|
||||
log.info("自动创建拆单桁架任务开始执行...");
|
||||
//查询可以拆单的分切缓存点位
|
||||
List<BstIvtCutpointivt> cutPoints = bcutpointivtService.getAreaNotTaskPointByStatus("5", "2", null, "0");
|
||||
for (BstIvtCutpointivt cutPoint : cutPoints) {
|
||||
log.info("此时执行的点位:{}", cutPoint.getPoint_code());
|
||||
// 获取分切计划
|
||||
List<String> collect = Stream.of(cutPoint.getQzz_no1(), cutPoint.getQzz_no2())
|
||||
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
|
||||
if (collect.size() == 0) {
|
||||
cutPoint.setRemark("点位数据与状态不符合,气胀轴编码为空!");
|
||||
cutPoint.setIs_used("0");
|
||||
cutPoint.setUpdate_time(DateUtil.now());
|
||||
bcutpointivtService.updateById(cutPoint);
|
||||
continue;
|
||||
}
|
||||
|
||||
//获取任意一条分切计划
|
||||
PdmBiSlittingproductionplan plan = slittingproductionplanService.getOne(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.eq(PdmBiSlittingproductionplan::getQzzno,collect.get(0)));
|
||||
|
||||
AreaBCachePointDto build = AreaBCachePointDto.builder()
|
||||
.area(cutPoint.getProduct_area())
|
||||
.location(cutPoint.getPoint_location())
|
||||
.pointStatus("01")
|
||||
.plan(cutPoint.getPlan())
|
||||
.size(plan.getQzz_size()).build();
|
||||
|
||||
//查询可以存放的点位(根据区域、规划、尺寸查询)
|
||||
List<Deliverycachepointivt> list = deliverycachepointivtService.getAreaBCacheByConditionsAndNoTask(build);
|
||||
// 创建桁架任务
|
||||
JSONObject trussTaskParam = new JSONObject();
|
||||
if (ObjectUtil.isNotEmpty(cutPoint.getQzz_no1()) && ObjectUtil.isNotEmpty(cutPoint.getQzz_no2())) {
|
||||
if (list.size() < 2) {
|
||||
log.info("原地等待,无可用架子...");
|
||||
// 原地等待
|
||||
// 分切计划状态修改02->03
|
||||
// List<String> collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2())
|
||||
// .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
|
||||
// PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan();
|
||||
// p.setStatus("03");
|
||||
// TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
// slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
// .in(PdmBiSlittingproductionplan::getQzzno, collect));
|
||||
return;
|
||||
}
|
||||
Deliverycachepointivt d1 = list.get(0);
|
||||
Deliverycachepointivt d2 = list.get(1);
|
||||
// 四点
|
||||
trussTaskParam.put("point_code1", cutPoint.getTruss_point_code1());
|
||||
trussTaskParam.put("point_code2", d1.getPoint_code());
|
||||
trussTaskParam.put("point_code3", cutPoint.getTruss_point_code2());
|
||||
trussTaskParam.put("point_code4", d2.getPoint_code());
|
||||
trussTaskParam.put("vehicle_code1", cutPoint.getQzz_no1());
|
||||
trussTaskParam.put("vehicle_code2", cutPoint.getQzz_no2());
|
||||
trussTaskParam.put("truss_type", "8");
|
||||
trussTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("拆单桁架任务"));
|
||||
trussTaskParam.put("product_area", cutPoint.getProduct_area());
|
||||
trussTaskParam.put("to_Task1_Axis_Type", plan.getQzz_size());
|
||||
trussTaskParam.put("to_Task2_Axis_Type", plan.getQzz_size());
|
||||
trussDisassemblyCacheTask.createTask(trussTaskParam);
|
||||
} else {
|
||||
if (list.isEmpty()) {
|
||||
log.info("原地等待,无可用架子...");
|
||||
// 原地等待
|
||||
// 分切计划状态修改02->03
|
||||
// List<String> collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2())
|
||||
// .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
|
||||
// PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan();
|
||||
// p.setStatus("03");
|
||||
// TaskUtils.updateOptMessageBySlitterPlan(p);
|
||||
// slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
// .in(PdmBiSlittingproductionplan::getQzzno, collect));
|
||||
return;
|
||||
}
|
||||
// 两点
|
||||
Deliverycachepointivt d1 = list.get(0);
|
||||
trussTaskParam.put("point_code1", ObjectUtil.isNotEmpty(cutPoint.getQzz_no1())
|
||||
? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2());
|
||||
trussTaskParam.put("point_code2", d1.getPoint_code());
|
||||
trussTaskParam.put("truss_type", "8");
|
||||
trussTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("拆单桁架任务"));
|
||||
trussTaskParam.put("product_area", cutPoint.getProduct_area());
|
||||
trussTaskParam.put("to_Task1_Axis_Type", plan.getQzz_size());
|
||||
trussDisassemblyCacheTask.createTask(trussTaskParam);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user