Browse Source

更新任务状态变化逻辑

master
张江玮 2 years ago
parent
commit
6131d1fa12
  1. 2
      acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java
  2. 2
      acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java
  3. 2
      lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql
  4. 120
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallEmptyVehicleTask.java
  5. 127
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java
  6. 116
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendEmptyVehicleTask.java
  7. 125
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendFullVehicleTask.java
  8. 117
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendResiduesMaterialTask.java
  9. 2
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/TaskOperationType.java
  10. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java
  11. 2
      lms/nladmin-system/src/main/resources/config/application-dev.yml
  12. 2
      lms/nladmin-system/src/main/resources/config/application.yml

2
acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java

@ -166,7 +166,7 @@ public class TaskFeedbackServiceImpl implements TaskFeedbackService {
TaskFeedbackDto dto = this.findById(id); TaskFeedbackDto dto = this.findById(id);
TaskDto entity = taskService.findById(dto.getTask_id()); TaskDto entity = taskService.findById(dto.getTask_id());
JSONObject feed_jo = new JSONObject(); JSONObject feed_jo = new JSONObject();
feed_jo.put("ext_task_id", entity.getTask_id()); feed_jo.put("task_id", entity.getTask_id());
feed_jo.put("task_code", entity.getTask_code()); feed_jo.put("task_code", entity.getTask_code());
feed_jo.put("task_status", entity.getTask_status()); feed_jo.put("task_status", entity.getTask_status());
JSONArray ja = new JSONArray(); JSONArray ja = new JSONArray();

2
acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

@ -542,7 +542,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
TaskFeedbackDto feefbackdto = taskFeedbackService.findByCode(entity.getTask_code()); TaskFeedbackDto feefbackdto = taskFeedbackService.findByCode(entity.getTask_code());
JSONObject feed_jo = new JSONObject(); JSONObject feed_jo = new JSONObject();
feed_jo.put("ext_task_id", entity.getTask_id()); feed_jo.put("task_id", entity.getTask_id());
feed_jo.put("task_code", dto.getTask_code()); feed_jo.put("task_code", dto.getTask_code());
feed_jo.put("task_status", dto.getTask_status()); feed_jo.put("task_status", dto.getTask_status());
JSONArray ja = new JSONArray(); JSONArray ja = new JSONArray();

2
lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql

@ -63,7 +63,7 @@
sch_base_point sch_base_point
WHERE WHERE
is_used = '1' is_used = '1'
AND lock_type = '1' AND is_delete = '0'
OPTION 输入.region_id <> "" OPTION 输入.region_id <> ""
region_id = 输入.region_id region_id = 输入.region_id
ENDOPTION ENDOPTION

120
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallEmptyVehicleTask.java

@ -1,6 +1,5 @@
package org.nl.wms.sch.task; package org.nl.wms.sch.task;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -12,8 +11,6 @@ import org.nl.modules.common.exception.BadRequestException;
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.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.base.point.LockType; import org.nl.wms.sch.base.point.LockType;
import org.nl.wms.sch.base.point.PointStatus; import org.nl.wms.sch.base.point.PointStatus;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AbstractAcsTask;
@ -24,7 +21,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 纽迪希亚3叫空载具任务 * 纽迪希亚3叫空载具任务
@ -68,17 +64,17 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, "0")) {
this.cancel(task.getString("task_id")); this.cancelTask(task, TaskOperationType.AUTO);
} }
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) {
task.put("task", TaskStatus.EXECUTING.getCode()); task.put("task_status", TaskStatus.EXECUTING.getCode());
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
taskTable.update(task); taskTable.update(task);
} }
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) {
this.finishTask(task, TaskFinishedType.AUTO); this.finishTask(task, TaskOperationType.AUTO);
} }
} }
@ -134,7 +130,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
this.finishTask(task, TaskFinishedType.MANUAL); this.finishTask(task, TaskOperationType.MANUAL);
} }
/** /**
@ -145,48 +141,15 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void cancel(String taskId) { public void cancel(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); JSONObject task = WQLObject
JSONObject task = taskTable .getWQLObject("sch_base_task")
.query("task_id = " + taskId) .query("task_id = " + taskId)
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
if (StrUtil.equals(task.getString("task_status"), TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("已完成的任务不能取消");
}
if (StrUtil.equals(task.getString("task_status"), TaskStatus.ISSUE.getCode())) {
JSONArray cancelTaskArr = new JSONArray();
cancelTaskArr.add(task);
Map<String, Object> acsResult = SpringContextHolder.getBean(WmsToAcsService.class).cancelToAcs(cancelTaskArr);
if (!MapUtil.getStr(acsResult, "status").equals("200")) {
throw new BadRequestException(MapUtil.getStr(acsResult, "message"));
}
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2"); this.cancelTask(task, TaskOperationType.MANUAL);
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
}
} }
/** /**
@ -224,19 +187,28 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { public void finishTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status"); String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成"); throw new BadRequestException("该任务已完成");
} }
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())
&& taskFinishedType.equals(TaskFinishedType.MANUAL)) { if (taskOperationType == TaskOperationType.MANUAL) {
if (Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发的任务需要从ACS完成");
}
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成"); throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
} }
}
task.put("finished_type", taskFinishedType.getCode()); task.put("finished_type", taskOperationType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode()); task.put("task_status", TaskStatus.FINISHED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
} else {
CommonUtils.addUpdateColum(task);
}
WQLObject.getWQLObject("sch_base_task").update(task); WQLObject.getWQLObject("sch_base_task").update(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
@ -250,13 +222,65 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); nextPoint.put("vehicle_code", startPoint.getString("vehicle_code"));
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint); CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint); pointTable.update(nextPoint);
startPoint.put("point_status", PointStatus.EMPTY.getCode()); startPoint.put("point_status", PointStatus.EMPTY.getCode());
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); startPoint.put("lock_type", LockType.UNLOCKED.getCode());
startPoint.put("vehicle_code", ""); startPoint.put("vehicle_code", "");
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint); CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint);
}
@Transactional(rollbackFor = Exception.class)
public void cancelTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成");
}
if (taskOperationType == TaskOperationType.MANUAL
&& Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发任务需要从ACS取消");
}
WQLObject.getWQLObject("sch_base_task").delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint); pointTable.update(startPoint);
} }
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint);
}
}
} }

127
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java

@ -1,18 +1,14 @@
package org.nl.wms.sch.task; package org.nl.wms.sch.task;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
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.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.base.point.LockType; import org.nl.wms.sch.base.point.LockType;
import org.nl.wms.sch.base.point.PointStatus; import org.nl.wms.sch.base.point.PointStatus;
import org.nl.wms.sch.base.point.PointType; import org.nl.wms.sch.base.point.PointType;
@ -24,7 +20,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 纽迪希亚3呼叫原料出库任务 * 纽迪希亚3呼叫原料出库任务
@ -70,17 +65,17 @@ public class CallMaterialTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, "0")) {
this.cancel(task.getString("task_id")); this.cancelTask(task, TaskOperationType.AUTO);
} }
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) {
task.put("task", TaskStatus.EXECUTING.getCode()); task.put("task_status", TaskStatus.EXECUTING.getCode());
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
taskTable.update(task); taskTable.update(task);
} }
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) {
this.finishTask(task, TaskFinishedType.AUTO); this.finishTask(task, TaskOperationType.AUTO);
} }
} }
@ -147,7 +142,7 @@ public class CallMaterialTask extends AbstractAcsTask {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
this.finishTask(task, TaskFinishedType.MANUAL); this.finishTask(task, TaskOperationType.MANUAL);
} }
/** /**
@ -157,64 +152,40 @@ public class CallMaterialTask extends AbstractAcsTask {
*/ */
@Override @Override
public void cancel(String taskId) { public void cancel(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); JSONObject task = WQLObject
JSONObject task = taskTable .getWQLObject("sch_base_task")
.query("task_id = " + taskId) .query("task_id = " + taskId)
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
if (StrUtil.equals(task.getString("task_status"), TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("已完成的任务不能取消");
}
if (StrUtil.equals(task.getString("task_status"), TaskStatus.ISSUE.getCode())) {
JSONArray cancelTaskArr = new JSONArray();
cancelTaskArr.add(task);
Map<String, Object> acsResult = SpringContextHolder.getBean(WmsToAcsService.class).cancelToAcs(cancelTaskArr);
if (!MapUtil.getStr(acsResult, "status").equals("200")) {
throw new BadRequestException(MapUtil.getStr(acsResult, "message"));
}
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2"); this.cancelTask(task, TaskOperationType.MANUAL);
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
}
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { public void finishTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status"); String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成"); throw new BadRequestException("该任务已完成");
} }
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())
&& taskFinishedType.equals(TaskFinishedType.MANUAL)) { if (taskOperationType == TaskOperationType.MANUAL) {
if (Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发的任务需要从ACS完成");
}
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成"); throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
} }
}
task.put("finished_type", taskFinishedType.getCode()); task.put("finished_type", taskOperationType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode()); task.put("task_status", TaskStatus.FINISHED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
} else {
CommonUtils.addUpdateColum(task);
}
WQLObject.getWQLObject("sch_base_task").update(task); WQLObject.getWQLObject("sch_base_task").update(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
@ -226,24 +197,72 @@ public class CallMaterialTask extends AbstractAcsTask {
.uniqueResult(0); .uniqueResult(0);
if (StrUtil.equals(startPoint.getString("point_type"), PointType.STORAGE_LOCATION.getCode())) { if (StrUtil.equals(startPoint.getString("point_type"), PointType.STORAGE_LOCATION.getCode())) {
JSONObject vehicle = WQLObject
.getWQLObject("md_pb_vehicle")
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0);
WQLObject.getWQLObject("st_ivt_structivt").delete("point_id = " + startPoint.getString("point_id")); WQLObject.getWQLObject("st_ivt_structivt").delete("point_id = " + startPoint.getString("point_id"));
} }
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); nextPoint.put("vehicle_code", startPoint.getString("vehicle_code"));
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint); CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint); pointTable.update(nextPoint);
startPoint.put("point_status", PointStatus.EMPTY.getCode()); startPoint.put("point_status", PointStatus.EMPTY.getCode());
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); startPoint.put("lock_type", LockType.UNLOCKED.getCode());
startPoint.put("vehicle_code", ""); startPoint.put("vehicle_code", "");
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint); CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint); pointTable.update(startPoint);
} }
@Transactional(rollbackFor = Exception.class)
public void cancelTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成");
}
if (taskOperationType == TaskOperationType.MANUAL
&& Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发任务需要从ACS取消");
}
WQLObject.getWQLObject("sch_base_task").delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint);
}
}
} }

