|
|
@ -1,6 +1,5 @@ |
|
|
|
package org.nl.wms.sch.task; |
|
|
|
|
|
|
|
import cn.hutool.core.map.MapUtil; |
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
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.wql.WQL; |
|
|
|
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.md.pb.VehicleStatus; |
|
|
|
import org.nl.wms.sch.base.point.LockType; |
|
|
|
import org.nl.wms.sch.base.point.PointStatus; |
|
|
|
import org.nl.wms.sch.base.point.PointType; |
|
|
@ -25,7 +23,6 @@ import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
/** |
|
|
|
* 纽迪希亚3送满料车任务 |
|
|
@ -70,23 +67,22 @@ public class SendFullVehicleTask extends AbstractAcsTask { |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.equals(status, "0")) { |
|
|
|
this.cancel(task.getString("task_id")); |
|
|
|
this.cancelTask(task, TaskOperationType.AUTO); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.equals(status, TaskStatus.EXECUTING.getCode())) { |
|
|
|
task.put("task", TaskStatus.EXECUTING.getCode()); |
|
|
|
task.put("task_status", TaskStatus.EXECUTING.getCode()); |
|
|
|
CommonUtils.addAdminUpdateColum(task); |
|
|
|
taskTable.update(task); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.equals(status, TaskStatus.FINISHED.getCode())) { |
|
|
|
this.finishTask(task, TaskFinishedType.AUTO); |
|
|
|
this.finishTask(task, TaskOperationType.AUTO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param param 创建任务需要的参数 |
|
|
|
* |
|
|
|
* @return 返回任务标识 |
|
|
|
*/ |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@ -137,7 +133,7 @@ public class SendFullVehicleTask extends AbstractAcsTask { |
|
|
|
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) |
|
|
|
@Override |
|
|
|
public void cancel(String taskId) { |
|
|
|
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); |
|
|
|
JSONObject task = taskTable |
|
|
|
JSONObject task = WQLObject |
|
|
|
.getWQLObject("sch_base_task") |
|
|
|
.query("task_id = " + taskId) |
|
|
|
.uniqueResult(0); |
|
|
|
if (ObjectUtil.isEmpty(task)) { |
|
|
|
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"); |
|
|
|
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); |
|
|
|
} |
|
|
|
this.cancelTask(task, TaskOperationType.MANUAL); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return |
|
|
|
* @discription 确定下一点位 |
|
|
|
* @author ldjun |
|
|
|
* @created 2020年6月12日 下午6:01:06 |
|
|
@ -229,19 +191,28 @@ public class SendFullVehicleTask extends AbstractAcsTask { |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) { |
|
|
|
public void finishTask(JSONObject task, TaskOperationType taskOperationType) { |
|
|
|
String taskStatus = task.getString("task_status"); |
|
|
|
if (StrUtil.equals(taskStatus, TaskStatus.FINISHED.getCode())) { |
|
|
|
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("只有已确认起点和终点的任务可以手动完成"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
task.put("finished_type", taskFinishedType.getCode()); |
|
|
|
task.put("finished_type", taskOperationType.getCode()); |
|
|
|
task.put("task_status", TaskStatus.FINISHED.getCode()); |
|
|
|
if (taskOperationType == TaskOperationType.AUTO) { |
|
|
|
CommonUtils.addAdminUpdateColum(task); |
|
|
|
} else { |
|
|
|
CommonUtils.addUpdateColum(task); |
|
|
|
} |
|
|
|
WQLObject.getWQLObject("sch_base_task").update(task); |
|
|
|
|
|
|
|
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); |
|
|
@ -259,6 +230,7 @@ public class SendFullVehicleTask extends AbstractAcsTask { |
|
|
|
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'") |
|
|
|
.uniqueResult(0); |
|
|
|
|
|
|
|
if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.HAS_MATERIAL.getCode())) { |
|
|
|
JSONObject vm = WQLObject |
|
|
|
.getWQLObject("st_ivt_vehicle_material") |
|
|
|
.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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode()); |
|
|
|
nextPoint.put("lock_type", LockType.UNLOCKED.getCode()); |
|
|
|
nextPoint.put("vehicle_code", startPoint.getString("vehicle_code")); |
|
|
|
if (taskOperationType == TaskOperationType.AUTO) { |
|
|
|
CommonUtils.addAdminUpdateColum(nextPoint); |
|
|
|
} else { |
|
|
|
CommonUtils.addUpdateColum(nextPoint); |
|
|
|
} |
|
|
|
pointTable.update(nextPoint); |
|
|
|
|
|
|
|
startPoint.put("point_status", PointStatus.EMPTY.getCode()); |
|
|
|
startPoint.put("lock_type", LockType.UNLOCKED.getCode()); |
|
|
|
startPoint.put("vehicle_code", ""); |
|
|
|
if (taskOperationType == TaskOperationType.AUTO) { |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|