张江玮
2 years ago
14 changed files with 713 additions and 24 deletions
@ -0,0 +1,195 @@ |
|||||
|
package org.nl.wms.sch.task.call.material; |
||||
|
|
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
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.VehicleType; |
||||
|
import org.nl.wms.sch.manage.*; |
||||
|
import org.nl.wms.sch.task.util.TaskUtils; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
/** |
||||
|
* @author zhangjiangwei |
||||
|
* @date 2023/04/14 21:28 |
||||
|
*/ |
||||
|
@RequiredArgsConstructor |
||||
|
@Component |
||||
|
public class FJCallMaterialTask extends AbstractAcsTask { |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@Override |
||||
|
public String createTask(JSONObject form) { |
||||
|
JSONObject point = form.getJSONObject("point"); |
||||
|
|
||||
|
JSONObject task = TaskUtils.buildTask( |
||||
|
"烧制区叫料", |
||||
|
TaskType.CALL_MATERIAL.value(), |
||||
|
TaskStatus.SURE_END.value(), |
||||
|
null, |
||||
|
point.getString("point_code"), |
||||
|
null, |
||||
|
VehicleType.STEEL_TRAY.value(), |
||||
|
null, |
||||
|
"1", |
||||
|
SZCallMaterialTask.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")); |
||||
|
WQLObject.getWQLObject("sch_base_point").update(point); |
||||
|
|
||||
|
return task.getString("task_id"); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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 = '" + SZCallMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") |
||||
|
.getResultJSONArray(0); |
||||
|
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", "1") |
||||
|
.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("material_id", point.getString("material_id")); |
||||
|
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code"))); |
||||
|
task.put("remark", ""); |
||||
|
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")); |
||||
|
point_table.update(point_update, "point_id = " + point.getLongValue("point_id")); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
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"); |
||||
|
JSONObject point1 = point_table.query("point_code = '" + task.getString("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); |
||||
|
} |
||||
|
|
||||
|
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 = '" + task.getString("point_code2") + "'"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public void finishTask(JSONObject task, OperationType operation_type) { |
||||
|
if (task.getIntValue("task_status") < Integer.parseInt(TaskStatus.FINISHED.value())) { |
||||
|
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"); |
||||
|
JSONObject point1 = point_table.query("point_code = '" + task.getString("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()); |
||||
|
TaskUtils.addCurrentUpdateColum(point1); |
||||
|
point_table.update(point1); |
||||
|
} |
||||
|
|
||||
|
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 = '" + task.getString("point_code2") + "'"); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,200 @@ |
|||||
|
package org.nl.wms.sch.task.send.empty; |
||||
|
|
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import com.alibaba.fastjson.JSONArray; |
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
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.send.material.HLSendMaterialTask; |
||||
|
import org.nl.wms.sch.task.send.material.YZSendMaterialTask; |
||||
|
import org.nl.wms.sch.task.util.TaskUtils; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
/** |
||||
|
* @author zhangjiangwei |
||||
|
* @date 2023/04/14 21:29 |
||||
|
*/ |
||||
|
public class FJSendEmptyTask 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 |
||||
|
@Transactional |
||||
|
public String createTask(JSONObject form) { |
||||
|
JSONObject point = form.getJSONObject("point"); |
||||
|
|
||||
|
TaskUtils.isLocked(point); |
||||
|
JSONObject work_order = TaskUtils.hasWorkOrder(point); |
||||
|
|
||||
|
String vehicle_code = form.getString("vehicle_code"); |
||||
|
if ("0000".equals(vehicle_code)) { |
||||
|
throw new BadRequestException("载具编码不能为空!"); |
||||
|
} |
||||
|
|
||||
|
// todo 组盘
|
||||
|
|
||||
|
JSONObject task = TaskUtils.buildTask( |
||||
|
"混料机送料入库", |
||||
|
TaskType.SEND_MATERIAL.value(), |
||||
|
TaskStatus.SURE_START.value(), |
||||
|
point.getString("point_code"), |
||||
|
null, |
||||
|
work_order.getString("material_id"), |
||||
|
VehicleType.CUP.value(), |
||||
|
vehicle_code, |
||||
|
TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? "99" : "1", |
||||
|
HLSendMaterialTask.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); |
||||
|
|
||||
|
return task.getString("task_id"); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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 = '" + YZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") |
||||
|
.getResultJSONArray(0); |
||||
|
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_MATERIAL_TASK") |
||||
|
.addParam("flag", "1") |
||||
|
.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", ""); |
||||
|
task_table.update(task); |
||||
|
|
||||
|
point.put("lock_type", LockType.TASK_LOCKED.value()); |
||||
|
point.put("task_code", task.getString("task_code")); |
||||
|
point_table.update(point); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
@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); |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
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"); |
||||
|
JSONObject point1 = point_table.query("point_code = '" + task.getString("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); |
||||
|
} |
||||
|
|
||||
|
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 = '" + task.getString("point_code2") + "'"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public void finishTask(JSONObject task, OperationType operation_type) { |
||||
|
if (task.getIntValue("task_status") < Integer.parseInt(TaskStatus.FINISHED.value())) { |
||||
|
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"); |
||||
|
JSONObject point1 = point_table.query("point_code = '" + task.getString("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()); |
||||
|
TaskUtils.addCurrentUpdateColum(point1); |
||||
|
point_table.update(point1); |
||||
|
} |
||||
|
|
||||
|
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 = '" + task.getString("point_code2") + "'"); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
[交易说明] |
||||
|
交易名: 叫空托盘 |
||||
|
所属模块: |
||||
|
功能简述: |
||||
|
版权所有: |
||||
|
表引用: |
||||
|
版本经历: |
||||
|
|
||||
|
[数据库] |
||||
|
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 |
||||
|
|
||||
|
[IO定义] |
||||
|
################################################# |
||||
|
## 表字段对应输入参数 |
||||
|
################################################# |
||||
|
输入.flag TYPEAS s_string |
||||
|
|
||||
|
[临时表] |
||||
|
--这边列出来的临时表就会在运行期动态创建 |
||||
|
|
||||
|
[临时变量] |
||||
|
--所有中间过程变量均可在此处定义 |
||||
|
|
||||
|
[业务过程] |
||||
|
|
||||
|
########################################## |
||||
|
# 1、输入输出检查 # |
||||
|
########################################## |
||||
|
|
||||
|
|
||||
|
########################################## |
||||
|
# 2、主过程前处理 # |
||||
|
########################################## |
||||
|
|
||||
|
|
||||
|
########################################## |
||||
|
# 3、业务主过程 # |
||||
|
########################################## |
||||
|
|
||||
|
IF flag = "1" |
||||
|
QUERY |
||||
|
SELECT |
||||
|
point.*, |
||||
|
vd.material_id, |
||||
|
workorder.is_urgent |
||||
|
FROM |
||||
|
sch_base_point point |
||||
|
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' |
||||
|
LEFT JOIN pdm_bd_workorder workorder ON vd.workorder_id = workorder.workorder_id |
||||
|
WHERE |
||||
|
point.is_used = '1' |
||||
|
AND point.lock_type = '1' |
||||
|
AND point.region_code = 'CPHJ' |
||||
|
AND point.point_status = '1' |
||||
|
AND point.vehicle_type = '2' |
||||
|
AND vd.is_fire = '0' |
||||
|
AND vd.is_in_kiln = '1' |
||||
|
ORDER BY |
||||
|
workorder.is_urgent DESC, vd.create_time ASC |
||||
|
ENDSELECT |
||||
|
ENDQUERY |
||||
|
ENDIF |
||||
|
|
||||
|
IF 输入.flag = "2" |
||||
|
QUERY |
||||
|
SELECT |
||||
|
* |
||||
|
FROM |
||||
|
sch_base_point |
||||
|
WHERE |
||||
|
is_used = '1' |
||||
|
AND lock_type = '1' |
||||
|
AND region_code = 'SZ' |
||||
|
AND point_type = '1' |
||||
|
ENDSELECT |
||||
|
ENDQUERY |
||||
|
ENDIF |
Binary file not shown.
Loading…
Reference in new issue