张江玮
2 years ago
16 changed files with 818 additions and 29 deletions
@ -0,0 +1,89 @@ |
|||
package org.nl.wms.sch.manage; |
|||
|
|||
import cn.hutool.core.date.DateTime; |
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.SneakyThrows; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.modules.common.utils.CommonUtils; |
|||
import org.nl.modules.wql.WQL; |
|||
import org.nl.modules.wql.core.bean.WQLObject; |
|||
import org.nl.wms.basedata.eum.StandStatus; |
|||
import org.nl.wms.ext.acs.service.WmsToAcsService; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
|
|||
/** |
|||
* @author zhangjiangwei |
|||
* @date 2023/05/10 10:48 |
|||
*/ |
|||
@Slf4j |
|||
@RequiredArgsConstructor |
|||
@Component("autoUpdateStandStatus") |
|||
public class AutoUpdateStandStatus { |
|||
|
|||
private final WmsToAcsService wmsToAcsService; |
|||
|
|||
@SneakyThrows |
|||
public void run() { |
|||
JSONArray vds = WQL.getWO("MANAGE_QUERY").addParam("flag", "1").process().getResultJSONArray(0); |
|||
|
|||
if (ObjectUtil.isNotEmpty(vds)) { |
|||
ArrayList<Long> ids = new ArrayList<>(); |
|||
for (int i = 0; i < vds.size(); i++) { |
|||
JSONObject vd = vds.getJSONObject(i); |
|||
DateTime create_time = DateUtil.parse(vd.getString("create_time")); |
|||
DateTime time = DateUtil.offsetMinute(create_time, vd.getIntValue("standing_time")); |
|||
int compare = DateUtil.compare(DateUtil.date(), time); |
|||
if (compare >= 0) { |
|||
ids.add(vd.getLong("vd_id")); |
|||
} |
|||
} |
|||
|
|||
if (!ids.isEmpty()) { |
|||
JSONObject update = new JSONObject(); |
|||
update.put("stand_status", StandStatus.COMPLETED.value()); |
|||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(update, "vd_id IN " + CommonUtils.idsArrayToInStr(ids.toArray(new Long[0]))); |
|||
} |
|||
} |
|||
|
|||
vds = WQL.getWO("MANAGE_QUERY").addParam("flag", "2").process().getResultJSONArray(0); |
|||
|
|||
if (ObjectUtil.isNotEmpty(vds)) { |
|||
ArrayList<Long> ids = new ArrayList<>(); |
|||
for (int i = 0; i < vds.size(); i++) { |
|||
JSONObject vd = vds.getJSONObject(i); |
|||
DateTime create_time = DateUtil.parse(vd.getString("create_time")); |
|||
int threshold_time = vd.getIntValue("threshold_time"); |
|||
int standing_time = vd.getIntValue("standing_time"); |
|||
if (threshold_time != 0 && threshold_time < standing_time) { |
|||
DateTime time = DateUtil.offsetMinute(create_time, threshold_time); |
|||
int compare = DateUtil.compare(DateUtil.date(), time); |
|||
if (compare >= 0) { |
|||
ids.add(vd.getLong("vd_id")); |
|||
} |
|||
} |
|||
} |
|||
|
|||
if (!ids.isEmpty()) { |
|||
JSONObject update = new JSONObject(); |
|||
update.put("stand_status", StandStatus.TIMEOUT.value()); |
|||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(update, "vd_id IN " + CommonUtils.idsArrayToInStr(ids.toArray(new Long[0]))); |
|||
} |
|||
} |
|||
|
|||
JSONArray points = WQL.getWO("MANAGE_QUERY").addParam("flag", "3").process().getResultJSONArray(0); |
|||
if (ObjectUtil.isNotEmpty(vds)) { |
|||
JSONArray point_codes = new JSONArray(); |
|||
for (int i = 0; i < points.size(); i++) { |
|||
JSONObject point = points.getJSONObject(i); |
|||
point_codes.add(point.getString("point_code")); |
|||
} |
|||
wmsToAcsService.light(point_codes); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,87 @@ |
|||
[交易说明] |
|||
交易名: manage |
|||
所属模块: |
|||
功能简述: |
|||
版权所有: |
|||
表引用: |
|||
版本经历: |
|||
|
|||
[数据库] |
|||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 |
|||
|
|||
[IO定义] |
|||
################################################# |
|||
## 表字段对应输入参数 |
|||
################################################# |
|||
输入.flag TYPEAS s_string |
|||
|
|||
[临时表] |
|||
--这边列出来的临时表就会在运行期动态创建 |
|||
|
|||
[临时变量] |
|||
--所有中间过程变量均可在此处定义 |
|||
|
|||
[业务过程] |
|||
|
|||
########################################## |
|||
# 1、输入输出检查 # |
|||
########################################## |
|||
|
|||
|
|||
########################################## |
|||
# 2、主过程前处理 # |
|||
########################################## |
|||
|
|||
|
|||
########################################## |
|||
# 3、业务主过程 # |
|||
########################################## |
|||
|
|||
IF 输入.flag = "1" |
|||
QUERY |
|||
SELECT |
|||
vd.*, |
|||
mb.standing_time |
|||
FROM |
|||
st_ivt_vehicle_detail vd |
|||
LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id |
|||
WHERE |
|||
vd.is_delete = '0' |
|||
AND vd.vehicle_type = '1' |
|||
AND vd.stand_status = '2' |
|||
ENDSELECT |
|||
ENDQUERY |
|||
ENDIF |
|||
|
|||
IF 输入.flag = "2" |
|||
QUERY |
|||
SELECT |
|||
vd.*, |
|||
mb.standing_time, |
|||
mb.threshold_time |
|||
FROM |
|||
st_ivt_vehicle_detail vd |
|||
LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id |
|||
WHERE |
|||
vd.is_delete = '0' |
|||
AND vd.vehicle_type = '1' |
|||
AND vd.stand_status IN ('3', '4') |
|||
ENDSELECT |
|||
ENDQUERY |
|||
ENDIF |
|||
|
|||
IF 输入.flag = "3" |
|||
QUERY |
|||
SELECT |
|||
* |
|||
FROM |
|||
sch_base_point point |
|||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type |
|||
AND point.vehicle_code = vd.vehicle_code AND vd.is_delete = '0' |
|||
WHERE |
|||
point.region_code = 'KLHJ' |
|||
AND point.point_type = '2' |
|||
AND vd.stand_status > '2' |
|||
ENDSELECT |
|||
ENDQUERY |
|||
ENDIF |
@ -0,0 +1,231 @@ |
|||
package org.nl.wms.sch.task.call.material; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.nl.modules.common.exception.BadRequestException; |
|||
import org.nl.modules.wql.WQL; |
|||
import org.nl.modules.wql.core.bean.WQLObject; |
|||
import org.nl.wms.basedata.eum.TrueOrFalse; |
|||
import org.nl.wms.basedata.eum.VehicleType; |
|||
import org.nl.wms.sch.manage.*; |
|||
import org.nl.wms.sch.task.util.TaskUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
/** |
|||
* @author zhangjiangwei |
|||
* @date 2023/05/10 10:04 |
|||
*/ |
|||
@RequiredArgsConstructor |
|||
@Component |
|||
public class YZCallMaterialTask extends AbstractAcsTask { |
|||
|
|||
|
|||
@Override |
|||
public void updateTaskStatus(JSONObject task, String status) { |
|||
if (TaskStatus.EXECUTING.value().equals(status)) { |
|||
task.put("task_status", TaskStatus.EXECUTING.value()); |
|||
TaskUtils.addACSUpdateColum(task); |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
} else if (TaskStatus.FINISHED.value().equals(status)) { |
|||
this.finishTask(task, OperationType.AUTO); |
|||
} else if (TaskStatus.CANCELLED.value().equals(status)) { |
|||
this.cancelTask(task, OperationType.AUTO); |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public String createTask(JSONObject form) { |
|||
JSONObject point = form.getJSONObject("point"); |
|||
JSONObject workorder = form.getJSONObject("workorder"); |
|||
|
|||
JSONObject task = TaskUtils.buildTask( |
|||
"压制区叫料", |
|||
TaskType.CALL_MATERIAL.value(), |
|||
TaskStatus.SURE_END.value(), |
|||
null, |
|||
point.getString("point_code"), |
|||
null, |
|||
workorder.getString("material_id"), |
|||
VehicleType.CUP.value(), |
|||
null, |
|||
TrueOrFalse.trueOrFalse(workorder.getString("is_urgent")) ? 50 : 1, |
|||
YZCallMaterialTask.class.getName(), |
|||
form.getString("create_mode"), |
|||
form.getString("request_param"), |
|||
form.getString("create_id"), |
|||
form.getString("create_name") |
|||
); |
|||
WQLObject.getWQLObject("sch_base_task").insert(task); |
|||
|
|||
point.put("lock_type", LockType.TASK_LOCKED.value()); |
|||
point.put("task_code", task.getString("task_code")); |
|||
TaskUtils.addFormUpdateColum(point, form); |
|||
WQLObject.getWQLObject("sch_base_point").update(point); |
|||
|
|||
return task.getString("task_code"); |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void findStartPoint() { |
|||
WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); |
|||
JSONArray tasks = task_table |
|||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_END.value() + "' AND handle_class = '" + YZCallMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") |
|||
.getResultJSONArray(0); |
|||
if (ObjectUtil.isNotEmpty(tasks)) { |
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
for (int i = 0; i < tasks.size(); i++) { |
|||
JSONObject task = tasks.getJSONObject(i); |
|||
|
|||
JSONObject point = WQL |
|||
.getWO("CALL_MATERIAL_TASK") |
|||
.addParam("flag", "4") |
|||
.addParam("material_id", task.getString("material_id")) |
|||
.process() |
|||
.uniqueResult(0); |
|||
|
|||
if (ObjectUtil.isNotEmpty(point)) { |
|||
task.put("task_status", TaskStatus.START_AND_END.value()); |
|||
task.put("point_code1", point.getString("point_code")); |
|||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code"))); |
|||
task.put("material_id", point.getString("material_id")); |
|||
task.put("remark", ""); |
|||
TaskUtils.addAutoUpdateColum(task); |
|||
task_table.update(task); |
|||
|
|||
JSONObject point_update = new JSONObject(); |
|||
point_update.put("lock_type", LockType.TASK_LOCKED.value()); |
|||
point_update.put("task_code", task.getString("task_code")); |
|||
TaskUtils.addAutoUpdateColum(point_update); |
|||
point_table.update(point_update, "point_id = " + point.getLongValue("point_id")); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void forceFinish(String task_id) { |
|||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0); |
|||
if (ObjectUtil.isEmpty(task)) { |
|||
throw new BadRequestException("未找到任务!"); |
|||
} |
|||
this.finishTask(task, OperationType.MANUAL); |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void cancel(String task_id) { |
|||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0); |
|||
if (ObjectUtil.isEmpty(task)) { |
|||
throw new BadRequestException("未找到任务!"); |
|||
} |
|||
this.cancelTask(task, OperationType.MANUAL); |
|||
} |
|||
|
|||
|
|||
public void cancelTask(JSONObject task, OperationType operation_type) { |
|||
if (task.getIntValue("task_status") < Integer.parseInt(TaskStatus.FINISHED.value())) { |
|||
task.put("task_status", TaskStatus.CANCELLED.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(task); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(task); |
|||
} |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
|
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
String point_code1 = task.getString("point_code1"); |
|||
if (StrUtil.isNotBlank(point_code1)) { |
|||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0); |
|||
if (ObjectUtil.isNotEmpty(point1) |
|||
&& LockType.TASK_LOCKED.value().equals(point1.getString("lock_type")) |
|||
&& task.getString("task_code").equals(point1.getString("task_code"))) { |
|||
point1.put("lock_type", LockType.UNLOCKED.value()); |
|||
point1.put("task_code", ""); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point1); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point1); |
|||
} |
|||
point_table.update(point1); |
|||
} |
|||
} |
|||
|
|||
String point_code2 = task.getString("point_code2"); |
|||
if (StrUtil.isNotBlank(point_code2)) { |
|||
JSONObject point2 = new JSONObject(); |
|||
point2.put("lock_type", LockType.UNLOCKED.value()); |
|||
point2.put("task_code", ""); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point2); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point2); |
|||
} |
|||
point_table.update(point2, "point_code = '" + point_code2 + "'"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
public void finishTask(JSONObject task, OperationType operation_type) { |
|||
int current_task_status = task.getIntValue("task_status"); |
|||
if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) { |
|||
if (operation_type == OperationType.MANUAL |
|||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { |
|||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!"); |
|||
} |
|||
|
|||
task.put("task_status", TaskStatus.FINISHED.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(task); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(task); |
|||
} |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
|
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
String point_code1 = task.getString("point_code1"); |
|||
if (StrUtil.isNotBlank(point_code1)) { |
|||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0); |
|||
if (LockType.TASK_LOCKED.value().equals(point1.getString("lock_type")) |
|||
&& task.getString("task_code").equals(point1.getString("task_code"))) { |
|||
point1.put("lock_type", LockType.UNLOCKED.value()); |
|||
point1.put("task_code", ""); |
|||
point1.put("vehicle_type", ""); |
|||
point1.put("vehicle_code", ""); |
|||
point1.put("point_status", PointStatus.EMPTY.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point1); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point1); |
|||
} |
|||
point_table.update(point1); |
|||
} |
|||
} |
|||
|
|||
String point_code2 = task.getString("point_code2"); |
|||
if (StrUtil.isNotBlank(point_code2)) { |
|||
JSONObject point2 = new JSONObject(); |
|||
point2.put("lock_type", LockType.UNLOCKED.value()); |
|||
point2.put("task_code", ""); |
|||
point2.put("vehicle_type", task.getString("vehicle_type")); |
|||
point2.put("vehicle_code", task.getString("vehicle_code")); |
|||
point2.put("point_status", PointStatus.NOT_EMPTY.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point2); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point2); |
|||
} |
|||
point_table.update(point2, "point_code = '" + point_code2 + "'"); |
|||
} |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,231 @@ |
|||
package org.nl.wms.sch.task.send.empty; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.nl.modules.common.exception.BadRequestException; |
|||
import org.nl.modules.wql.WQL; |
|||
import org.nl.modules.wql.core.bean.WQLObject; |
|||
import org.nl.wms.basedata.eum.TrueOrFalse; |
|||
import org.nl.wms.basedata.eum.VehicleType; |
|||
import org.nl.wms.sch.manage.*; |
|||
import org.nl.wms.sch.task.util.TaskUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
/** |
|||
* @author zhangjiangwei |
|||
* @date 2023/05/10 10:25 |
|||
*/ |
|||
@RequiredArgsConstructor |
|||
@Component |
|||
public class YZSendEmptyTask extends AbstractAcsTask { |
|||
|
|||
|
|||
@Override |
|||
public void updateTaskStatus(JSONObject task, String status) { |
|||
if (TaskStatus.EXECUTING.value().equals(status)) { |
|||
task.put("task_status", TaskStatus.EXECUTING.value()); |
|||
TaskUtils.addACSUpdateColum(task); |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
} else if (TaskStatus.FINISHED.value().equals(status)) { |
|||
this.finishTask(task, OperationType.AUTO); |
|||
} else if (TaskStatus.CANCELLED.value().equals(status)) { |
|||
this.cancelTask(task, OperationType.AUTO); |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public String createTask(JSONObject form) { |
|||
JSONObject point = form.getJSONObject("point"); |
|||
JSONObject work_order = form.getJSONObject("workorder"); |
|||
int priority = 1; |
|||
if (ObjectUtil.isNotEmpty(work_order)) { |
|||
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1; |
|||
} |
|||
|
|||
JSONObject task = TaskUtils.buildTask( |
|||
"压制区送空", |
|||
TaskType.SEND_EMPTY.value(), |
|||
TaskStatus.SURE_START.value(), |
|||
point.getString("point_code"), |
|||
null, |
|||
null, |
|||
null, |
|||
point.getString("vehicle_type"), |
|||
point.getString("vehicle_code"), |
|||
priority, |
|||
YZSendEmptyTask.class.getName(), |
|||
form.getString("create_mode"), |
|||
form.getString("request_param"), |
|||
form.getString("create_id"), |
|||
form.getString("create_name") |
|||
); |
|||
WQLObject.getWQLObject("sch_base_task").insert(task); |
|||
|
|||
point.put("lock_type", LockType.TASK_LOCKED.value()); |
|||
point.put("task_code", task.getString("task_code")); |
|||
TaskUtils.addFormUpdateColum(point, form); |
|||
WQLObject.getWQLObject("sch_base_point").update(point); |
|||
|
|||
return task.getString("task_code"); |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void findNextPoint() { |
|||
WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); |
|||
JSONArray tasks = task_table |
|||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + YZSendEmptyTask.class.getName() + "'", "priority DESC, create_time ASC") |
|||
.getResultJSONArray(0); |
|||
if (ObjectUtil.isNotEmpty(tasks)) { |
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
for (int i = 0; i < tasks.size(); i++) { |
|||
JSONObject task = tasks.getJSONObject(i); |
|||
|
|||
JSONObject point = WQL |
|||
.getWO("SEND_EMPTY_TASK") |
|||
.addParam("flag", "2") |
|||
.process() |
|||
.uniqueResult(0); |
|||
|
|||
if (ObjectUtil.isNotEmpty(point)) { |
|||
task.put("task_status", TaskStatus.START_AND_END.value()); |
|||
task.put("point_code2", point.getString("point_code")); |
|||
task.put("remark", ""); |
|||
TaskUtils.addAutoUpdateColum(task); |
|||
task_table.update(task); |
|||
|
|||
point.put("lock_type", LockType.TASK_LOCKED.value()); |
|||
point.put("task_code", task.getString("task_code")); |
|||
TaskUtils.addAutoUpdateColum(point); |
|||
point_table.update(point); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void forceFinish(String task_id) { |
|||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0); |
|||
if (ObjectUtil.isEmpty(task)) { |
|||
throw new BadRequestException("未找到任务!"); |
|||
} |
|||
this.finishTask(task, OperationType.MANUAL); |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public void cancel(String task_id) { |
|||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0); |
|||
if (ObjectUtil.isEmpty(task)) { |
|||
throw new BadRequestException("未找到任务!"); |
|||
} |
|||
this.cancelTask(task, OperationType.MANUAL); |
|||
} |
|||
|
|||
|
|||
public void cancelTask(JSONObject task, OperationType operation_type) { |
|||
if (task.getIntValue("task_status") < Integer.parseInt(TaskStatus.FINISHED.value())) { |
|||
task.put("task_status", TaskStatus.CANCELLED.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(task); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(task); |
|||
} |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
|
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
String point_code1 = task.getString("point_code1"); |
|||
if (StrUtil.isNotBlank(point_code1)) { |
|||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0); |
|||
if (LockType.TASK_LOCKED.value().equals(point1.getString("lock_type")) |
|||
&& task.getString("task_code").equals(point1.getString("task_code"))) { |
|||
point1.put("lock_type", LockType.UNLOCKED.value()); |
|||
point1.put("task_code", ""); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point1); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point1); |
|||
} |
|||
point_table.update(point1); |
|||
} |
|||
} |
|||
|
|||
String point_code2 = task.getString("point_code2"); |
|||
if (StrUtil.isNotBlank(point_code2)) { |
|||
JSONObject point2 = new JSONObject(); |
|||
point2.put("lock_type", LockType.UNLOCKED.value()); |
|||
point2.put("task_code", ""); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point2); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point2); |
|||
} |
|||
point_table.update(point2, "point_code = '" + point_code2 + "'"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
public void finishTask(JSONObject task, OperationType operation_type) { |
|||
int current_task_status = task.getIntValue("task_status"); |
|||
if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) { |
|||
if (operation_type == OperationType.MANUAL |
|||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { |
|||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!"); |
|||
} |
|||
|
|||
task.put("task_status", TaskStatus.FINISHED.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(task); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(task); |
|||
} |
|||
WQLObject.getWQLObject("sch_base_task").update(task); |
|||
|
|||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); |
|||
|
|||
String point_code1 = task.getString("point_code1"); |
|||
if (StrUtil.isNotBlank(point_code1)) { |
|||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0); |
|||
if (ObjectUtil.isNotEmpty(point1) |
|||
&& LockType.TASK_LOCKED.value().equals(point1.getString("lock_type")) |
|||
&& task.getString("task_code").equals(point1.getString("task_code"))) { |
|||
point1.put("lock_type", LockType.UNLOCKED.value()); |
|||
point1.put("task_code", ""); |
|||
point1.put("vehicle_type", ""); |
|||
point1.put("vehicle_code", ""); |
|||
point1.put("point_status", PointStatus.EMPTY.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point1); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point1); |
|||
} |
|||
point_table.update(point1); |
|||
} |
|||
} |
|||
|
|||
String point_code2 = task.getString("point_code2"); |
|||
if (StrUtil.isNotBlank(point_code2)) { |
|||
JSONObject point2 = new JSONObject(); |
|||
point2.put("lock_type", LockType.UNLOCKED.value()); |
|||
point2.put("task_code", ""); |
|||
point2.put("vehicle_type", task.getString("vehicle_type")); |
|||
point2.put("vehicle_code", task.getString("vehicle_code")); |
|||
point2.put("point_status", PointStatus.NOT_EMPTY.value()); |
|||
if (operation_type == OperationType.AUTO) { |
|||
TaskUtils.addACSUpdateColum(point2); |
|||
} else if (operation_type == OperationType.MANUAL) { |
|||
TaskUtils.addCurrentUpdateColum(point2); |
|||
} |
|||
point_table.update(point2, "point_code = '" + point_code2 + "'"); |
|||
} |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue