This commit is contained in:
张江玮
2023-09-07 16:48:17 +08:00
parent 6a5c490676
commit 4a505caacc
22 changed files with 214 additions and 511 deletions

View File

@@ -21,7 +21,10 @@ import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.pdm.service.WorkordeService;
import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.task.call.empty.YZCallEmptyTask;
import org.nl.wms.sch.task.call.material.FJCallMaterialTask;
import org.nl.wms.sch.task.call.material.GZCallMaterialTask;
import org.nl.wms.sch.task.send.material.GZSendMaterialTask;
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.http.HttpStatus;
@@ -44,6 +47,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final GZCallMaterialTask gzCallMaterialTask;
private final GZSendMaterialTask gzSendMaterialTask;
private final FJCallMaterialTask fjCallMaterialTask;
private final HLSendMaterialTask hlSendMaterialTask;
/**
* task_id任务标识
* task_code任务编码
@@ -206,11 +215,54 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
case "1":
// 送料
switch (region) {
case HL:
JSONObject workOrder = TaskUtils.hasWorkOrder(point);
methodParam.put("workorder", workOrder);
// 组盘
String vehicleCode = TaskUtils.formatVehicleCode(param.getString("vehicle_code"));
if ("0000".equals(vehicleCode)) {
throw new BadRequestException("条码不能为空!");
}
String weight = param.getString("weight");
if (StrUtil.isBlank(weight)) {
throw new BadRequestException("重量不能为空!");
}
JSONObject vd = new JSONObject();
vd.put("vd_id", IdUtil.getSnowflake(1, 1).nextId());
vd.put("vehicle_type", VehicleType.CUP.value());
vd.put("vehicle_code", vehicleCode);
vd.put("material_id", workOrder.getString("material_id"));
vd.put("weight", Long.parseLong(weight) / 1000.00);
vd.put("workorder_id", workOrder.getString("workorder_id"));
vd.put("point_code", pointCode);
vd.put("create_id", ACSSystem.id);
vd.put("create_name", ACSSystem.nick_name);
vd.put("create_time", DateUtil.now());
vd.put("is_delete", TrueOrFalse.FALSE.value());
WQLObject.getWQLObject("st_ivt_vehicle_detail").insert(vd);
methodParam.put("vd", vd);
taskCode = hlSendMaterialTask.createTask(methodParam);
break;
case YZ:
methodParam.put("workorder", param.getJSONObject("workorder"));
methodParam.put("vd", param.getJSONObject("vd"));
taskCode = yzSendMaterialTask.createTask(methodParam);
break;
case GZ:
vehicleCode = TaskUtils.formatVehicleCode(param.getString("vehicle_code"));
if ("0000".equals(vehicleCode)) {
throw new BadRequestException("条码不能为空!");
}
vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND vehicle_type = '2' AND vehicle_code = '" + vehicleCode + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vd)) {
throw new BadRequestException("[" + vehicleCode + "] 未找到组盘信息!");
}
methodParam.put("vd", vd);
methodParam.put("workorder", WQLObject.getWQLObject("pdm_bd_workorder").query("workorder_id = " + vd.getString("workorder_id")).uniqueResult(0));
taskCode = gzSendMaterialTask.createTask(methodParam);
break;
default:
throw new BadRequestException("[" + region.label() + "] 不能发起送料任务!");
}
@@ -221,6 +273,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
case GZ:
taskCode = gzCallMaterialTask.createTask(methodParam);
break;
case FJ:
methodParam.put("workorder", TaskUtils.hasWorkOrder(point));
taskCode = fjCallMaterialTask.createTask(methodParam);
break;
default:
throw new BadRequestException("[" + region.label() + "] 不能发起叫料任务!");
}
@@ -705,7 +761,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
throw new BadRequestException("载具编码不能为空!");
}
boolean to_package = true;
Boolean to_package = null;
WQLObject vd_table = WQLObject.getWQLObject("st_ivt_vehicle_detail");
JSONObject vd = vd_table

View File

@@ -26,7 +26,6 @@ import org.nl.wms.sch.task.call.material.FJCallMaterialTask;
import org.nl.wms.sch.task.call.material.YZCallMaterialTask;
import org.nl.wms.sch.task.send.empty.FJSendEmptyTask;
import org.nl.wms.sch.task.send.empty.YZSendEmptyTask;
import org.nl.wms.sch.task.send.material.FJSendMaterialTask;
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;
@@ -46,8 +45,6 @@ public class PdaServiceImpl implements PdaService {
private final YZSendMaterialTask yzSendMaterialTask;
private final FJSendMaterialTask fjSendMaterialTask;
private final YZCallMaterialTask yzCallMaterialTask;
private final FJCallMaterialTask fjCallMaterialTask;
@@ -377,10 +374,6 @@ public class PdaServiceImpl implements PdaService {
method_param.put("vd", vd);
yzSendMaterialTask.createTask(method_param);
break;
case FJ:
vd_table.insert(vd);
method_param.put("vd", vd);
fjSendMaterialTask.createTask(method_param);
default:
throw new BadRequestException("[" + region.label() + "] 不能发起送料任务!");
}

View File

@@ -75,4 +75,6 @@ public class PointDto implements Serializable {
/** 修改时间 */
private String update_time;
private Long vd_id;
}

