代码更新
This commit is contained in:
@@ -121,19 +121,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
||||
@Override
|
||||
public String againApply(String task_id) {
|
||||
log.info("输入参数:"+task_id);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
|
||||
String point_code = "";
|
||||
try {
|
||||
Class<?> clz = Class.forName(jsonTask.getString("handle_class"));
|
||||
Object obj = clz.newInstance();
|
||||
Method m = obj.getClass().getDeclaredMethod("againApply", JSONObject.class, String.class);
|
||||
Object invoke = m.invoke(task_id);
|
||||
Method m = obj.getClass().getDeclaredMethod("againApply",String.class);
|
||||
point_code = (String) m.invoke(obj,task_id);
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
log.info("输出参数:"+point_code);
|
||||
return point_code;
|
||||
}
|
||||
|
||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
||||
@@ -295,28 +297,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("qty", jsonVeQty.getString("qty"));
|
||||
param.put("point_code1", point_code);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
// 创建任务
|
||||
HtSendEmpVehicleTask taskBean = SpringContextHolder.getBean(HtSendEmpVehicleTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
if (StrUtil.equals(jsonTask.getString("task_status"), "4")) {
|
||||
// 起点终点确定则下发
|
||||
// JSONObject jsonObject = taskBean.renotifyAcs(task_id);
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
|
||||
// 更新任务状态
|
||||
jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
||||
taskTab.update(jsonTask);
|
||||
// 更新终点点位状态
|
||||
JSONObject jsonEndPoint = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
jsonEndPoint.put("lock_type", "2");
|
||||
pointTab.update(jsonEndPoint);
|
||||
} else {
|
||||
throw new BadRequestException(jsonObject.getString("message"));
|
||||
}
|
||||
}
|
||||
|
||||
} else if (StrUtil.equals(type, "7")) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code);
|
||||
|
||||
@@ -38,7 +38,7 @@ public abstract class AbstractAcsTask {
|
||||
|
||||
/**
|
||||
* @param taskObj 代表一条任务对象
|
||||
* @param status 代表wcs任务完成状态: //1:执行中,2:完成 ,3:acs取消
|
||||
* @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成
|
||||
* @return
|
||||
* @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息
|
||||
* @author ldjun
|
||||
@@ -131,7 +131,7 @@ public abstract class AbstractAcsTask {
|
||||
* @param task_id: 任务标识
|
||||
* @return 二次申请的点位
|
||||
*/
|
||||
String againApply(String task_id) {
|
||||
public String againApply(String task_id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package org.nl.wms.sch.tasks;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class AcsTaskDto {
|
||||
//任务标识
|
||||
private String task_id;
|
||||
|
||||
@@ -218,7 +218,7 @@ public class CallMaterialTask extends AbstractAcsTask {
|
||||
JSONArray tasks = taskTab.query("handle_class = '" + this.getClass().getName() + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
List<AcsTaskDto> arr = new ArrayList<>();
|
||||
for (int i = 0, j = tasks.size(); i < j; i++) {
|
||||
JSONObject json = tasks.getJSONObject(i);
|
||||
/*JSONObject json = tasks.getJSONObject(i);
|
||||
AcsTaskDto taskDto = new AcsTaskDto();
|
||||
taskDto.setTask_id(json.getString("task_id"));
|
||||
taskDto.setTask_code(json.getString("task_code"));
|
||||
@@ -227,7 +227,7 @@ public class CallMaterialTask extends AbstractAcsTask {
|
||||
taskDto.setStart_device_code(json.getString("point_code1"));
|
||||
taskDto.setNext_device_code(json.getString("point_code2"));
|
||||
taskDto.setVehicle_code(json.getString("vehicle_code"));
|
||||
arr.add(taskDto);
|
||||
arr.add(taskDto);*/
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
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 lombok.RequiredArgsConstructor;
|
||||
@@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
@@ -19,6 +21,7 @@ import org.nl.wms.sch.tasks.RegionTypeEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@@ -27,8 +30,6 @@ import java.util.List;
|
||||
public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = HtSendEmpVehicleTask.class.getName();
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
@@ -40,6 +41,21 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
String point_code3 = jsonTask.getString("point_code3");
|
||||
String point_code2 = jsonTask.getString("point_code2");
|
||||
if (ObjectUtil.isNotEmpty(point_code3)) {
|
||||
JSONObject jsonPoint3 = pointTab.query("point_code ='" + point_code3 + "'").uniqueResult(0);
|
||||
jsonPoint3.put("point_status", "1");
|
||||
pointTab.update(jsonPoint3);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(point_code2)) {
|
||||
JSONObject jsonPoint2 = pointTab.query("point_code ='" + point_code2 + "'").uniqueResult(0);
|
||||
jsonPoint2.put("point_status", "1");
|
||||
pointTab.update(jsonPoint2);
|
||||
}
|
||||
taskTab.delete("task_id = '" + task_id + "'");
|
||||
}
|
||||
|
||||
@@ -62,6 +78,10 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
// 更新终点:判断point_code3是否为空,为空就更新point_code2
|
||||
if (ObjectUtil.isNotEmpty(point_code3)) {
|
||||
point_code = point_code3;
|
||||
// 更新point_code2:解锁
|
||||
JSONObject point2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
point2.put("lock_type", "1");
|
||||
pointTab.update(point2);
|
||||
} else {
|
||||
point_code = jsonTask.getString("point_code2");
|
||||
}
|
||||
@@ -79,6 +99,7 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
pointTab.update(endPoint);
|
||||
} else {//非叠盘架
|
||||
endPoint.put("lock_type", "1");
|
||||
endPoint.put("vehicle_code", jsonTask.getString("vehicle_code"));
|
||||
endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty"));
|
||||
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
|
||||
endPoint.put("point_status", "2");
|
||||
@@ -91,128 +112,38 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
|
||||
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_vehicle"); // 载具表
|
||||
|
||||
String qty = form.getString("qty");
|
||||
String point_code1 = form.getString("point_code1");
|
||||
String point_code2 = "";
|
||||
|
||||
String task_id = "";
|
||||
|
||||
JSONObject jsonVehicle = vehicleTab.query("vehicle_code = '" + form.getString("vehicle_code") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVehicle)) throw new BadRequestException("此载具号不存在");
|
||||
|
||||
// 1.判断货梯是否有任务,如果有生成起点确定的任务
|
||||
// 空托盘一楼到二楼固定点位:SSX01A1 , SSX02A1
|
||||
|
||||
//判断SSX01A1是否有任务没有则判断其他的三个点位
|
||||
boolean ssx_1 = this.isTask("SSX01A1");
|
||||
if (ssx_1) {
|
||||
String like = "SSX01%";
|
||||
|
||||
JSONArray taskArrNum = new JSONArray();
|
||||
JSONArray pointArr = pointTab.query("region_id = '" + RegionTypeEnum.SSX.getId() + "' and is_used = '1' and is_delete = '0' and point_code like '" + like + "'").getResultJSONArray(0);
|
||||
|
||||
for (int i = 0; i < pointArr.size(); i++) {
|
||||
JSONObject json = pointArr.getJSONObject(i);
|
||||
boolean is_empTask = this.isTask(json.getString("point_code"));
|
||||
|
||||
if (!is_empTask) taskArrNum.add(json);
|
||||
}
|
||||
|
||||
if (taskArrNum.size() > 0) {
|
||||
|
||||
} else {
|
||||
point_code2 = "SSX01A1";
|
||||
}
|
||||
}
|
||||
|
||||
// 判断SSX02A1是否有任务没有则判断其他的三个点位
|
||||
if (ObjectUtil.isEmpty(point_code2)) {
|
||||
boolean ssx_2 = this.isTask("SSX02A1");
|
||||
if (ssx_2) {
|
||||
String like = "SSX02%";
|
||||
|
||||
JSONArray taskArrNum = new JSONArray();
|
||||
JSONArray pointArr = pointTab.query("region_id = '" + RegionTypeEnum.SSX.getId() + "' and is_used = '1' and is_delete = '0' and point_code like '" + like + "'").getResultJSONArray(0);
|
||||
|
||||
for (int i = 0; i < pointArr.size(); i++) {
|
||||
JSONObject json = pointArr.getJSONObject(i);
|
||||
boolean is_empTask = this.isTask(json.getString("point_code"));
|
||||
|
||||
if (!is_empTask) taskArrNum.add(json);
|
||||
}
|
||||
|
||||
if (taskArrNum.size() > 0) {
|
||||
|
||||
} else {
|
||||
point_code2 = "SSX02A1";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果此时point_code2为空则生成起点确认的任务
|
||||
if (ObjectUtil.isEmpty(point_code2)) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("task_status", "2");
|
||||
param.put("point_code1", point_code1);
|
||||
param.put("vehicle_type", jsonVehicle.getString("vehicle_type"));
|
||||
param.put("vehicle_qty", qty);
|
||||
param.put("vehicle_code", jsonVehicle.getString("vehicle_code"));
|
||||
param.put("acs_task_type", "1");
|
||||
task_id = this.pubCreateTask(param);
|
||||
} else {
|
||||
// 说明货梯无任务:找终点
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("vehicle_type", jsonVehicle.getString("vehicle_type"));
|
||||
param.put("qty", qty);
|
||||
String endPoint = this.endPoint(param);
|
||||
|
||||
// 如果终点为空则创建起点确定的任务
|
||||
if (ObjectUtil.isEmpty(endPoint)) {
|
||||
JSONObject param2 = new JSONObject();
|
||||
param2.put("task_status", "2");
|
||||
param2.put("point_code1", point_code1);
|
||||
param2.put("vehicle_type", jsonVehicle.getString("vehicle_type"));
|
||||
param2.put("vehicle_qty", qty);
|
||||
param2.put("vehicle_code", jsonVehicle.getString("vehicle_code"));
|
||||
param.put("acs_task_type", "1");
|
||||
task_id = this.pubCreateTask(param2);
|
||||
} else {
|
||||
// 不为空则创建到养生A区等待点的任务
|
||||
|
||||
// 处理终点编码:入在第一个 '-'前加1,出在第一个 '-'前加2
|
||||
// String sub_1 = endPoint.substring(0, endPoint.indexOf("-"));
|
||||
// String sub_2 = endPoint.substring(endPoint.indexOf("-"), endPoint.length());
|
||||
JSONObject param2 = new JSONObject();
|
||||
param2.put("task_status", "4");
|
||||
param2.put("point_code1", point_code1);
|
||||
param2.put("point_code2", endPoint);
|
||||
param2.put("vehicle_type", jsonVehicle.getString("vehicle_type"));
|
||||
param2.put("vehicle_qty", qty);
|
||||
param2.put("vehicle_code", jsonVehicle.getString("vehicle_code"));
|
||||
param.put("acs_task_type", "1");
|
||||
task_id = this.pubCreateTask(param2);
|
||||
|
||||
// 锁定终点
|
||||
JSONObject jsonEnd = pointTab.query("point_code = '" + endPoint + "'").uniqueResult(0);
|
||||
jsonEnd.put("lock_type", "2");
|
||||
pointTab.update(jsonEnd);
|
||||
}
|
||||
}
|
||||
return task_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @discription 确定下一点位
|
||||
* @author ldjun
|
||||
* @created 2020年6月12日 下午6:01:06
|
||||
/*
|
||||
* 1.先生成确定起点的任务
|
||||
* 2.通过findNextPoint()找终点
|
||||
* 3.下发给ACS
|
||||
*/
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
|
||||
String point_code1 = form.getString("point_code1");
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("")
|
||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
||||
.point_code1(point_code1)
|
||||
.vehicle_code(form.getString("vehicle_code"))
|
||||
.vehicle_type(form.getString("vehicle_type"))
|
||||
.vehicle_qty(form.getIntValue("qty"))
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.build();
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
this.findNextPoint();
|
||||
// this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
/*
|
||||
* 根据业务找对应的终点
|
||||
*/
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
@@ -298,6 +229,9 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(String task_id) {
|
||||
/*
|
||||
* 强制完成
|
||||
*/
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
@@ -371,32 +305,11 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
return end_code;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String pubCreateTask(JSONObject param) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
jsonTask.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
jsonTask.put("task_type", "");
|
||||
jsonTask.put("task_status", param.getString("task_status"));
|
||||
jsonTask.put("point_code1", param.getString("point_code1"));
|
||||
jsonTask.put("point_code2", param.getString("point_code2"));
|
||||
jsonTask.put("vehicle_type", param.getString("vehicle_type"));
|
||||
jsonTask.put("vehicle_qty", param.getString("vehicle_qty"));
|
||||
jsonTask.put("vehicle_code", param.getString("vehicle_code"));
|
||||
jsonTask.put("priority", "1");
|
||||
jsonTask.put("handle_class", THIS_CLASS);
|
||||
jsonTask.put("sort_seq", "1");
|
||||
jsonTask.put("acs_task_type", param.getString("acs_task_type"));
|
||||
jsonTask.put("create_time", DateUtil.now());
|
||||
taskTab.insert(jsonTask);
|
||||
return jsonTask.getString("task_id");
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean isTask(String point_code) {
|
||||
|
||||
/*
|
||||
* 判断点位是否有任务存在
|
||||
*/
|
||||
WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
|
||||
boolean result;
|
||||
@@ -416,7 +329,12 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public String againApply(String task_id) {
|
||||
/*
|
||||
* 再次下发任务处理方法
|
||||
* 涉及业务:入空载具、出空载具、入物料、出物料
|
||||
*/
|
||||
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
|
||||
@@ -441,7 +359,11 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
"' and point_code <> '" + jsonPoint2.getString("point_code") +
|
||||
"' and point_status = '1' order by in_empty_seq DESC").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonEmpPoint)) point_code = jsonEmpPoint.getString("point_code");
|
||||
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
|
||||
point_code = jsonEmpPoint.getString("point_code");
|
||||
jsonTask.put("point_code3", point_code);
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
} else {
|
||||
// 找前一位的空位
|
||||
double in_empty_seq = NumberUtil.sub(jsonOnePoint.getIntValue("in_empty_seq"), 1);
|
||||
@@ -453,13 +375,42 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
"' and in_empty_seq = '" + in_empty_seq +
|
||||
"' and point_status = '1'").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) point_code = jsonEmpPoint.getString("point_code");
|
||||
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
|
||||
point_code = jsonEmpPoint.getString("point_code");
|
||||
jsonTask.put("point_code3", point_code);
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
}
|
||||
JSONObject jsonEndPoint = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
|
||||
jsonEndPoint.put("lock_type", "2");
|
||||
pointTab.update(jsonEndPoint);
|
||||
|
||||
return point_code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
return null;
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '"+THIS_CLASS+"' and task_status = '"+TaskStatusEnum.START_AND_POINT.getCode()+"' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code3"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user