116
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendEmptyVehicleTask.java

@ -69,17 +69,17 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, "0")) {
this.cancel(task.getString("task_id")); this.cancelTask(task, TaskOperationType.AUTO);
} }
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) {
task.put("task", TaskStatus.EXECUTING.getCode()); task.put("task_status", TaskStatus.EXECUTING.getCode());
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
taskTable.update(task); taskTable.update(task);
} }
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) {
this.finishTask(task, TaskFinishedType.AUTO); this.finishTask(task, TaskOperationType.AUTO);
} }
} }
@ -136,7 +136,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
this.finishTask(task, TaskFinishedType.MANUAL); this.finishTask(task, TaskOperationType.MANUAL);
} }
/** /**
@ -147,48 +147,15 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void cancel(String taskId) { public void cancel(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); JSONObject task = WQLObject
JSONObject task = taskTable .getWQLObject("sch_base_task")
.query("task_id = " + taskId) .query("task_id = " + taskId)
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
if (StrUtil.equals(task.getString("task_status"), TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("已完成的任务不能取消");
}
if (StrUtil.equals(task.getString("task_status"), TaskStatus.ISSUE.getCode())) {
JSONArray cancelTaskArr = new JSONArray();
cancelTaskArr.add(task);
Map<String, Object> acsResult = SpringContextHolder.getBean(WmsToAcsService.class).cancelToAcs(cancelTaskArr);
if (!MapUtil.getStr(acsResult, "status").equals("200")) {
throw new BadRequestException(MapUtil.getStr(acsResult, "message"));
}
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2"); this.cancelTask(task, TaskOperationType.MANUAL);
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
}
} }
/** /**
@ -228,19 +195,28 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { public void finishTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status"); String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成"); throw new BadRequestException("该任务已完成");
} }
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())
&& taskFinishedType.equals(TaskFinishedType.MANUAL)) { if (taskOperationType == TaskOperationType.MANUAL) {
if (Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发的任务需要从ACS完成");
}
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成"); throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
} }
}
task.put("finished_type", taskFinishedType.getCode()); task.put("finished_type", taskOperationType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode()); task.put("task_status", TaskStatus.FINISHED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
} else {
CommonUtils.addUpdateColum(task);
}
WQLObject.getWQLObject("sch_base_task").update(task); WQLObject.getWQLObject("sch_base_task").update(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
@ -254,13 +230,65 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); nextPoint.put("vehicle_code", startPoint.getString("vehicle_code"));
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint); CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint); pointTable.update(nextPoint);
startPoint.put("point_status", PointStatus.EMPTY.getCode()); startPoint.put("point_status", PointStatus.EMPTY.getCode());
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); startPoint.put("lock_type", LockType.UNLOCKED.getCode());
startPoint.put("vehicle_code", ""); startPoint.put("vehicle_code", "");
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint); CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint);
}
@Transactional(rollbackFor = Exception.class)
public void cancelTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成");
}
if (taskOperationType == TaskOperationType.MANUAL
&& Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发任务需要从ACS取消");
}
WQLObject.getWQLObject("sch_base_task").delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint); pointTable.update(startPoint);
} }
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint);
}
}
} }

125
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendFullVehicleTask.java

@ -1,6 +1,5 @@
package org.nl.wms.sch.task; package org.nl.wms.sch.task;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -12,8 +11,7 @@ import org.nl.modules.common.exception.BadRequestException;
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.modules.wql.util.SpringContextHolder; import org.nl.wms.md.pb.VehicleStatus;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.base.point.LockType; import org.nl.wms.sch.base.point.LockType;
import org.nl.wms.sch.base.point.PointStatus; import org.nl.wms.sch.base.point.PointStatus;
import org.nl.wms.sch.base.point.PointType; import org.nl.wms.sch.base.point.PointType;
@ -25,7 +23,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 纽迪希亚3送满料车任务 * 纽迪希亚3送满料车任务
@ -70,23 +67,22 @@ public class SendFullVehicleTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, "0")) {
this.cancel(task.getString("task_id")); this.cancelTask(task, TaskOperationType.AUTO);
} }
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) {
task.put("task", TaskStatus.EXECUTING.getCode()); task.put("task_status", TaskStatus.EXECUTING.getCode());
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
taskTable.update(task); taskTable.update(task);
} }
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) {
this.finishTask(task, TaskFinishedType.AUTO); this.finishTask(task, TaskOperationType.AUTO);
} }
} }
/** /**
* @param param 创建任务需要的参数 * @param param 创建任务需要的参数
*
* @return 返回任务标识 * @return 返回任务标识
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -137,7 +133,7 @@ public class SendFullVehicleTask extends AbstractAcsTask {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
this.finishTask(task, TaskFinishedType.MANUAL); this.finishTask(task, TaskOperationType.MANUAL);
} }
/** /**
@ -148,52 +144,18 @@ public class SendFullVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void cancel(String taskId) { public void cancel(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); JSONObject task = WQLObject
JSONObject task = taskTable .getWQLObject("sch_base_task")
.query("task_id = " + taskId) .query("task_id = " + taskId)
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
if (StrUtil.equals(task.getString("task_status"), TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("已完成的任务不能取消");
}
if (StrUtil.equals(task.getString("task_status"), TaskStatus.ISSUE.getCode())) { this.cancelTask(task, TaskOperationType.MANUAL);
JSONArray cancelTaskArr = new JSONArray();
cancelTaskArr.add(task);
Map<String, Object> acsResult = SpringContextHolder.getBean(WmsToAcsService.class).cancelToAcs(cancelTaskArr);
if (!MapUtil.getStr(acsResult, "status").equals("200")) {
throw new BadRequestException(MapUtil.getStr(acsResult, "message"));
}
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
}
} }
/** /**
* @return
* @discription 确定下一点位 * @discription 确定下一点位
* @author ldjun * @author ldjun
* @created 2020年6月12日 下午6:01:06 * @created 2020年6月12日 下午6:01:06
@ -229,19 +191,28 @@ public class SendFullVehicleTask extends AbstractAcsTask {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { public void finishTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status"); String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成"); throw new BadRequestException("该任务已完成");
} }
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())
&& taskFinishedType.equals(TaskFinishedType.MANUAL)) { if (taskOperationType == TaskOperationType.MANUAL) {
if (Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发的任务需要从ACS完成");
}
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成"); throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
} }
}
task.put("finished_type", taskFinishedType.getCode()); task.put("finished_type", taskOperationType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode()); task.put("task_status", TaskStatus.FINISHED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
} else {
CommonUtils.addUpdateColum(task);
}
WQLObject.getWQLObject("sch_base_task").update(task); WQLObject.getWQLObject("sch_base_task").update(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
@ -259,6 +230,7 @@ public class SendFullVehicleTask extends AbstractAcsTask {
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'") .query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0); .uniqueResult(0);
if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.HAS_MATERIAL.getCode())) {
JSONObject vm = WQLObject JSONObject vm = WQLObject
.getWQLObject("st_ivt_vehicle_material") .getWQLObject("st_ivt_vehicle_material")
.query("vehicle_id = " + vehicle.getString("vehicle_id"), "create_time ASC") .query("vehicle_id = " + vehicle.getString("vehicle_id"), "create_time ASC")
@ -271,17 +243,70 @@ public class SendFullVehicleTask extends AbstractAcsTask {
WQLObject.getWQLObject("st_ivt_structivt").insert(ivt); WQLObject.getWQLObject("st_ivt_structivt").insert(ivt);
} }
}
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); nextPoint.put("vehicle_code", startPoint.getString("vehicle_code"));
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint); CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint); pointTable.update(nextPoint);
startPoint.put("point_status", PointStatus.EMPTY.getCode()); startPoint.put("point_status", PointStatus.EMPTY.getCode());
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); startPoint.put("lock_type", LockType.UNLOCKED.getCode());
startPoint.put("vehicle_code", ""); startPoint.put("vehicle_code", "");
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint); CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint); pointTable.update(startPoint);
} }
@Transactional(rollbackFor = Exception.class)
public void cancelTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成");
}
if (taskOperationType == TaskOperationType.MANUAL
&& Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发任务需要从ACS取消");
}
WQLObject.getWQLObject("sch_base_task").delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint);
}
}
} }

117
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/SendResiduesMaterialTask.java

@ -14,6 +14,7 @@ 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.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.md.pb.VehicleStatus;
import org.nl.wms.sch.base.point.LockType; import org.nl.wms.sch.base.point.LockType;
import org.nl.wms.sch.base.point.PointStatus; import org.nl.wms.sch.base.point.PointStatus;
import org.nl.wms.sch.base.point.PointType; import org.nl.wms.sch.base.point.PointType;
@ -74,13 +75,13 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) {
task.put("task", TaskStatus.EXECUTING.getCode()); task.put("task_status", TaskStatus.EXECUTING.getCode());
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
taskTable.update(task); taskTable.update(task);
} }
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) {
this.finishTask(task, TaskFinishedType.AUTO); this.finishTask(task, TaskOperationType.AUTO);
} }
} }
@ -137,7 +138,7 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
this.finishTask(task, TaskFinishedType.MANUAL); this.finishTask(task, TaskOperationType.MANUAL);
} }
/** /**
@ -148,48 +149,15 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void cancel(String taskId) { public void cancel(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); JSONObject task = WQLObject
JSONObject task = taskTable .getWQLObject("sch_base_task")
.query("task_id = " + taskId) .query("task_id = " + taskId)
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在"); throw new BadRequestException("该任务不存在");
} }
if (StrUtil.equals(task.getString("task_status"), TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("已完成的任务不能取消");
}
if (StrUtil.equals(task.getString("task_status"), TaskStatus.ISSUE.getCode())) {
JSONArray cancelTaskArr = new JSONArray();
cancelTaskArr.add(task);
Map<String, Object> acsResult = SpringContextHolder.getBean(WmsToAcsService.class).cancelToAcs(cancelTaskArr);
if (!MapUtil.getStr(acsResult, "status").equals("200")) {
throw new BadRequestException(MapUtil.getStr(acsResult, "message"));
}
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); this.cancelTask(task, TaskOperationType.MANUAL);
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
}
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
}
} }
/** /**
@ -229,19 +197,28 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { public void finishTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status"); String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成"); throw new BadRequestException("该任务已完成");
} }
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())
&& taskFinishedType.equals(TaskFinishedType.MANUAL)) { if (taskOperationType == TaskOperationType.MANUAL) {
if (Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发的任务需要从ACS完成");
}
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成"); throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
} }
}
task.put("finished_type", taskFinishedType.getCode()); task.put("finished_type", taskOperationType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode()); task.put("task_status", TaskStatus.FINISHED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(task); CommonUtils.addAdminUpdateColum(task);
} else {
CommonUtils.addUpdateColum(task);
}
WQLObject.getWQLObject("sch_base_task").update(task); WQLObject.getWQLObject("sch_base_task").update(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
@ -259,6 +236,7 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'") .query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0); .uniqueResult(0);
if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.HAS_MATERIAL.getCode())) {
JSONObject vm = WQLObject JSONObject vm = WQLObject
.getWQLObject("st_ivt_vehicle_material") .getWQLObject("st_ivt_vehicle_material")
.query("vehicle_id = " + vehicle.getString("vehicle_id"), "create_time ASC") .query("vehicle_id = " + vehicle.getString("vehicle_id"), "create_time ASC")
@ -271,17 +249,70 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
WQLObject.getWQLObject("st_ivt_structivt").insert(ivt); WQLObject.getWQLObject("st_ivt_structivt").insert(ivt);
} }
}
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); nextPoint.put("vehicle_code", startPoint.getString("vehicle_code"));
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint); CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint); pointTable.update(nextPoint);
startPoint.put("point_status", PointStatus.EMPTY.getCode()); startPoint.put("point_status", PointStatus.EMPTY.getCode());
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); startPoint.put("lock_type", LockType.UNLOCKED.getCode());
startPoint.put("vehicle_code", ""); startPoint.put("vehicle_code", "");
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint); CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint);
}
@Transactional(rollbackFor = Exception.class)
public void cancelTask(JSONObject task, TaskOperationType taskOperationType) {
String taskStatus = task.getString("task_status");
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成");
}
if (taskOperationType == TaskOperationType.MANUAL
&& Integer.parseInt(taskStatus) > Integer.parseInt(TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("已下发任务需要从ACS取消");
}
WQLObject.getWQLObject("sch_base_task").delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
String startPointCode = task.getString("point_code1");
if (StrUtil.isNotEmpty(startPointCode)) {
JSONObject startPoint = pointTable
.query("point_code = '" + startPointCode + "'")
.uniqueResult(0);
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(startPoint);
} else {
CommonUtils.addUpdateColum(startPoint);
}
pointTable.update(startPoint); pointTable.update(startPoint);
} }
String nextPointCode = task.getString("point_code2");
if (StrUtil.isNotEmpty(nextPointCode)) {
JSONObject nextPoint = pointTable
.query("point_code = '" + nextPointCode + "'")
.uniqueResult(0);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
if (taskOperationType == TaskOperationType.AUTO) {
CommonUtils.addAdminUpdateColum(nextPoint);
} else {
CommonUtils.addUpdateColum(nextPoint);
}
pointTable.update(nextPoint);
}
}
} }

2
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/TaskFinishedType.java → lms/nladmin-system/src/main/java/org/nl/wms/sch/task/TaskOperationType.java

@ -11,7 +11,7 @@ import lombok.Getter;
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum TaskFinishedType { public enum TaskOperationType {
AUTO("1", "自动"), AUTO("1", "自动"),
MANUAL("2", "手动"); MANUAL("2", "手动");

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java

@ -3,13 +3,9 @@ package org.nl.wms.sch.task.util;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.base.point.LockType;
import org.nl.wms.sch.base.point.PointStatus;
import org.nl.wms.sch.task.TaskFinishedType;
import org.nl.wms.sch.task.TaskStatus; import org.nl.wms.sch.task.TaskStatus;
import org.nl.wms.sch.task.dto.AcsTaskDTO; import org.nl.wms.sch.task.dto.AcsTaskDTO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

2
lms/nladmin-system/src/main/resources/config/application-dev.yml

@ -150,6 +150,8 @@ sa-token:
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
# token 前缀 # token 前缀
token-prefix: Bearer token-prefix: Bearer
is-read-body: false
is-read-cookie: false
loki: loki:
url: http://localhost:3100/loki/api/v1 url: http://localhost:3100/loki/api/v1

2
lms/nladmin-system/src/main/resources/config/application.yml

@ -2,7 +2,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: dev active: prod
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:

Loading…
Cancel
Save