View File

@@ -154,12 +154,29 @@ public class PointServiceImpl implements PointService {
dto.setUpdate_optname(nickName);
String pointStatus = dto.getPoint_status();
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals("0")) { // 空位
dto.setVehicle_type("");
dto.setVehicle_code("");
// PointUpdateUtil.clearPoint(dto.getPoint_code());
}
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
if ("1".equals(pointStatus)) { // 空位
json.put("vehicle_type", "");
json.put("vehicle_code", "");
json.put("vd_id", null);
} else if ("2".equals(pointStatus)) {// 空载具
if (StrUtil.isBlank(dto.getVehicle_type())) {
throw new BadRequestException("载具类型不能为空!");
}
json.put("vd_id", null);
} else if ("3".equals(pointStatus)) {
if (StrUtil.isBlank(dto.getVehicle_type())) {
throw new BadRequestException("载具类型不能为空!");
}
if ("0000".equals(dto.getVehicle_code())) {
throw new BadRequestException("载具号不能为空!");
}
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND vehicle_type = '" + dto.getVehicle_type() + "' AND vehicle_code = '" + dto.getVehicle_code() + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vd)) {
throw new BadRequestException("该载具类型种载具号为" + dto.getVehicle_code() + "的载具未找到组盘信息!");
}
json.put("vd_id", vd.getLongValue("vd_id"));
}
pointTab.update(json);
}

View File

@@ -48,7 +48,7 @@ public class FJCallEmptyTask extends AbstractAcsTask {
work_order.getString("material_id"),
work_order.getString("vehicle_type"),
null,
TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1,
TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1,
FJCallEmptyTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),

View File

