feat: 完善分切下料桁架任务

This commit is contained in:
2024-02-28 18:03:59 +08:00
parent 797f1480b0
commit 7ab17cb0a8
11 changed files with 390 additions and 12 deletions

View File

@@ -43,7 +43,7 @@ public interface IBstIvtShafttubeivtService extends IService<BstIvtShafttubeivt>
void deleteAll(Set<String> ids);
/**
* 获取启用的 类型 区域 有无轴的点位
* 获取启用的 类型 区域 有无轴的点位 (无任务)
* @param type
* @param location
* @param have

View File

@@ -58,6 +58,13 @@ public interface IstIvtCutpointivtService extends IService<StIvtCutpointivt> {
* @return /
*/
StIvtCutpointivt getPintByPointCode(String code, boolean flag);
/**
* 根据点位编码获取分切机上下轴
* @param code 点位编码
* @param flag 是否判断启用
* @return /
*/
StIvtCutpointivt getPintByUpOrDownCode(String code, boolean flag);
}

View File

@@ -16,6 +16,7 @@ import org.nl.common.domain.query.PageQuery;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
/**
@@ -90,6 +91,14 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl<StIvtCutpointivtMap
return stIvtCutpointivtMapper.selectOne(lam);
}
@Override
public StIvtCutpointivt getPintByUpOrDownCode(String code, boolean flag) {
LambdaQueryWrapper<StIvtCutpointivt> lam = new LambdaQueryWrapper<>();
lam.eq(flag, StIvtCutpointivt::getIs_used, "1")
.and(la -> la.eq(StIvtCutpointivt::getUp_point_code, code).or()
.eq(StIvtCutpointivt::getDown_point_code, code));
return stIvtCutpointivtMapper.selectOne(lam);
}
/**
* 获取实体基础信息

View File

@@ -1,12 +1,35 @@
package org.nl.b_lms.sch.tasks.slitter;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Author: lyd
@@ -16,29 +39,148 @@ import java.util.List;
@Slf4j
@Service
public class SlitterDownTrussTask extends AbstractAcsTask {
private final String THIS_CLASS = SlitterDownTrussTask.class.getName();
@Autowired
private IschBaseTaskService taskService;
@Autowired
private IPdmBiSlittingproductionplanService slittingproductionplanService;
@Autowired
private IBstIvtCutpointivtService bcutpointivtService;
@Autowired
private IstIvtCutpointivtService cutpointivtService;
@Override
public List<AcsTaskDto> addTask() {
return null;
/*
* 下发给ACS时需要特殊处理
*/
List<SchBaseTask> taskList = taskService.getIssueTasks(THIS_CLASS);
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
String agv_system_type = "2";
for (SchBaseTask task : taskList) {
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(task.getTask_id())
.task_code(task.getTask_code())
.task_type(task.getAcs_task_type())
.start_device_code(task.getPoint_code1())
.next_device_code(task.getPoint_code2())
.start_device_code2(task.getPoint_code3())
.next_device_code2(task.getPoint_code4())
.vehicle_code(task.getVehicle_code())
.agv_system_type(agv_system_type)
.priority(task.getPriority())
.remark(task.getRemark())
.product_area(task.getProduct_area())
.build();
resultList.add(dto);
}
return resultList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask task = taskService.getById(taskObj.getString("task_id"));
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
task.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
String pointCode1 = task.getPoint_code1();
StIvtCutpointivt point1 = cutpointivtService.getPintByUpOrDownCode(pointCode1, false);
String pointCode2 = task.getPoint_code2();
BstIvtCutpointivt point2 = bcutpointivtService.getPintByTrussCode(pointCode2, false);
String tmpUpQzzNo = point1.getUp_qzzno();
String tmpDownQzzNo = point1.getDown_qzzno();
// 更新分切计划
// 下来的分切计划状态06 -> 09
PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan();
p.setStatus("09");
p.setUpdate_optid("3");
p.setUpdate_optname("ACS");
p.setUpdate_time(DateUtil.now());
List<String> downQzzNos = Stream.of(tmpUpQzzNo, tmpDownQzzNo)
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, downQzzNos));
// 上去的分切计划状态04 -> 05
p.setStatus("05");
List<String> upQzzNos = Stream.of(point2.getQzz_no1(), point2.getQzz_no2())
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, upQzzNos));
// 点位数据更新
point1.setUp_qzzno(point2.getQzz_no1());
point1.setDown_qzzno(point2.getQzz_no2());
point1.setUpdate_optid(3L);
point1.setUpdate_optname("ACS");
point1.setUpdate_time(DateUtil.now());
point2.setQzz_no1(tmpUpQzzNo);
point2.setQzz_no2(tmpDownQzzNo);
point2.setPoint_status("3");
point2.setUpdate_optid("3");
point2.setUpdate_optname("ACS");
point2.setUpdate_time(DateUtil.now());
cutpointivtService.updateById(point1);
bcutpointivtService.updateById(point2);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
// todo: 分切计划回退?
}
task.setUpdate_time(DateUtil.now());
taskService.updateById(task);
}
@Override
public String createTask(JSONObject form) {
return null;
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setPoint_code1(form.getString("point_code1"));
task.setPoint_code2(form.getString("point_code2"));
task.setVehicle_code(form.getString("vehicle_code1"));
task.setAcs_task_type("6");
task.setIs_delete("0");
task.setRequest_param(form.toJSONString());
task.setTask_type(form.getString("task_type"));
task.setProduct_area(form.getString("product_area"));
task.setCreate_id(currentUserId);
task.setCreate_name(currentUsername);
task.setCreate_time(DateUtil.now());
task.setHandle_class(THIS_CLASS);
//根据类型获取对应的任务优先级
JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0);
if (ObjectUtil.isEmpty(priority_jo)) {
task.setPriority("1");
} else {
task.setPriority(priority_jo.getString("value"));
}
taskService.save(task);
this.immediateNotifyAcs(null);
return task.getTask_id();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void cancel(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, "0");
}
}

