add:增加一楼任务

This commit is contained in:
2024-02-01 23:20:00 +08:00
parent 2fbac5ca01
commit 39024a6484
48 changed files with 2758 additions and 492 deletions

View File

@@ -29,12 +29,16 @@ public class AcsToWmsController {
@PostMapping("/status")
@Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
@PostMapping("/orderFinish")
@Log(value = "ACS给WMS下发工单完成状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@@ -137,4 +141,13 @@ public class AcsToWmsController {
}
@PostMapping("/sendProductToFirstFloor")
@Log(value = "成品子卷到达一楼输送线", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> sendProductToFirstFloor(@RequestBody JSONObject json) {
return new ResponseEntity<>(acsToWmsService.sendProductToFirstFloor(json), HttpStatus.OK);
}
}

View File

@@ -79,6 +79,9 @@ public interface AcsToWmsService {
*/
JSONObject shipDeviceUpdate(JSONObject whereJson);
/**
* ACS客户端--->LMS服务端
* 输送线光电无货上报
@@ -105,4 +108,17 @@ public interface AcsToWmsService {
* 点位初始化
*/
void initPoint();
/**
* ACS客户端--->LMS服务端
* 成品子卷到达一楼输送线
*
* @param whereJson 条件
* @return JSONObject
*/
JSONObject sendProductToFirstFloor(JSONObject whereJson);
}

View File

@@ -7,11 +7,28 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Interner;
import com.google.common.collect.Interners;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.point.service.impl.BstIvtPackageinfoivtServiceImpl;
import org.nl.b_lms.sch.point.service.impl.SchBasePointServiceImpl;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.task.service.impl.SchBaseTaskServiceImpl;
import org.nl.b_lms.sch.tasks.packingArea.MzhcwTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL;
@@ -38,11 +55,14 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@@ -66,6 +86,83 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final ISysNoticeService noticeService;
@Resource
private IschBaseTaskService taskService;
@Resource
private IschBasePointService pointService;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private MzhcwTask mzhcwTask;
/**
* 成品子卷到达一楼输送线
*/
@Override
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
log.info("sendProductToFirstFloor--------------------------" + whereJson.toString());
JSONObject result = new JSONObject();
String task_code1 = whereJson.getString("task_code1");
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1));
if (schBaseTask == null) {
throw new BadRequestException("接口sendProductToFirstFloor任务号为空");
}
// JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号
// 先查询满轴缓存位是否有可用库位,有创建搬运任务
// 任务完成创建空载具补充到输送线桁架任务子卷搬运至待检区或或管制区agv任务
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 这个情况是有agv任务在搬去待检区或管制区的路上还没有更新任务状态需要查询是否有这种任务等这个任务更新完后
// 再补发之前创建的输送线到满轴缓存位任务;
//1.查询满轴缓存位是否有空位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
JSONObject jo = new JSONObject();
//todo 添加任务类型
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
//一楼到输送线任务的目标点为当前位置,为起点
jo.put("point_code1", schBaseTask.getPoint_code2());
//任意一个满轴缓存位为终点
jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code());
//获取子卷号
jo.put("vehicle_code", whereJson.getString("container_name1"));
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
jo.put("isSend", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
} else {
//满轴缓存位点位
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")));
//todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList)
));
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//是否存在已创建的目标点相同的未下发的任务
.eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1())
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("point_code2", taskList.get(0).getPoint_code1());
jo.put("isSend", false);
mzhcwTask.createTask(jo);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
}
}
/**
* task_id任务标识
* task_code任务编码
@@ -1247,11 +1344,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
WQLObject.getWQLObject("st_ivt_shaftivt").update(rgv_device);
//如果套管工位有货且套轴区域无轴,搬运一根轴到穿拔轴机上
if (rgv_device.getIntValue("have_qzz") == 0){
if (rgv_device.getIntValue("have_qzz") == 0) {
//判断当前穿拔轴机构上是否存在可用的气涨轴
String cbj_qzz = cbz_jo.getString("have_qzz");
//判断是否存在未完成的成品下卷任务
JSONObject container_jo = WQLObject.getWQLObject("sch_base_task").query("task_type = '010605' AND product_area = '"+product_area+"' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject container_jo = WQLObject.getWQLObject("sch_base_task").query("task_type = '010605' AND product_area = '" + product_area + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if ("0".equals(cbj_qzz) && ObjectUtil.isEmpty(container_jo)) {
PaperTrussTask paperTrussTask = SpringContextHolder.getBean(PaperTrussTask.class);
//查询套管工位的库存信息
@@ -1282,6 +1379,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return result;
}
//创建气胀轴放货任务
private JSONObject createTask(JSONObject result, String product_area, JSONObject cbz_jo, String cbz_size, String cbz_generation) {
JSONObject jo = new JSONObject();

View File

@@ -114,4 +114,12 @@ public class MesToLmsController {
}
@PostMapping("/sendTargetHouse")
@Log("MES传递给LMS入线边库或者入成品库")
@SaIgnore
public ResponseEntity<Object> sendTargetHouse(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK);
}
}

View File

@@ -62,4 +62,12 @@ public interface MesToLmsService {
JSONObject sendAuditResult(JSONObject param);
JSONObject sendProcessInfo(JSONObject param);
/**
* MES传递给LMS入线边库或者入成品库
*/
JSONObject sendTargetHouse(JSONObject param);
}