@@ -42,7 +42,7 @@ public class HLCallEmptyTask extends AbstractAcsTask {
JSONObject work_order = form.getJSONObject("workorder");
int priority = 1;
if (ObjectUtil.isNotEmpty(work_order)) {
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
}
JSONObject task = TaskUtils.buildTask(

View File

@@ -43,7 +43,7 @@ public class YZCallEmptyTask extends AbstractAcsTask {
int priority = 1;
String materialId = null;
if (ObjectUtil.isNotEmpty(workOrder)) {
priority = TrueOrFalse.trueOrFalse(workOrder.getString("is_urgent")) ? 2 : 1;
priority = TrueOrFalse.trueOrFalse(workOrder.getString("is_urgent")) ? 100 : 1;
materialId = workOrder.getString("material_id");
}

View File

@@ -50,7 +50,7 @@ public class FJCallMaterialTask extends AbstractAcsTask {
workorder.getString("material_id"),
VehicleType.STEEL_TRAY.value(),
null,
TrueOrFalse.trueOrFalse(workorder.getString("is_urgent")) ? 50 : 1,
TrueOrFalse.trueOrFalse(workorder.getString("is_urgent")) ? 100 : 1,
FJCallMaterialTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),
@@ -60,7 +60,7 @@ public class FJCallMaterialTask extends AbstractAcsTask {
JSONObject point1 = WQL
.getWO("CALL_MATERIAL_TASK")
.addParam("flag", "3")
.addParam("flag", "2")
.addParam("material_id", task.getString("material_id"))
.process()
.uniqueResult(0);
@@ -186,6 +186,7 @@ public class FJCallMaterialTask extends AbstractAcsTask {
point1.put("task_code", "");
point1.put("vehicle_type", "");
point1.put("vehicle_code", "");
point1.put("vd_id", null);
point1.put("point_status", PointStatus.EMPTY.value());
if (operation_type == OperationType.AUTO) {
TaskUtils.addACSUpdateColum(point1);
@@ -203,6 +204,7 @@ public class FJCallMaterialTask extends AbstractAcsTask {
point2.put("task_code", "");
point2.put("vehicle_type", task.getString("vehicle_type"));
point2.put("vehicle_code", task.getString("vehicle_code"));
point2.put("vd_id", task.getString("group_id"));
point2.put("point_status", PointStatus.HAS_GOODS.value());
if (operation_type == OperationType.AUTO) {
TaskUtils.addACSUpdateColum(point2);

View File

@@ -52,7 +52,7 @@ public class YZCallMaterialTask extends AbstractAcsTask {
workorder.getString("material_id"),
VehicleType.CUP.value(),
null,
TrueOrFalse.trueOrFalse(workorder.getString("is_urgent")) ? 50 : 1,
TrueOrFalse.trueOrFalse(workorder.getString("is_urgent")) ? 100 : 1,
YZCallMaterialTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),

View File

@@ -55,6 +55,8 @@
AND p.region_code = 'YQHJ'
AND p.point_type = '1'
AND p.point_status = '3'
AND p.vehicle_type = '2'
AND p.vd_id IS NOT NULL
ORDER BY
wo.is_urgent DESC,
vd.create_time ASC
@@ -65,14 +67,23 @@
IF 输入.flag = "2"
QUERY
SELECT
*
p.*
FROM
sch_base_point
sch_base_point p
LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id
LEFT JOIN pdm_bd_workorder wo ON vd.workorder_id = wo.workorder_id
WHERE
is_used = '1'
AND lock_type = '1'
AND region_code = 'SZ'
AND point_type = '1'
p.is_used = '1'
AND p.lock_type = '1'
AND p.region_code = 'YHHJ'
AND p.point_type = '1'
AND p.point_status = '3'
AND p.vehicle_type = '2'
AND vd.material_id = 输入.material_id
ORDER BY
wo.is_pri DESC,
wo.is_urgent DESC,
vd.create_time ASC
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -42,7 +42,7 @@ public class FJSendEmptyTask extends AbstractAcsTask {
JSONObject work_order = form.getJSONObject("workorder");
int priority = 1;
if (ObjectUtil.isNotEmpty(work_order)) {
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
}
JSONObject task = TaskUtils.buildTask(

View File

@@ -41,7 +41,7 @@ public class YZSendEmptyTask extends AbstractAcsTask {
JSONObject work_order = form.getJSONObject("workorder");
int priority = 1;
if (ObjectUtil.isNotEmpty(work_order)) {
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
}
if (Region.KLHJ.value().equals(point.getString("region_code"))) {
priority++;

View File

@@ -1,311 +0,0 @@
package org.nl.wms.sch.task.send.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.sch.manage.*;
import org.nl.wms.sch.task.util.TaskUtils;
import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
*/
@RequiredArgsConstructor
@Component
public class FJSendMaterialTask 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 = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
JSONObject vd = form.getJSONObject("vd");
JSONObject material_task = TaskUtils.buildTask(
"分拣区送料",
TaskType.SEND_MATERIAL.value(),
TaskStatus.SURE_START.value(),
point.getString("point_code"),
null,
vd.getLong("vd_id"),
vd.getString("material_id"),
vd.getString("vehicle_type"),
vd.getString("vehicle_code"),
priority,
FJSendMaterialTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),
form.getString("create_id"),
form.getString("create_name")
);
if (TrueOrFalse.trueOrFalse(vd.getString("is_full"))) {
JSONObject empty_task = TaskUtils.buildTask(
"分拣区叫空",
TaskType.CALL_EMPTY.value(),
TaskStatus.SURE_END.value(),
null,
point.getString("point_code"),
null,
null,
work_order.getString("vehicle_type"),
null,
priority,
FJSendMaterialTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),
form.getString("create_id"),
form.getString("create_name")
);
empty_task.put("task_group_id", material_task.getLongValue("task_id"));
WQLObject.getWQLObject("sch_base_task").insert(empty_task);
}
WQLObject.getWQLObject("sch_base_task").insert(material_task);
point.put("lock_type", LockType.TASK_LOCKED.value());
point.put("task_code", material_task.getString("task_code"));
TaskUtils.addFormUpdateColum(point, form);
WQLObject.getWQLObject("sch_base_point").update(point);
return material_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 = '" + FJSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC")
.getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(tasks)) {
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
WQLObject vd_table = WQLObject.getWQLObject("st_ivt_vehicle_detail");
for (int i = 0; i < tasks.size(); i++) {
JSONObject material_task = tasks.getJSONObject(i);
JSONObject vd = vd_table
.query("is_delete = '0' AND vehicle_type = '" + material_task.getString("vehicle_type") + "' AND vehicle_code = '" + material_task.getString("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(vd)) {
JSONObject send_point = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "2")
.addParam("is_full", vd.getString("is_full"))
.process()
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(send_point)) {
material_task.put("task_status", TaskStatus.START_AND_END.value());
material_task.put("point_code2", send_point.getString("point_code"));
material_task.put("remark", "");
TaskUtils.addAutoUpdateColum(material_task);
send_point.put("lock_type", LockType.TASK_LOCKED.value());
send_point.put("task_code", material_task.getString("task_code"));
TaskUtils.addAutoUpdateColum(send_point);
JSONObject empty_task = task_table
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_END.value() + "' AND handle_class = '" + FJSendMaterialTask.class.getName() + "' AND task_group_id = " + material_task.getLongValue("task_id"))
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(empty_task)) {
JSONObject fmj_point = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "3")
.addParam("vehicle_type", empty_task.getString("vehicle_type"))
.process()
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(fmj_point)) {
empty_task.put("task_status", TaskStatus.START_AND_END.value());
empty_task.put("point_code1", fmj_point.getString("device_code"));
empty_task.put("vehicle_code", TaskUtils.formatVehicleCode(fmj_point.getString("vehicle_code")));
empty_task.put("remark", "");
TaskUtils.addAutoUpdateColum(empty_task);
JSONObject update_point = new JSONObject();
update_point.put("lock_type", LockType.TASK_LOCKED.value());
update_point.put("task_code", empty_task.getString("task_code"));
TaskUtils.addAutoUpdateColum(update_point);
task_table.update(material_task);
point_table.update(send_point);
task_table.update(empty_task);
point_table.update(update_point, "point_code = '" + fmj_point.getString("device_code") + "'");
}
} else {
task_table.update(material_task);
point_table.update(send_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 + "'");
}
String data_id = task.getString("table_fk_id");
if (TaskType.SEND_MATERIAL.value().equals(task.getString("task_type"))
&& StrUtil.isNotBlank(data_id)) {
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + data_id);
}
}
}
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", "");
if (TaskType.CALL_EMPTY.value().equals(task.getString("task_type"))) {
point2.put("vehicle_type", task.getString("vehicle_type"));
point2.put("vehicle_code", task.getString("vehicle_code"));
point2.put("point_status", PointStatus.HAS_GOODS.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") + "'");
}
if (TaskType.SEND_MATERIAL.value().equals(task.getString("task_type"))) {
JSONObject workorder = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "7")
.addParam("vd_id", task.getString("group_id"))
.process()
.uniqueResult(0);
JSONObject workorder_update = new JSONObject();
workorder_update.put("real_qty", workorder.getIntValue("real_qty") + workorder.getIntValue("qty"));
workorder_update.put("qualified_qty", workorder.getIntValue("qualified_qty") + workorder.getIntValue("qty"));
TaskUtils.addACSUpdateColum(workorder_update);
WQLObject.getWQLObject("pdm_bd_workorder").update(workorder_update, "workorder_id = " + workorder.getString("workorder_id"));
}
}
}
}

View File

@@ -8,6 +8,7 @@ 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.sch.manage.*;
import org.nl.wms.sch.task.util.TaskUtils;
import org.springframework.stereotype.Component;
@@ -38,9 +39,10 @@ public class GZSendMaterialTask extends AbstractAcsTask {
public String createTask(JSONObject form) {
JSONObject point = form.getJSONObject("point");
JSONObject vd = form.getJSONObject("vd");
JSONObject workOrder = form.getJSONObject("workorder");
JSONObject task = TaskUtils.buildTask(
"烧制区送料",
"干燥区送料",
TaskType.SEND_MATERIAL.value(),
TaskStatus.SURE_START.value(),
point.getString("point_code"),
@@ -49,7 +51,7 @@ public class GZSendMaterialTask extends AbstractAcsTask {
vd.getString("material_id"),
vd.getString("vehicle_type"),
vd.getString("vehicle_code"),
1,
TrueOrFalse.trueOrFalse(workOrder.getString("is_urgent")) ? 100 : 1,
GZSendMaterialTask.class.getName(),
form.getString("create_mode"),
form.getString("request_param"),
@@ -81,7 +83,7 @@ public class GZSendMaterialTask extends AbstractAcsTask {
JSONObject point = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "1")
.addParam("flag", "2")
.process()
.uniqueResult(0);
@@ -211,6 +213,7 @@ public class GZSendMaterialTask extends AbstractAcsTask {
point2.put("task_code", "");
point2.put("vehicle_type", task.getString("vehicle_type"));
point2.put("vehicle_code", task.getString("vehicle_code"));
point2.put("vd_id", task.getLongValue("group_id"));
point2.put("point_status", PointStatus.HAS_GOODS.value());
if (operation_type == OperationType.AUTO) {
TaskUtils.addACSUpdateColum(point2);

View File

@@ -41,7 +41,7 @@ public class HLSendMaterialTask extends AbstractAcsTask {
public String createTask(JSONObject form) {
JSONObject point = form.getJSONObject("point");
JSONObject work_order = form.getJSONObject("workorder");
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
JSONObject vd = form.getJSONObject("vd");
JSONObject task = TaskUtils.buildTask(
@@ -65,6 +65,9 @@ public class HLSendMaterialTask extends AbstractAcsTask {
point.put("lock_type", LockType.TASK_LOCKED.value());
point.put("task_code", task.getString("task_code"));
point.put("vehicle_type", vd.getLongValue("vehicle_type"));
point.put("vehicle_code", vd.getLongValue("vehicle_code"));
point.put("vd_id", vd.getLongValue("vd_id"));
TaskUtils.addFormUpdateColum(point, form);
WQLObject.getWQLObject("sch_base_point").update(point);
@@ -85,40 +88,42 @@ public class HLSendMaterialTask extends AbstractAcsTask {
for (int i = 0; i < tasks.size(); i++) {
JSONObject task = tasks.getJSONObject(i);
JSONObject point1 = point_table.query("point_code = '" + task.getString("point_code1") + "'").uniqueResult(0);
JSONObject point2 = null;
JSONObject workorder = WQL.getWO("SEND_MATERIAL_TASK").addParam("flag", "8").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(point1)
&& "2".equals(point1.getString("point_type"))
&& ObjectUtil.isNotEmpty(workorder)
&& "1".equals(workorder.getString("is_new"))) {
point2 = WQL
.getWO("SEND_MATERIAL_TASK")
JSONObject startPoint = point_table.query("point_code = '" + task.getString("point_code1") + "'").uniqueResult(0);
JSONObject nextPoint = null;
// 如果是高速混料机下料位就只能去液压机困料货位,如果不是高速混料机下料位优先去普通压机困料货位,普通压机困料货位没有位置再去公用困料货位。
String startPointType = startPoint.getString("point_type");
if ("1".equals(startPointType)) {
nextPoint = WQL.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "3")
.addParam("material_id", task.getString("material_id"))
.process()
.uniqueResult(0);
} else if ("2".equals(startPointType)) {
nextPoint = WQL.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "4")
.addParam("material_id", task.getString("material_id"))
.process()
.uniqueResult(0);
if (ObjectUtil.isEmpty(nextPoint)) {
nextPoint = WQL.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "5")
.process()
.uniqueResult(0);
}
}
if (ObjectUtil.isEmpty(point2)) {
point2 = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "5")
.process()
.uniqueResult(0);
}
if (ObjectUtil.isNotEmpty(point2)) {
if (ObjectUtil.isNotEmpty(nextPoint)) {
task.put("task_status", TaskStatus.START_AND_END.value());
task.put("point_code2", point2.getString("point_code"));
task.put("point_code2", nextPoint.getString("point_code"));
task.put("remark", "");
TaskUtils.addAutoUpdateColum(task);
task_table.update(task);
point2.put("lock_type", LockType.TASK_LOCKED.value());
point2.put("task_code", task.getString("task_code"));
TaskUtils.addAutoUpdateColum(point2);
point_table.update(point2);
nextPoint.put("lock_type", LockType.TASK_LOCKED.value());
nextPoint.put("task_code", task.getString("task_code"));
TaskUtils.addAutoUpdateColum(nextPoint);
point_table.update(nextPoint);
}
}
}
@@ -228,6 +233,7 @@ public class HLSendMaterialTask extends AbstractAcsTask {
point1.put("task_code", "");
point1.put("vehicle_type", "");
point1.put("vehicle_code", "");
point1.put("vd_id", null);
point1.put("point_status", PointStatus.EMPTY.value());
if (operation_type == OperationType.AUTO) {
TaskUtils.addACSUpdateColum(point1);
@@ -245,6 +251,7 @@ public class HLSendMaterialTask extends AbstractAcsTask {
point2.put("task_code", "");
point2.put("vehicle_type", task.getString("vehicle_type"));
point2.put("vehicle_code", task.getString("vehicle_code"));
point2.put("vd_id", task.getString("group_id"));
point2.put("point_status", PointStatus.HAS_GOODS.value());
if (operation_type == OperationType.AUTO) {
TaskUtils.addACSUpdateColum(point2);
@@ -253,18 +260,6 @@ public class HLSendMaterialTask extends AbstractAcsTask {
}
point_table.update(point2, "point_code = '" + point_code2 + "'");
}
JSONObject workorder = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "7")
.addParam("vd_id", task.getString("group_id"))
.process()
.uniqueResult(0);
JSONObject workorder_update = new JSONObject();
workorder_update.put("real_qty", workorder.getIntValue("real_qty") + workorder.getIntValue("weight"));
TaskUtils.addACSUpdateColum(workorder_update);
WQLObject.getWQLObject("pdm_bd_workorder").update(workorder_update, "workorder_id = " + workorder.getString("workorder_id"));
}
}
}

View File

@@ -39,7 +39,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
public String createTask(JSONObject form) {
JSONObject point = form.getJSONObject("point");
JSONObject work_order = form.getJSONObject("workorder");
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 2 : 1;
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
JSONObject vd = form.getJSONObject("vd");
JSONObject task = TaskUtils.buildTask(

View File

@@ -14,10 +14,7 @@
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.is_full TYPEAS s_string
输入.vehicle_type TYPEAS s_string
输入.material_id TYPEAS s_string
输入.vd_id TYPEAS s_string
输入.material_id TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -66,16 +63,9 @@
WHERE
is_used = '1'
AND lock_type = '1'
AND point_status = '0'
OPTION 输入.is_full = "1"
region_code = 'FJ'
AND point_type = '5'
ENDOPTION
OPTION 输入.is_full = "0"
region_code = 'BTHC'
AND point_type = '1'
AND point_status = '0'
ENDOPTION
AND point_status = '1'
AND region_code = 'YHHJ'
AND point_type = '1'
ENDSELECT
ENDQUERY
ENDIF
@@ -83,19 +73,18 @@
IF 输入.flag = "3"
QUERY
SELECT
tpw.*
p.*
FROM
sch_base_point tpw
LEFT JOIN sch_base_point djw ON tpw.device_code = djw.point_code
sch_base_point p
LEFT JOIN pdm_bi_device d ON p.device_code = d.device_code
LEFT JOIN pdm_bd_workorder wo ON d.device_id = wo.device_id AND wo.order_status = '3'
WHERE
tpw.is_used = '1'
AND djw.is_used = '1'
AND tpw.region_code = 'FJ'
AND djw.region_code = 'FJ'
AND tpw.point_type = '4'
AND djw.point_type = '3'
AND djw.lock_type = '1'
AND tpw.vehicle_type = 输入.vehicle_type
p.is_used = '1'
AND p.lock_type = '1'
AND p.point_status = '1'
AND p.region_code = 'KLHJ'
AND p.point_type = '2'
AND wo.material_id = 输入.material_id
ENDSELECT
ENDQUERY
ENDIF
@@ -103,19 +92,18 @@
IF 输入.flag = "4"
QUERY
SELECT
point.*
p.*
FROM
sch_base_point point
JOIN pdm_bi_device device ON point.device_code = device.device_code
LEFT JOIN pdm_bd_workorder workorder ON device.device_id = workorder.device_id AND workorder.order_status = '3'
LEFT JOIN md_me_materialbase mb1 ON workorder.material_id = mb1.material_id AND mb1.material_type = '1'
sch_base_point p
LEFT JOIN pdm_bi_device d ON p.device_code = d.device_code
LEFT JOIN pdm_bd_workorder wo ON d.device_id = wo.device_id AND wo.order_status = '3'
WHERE
point.is_used = '1'
AND point.lock_type = '1'
AND point.region_code = 'KLHJ'
AND point.point_type = '2'
AND point.point_status = '0'
AND mb1.material_id = 输入.material_id
p.is_used = '1'
AND p.lock_type = '1'
AND p.point_status = '1'
AND p.region_code = 'KLHJ'
AND p.point_type = '3'
AND wo.material_id = 输入.material_id
ENDSELECT
ENDQUERY
ENDIF
@@ -123,59 +111,15 @@
IF 输入.flag = "5"
QUERY
SELECT
*
*
FROM
sch_base_point
sch_base_point
WHERE
is_used = '1'
AND lock_type = '1'
AND region_code = 'KLHJ'
AND point_type = '1'
AND point_status = '0'
is_used = '1'
AND lock_type = '1'
AND point_status = '1'
AND region_code = 'KLHJ'
AND point_type = '1'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "6"
QUERY
SELECT
workorder.*,
vd.weight
FROM
pdm_bd_workorder workorder
LEFT JOIN st_ivt_vehicle_detail vd ON workorder.workorder_id = vd.workorder_id
WHERE
vd.vd_id = 输入.vd_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "7"
QUERY
SELECT
vd.weight,
vd.qty,
workorder.workorder_id,
workorder.real_qty,
workorder.qualified_qty
FROM
st_ivt_vehicle_detail vd
LEFT JOIN pdm_bd_workorder workorder ON vd.workorder_id = workorder.workorder_id
WHERE
vd.vd_id = 输入.vd_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
workorder.*
FROM
st_ivt_vehicle_detail vd
LEFT JOIN pdm_bd_workorder workorder ON vd.workorder_id = workorder.workorder_id
WHERE
vd.vd_id = 输入.vd_id
ENDSELECT
ENDQUERY
ENDQUER
ENDIF

View File

@@ -41,7 +41,7 @@ public class FJToPackageTask extends AbstractAcsTask {
public String createTask(JSONObject form) {
JSONObject point = form.getJSONObject("point");
JSONObject work_order = form.getJSONObject("workorder");
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
JSONObject vd = form.getJSONObject("vd");
JSONObject task = TaskUtils.buildTask(

View File

@@ -22,14 +22,22 @@ public class PointTest {
JSONObject point = new JSONObject();
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
String now = DateUtil.now();
for (int i = 1; i <= 24; i++) {
for (int i = 1; i <= 18; i++) {
point.put("point_id", IdUtil.getSnowflake(1L, 1L).nextId());
point.put("point_code", "YHHW" + String.format("%02d", i));
point.put("point_name", "窑后货位" + i);
point.put("region_id", 1695713466955993088L);
point.put("region_code", "YHHJ");
point.put("region_name", "窑后货架");
point.put("point_type", "1");
point.put("point_code", "KLHW" + String.format("%02d", i));
if (i <= 6) {
point.put("point_name", "压机" + i + "困料货位");
point.put("point_type", "3");
} else if (i <= 10) {
point.put("point_name", "液压机困料货位" + i);
point.put("point_type", "2");
} else {
point.put("point_name", "公用困料货位" + i);
point.put("point_type", "1");
}
point.put("region_id", 1695713307387891712L);
point.put("region_code", "KLHJ");
point.put("region_name", "困料货架");
point.put("lock_type", "1");
point.put("create_id", 1);
point.put("create_name", "管理员");