代码更新
This commit is contained in:
@@ -2,8 +2,10 @@ package org.nl.wms.sch.tasks.callEmpty;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -13,9 +15,11 @@ import org.nl.modules.common.utils.SecurityUtils;
|
|||||||
import org.nl.modules.system.util.CodeUtil;
|
import org.nl.modules.system.util.CodeUtil;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.wms.sch.SchTaskDto;
|
||||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||||
|
import org.nl.wms.sch.tasks.RegionTypeEnum;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -42,6 +46,9 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
|
|
||||||
if (StrUtil.equals(status, "0")) {
|
if (StrUtil.equals(status, "0")) {
|
||||||
// 取消删除任务
|
// 取消删除任务
|
||||||
|
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||||
|
throw new BadRequestException("已完成不能取消!");
|
||||||
|
}
|
||||||
taskTab.delete("task_id = '" + task_id + "'");
|
taskTab.delete("task_id = '" + task_id + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,47 +61,65 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||||
// 更改任务状态为完成
|
/*
|
||||||
|
* 更改任务状态为完成
|
||||||
|
* 1.终点为叠盘架更新叠盘架数量、起点点位状态、等待位状态,更新任务组状态
|
||||||
|
* 2.终点为供给线,更新起点载数量
|
||||||
|
*/
|
||||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||||
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
|
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||||
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
|
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
|
||||||
jsonTask.put("update_time", DateUtil.now());
|
jsonTask.put("update_time", DateUtil.now());
|
||||||
taskTab.update(jsonTask);
|
taskTab.update(jsonTask);
|
||||||
|
|
||||||
String end_point_code = jsonTask.getString("point_code2");
|
// 判断终点在哪里
|
||||||
String start_point_code = jsonTask.getString("point_code1");
|
String point_code1 = jsonTask.getString("point_code1");
|
||||||
JSONObject endPoint = pointTab.query("point_code = '" + end_point_code + "'").uniqueResult(0);
|
String point_code2 = jsonTask.getString("point_code2");
|
||||||
//从空托盘缓存B区或养生A区搬运到叠盘架
|
|
||||||
if (StrUtil.equals("DPJQB01", endPoint.getString("region_code"))) {
|
JSONObject jsonEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||||
//解锁起点
|
// 终点在叠盘架
|
||||||
JSONObject startPoint = new JSONObject();
|
if (StrUtil.equals(jsonEnd.getString("region_id"), RegionTypeEnum.DPJQB.getId())) {
|
||||||
startPoint.put("lock_type", "1");
|
// 更新起点点位状态
|
||||||
startPoint.put("point_status", "1");
|
JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||||
startPoint.put("update_time", DateUtil.now());
|
// 判断此起点是否是等待点
|
||||||
pointTab.update(startPoint, "point_code = '" + start_point_code + "'");
|
if (!StrUtil.equals(jsonStart.getString("row_num"), "9")) {
|
||||||
//更新终点点位状态
|
// 如果不是等待点更新等待点状态
|
||||||
endPoint.put("point_status", "2");
|
JSONObject jsonEmpWait = pointTab.query("region_id = '" + jsonStart.getString("region_id") +
|
||||||
endPoint.put("lock_type", "00");
|
"' and block_num = '" + jsonStart.getString("block_num") +
|
||||||
endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty"));
|
"' and col_num = '" + jsonStart.getString("col_num") +
|
||||||
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
|
"' and row_num = '9'").uniqueResult(0);
|
||||||
endPoint.put("update_time", DateUtil.now());
|
|
||||||
pointTab.update(endPoint);
|
jsonEmpWait.put("lock_type", "1");
|
||||||
} else {
|
pointTab.update(jsonEmpWait);
|
||||||
JSONObject startPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0);
|
|
||||||
Integer vehicle_qty = startPoint.getInteger("vehicle_qty");
|
|
||||||
int after_qty = vehicle_qty - 1;
|
|
||||||
startPoint.put("lock_type", "1");
|
|
||||||
startPoint.put("vehicle_qty", after_qty);
|
|
||||||
if (after_qty > 0) {
|
|
||||||
startPoint.put("point_status", "2");
|
|
||||||
} else {
|
|
||||||
startPoint.put("point_status", "1");
|
|
||||||
}
|
}
|
||||||
startPoint.put("update_time", DateUtil.now());
|
|
||||||
pointTab.update(startPoint, "point_code = '" + start_point_code + "'");
|
jsonStart.put("point_status", "1");
|
||||||
|
jsonStart.put("lock_type", "1");
|
||||||
|
jsonStart.put("vehicle_type", "");
|
||||||
|
jsonStart.put("vehicle_code", "");
|
||||||
|
jsonStart.put("vehicle_qty", 0);
|
||||||
|
pointTab.update(jsonStart);
|
||||||
|
|
||||||
|
// 更新终点(叠盘架状态)
|
||||||
|
jsonEnd.put("vehicle_qty", NumberUtil.add(jsonEnd.getString("vehicle_qty"),jsonTask.getString("vehicle_qty")));
|
||||||
|
jsonEnd.put("lock_type", "1");
|
||||||
|
pointTab.update(jsonEnd);
|
||||||
|
|
||||||
|
// 更新任务组状态
|
||||||
|
JSONObject jsonTask2 = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_id <> '" + jsonTask.getString("task_id") + "'").uniqueResult(0);
|
||||||
|
jsonTask2.put("point_code1", jsonEnd.getString("point_code"));
|
||||||
|
jsonTask2.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||||
|
taskTab.update(jsonTask2);
|
||||||
|
} else {
|
||||||
|
// 终点在油漆线: 更新起点(叠盘架)数量
|
||||||
|
JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||||
|
jsonStart.put("vehicle_qty",NumberUtil.sub(jsonStart.getString("vehicle_qty"),"1"));
|
||||||
|
jsonStart.put("lock_type", "1");
|
||||||
|
pointTab.update(jsonStart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AcsTaskDto> addTask() {
|
public List<AcsTaskDto> addTask() {
|
||||||
return null;
|
return null;
|
||||||
@@ -102,8 +127,8 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void findStartPoint() {
|
public void findStartPoint() {
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||||
|
|
||||||
JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||||
for (int i = 0; i < taskArr.size(); i++) {
|
for (int i = 0; i < taskArr.size(); i++) {
|
||||||
@@ -111,74 +136,119 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
JSONObject jsonTask = taskArr.getJSONObject(i);
|
JSONObject jsonTask = taskArr.getJSONObject(i);
|
||||||
String vehicle_type = jsonTask.getString("vehicle_type");
|
String vehicle_type = jsonTask.getString("vehicle_type");
|
||||||
|
|
||||||
//判断叠盘位是否有另外任务
|
// 找叠盘架是否与对应的载具类型
|
||||||
JSONObject taskObj = taskTab.query("is_delete='0' and handle_class='" + this.THIS_CLASS + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "' and task_id <> " + jsonTask.getLong("task_id")).uniqueResult(0);
|
JSONObject jsonDpjStart = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and vehicle_qty <> '0'").uniqueResult(0);
|
||||||
if (ObjectUtil.isNotEmpty(taskObj)) continue;
|
|
||||||
|
|
||||||
//判断叠盘架是否有载具
|
if (ObjectUtil.isNotEmpty(jsonDpjStart)) {
|
||||||
JSONObject dpjPoint = pointTab.query("is_used ='1' and lock_type='00' and is_delete='0' and region_code='DPJQB01' and vehicle_qty >0 and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0);
|
// 判断叠盘架是否有任务 有就下一个任务
|
||||||
if (ObjectUtil.isNotEmpty(dpjPoint)) {
|
boolean is_point = this.isTask(jsonDpjStart.getString("point_code"));
|
||||||
jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
if (!is_point) continue;
|
||||||
jsonTask.put("point_code1", dpjPoint.getString("point_code"));
|
|
||||||
jsonTask.put("update_time", DateUtil.now());
|
// 更新任务起点
|
||||||
|
jsonTask.put("point_code1", jsonDpjStart.getString("point_code"));
|
||||||
|
jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT);
|
||||||
taskTab.update(jsonTask);
|
taskTab.update(jsonTask);
|
||||||
|
|
||||||
//锁住点位
|
|
||||||
dpjPoint.put("lock_type", "2");
|
|
||||||
pointTab.update(dpjPoint);
|
|
||||||
} else {
|
} else {
|
||||||
//查找叠盘架编码
|
// 判断叠盘架载具数量是否是0
|
||||||
JSONObject dpjPoint1 = pointTab.query("is_delete='0' and region_code='DPJQB01' and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0);
|
JSONObject jsonDpjStart2 = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and vehicle_qty = '0'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(jsonDpjStart2)) continue;
|
||||||
|
|
||||||
//叠盘架无载具:1-判断是否有在执行中的堆叠任务,有则等堆叠任务完成以后再去,否则去去缓存位和养生A区找
|
// 判断叠盘架是否有任务
|
||||||
JSONObject ddTask = taskTab.query("is_delete='0' and point_code2 = '" + dpjPoint1.getString("point_code") + "'" + " and task_status <> '7' ").uniqueResult(0);
|
boolean is_point = this.isTask(jsonDpjStart2.getString("point_code"));
|
||||||
if (ObjectUtil.isNotEmpty(ddTask)) continue;
|
if (!is_point) continue;
|
||||||
|
|
||||||
//去缓存位和养生A区找,生成到叠盘架的任务
|
// 找叠盘架暂存位是否有空托盘
|
||||||
JSONObject whereParam = new JSONObject();
|
JSONObject map = new JSONObject();
|
||||||
whereParam.put("flag", "1");
|
map.put("flag", "1");
|
||||||
whereParam.put("vehicle_type", '%' + jsonTask.getString("vehicle_type") + "%");
|
map.put("vehicle_type", vehicle_type);
|
||||||
JSONObject outJsonObj = WQL.getWO("QSCH_GjxCallEmpVehicleTask").addParamMap(whereParam).process().uniqueResult(0);
|
|
||||||
|
|
||||||
// 空托盘缓存货架或者养生A区------>叠盘架B区
|
JSONObject jsonZcKtp = WQL.getWO("QSCH_GjxCallEmpVehicleTask").addParamMap(map).process().uniqueResult(0);
|
||||||
JSONObject param = new JSONObject();
|
if (ObjectUtil.isNotEmpty(jsonZcKtp)) {
|
||||||
Long task_id = IdUtil.getSnowflake(1, 1).nextId();
|
// 创建任务:空载具暂存位 --> 叠盘架
|
||||||
Long task_group_id = IdUtil.getSnowflake(1, 1).nextId();
|
SchTaskDto dto = SchTaskDto.builder()
|
||||||
param.put("task_id", task_id);
|
.task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
param.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||||
param.put("vehicle_type", vehicle_type);
|
.task_type("")
|
||||||
param.put("priority", 100);
|
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
|
||||||
param.put("handle_class", THIS_CLASS);
|
.point_code1(jsonZcKtp.getString("point_code"))
|
||||||
param.put("task_type", "kzj");
|
.point_code2(jsonDpjStart2.getString("point_code"))
|
||||||
param.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
.vehicle_code(jsonZcKtp.getString("vehicle_code"))
|
||||||
param.put("task_group_id", task_group_id);
|
.vehicle_type(jsonZcKtp.getString("vehicle_type"))
|
||||||
param.put("sort_seq", 1);
|
.vehicle_qty(jsonZcKtp.getIntValue("vehicle_qty"))
|
||||||
param.put("point_code1", outJsonObj.getString("point_code"));
|
.task_group_id(jsonTask.getLong("task_group_id"))
|
||||||
param.put("point_code2", dpjPoint1.getString("point_code"));
|
.handle_class(THIS_CLASS)
|
||||||
param.put("create_name", SecurityUtils.getCurrentUsername());
|
.create_time(DateUtil.now())
|
||||||
param.put("create_id", SecurityUtils.getCurrentUserId());
|
.build();
|
||||||
param.put("create_time", DateUtil.now());
|
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||||
taskTab.insert(param);
|
taskTab.insert(json);
|
||||||
|
// 锁定起点
|
||||||
|
jsonZcKtp.put("lock_type", "2");
|
||||||
|
pointTab.update(jsonZcKtp);
|
||||||
|
} else {
|
||||||
|
// 空托盘暂存区没有就到养生A区找: 先找到出库等待点
|
||||||
|
JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() +
|
||||||
|
"' and row_num = '9' and can_vehicle_type = '" + vehicle_type +
|
||||||
|
"' and is_used = '1' and is_delete = '0'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(jsonEmpWait)) continue;
|
||||||
|
|
||||||
//锁住起点
|
JSONObject jsonStartPoint = pointTab.query("region_id = '" + jsonEmpWait.getString("region_id") +
|
||||||
outJsonObj.put("lock_type", "2");
|
"' and block_num = '" + jsonEmpWait.getString("block_num") +
|
||||||
pointTab.update(outJsonObj);
|
"' and col_num = '" + jsonEmpWait.getString("col_num") +
|
||||||
this.notifyAcs(String.valueOf(task_id));
|
"' and point_status = '2' and lock_type = '1' order by out_empty_seq DESC").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(jsonStartPoint)) continue;
|
||||||
|
|
||||||
|
// 判断找到的空载具点位是否是等待点
|
||||||
jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
if (StrUtil.equals(jsonEmpWait.getString("point_code"),jsonStartPoint.getString("point_code"))) {
|
||||||
jsonTask.put("point_code1", outJsonObj.getString("point_code"));
|
// 创建 养生A区空载具等待点 --> 叠盘架
|
||||||
jsonTask.put("sort_seq", 2);
|
SchTaskDto dto = SchTaskDto.builder()
|
||||||
jsonTask.put("task_group_id", task_group_id);
|
.task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
jsonTask.put("remark", "叠盘架无载具!");
|
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||||
taskTab.update(jsonTask);
|
.task_type("")
|
||||||
|
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
|
||||||
//锁住点位
|
.point_code1(jsonStartPoint.getString("point_code"))
|
||||||
dpjPoint1.put("lock_type", "2");
|
.point_code2(jsonDpjStart2.getString("point_code"))
|
||||||
pointTab.update(outJsonObj);
|
.vehicle_code(jsonStartPoint.getString("vehicle_code"))
|
||||||
|
.vehicle_type(jsonStartPoint.getString("vehicle_type"))
|
||||||
|
.vehicle_qty(jsonStartPoint.getIntValue("vehicle_qty"))
|
||||||
|
.task_group_id(jsonTask.getLong("task_group_id"))
|
||||||
|
.handle_class(THIS_CLASS)
|
||||||
|
.create_time(DateUtil.now())
|
||||||
|
.build();
|
||||||
|
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||||
|
taskTab.insert(json);
|
||||||
|
// 锁起点
|
||||||
|
jsonStartPoint.put("lock_type", "2");
|
||||||
|
pointTab.update(jsonStartPoint);
|
||||||
|
} else {
|
||||||
|
// 判断等待点是否是 未锁定、为空载具
|
||||||
|
if (StrUtil.equals(jsonEmpWait.getString("lock_type"), "1") && StrUtil.equals(jsonEmpWait.getString("point_status"), "2")) {
|
||||||
|
// 创建 养生A区空载具 --> 叠盘架
|
||||||
|
SchTaskDto dto = SchTaskDto.builder()
|
||||||
|
.task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
|
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||||
|
.task_type("")
|
||||||
|
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
|
||||||
|
.point_code1(jsonStartPoint.getString("point_code"))
|
||||||
|
.point_code2(jsonDpjStart2.getString("point_code"))
|
||||||
|
.vehicle_code(jsonStartPoint.getString("vehicle_code"))
|
||||||
|
.vehicle_type(jsonStartPoint.getString("vehicle_type"))
|
||||||
|
.vehicle_qty(jsonStartPoint.getIntValue("vehicle_qty"))
|
||||||
|
.task_group_id(jsonTask.getLong("task_group_id"))
|
||||||
|
.handle_class(THIS_CLASS)
|
||||||
|
.create_time(DateUtil.now())
|
||||||
|
.build();
|
||||||
|
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||||
|
taskTab.insert(json);
|
||||||
|
// 锁起点
|
||||||
|
jsonStartPoint.put("lock_type", "2");
|
||||||
|
pointTab.update(jsonStartPoint);
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -187,41 +257,40 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String createTask(JSONObject form) {
|
public String createTask(JSONObject form) {
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
/*
|
||||||
|
* 1.先生成确定终点的任务
|
||||||
|
* 2.通过findStartPoint()找起点
|
||||||
|
* 3.下发给ACS
|
||||||
|
*/
|
||||||
|
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||||
|
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 生产工单表
|
||||||
|
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); //点位基础表
|
||||||
|
|
||||||
String end_point_code = form.getString("point_code2");
|
String point_code2 = form.getString("point_code1");
|
||||||
String vehicle_type = form.getString("vehicle_type");
|
|
||||||
|
|
||||||
// 终点不能为空
|
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
|
||||||
if (ObjectUtil.isEmpty(end_point_code)) {
|
|
||||||
throw new BadRequestException("终点不能为空");
|
|
||||||
} else {
|
|
||||||
// 判断终点是否有正在执行的任务
|
|
||||||
JSONObject beforTaskObj = taskTab.query("is_delete='0' and point_code2='" + end_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
|
||||||
if (ObjectUtil.isNotEmpty(beforTaskObj))
|
|
||||||
throw new BadRequestException("存在任务号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
|
|
||||||
}
|
|
||||||
// 创建任务
|
|
||||||
JSONObject jsonTask = new JSONObject();
|
|
||||||
Long task_id = IdUtil.getSnowflake(1, 1).nextId();
|
|
||||||
jsonTask.put("task_id", task_id);
|
|
||||||
jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
|
||||||
jsonTask.put("handle_class", THIS_CLASS);
|
|
||||||
jsonTask.put("vehicle_type", vehicle_type);
|
|
||||||
|
|
||||||
jsonTask.put("point_code2", end_point_code);
|
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||||
jsonTask.put("create_name", SecurityUtils.getCurrentUsername());
|
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||||
jsonTask.put("create_id", SecurityUtils.getCurrentUserId());
|
|
||||||
jsonTask.put("create_time", DateUtil.now());
|
|
||||||
|
|
||||||
//见基础分类表的任务分类
|
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
jsonTask.put("task_type", "gjxsqkp");
|
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||||
jsonTask.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
.task_type("")
|
||||||
jsonTask.put("point_code1", "");
|
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||||
taskTab.insert(jsonTask);
|
.point_code2(point_code2)
|
||||||
|
.vehicle_code(form.getString("vehicle_code"))
|
||||||
|
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||||
|
.vehicle_qty(form.getIntValue("qty"))
|
||||||
|
.task_group_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
|
.handle_class(THIS_CLASS)
|
||||||
|
.create_time(DateUtil.now())
|
||||||
|
.build();
|
||||||
|
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||||
|
taskTab.insert(json);
|
||||||
|
|
||||||
this.findStartPoint();
|
this.findStartPoint();
|
||||||
return String.valueOf(task_id);
|
// this.immediateNotifyAcs();
|
||||||
|
return String.valueOf(dto.getTask_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -236,4 +305,28 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean isTask(String point_code) {
|
||||||
|
/*
|
||||||
|
* 判断点位是否有任务存在
|
||||||
|
*/
|
||||||
|
WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||||
|
|
||||||
|
boolean result;
|
||||||
|
|
||||||
|
JSONObject jsonPointCode1 = tab.query("point_code1 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
|
||||||
|
JSONObject jsonPointCode2 = tab.query("point_code2 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
|
||||||
|
JSONObject jsonPointCode3 = tab.query("point_code3 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
|
||||||
|
JSONObject jsonPointCode4 = tab.query("point_code4 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(jsonPointCode1) && ObjectUtil.isEmpty(jsonPointCode2) && ObjectUtil.isEmpty(jsonPointCode3) && ObjectUtil.isEmpty(jsonPointCode4)) {
|
||||||
|
result = true;
|
||||||
|
} else {
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,7 @@
|
|||||||
## 表字段对应输入参数
|
## 表字段对应输入参数
|
||||||
#################################################
|
#################################################
|
||||||
输入.flag TYPEAS s_string
|
输入.flag TYPEAS s_string
|
||||||
输入.vehicle_qty TYPEAS s_string
|
输入.vehicle_type TYPEAS s_string
|
||||||
输入.vehicle_type TYPEAS s_string
|
|
||||||
输入.region_code TYPEAS s_string
|
|
||||||
|
|
||||||
[临时表]
|
[临时表]
|
||||||
--这边列出来的临时表就会在运行期动态创建
|
--这边列出来的临时表就会在运行期动态创建
|
||||||
@@ -42,72 +40,21 @@
|
|||||||
|
|
||||||
IF 输入.flag = "1"
|
IF 输入.flag = "1"
|
||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
p.point_id,
|
*
|
||||||
p.point_code,
|
FROM
|
||||||
p.point_name
|
SCH_BASE_Point
|
||||||
FROM
|
WHERE
|
||||||
SCH_BASE_Point p
|
is_used = '1'
|
||||||
WHERE
|
AND is_delete = '0'
|
||||||
p.is_used = '1'
|
AND lock_type = '1'
|
||||||
AND p.is_delete = '0'
|
AND point_status = '2'
|
||||||
AND p.lock_type = '00'
|
AND region_code = 'KTPHCQB01'
|
||||||
AND p.point_status = '2'
|
|
||||||
and region_code in ('KTPHCQB01','YSQA01')
|
|
||||||
|
|
||||||
OPTION 输入.vehicle_type <> ""
|
OPTION 输入.vehicle_type <> ""
|
||||||
p.vehicle_type like 输入.vehicle_type
|
can_vehicle_type = 输入.vehicle_type
|
||||||
ENDOPTION
|
ENDOPTION
|
||||||
|
|
||||||
order by out_empty_seq,p.vehicle_qty
|
|
||||||
|
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF 输入.flag = "3"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
point.*
|
|
||||||
FROM
|
|
||||||
sch_base_point point
|
|
||||||
LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id
|
|
||||||
WHERE
|
|
||||||
point.lock_type = '00'
|
|
||||||
AND point.point_status = '01'
|
|
||||||
AND IFNULL(point.vehicle_qty,0) == 输入.vehicle_qty
|
|
||||||
|
|
||||||
OPTION 输入.region_code <> ""
|
|
||||||
region.region_code = 输入.region_code
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.vehicle_type <> ""
|
|
||||||
point.vehicle_type = 输入.vehicle_type
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
order by point.point_code DESC
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "2"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
point.*
|
|
||||||
FROM
|
|
||||||
sch_base_point point
|
|
||||||
LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id
|
|
||||||
WHERE
|
|
||||||
point.lock_type = '00'
|
|
||||||
AND point.point_status = '00'
|
|
||||||
|
|
||||||
OPTION 输入.region_code <> ""
|
|
||||||
region.region_code = 输入.region_code
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
order by point.point_code DESC
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
Reference in New Issue
Block a user