View File

@@ -94,7 +94,7 @@ public class UpShaftTrussTask extends AbstractAcsTask {
String pointCode1 = task.getPoint_code1();
BstIvtCutpointivt point1 = bcutpointivtService.getPintByTrussCode(pointCode1, false);
String pointCode2 = task.getPoint_code2();
StIvtCutpointivt point2 = cutpointivtService.getPintByPointCode(pointCode2, false);
StIvtCutpointivt point2 = cutpointivtService.getPintByUpOrDownCode(pointCode2, false);
// 交换数据
point2.setUp_qzzno(point1.getQzz_no1());
point2.setDown_qzzno(point1.getQzz_no2());

View File

@@ -15,6 +15,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.TrussCallAirShaftTask;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
import org.nl.common.utils.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -115,9 +116,7 @@ public class AutoCallAirShaftTask {
// 将分切计划is_paper_ok 1 -> 2
needPlans.forEach(p -> {
p.setIs_paper_ok("2");
p.setUpdate_optid("3");
p.setUpdate_optname("ACS");
p.setUpdate_time(DateUtil.now());
TaskUtils.updateOptMessageBySlitterPlan(p);
});
slittingproductionplanService.updateBatchById(needPlans);
});

View File

@@ -67,7 +67,7 @@ public class AutoSendAirShaftAgvTask {
}
}
// 如果两个气涨轴编码则表示一组满了
// 查找分切对接的空位
// 查找分切对接的空位 todo: (校验任务)
List<BstIvtCutpointivt> emptyPoint = bcutpointivtService.list(new LambdaQueryWrapper<BstIvtCutpointivt>()
.eq(BstIvtCutpointivt::getPoint_type, "3")
.eq(BstIvtCutpointivt::getPoint_status, "1")

View File

@@ -61,8 +61,7 @@ public class AutoUpShaftTrussTask {
List<PdmBiSlittingproductionplan> nextPlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.eq(PdmBiSlittingproductionplan::getResource_name, device.getExt_code())
.eq(PdmBiSlittingproductionplan::getStatus, "03")
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")
.orderByAsc(PdmBiSlittingproductionplan::getUpdate_time));
.eq(PdmBiSlittingproductionplan::getIs_delete, "0"));
if (nextPlans.size() == 0) {
log.warn("分切机【" + device.getExt_code() + "】未找到套好轴的分切计划");
// 下个分切机

View File

@@ -21,4 +21,11 @@ public interface SlitterService {
* @return
*/
JSONObject acsFinishLoadShaft(JSONObject param);
/**
* 分切机下料
* @param param
* @return
*/
JSONObject mesSlittingMachineSendMaterial(JSONObject param);
}

View File

@@ -4,20 +4,25 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
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.SlitterDownTrussTask;
import org.nl.b_lms.sch.tasks.slitter.TrussSendAirShaftTask;
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;
import org.nl.modules.common.exception.BadRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -49,6 +54,8 @@ public class SlitterServiceImpl implements SlitterService {
private SlitterMapper slitterMapper;
@Autowired
private TrussSendAirShaftTask trussSendAirShaftTask;
@Autowired
private SlitterDownTrussTask slitterDownTrussTask;
@Override
public JSONObject acsFinishShaftPluckTube(JSONObject param) {
@@ -144,4 +151,166 @@ public class SlitterServiceImpl implements SlitterService {
res.put("message", "请求成功");
return res;
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject mesSlittingMachineSendMaterial(JSONObject param) {
JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "子卷出站任务生成成功!");
// todo: 获取子卷号数组
JSONArray containers = param.getJSONArray("container");
List<String> containerList = containers.toJavaList(String.class);
if (containerList.size() == 0) {
throw new BadRequestException("子卷参数不能为空!");
}
// 获取分切计划最多4个需要出站的任务
List<PdmBiSlittingproductionplan> currentPlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getContainer_name, containerList));
// 获取上轴分切计划和下轴分切计划,各一条
PdmBiSlittingproductionplan currentUpPlan = currentPlans.stream().filter(p -> "1".equals(p.getUp_or_down())).findFirst().orElse(null);
PdmBiSlittingproductionplan currentDownPlan = currentPlans.stream().filter(p -> "2".equals(p.getUp_or_down())).findFirst().orElse(null);
// 获取其中一条分切计划
PdmBiSlittingproductionplan demoPlan = currentPlans.get(0);
// 获得设备
StIvtCutpointivt device = cutpointivtService.getOne(new LambdaQueryWrapper<StIvtCutpointivt>()
.eq(StIvtCutpointivt::getExt_code, demoPlan.getResource_name()));
// 获取当前分切机的下一组分切计划(最多四条分切计划)
// hint: 获取到的分切可能是不同组的但具有一定时间顺序
List<PdmBiSlittingproductionplan> timePlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.eq(PdmBiSlittingproductionplan::getResource_name, device.getExt_code())
.eq(PdmBiSlittingproductionplan::getStatus, "03")
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")
.orderByAsc(PdmBiSlittingproductionplan::getUpdate_time));
// 任务参数
JSONObject taskParam = new JSONObject();
if (timePlans.size() == 0) {
// 如果没有下一组分切计划,就只做下卷任务(判断下单/下双)
// 获取分切对接位没任务的空位置 todo: 校验任务未作
List<BstIvtCutpointivt> emptyPoints = bcutpointivtService.list(new LambdaQueryWrapper<BstIvtCutpointivt>()
.eq(BstIvtCutpointivt::getPoint_type, "3")
.eq(BstIvtCutpointivt::getPoint_status, "1")
.eq(BstIvtCutpointivt::getIs_used, "1")
.last("ORDER BY ABS(sort_seq - " + device.getSort_seq() + ")"));
if (emptyPoints.size() == 0) {
throw new BadRequestException("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
}
BstIvtCutpointivt emptyPoint = emptyPoints.get(0);
// 创建任务
if (currentUpPlan != null && currentDownPlan != null) {
// 双轴任务 下双
taskParam.put("point_code1", device.getUp_point_code());
taskParam.put("point_code2", emptyPoint.getTruss_point_code2());
taskParam.put("point_code3", device.getDown_point_code());
taskParam.put("point_code4", emptyPoint.getTruss_point_code1());
taskParam.put("truss_type", "1");
taskParam.put("empty_site", "0");
} else {
// 单轴任务 下单
taskParam.put("point_code1", currentUpPlan == null
? device.getDown_point_code() : device.getUp_point_code());
taskParam.put("point_code2", currentUpPlan == null
? emptyPoint.getTruss_point_code1() : emptyPoint.getTruss_point_code2());
taskParam.put("truss_type", "1");
taskParam.put("empty_site", "0");
}
taskParam.put("product_area", "Test");
// 分切计划修改状态 05 -> 06
currentPlans.forEach(plan -> {
plan.setStatus("06");
plan.setUpdate_optid("3");
plan.setUpdate_optname("ACS");
plan.setUpdate_time(DateUtil.now());
});
slittingproductionplanService.updateBatchById(currentPlans);
return res;
}
PdmBiSlittingproductionplan tmpPlan = timePlans.get(0);
// hint: 以第一条为准,过滤和第一条同组同母卷的分切计划
List<PdmBiSlittingproductionplan> nextPlans = timePlans.stream()
.filter(plan -> plan.getParent_container_name().equals(tmpPlan.getParent_container_name()) && plan.getSplit_group().equals(tmpPlan.getSplit_group()))
.collect(Collectors.toList());
// 筛选上下轴各一条
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);
// 找到该分切计划的点位 todo: 应该校验没任务
LambdaQueryWrapper<BstIvtCutpointivt> newCutLam = new QueryWrapper<BstIvtCutpointivt>().lambda();
newCutLam.eq(BstIvtCutpointivt::getPoint_type, "3").eq(BstIvtCutpointivt::getPoint_status, "1")
.eq(BstIvtCutpointivt::getIs_used, "1");
if (nextUpPlan != null) {
newCutLam.eq(BstIvtCutpointivt::getQzz_no1, nextUpPlan.getQzzno());
}
if (nextDownPlan != null) {
newCutLam.eq(BstIvtCutpointivt::getQzz_no2, nextDownPlan.getQzzno());
}
BstIvtCutpointivt newCutPoint = bcutpointivtService.getOne(newCutLam, false);
if (ObjectUtil.isEmpty(newCutPoint)) {
throw new BadRequestException("分切机【" + device.getExt_code() + "】的下一组分切计划未配送完毕!");
}
String binaryExpress = TaskUtils.binaryConvertExpress(currentUpPlan, currentDownPlan, nextUpPlan, nextDownPlan);
switch (binaryExpress) {
case "00":
// 下单上单
taskParam.put("point_code1", currentUpPlan != null
? device.getUp_point_code() : device.getDown_point_code());
taskParam.put("point_code2", currentUpPlan != null
? newCutPoint.getTruss_point_code2() : newCutPoint.getTruss_point_code1());
taskParam.put("point_code3", nextUpPlan != null
? device.getUp_point_code() : device.getDown_point_code());
taskParam.put("point_code4", nextUpPlan != null
? newCutPoint.getTruss_point_code1() : newCutPoint.getTruss_point_code2());
taskParam.put("truss_type", "1");
taskParam.put("empty_site", "0");
break;
case "01":
// 下单上双
taskParam.put("point_code1", currentUpPlan != null
? device.getUp_point_code() : device.getDown_point_code());
taskParam.put("point_code2", currentUpPlan != null
? newCutPoint.getTruss_point_code1() : newCutPoint.getTruss_point_code2());
taskParam.put("truss_type", "3");
taskParam.put("empty_site", "3");
break;
case "10":
// 下双上单
taskParam.put("point_code1", device.getUp_point_code());
taskParam.put("point_code2", newCutPoint.getTruss_point_code2());
taskParam.put("point_code3", device.getDown_point_code());
taskParam.put("point_code4", newCutPoint.getTruss_point_code1());
taskParam.put("truss_type", "4");
taskParam.put("empty_site", nextUpPlan == null ? "1" : "2");
break;
case "11":
// 下双上双
taskParam.put("point_code1", device.getUp_point_code());
taskParam.put("point_code2", newCutPoint.getTruss_point_code2());
taskParam.put("point_code3", device.getDown_point_code());
taskParam.put("point_code4", newCutPoint.getTruss_point_code1());
taskParam.put("truss_type", "3");
taskParam.put("empty_site", "3");
break;
default:
throw new BadRequestException("错误表达式");
}
// 创建任务
slitterDownTrussTask.createTask(taskParam);
// 下来的分切计划修改状态05 -> 06
currentPlans.forEach(plan -> {
plan.setStatus("06");
plan.setUpdate_optid("3");
plan.setUpdate_optname("ACS");
plan.setUpdate_time(DateUtil.now());
});
slittingproductionplanService.updateBatchById(currentPlans);
// 上去的分切计划修改状态03 -> 04
nextPlans.forEach(plan -> {
plan.setStatus("04");
plan.setUpdate_optid("3");
plan.setUpdate_optname("ACS");
plan.setUpdate_time(DateUtil.now());
});
slittingproductionplanService.updateBatchById(nextPlans);
return res;
}
}