View File

@@ -7,9 +7,18 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.ProcessTask;
import org.nl.b_lms.sch.tasks.packingArea.DjqTask;
import org.nl.b_lms.sch.tasks.packingArea.GzqTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -28,8 +37,11 @@ import org.nl.wms.st.instor.service.impl.ProductScrapServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@@ -42,6 +54,15 @@ public class MesToLmsServiceImpl implements MesToLmsService {
private final InService inService;
@Resource
private DjqTask djqTask;
@Resource
private GzqTask gzqTask;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
/**
* 生箔烘箱:
* 母卷批次创建信息发送智能物流MES生箔工序Move In
@@ -1470,68 +1491,68 @@ public class MesToLmsServiceImpl implements MesToLmsService {
throw new BadRequestException("传入的类型不能为空!");
}
JSONObject device_jo = WQLObject.getWQLObject("st_ivt_stpointivt").query("ext_code = '"+ResourceName+"'").uniqueResult(0);
if (ObjectUtil.isEmpty(device_jo)){
throw new BadRequestException("未查询到["+ResourceName+"]应的表处机设备!");
JSONObject device_jo = WQLObject.getWQLObject("st_ivt_stpointivt").query("ext_code = '" + ResourceName + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(device_jo)) {
throw new BadRequestException("未查询到[" + ResourceName + "]应的表处机设备!");
}
ProcessTask processTask = SpringContextHolder.getBean(ProcessTask.class);
//上料
if ("1".equals(Type)){
if ("1".equals(Type)) {
String up_scroll = device_jo.getString("up_scroll");
String up_pcsn = device_jo.getString("up_pcsn");
if (StrUtil.isNotEmpty(up_pcsn)){
throw new BadRequestException("LMS系统上【"+ResourceName+"】表处机上还存在母卷号,不能进行上料!");
if (StrUtil.isNotEmpty(up_pcsn)) {
throw new BadRequestException("LMS系统上【" + ResourceName + "】表处机上还存在母卷号,不能进行上料!");
}
//查询母卷所在点位
JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04'").uniqueResult(0);
JSONObject form = new JSONObject();
if (StrUtil.isEmpty(up_scroll)){
if (StrUtil.isEmpty(up_scroll)) {
//取满放满
form.put("point_code1",jsonCoolIvt.getString("point_code"));
form.put("point_code2",device_jo.getString("point_code"));
form.put("task_type","010702");
form.put("material_code",jsonCoolIvt.getString("container_name"));
form.put("vehicle_code",jsonCoolIvt.getString("full_vehicle_code"));
form.put("product_area",device_jo.getString("product_area"));
}else {
form.put("point_code1", jsonCoolIvt.getString("point_code"));
form.put("point_code2", device_jo.getString("point_code"));
form.put("task_type", "010702");
form.put("material_code", jsonCoolIvt.getString("container_name"));
form.put("vehicle_code", jsonCoolIvt.getString("full_vehicle_code"));
form.put("product_area", device_jo.getString("product_area"));
} else {
//取满取空放满放空
form.put("point_code1",jsonCoolIvt.getString("full_point_code"));
form.put("point_code2",device_jo.getString("point_code"));
form.put("point_code3",device_jo.getString("point_code"));
form.put("point_code1", jsonCoolIvt.getString("full_point_code"));
form.put("point_code2", device_jo.getString("point_code"));
form.put("point_code3", device_jo.getString("point_code"));
//判断对应空轴点位是否为空,为空用当前点位,不为空查询其他点位
if (jsonCoolIvt.getString("empty_point_status").equals("01")){
form.put("point_code4",jsonCoolIvt.getString("empty_point_code"));
}else {
if (jsonCoolIvt.getString("empty_point_status").equals("01")) {
form.put("point_code4", jsonCoolIvt.getString("empty_point_code"));
} else {
JSONObject map = new JSONObject();
map.put("flag", "6");
map.put("product_area", device_jo.getString("product_area"));
JSONObject jsonIvt = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0);
form.put("point_code4",jsonIvt.getString("empty_point_code"));
form.put("point_code4", jsonIvt.getString("empty_point_code"));
}
form.put("task_type","010701");
form.put("material_code",jsonCoolIvt.getString("container_name"));
form.put("vehicle_code",jsonCoolIvt.getString("full_vehicle_code"));
form.put("product_area",device_jo.getString("product_area"));
form.put("task_type", "010701");
form.put("material_code", jsonCoolIvt.getString("container_name"));
form.put("vehicle_code", jsonCoolIvt.getString("full_vehicle_code"));
form.put("product_area", device_jo.getString("product_area"));
}
processTask.createTask(form);
}
//退料
if ("2".equals(Type)){
if ("2".equals(Type)) {
//取满取空放满放空
JSONObject form = new JSONObject();
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("product_area", device_jo.getString("product_area"));
JSONObject jsonIvt = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0);
form.put("point_code1",device_jo.getString("point_code"));
form.put("point_code1", device_jo.getString("point_code"));
//寻找可用的冷却区满轴点位
form.put("point_code2",jsonIvt.getString("full_point_code"));
form.put("task_type","010704");
form.put("material_code",device_jo.getString("up_pcsn"));
form.put("vehicle_code",device_jo.getString("up_scroll"));
form.put("product_area",device_jo.getString("product_area"));
form.put("point_code2", jsonIvt.getString("full_point_code"));
form.put("task_type", "010704");
form.put("material_code", device_jo.getString("up_pcsn"));
form.put("vehicle_code", device_jo.getString("up_scroll"));
form.put("product_area", device_jo.getString("product_area"));
processTask.createTask(form);
}
@@ -1547,4 +1568,68 @@ public class MesToLmsServiceImpl implements MesToLmsService {
log.info("sendProcessInfo接口输出参数为-------------------" + resultParam.toString());
return resultParam;
}
@Override
public JSONObject sendTargetHouse(JSONObject param) {
log.info("sendTargetHouse输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
try {
String containerName = param.getString("ContainerName");
String TargetHouse = param.getString("TargetHouse");
if (StringUtils.isBlank(containerName)) {
throw new BadRequestException("传入的母卷号不能为空!");
}
if (StringUtils.isBlank(TargetHouse)) {
throw new BadRequestException("传入的目标库不能为空!");
}
//待检区和管制区库位信息
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
//子卷信息
BstIvtPackageinfoivt containerInfo =
bstIvtPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()).get(0);
JSONObject toDjqTask = new JSONObject();
toDjqTask.put("vehicle_code", containerName);
//0 管制区 1待检区
if ("0".equals(TargetHouse)) {
if (containerInfo.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))) {
List<BstIvtPackageinfoivt> djqList = bstIvtPackageinfoivtList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区")) && r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))).collect(Collectors.toList());
//待检区有空位,搬到待检区
if (CollectionUtils.isNotEmpty(djqList)) {
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
toDjqTask.put("point_code1", containerInfo.getPoint_code());
toDjqTask.put("point_code2", djqList.get(0).getPoint_code());
djqTask.createTask(toDjqTask);
}
}
} else if ("1".equals(TargetHouse)) {
if (containerInfo.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("管制区"))) {
List<BstIvtPackageinfoivt> gzqList = bstIvtPackageinfoivtList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("管制区")) && r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))).collect(Collectors.toList());
//管制区有空位
if (CollectionUtils.isNotEmpty(gzqList)) {
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
toDjqTask.put("point_code1", containerInfo.getPoint_code());
toDjqTask.put("point_code2", gzqList.get(0).getPoint_code());
gzqTask.createTask(toDjqTask);
}
}
}
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
} catch (Exception e) {
resultParam.put("RTYPE", "E");
resultParam.put("Code", "1");
resultParam.put("RTMSG", "操作失败!" + e.getMessage());
}
log.info("sendTargetHouse接口输出参数为-------------------" + resultParam);
return resultParam;
}
}

View File

@@ -85,71 +85,6 @@ public class CutTrussTask extends AbstractAcsTask {
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) {
// 更新删除字段
jsonTask.put("is_delete", "1");
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
//桁架标准任务
if ("010403".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code2") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code2") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
//分切>输送线 子卷出站
if ("010404".equals(jsonTask.getString("task_type"))) {
if (!jsonTask.getString("vehicle_code").contains("废箔")) {
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
//分切>输送线 子卷入站
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
@@ -165,7 +100,6 @@ public class CutTrussTask extends AbstractAcsTask {
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
//桁架标准任务,双工位任务
if ("010403".equals(jsonTask.getString("task_type"))) {
//更新分切机对应位置的气涨轴
@@ -264,84 +198,6 @@ public class CutTrussTask extends AbstractAcsTask {
cutConveyorTask.createTask(form);
}
//子卷入站
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新输送线的气涨轴编码
JSONObject delivery_point = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(delivery_point)) {
throw new BadRequestException("未查询到对应的输送线点位!");
}
delivery_point.put("qzzno", "");
delivery_point.put("point_status", "02");
WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").update(delivery_point);
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "对应的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//如果桁架任务执行完,右侧的输送线上存在气涨轴,则生成一个输送出的任务,防止左侧空载具挡住右侧气涨轴进行横移
log.debug("如果桁架任务执行完,缓存位的输送线上存在气涨轴,则对上料位的空载具生成一个输送出的任务");
char dtl_type = jsonTask.getString("point_code1").charAt(jsonTask.getString("point_code1").length() - 1);
if (Integer.valueOf(String.valueOf(dtl_type)) % 2 != 0) {
String point_location = delivery_point.getString("point_location");
String product_area = delivery_point.getString("product_area");
String sort_seq = delivery_point.getString("sort_seq");
JSONObject right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "3")
.addParam("flag", "17").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
log.debug("生成一个输送线出库任务");
//生成一个输送线出库任务
JSONObject form = new JSONObject();
form.put("point_code1", jsonTask.getString("point_code1"));
JSONObject ss_jo = WQLObject.getWQLObject("sch_base_point").query("product_area = '" + delivery_point.getString("product_area") + "' AND point_type = '7'").uniqueResult(0);
form.put("point_code2", ss_jo.getString("point_code"));
if (StrUtil.isEmpty(delivery_point.getString("vehicle_code"))) {
throw new BadRequestException("点位:" + delivery_point.getString("point_code") + "载具号为空!");
}
form.put("vehicle_code2", delivery_point.getString("vehicle_code"));
//分切输送出
form.put("task_type", "010401");
form.put("product_area", delivery_point.getString("product_area"));
cutConveyorTask.createTask(form);
} else {
right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "4")
.addParam("flag", "18").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
//判断对应缓存位是否存在需要末次下卷或者废箔下卷的任务
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("vehicle_code2 = '" + right_point.getString("vehicle_code") + "' AND is_delete = '0' AND task_status = '02'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task_jo)) {
if ("010404".equals(task_jo.getString("task_type"))) {
//出站
task_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
task_jo.put("point_code2", jsonTask.getString("point_code1"));
task_jo.put("vehicle_code2", delivery_point.getString("vehicle_code"));
WQLObject.getWQLObject("sch_base_task").update(task_jo);
new CutTrussTask().immediateNotifyAcs(null);
}
}
}
}
}
}
}
}