Version 1.1

This commit is contained in:
张江玮
2022-11-13 22:32:51 +08:00
parent 0ba4f7a410
commit a50db49d7d
24 changed files with 357 additions and 633 deletions

View File

@@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.rest;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -32,6 +33,7 @@ public class AcsToWmsController {
@PostMapping("/status")
@Log("ACS给WMS反馈任务状态")
@ApiOperation("ACS给WMS反馈任务状态")
@SaIgnore
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
@@ -39,6 +41,7 @@ public class AcsToWmsController {
@PostMapping("/orderFinish")
@Log("ACS给WMS下发工单完成状态")
@ApiOperation("ACS给WMS下发工单完成状态")
@SaIgnore
public ResponseEntity<Object> orderFinish(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK);
}
@@ -46,7 +49,8 @@ public class AcsToWmsController {
@PostMapping("/apply")
@Log("申请任务")
@ApiOperation("申请任务")
@SaCheckPermission("menu:list")
// @SaCheckPermission("menu:list")
@SaIgnore
public ResponseEntity<Object> apply(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK);
}
@@ -54,7 +58,8 @@ public class AcsToWmsController {
@PostMapping("/againApply")
@Log("二次申请任务")
@ApiOperation("二次申请任务")
@SaCheckPermission("menu:list")
// @SaCheckPermission("menu:list")
@SaIgnore
public ResponseEntity<Object> againApply(@RequestBody String task_id) {
return new ResponseEntity<>(acsToWmsService.againApply(task_id), HttpStatus.OK);
}

View File

@@ -20,11 +20,13 @@ import org.nl.wms.sch.task.CallEmptyVehicleTask;
import org.nl.wms.sch.task.CallMaterialTask;
import org.nl.wms.sch.task.SendFullVehicleTask;
import org.nl.wms.sch.task.SendResiduesMaterialTask;
import org.nl.wms.sch.task.wql.SendEmptyVehicleTask;
import org.nl.wms.sch.task.SendEmptyVehicleTask;
import org.nl.wms.util.CommonUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.concurrent.locks.Lock;
/**
* @author 张江玮
* @date 2022/11/04 18:25
@@ -60,7 +62,7 @@ public class PdaServiceImpl implements PdaService {
for (int i = 0; i < points.size(); i++) {
JSONObject point = points.getJSONObject(i);
if (StrUtil.equals(point.getString("lock_type"), LockType.TASK_LOCKED.getCode())) {
point.put("status", "3");
point.put("status", "2");
}
}
// for (Object o : points) {
@@ -78,7 +80,7 @@ public class PdaServiceImpl implements PdaService {
JSONObject point = WQLObject
.getWQLObject("sch_base_point")
.query("point_id = '" + pointId + "'")
.query("point_id = " + pointId)
.uniqueResult(0);
if (StrUtil.equals(point.getString("point_status"), PointStatus.HAS_VEHICLE.getCode())) {
@@ -93,7 +95,6 @@ public class PdaServiceImpl implements PdaService {
.getResultJSONArray(0);
result.put("detail", detail);
} else {
String vehicleCode = point.getString("vehicle_code");
result.put("vehicle_code", "");
result.put("detail", new JSONArray());
}
@@ -318,10 +319,13 @@ public class PdaServiceImpl implements PdaService {
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("该点位不存在");
}
if (StrUtil.equals(point.getString("lock_type"), LockType.TASK_LOCKED.getCode())) {
throw new BadRequestException("该点位存在任务");
}
if (StrUtil.equals(point.getString("point_status"), PointStatus.HAS_VEHICLE.getCode())) {
throw new BadRequestException("该点位上有载具");
}
if (!StrUtil.equals(point.getString("region_id"), RegionEnum.JL.getCode())) {
if (!StrUtil.equals(point.getString("region_id"), RegionEnum.JL.getId())) {
throw new BadRequestException("只有接料区可以呼叫空载具");
}
@@ -336,10 +340,13 @@ public class PdaServiceImpl implements PdaService {
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("该点位不存在");
}
if (StrUtil.equals(point.getString("lock_type"), LockType.TASK_LOCKED.getCode())) {
throw new BadRequestException("该点位存在任务");
}
if (StrUtil.equals(point.getString("point_status"), PointStatus.EMPTY.getCode())) {
throw new BadRequestException("该点位为空位");
}
if (StrUtil.equals(point.getString("region_id"), RegionEnum.ZC.getCode())) {
if (StrUtil.equals(point.getString("region_id"), RegionEnum.ZC.getId())) {
throw new BadRequestException("暂存区不能生成入库任务");
}
@@ -354,10 +361,10 @@ public class PdaServiceImpl implements PdaService {
}
if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.HAS_MATERIAL.getCode())) {
String regionId = point.getString("region_id");
if (StrUtil.equals(regionId, RegionEnum.JL.getCode())) {
if (StrUtil.equals(regionId, RegionEnum.JL.getId())) {
sendFullVehicleTask.createTask(param);
}
if (StrUtil.equals(regionId, RegionEnum.JJ.getCode())) {
if (StrUtil.equals(regionId, RegionEnum.JJ.getId())) {
sendResiduesMaterialTask.createTask(param);
}
}
@@ -370,6 +377,9 @@ public class PdaServiceImpl implements PdaService {
if (ObjectUtil.isEmpty(startPoint)) {
throw new BadRequestException("起点不存在");
}
if (StrUtil.equals(startPoint.getString("lock_type"), LockType.TASK_LOCKED.getCode())) {
throw new BadRequestException("起点存在任务");
}
if (StrUtil.equals(startPoint.getString("point_status"), PointStatus.EMPTY.getCode())) {
throw new BadRequestException("起点为空位");
}
@@ -389,10 +399,13 @@ public class PdaServiceImpl implements PdaService {
if (ObjectUtil.isEmpty(nextPoint)) {
throw new BadRequestException("终点不存在");
}
if (StrUtil.equals(nextPoint.getString("lock_type"), LockType.TASK_LOCKED.getCode())) {
throw new BadRequestException("终点存在任务");
}
if (StrUtil.equals(nextPoint.getString("point_status"), PointStatus.HAS_VEHICLE.getCode())) {
throw new BadRequestException("终点有载具");
}
if (StrUtil.equals(nextPoint.getString("region_id"), RegionEnum.JJ.getCode())) {
if (StrUtil.equals(nextPoint.getString("region_id"), RegionEnum.JJ.getId())) {
throw new BadRequestException("只有终点为交接区才能生成出库任务");
}

View File

@@ -11,8 +11,8 @@ import lombok.Getter;
@Getter
public enum PointStatus {
EMPTY("1", "空位"),
HAS_VEHICLE("2", "有载具");
EMPTY("0", "空位"),
HAS_VEHICLE("1", "有载具");
private final String code;

View File

@@ -1,10 +1,15 @@
package org.nl.wms.sch.manage;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsUtils;
import org.nl.wms.sch.task.TaskStatus;
import org.nl.wms.sch.task.dto.AcsTaskDTO;
import java.util.List;
@@ -107,15 +112,60 @@ public abstract class AbstractAcsTask {
/**
*
*/
public JSONObject immediateNotifyAcs() {
List<AcsTaskDTO> taskList = this.schedule();
if (ObjectUtil.isNotEmpty(taskList)) {
public JSONObject immediateNotifyAcs(String taskId) {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray tasks = taskTable
.query("task_id = " + taskId)
.getResultJSONArray(0);
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
return AcsUtils.notifyAcs("api/wms/task", arr);
if (ObjectUtil.isNotEmpty(tasks)) {
String taskStatus = ((JSONObject) tasks.get(0)).getString("task_status");
if (!StrUtil.equals(taskStatus, TaskStatus.START_AND_END.getCode())) {
throw new BadRequestException("只能下发已确认起点和终点的任务");
}
JSONObject result = AcsUtils.notifyAcs("api/wms/task", tasks);
String status = result.getString("status");
String message = result.getString("message");
//发送失败的任务JSON集合:task_id,message
JSONArray errArr = result.getJSONArray("errArr");
//任务下发以后,更新任务状态
//成功
if ("200".equals(status)) {
tasks.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_id", ((JSONObject) item).getString("task_id"));
taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发成功");
taskObj.put("update_time", DateUtil.now());
taskTable.update(taskObj);
});
} else {//下发失败
tasks.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_id", ((JSONObject) item).getString("task_id"));
// taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发失败:" + message);
taskObj.put("update_time", DateUtil.now());
taskTable.update(taskObj);
});
}
//处理下发错误的任务
if (ObjectUtil.isNotEmpty(errArr)) {
//处理下发失败的任务
for (int i = 0; i < errArr.size(); i++) {
JSONObject taskObj = errArr.getJSONObject(i);
taskObj.put("remark", "下发失败:"+taskObj.getString("message"));
taskObj.put("update_time", DateUtil.now());
taskTable.update(taskObj);
}
}
return result;
}
return null;
}
/**

View File

@@ -31,7 +31,7 @@ public class AutoCreateTask {
@SneakyThrows
public void run() {
if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) {
Reflections reflections = new Reflections("org.nl.wms.sch.tasks");
Reflections reflections = new Reflections("org.nl.wms.sch.task");
subTypes = reflections.getSubTypesOf(AbstractAcsTask.class);
}
if (ObjectUtil.isNull(taskTab)) taskTab = WQLObject.getWQLObject("sch_base_task");

View File

@@ -20,7 +20,6 @@ import org.nl.wms.util.CommonUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
@@ -57,7 +56,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
String taskCode = taskJSON.getString("task_code");
JSONObject task = taskTable
.query("task_code = " + taskCode)
.query("task_code = '" + taskCode + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务号为" + taskCode + "的任务");
@@ -126,6 +125,10 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
.getWQLObject("sch_base_task")
.query("task_id = " + taskId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(task, TaskFinishedType.MANUAL);
}
@@ -141,22 +144,35 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
JSONObject task = taskTable
.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("已完成的任务不能取消");
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.uniqueResult(0);
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);
}
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
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);
}
}
/**
@@ -167,7 +183,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
public void findStartPoint() {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray tasks = taskTable
.query("task_status = " + TaskStatus.SURE_END.getCode() + " AND handle_class = " + THIS_CLASS_NAME)
.query("task_status = " + TaskStatus.SURE_END.getCode() + " AND handle_class = '" + THIS_CLASS_NAME + "'")
.getResultJSONArray(0);
for (Object o : tasks) {
@@ -195,6 +211,15 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) {
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())
&& !StrUtil.equals(taskStatus, TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
}
task.put("finished_type", taskFinishedType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode());
CommonUtils.addAdminUpdateColum(task);
@@ -202,10 +227,10 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.query("point_code = '" + task.getString("point_code1") + "'")
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.query("point_code = '" + task.getString("point_code2") + "'")
.uniqueResult(0);
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());

View File

@@ -57,7 +57,7 @@ public class CallMaterialTask extends AbstractAcsTask {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
String taskCode = taskJSON.getString("task_code");
JSONObject task = taskTable
.query("task_code = " + taskCode)
.query("task_code = '" + taskCode + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务号为" + taskCode + "的任务");
@@ -137,6 +137,10 @@ public class CallMaterialTask extends AbstractAcsTask {
.getWQLObject("sch_base_task")
.query("task_id = " + taskId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(task, TaskFinishedType.MANUAL);
}
@@ -151,26 +155,48 @@ public class CallMaterialTask extends AbstractAcsTask {
JSONObject task = taskTable
.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("已完成的任务不能取消");
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.uniqueResult(0);
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);
}
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
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);
}
}
@Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) {
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())
&& !StrUtil.equals(taskStatus, TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
}
task.put("finished_type", taskFinishedType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode());
CommonUtils.addAdminUpdateColum(task);
@@ -178,16 +204,16 @@ public class CallMaterialTask extends AbstractAcsTask {
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.query("point_code = '" + task.getString("point_code1") + "'")
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.query("point_code = '" + task.getString("point_code2") + "'")
.uniqueResult(0);
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"))
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0);
WQLObject.getWQLObject("st_ivt_structivt").delete("vehicle_id = " + vehicle.getString("vehicle_id"));

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch.task.wql;
package org.nl.wms.sch.task;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -13,9 +13,7 @@ import org.nl.modules.wql.WQL;
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.base.point.PointType;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.task.*;
import org.nl.wms.sch.task.dto.AcsTaskDTO;
import org.nl.wms.sch.task.util.TaskUtils;
import org.nl.wms.util.CommonUtils;
@@ -60,7 +58,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
String taskCode = taskJSON.getString("task_code");
JSONObject task = taskTable
.query("task_code = " + taskCode)
.query("task_code = '" + taskCode + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务号为" + taskCode + "的任务");
@@ -130,6 +128,10 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
.getWQLObject("sch_base_task")
.query("task_id = " + taskId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(task, TaskFinishedType.MANUAL);
}
@@ -145,22 +147,35 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
JSONObject task = taskTable
.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("已完成的任务不能取消");
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.uniqueResult(0);
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);
}
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
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);
}
}
/**
@@ -174,7 +189,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
public void findNextPoint() {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray tasks = taskTable
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = " + THIS_CLASS_NAME)
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = '" + THIS_CLASS_NAME + "'")
.getResultJSONArray(0);
for (Object o : tasks) {
@@ -201,6 +216,15 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) {
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())
&& !StrUtil.equals(taskStatus, TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
}
task.put("finished_type", taskFinishedType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode());
CommonUtils.addAdminUpdateColum(task);
@@ -208,10 +232,10 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.query("point_code = '" + task.getString("point_code1") + "'")
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.query("point_code = '" + task.getString("point_code2") + "'")
.uniqueResult(0);
nextPoint.put("point_status", PointStatus.HAS_VEHICLE.getCode());

View File

@@ -59,7 +59,7 @@ public class SendFullVehicleTask extends AbstractAcsTask {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
String taskCode = taskJSON.getString("task_code");
JSONObject task = taskTable
.query("task_code = " + taskCode)
.query("task_code = '" + taskCode + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务号为" + taskCode + "的任务");
@@ -129,6 +129,10 @@ public class SendFullVehicleTask extends AbstractAcsTask {
.getWQLObject("sch_base_task")
.query("task_id = " + taskId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(task, TaskFinishedType.MANUAL);
}
@@ -144,22 +148,35 @@ public class SendFullVehicleTask extends AbstractAcsTask {
JSONObject task = taskTable
.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("已完成的任务不能取消");
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.uniqueResult(0);
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);
}
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
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);
}
}
/**
@@ -173,7 +190,7 @@ public class SendFullVehicleTask extends AbstractAcsTask {
public void findNextPoint() {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray tasks = taskTable
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = " + THIS_CLASS_NAME)
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = '" + THIS_CLASS_NAME + "'")
.getResultJSONArray(0);
for (Object o : tasks) {
@@ -200,6 +217,15 @@ public class SendFullVehicleTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) {
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())
&& !StrUtil.equals(taskStatus, TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
}
task.put("finished_type", taskFinishedType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode());
CommonUtils.addAdminUpdateColum(task);
@@ -207,17 +233,17 @@ public class SendFullVehicleTask extends AbstractAcsTask {
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.query("point_code = '" + task.getString("point_code1") + "'")
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.query("point_code = '" + task.getString("point_code2") + "'")
.uniqueResult(0);
if (StrUtil.equals(nextPoint.getString("point_type"), PointType.STORAGE_LOCATION.getCode())) {
JSONObject vehicle = WQLObject
.getWQLObject("md_pb_vehicle")
.query("vehicle_code = " + startPoint.getString("vehicle_code"))
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0);
JSONObject vm = WQLObject

View File

@@ -59,7 +59,7 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
String taskCode = taskJSON.getString("task_code");
JSONObject task = taskTable
.query("task_code = " + taskCode)
.query("task_code = '" + taskCode + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务号为" + taskCode + "的任务");
@@ -129,6 +129,10 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
.getWQLObject("sch_base_task")
.query("task_id = " + taskId)
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(task, TaskFinishedType.MANUAL);
}
@@ -144,22 +148,35 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
JSONObject task = taskTable
.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("已完成的任务不能取消");
}
taskTable.delete(task);
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.uniqueResult(0);
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);
}
startPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(startPoint);
pointTable.update(startPoint);
nextPoint.put("lock_type", LockType.UNLOCKED.getCode());
CommonUtils.addAdminUpdateColum(nextPoint);
pointTable.update(nextPoint);
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);
}
}
/**
@@ -173,7 +190,7 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
public void findNextPoint() {
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray tasks = taskTable
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = " + THIS_CLASS_NAME)
.query("task_status = " + TaskStatus.SURE_START.getCode() + " AND handle_class = '" + THIS_CLASS_NAME + "'")
.getResultJSONArray(0);
for (Object o : tasks) {
@@ -200,6 +217,15 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void finishTask(JSONObject task, TaskFinishedType taskFinishedType) {
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())
&& !StrUtil.equals(taskStatus, TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("只有已确认起点和终点的任务可以手动完成");
}
task.put("finished_type", taskFinishedType.getCode());
task.put("task_status", TaskStatus.FINISHED.getCode());
CommonUtils.addAdminUpdateColum(task);
@@ -207,17 +233,17 @@ public class SendResiduesMaterialTask extends AbstractAcsTask {
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startPoint = pointTable
.query("task_code = " + task.getString("point_code1"))
.query("point_code = '" + task.getString("point_code1") + "'")
.uniqueResult(0);
JSONObject nextPoint = pointTable
.query("task_code = " + task.getString("point_code2"))
.query("point_code = '" + task.getString("point_code2") + "'")
.uniqueResult(0);
if (StrUtil.equals(nextPoint.getString("point_type"), PointType.STORAGE_LOCATION.getCode())) {
JSONObject vehicle = WQLObject
.getWQLObject("md_pb_vehicle")
.query("vehicle_code = " + startPoint.getString("vehicle_code"))
.query("vehicle_code = '" + startPoint.getString("vehicle_code") + "'")
.uniqueResult(0);
JSONObject vm = WQLObject

View File

@@ -27,7 +27,7 @@ public class TaskUtils {
public static List<AcsTaskDTO> addTask(String handleClassName) {
JSONArray tasks = WQLObject
.getWQLObject("sch_base_task")
.query("task_status = " + TaskStatus.START_AND_END.getCode() + " AND handle_class = " + handleClassName)
.query("task_status = " + TaskStatus.START_AND_END.getCode() + " AND handle_class = '" + handleClassName + "'")
.getResultJSONArray(0);
ArrayList<AcsTaskDTO> acsTasks = new ArrayList<>();

View File

@@ -50,13 +50,13 @@
point.is_used = '1'
AND point.lock_type = '1'
AND point.region_id = 1585921595338264576
AND point.point_status = '2'
AND point.point_status = '1'
AND vehicle.vehicle_status = '1'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "1"
IF 输入.flag = "2"
QUERY
SELECT
point_id,
@@ -67,7 +67,7 @@
is_used = '1'
AND lock_type = '1'
AND region_id = 1585921595338264576
AND point_status = '1'
AND point_status = '0'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -51,8 +51,8 @@
PAGEQUERY
SELECT
task.*,
md.class_name task_type_name,
dict.label task_status_name
md.class_name AS task_type_name,
dict.label AS task_status_name
FROM
sch_base_task task
LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
@@ -72,7 +72,7 @@
task.create_time <= 输入.end_time
ENDOPTION
OPTION 输入.unFinish <> ""
task.task_status <> '07'
task.task_status <> '7'
ENDOPTION
OPTION 输入.task_status <> ""
find_in_set( task.task_status, 输入.task_status)

View File

@@ -47,12 +47,12 @@
PAGEQUERY
SELECT
ivt.stockrecord_id,
region.region_name,
point.point_name,
vehicle.vehicle_id,
vehicle.vehicle_code,
ANY_VALUE( region.region_name ) AS region_name,
ANY_VALUE( point.point_name ) AS point_name,
ANY_VALUE( vehicle.vehicle_id ) AS vehicle_id,
ANY_VALUE( vehicle.vehicle_code ) AS vehicle_code,
SUM( vm.material_qty ) AS qty,
ivt.instorage_time
ANY_VALUE( ivt.instorage_time ) AS instorage_time
FROM
st_ivt_structivt ivt
LEFT JOIN sch_base_point point ON ivt.point_id = point.point_id
@@ -77,7 +77,7 @@
ivt.instorage_time <= 输入.end_time
ENDOPTION
GROUP BY
ivt.stockrecord_id
ivt.stockrecord_id
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -42,22 +42,22 @@
IF 输入.flag = "1"
PAGEQUERY
SELECT
vm.vm_id,
vehicle.vehicle_id,
vehicle.vehicle_code,
ANY_VALUE( vm.vm_id ) AS vm_id,
ANY_VALUE( vehicle.vehicle_code) AS vehicle_code,
SUM( vm.material_qty ) AS qty,
vm.create_name,
vm.create_time
ANY_VALUE( vm.create_name ) AS create_name,
ANY_VALUE( vm.create_time ) AS create_time
FROM
st_ivt_vehicle_material vm
LEFT JOIN md_pb_vehicle vehicle ON vm.vehicle_id = vehicle.vehicle_id
md_pb_vehicle vehicle
LEFT JOIN st_ivt_vehicle_material vm ON vehicle.vehicle_id = vm.vehicle_id
WHERE
1 = 1
vehicle.vehicle_status = '2'
OPTION 输入.vehicle_code <> ""
vehicle.vehicle_code LIKE CONCAT( '%', 输入.vehicle_code, '%' )
ENDOPTION
GROUP BY
vm.vehicle_id
vehicle.vehicle_id
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -1,14 +1,14 @@
server:
port: 8010
port: 8011
#配置数据源
spring:
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:ndxy3_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:nmd_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:P@ssw0rd}
password: ${DB_PWD:123456}
# 初始连接数
initial-size: 5
# 最小连接数