View File

@@ -1,8 +1,11 @@
package org.nl.common.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
/**
* @author: lyd
@@ -32,4 +35,47 @@ public class TaskUtils {
source.setUpdate_optname("ACS");
source.setUpdate_time(DateUtil.now());
}
/**
* 用0123四个的二进制字符表示是下单(双)上单(双)
* @param currentUpPlan 要下来的上轴
* @param currentDownPlan 要下来的下轴
* @param nextUpPlan 要上去的上轴
* @param nextDownPlan 要上去的下轴
* @return 二进制表示字符串
*/
public static String binaryConvertExpress(PdmBiSlittingproductionplan currentUpPlan, PdmBiSlittingproductionplan currentDownPlan,PdmBiSlittingproductionplan nextUpPlan,PdmBiSlittingproductionplan nextDownPlan) {
String binary = "";
if (ObjectUtil.isNotEmpty(currentUpPlan) && ObjectUtil.isNotEmpty(currentDownPlan)) {
binary += "1";
} else {
binary += "0";
}
if (ObjectUtil.isNotEmpty(nextUpPlan) && ObjectUtil.isNotEmpty(nextDownPlan)) {
binary += "1";
} else {
binary += "0";
}
return binary;
}
/**
* 赋值分切计划的修改时间、人等信息
* @param plan 分切计划
*/
public static void updateOptMessageBySlitterPlan(PdmBiSlittingproductionplan plan) {
plan.setUpdate_optid(SecurityUtils.getCurrentUserId());
plan.setUpdate_optname(SecurityUtils.getCurrentUsername());
plan.setUpdate_time(DateUtil.now());
}
/**
* 赋值任务的修改时间、人等信息
* @param task 任务
*/
public static void updateOptMessageByTask(SchBaseTask task) {
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentUsername());
task.setUpdate_time(DateUtil.now());
}
}