rev 修复任务指令内存问题

This commit is contained in:
USER-20220102CG\noblelift
2023-10-19 11:28:09 +08:00
parent 4018922b9b
commit 9224b0d07c
6 changed files with 143 additions and 205 deletions

View File

@@ -518,6 +518,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(getDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(getDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
break;
}
}
@@ -532,6 +540,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(backGetDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(backGetDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList);
return flag;
} else {
@@ -541,6 +557,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(backGetDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(backGetDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
break;
}
}
@@ -582,6 +606,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(getDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(getDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList);
return flag;
} else {
@@ -591,6 +623,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(getDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(getDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
break;
}
}
@@ -605,6 +645,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(backGetDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(backGetDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
flag = this.executeBusiness(taskDto, getDeviceCodeList, backGetDeviceCodeList);
return flag;
} else {
@@ -614,6 +662,14 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
//按照优先级排序 优先级相等按照创建时间排序
taskDtos = this.sortTask(taskDtos);
taskDto = taskDtos.get(0);
if(backGetDeviceCode.endsWith("X")){
Boolean result = this.checkIsSafe(backGetDeviceCode,taskDto);
if(!result){
taskDto = null;
notCreateInstMessage = "该设备存在上工位任务,此任务无法执行!";
continue;
}
}
break;
}
}
@@ -1675,4 +1731,22 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
}
}
}
public boolean checkIsSafe(String device_code,TaskDto dto){
String newDevice_code = forametDevice_code(device_code);
List<TaskDto> list = taskserver.queryTaskByDeviceCode(newDevice_code);
if(list.size()>0){
return false;
}
return true;
}
public String forametDevice_code(String device_code){
if (device_code.endsWith("X")) {
return device_code.substring(0, device_code.length() - 1) + "S";
}
return device_code;
}
}

View File

@@ -117,6 +117,8 @@ public interface InstructionService {
*/
void createAgain(Instruction dto) throws Exception ;
Boolean createInstCheck(Instruction dto);
/**
* 编辑
*

View File

@@ -37,6 +37,7 @@ import org.nl.acs.task.service.TaskService;
import org.nl.acs.task.service.dto.TaskDto;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.system.util.CodeUtil;
@@ -82,6 +83,8 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
@Autowired
AcsToLiKuService acsToLiKuService;
private final RedisUtils redisUtils;
@Override
public void autoInitial() {
this.reload();
@@ -91,6 +94,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
public synchronized void reload() {
List list = this.queryAll("instruction_status <2 and is_delete =0");
this.instructions = new CopyOnWriteArrayList<>(list);
//redisUtils.set("insts", this.instructions);
}
@Override
@@ -329,14 +333,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
dto.setInstruction_type("3");
}
// 查询是否存在相同指令号
// if (!StrUtil.isEmpty(dto.getVehicle_code() )) {
// Instruction inst_dto = findByContainer(dto.getVehicle_code());
// if (inst_dto != null) {
// log.error("存在相同载具号任务,载具号"+dto.getVehicle_code());
// throw new BadRequestException("存在相同载具号任务!");
// }
// }
// 查询是否存在相同任务号、起点终点相同
if (!createInstCheck(dto)) {
log.info("存在相同任务号且起点终点相同的指令");
return;
}
// 起点设备与终点设备相同则为初始指令
if (StrUtil.equals(task.getStart_device_code(), dto.getStart_device_code())) {
if (!StrUtil.equals(dto.getCompound_inst(), "0")
@@ -429,7 +431,10 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
dto = foramte(dto);
String task_code = dto.getTask_code();
TaskDto task = taskService.findByCodeFromCache(task_code);
if (!createInstCheck(dto)) {
log.info("存在相同任务号且起点终点相同的指令");
return;
}
WQLObject instwo = WQLObject.getWQLObject("acs_instruction");
String currentUsername = SecurityUtils.getCurrentUsername();
String now = DateUtil.now();
@@ -663,7 +668,19 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
}
}
@Override
public Boolean createInstCheck(Instruction inst){
Iterator var3 = instructions.iterator();
while (var3.hasNext()) {
Instruction instruction = (Instruction) var3.next();
if (StrUtil.equals(instruction.getTask_code(), inst.getTask_code())
&& StrUtil.equals(instruction.getStart_point_code(), inst.getStart_point_code())
&& StrUtil.equals(instruction.getNext_point_code(), inst.getNext_point_code())) {
return false;
}
}
return true;
}
@Override
public void createAgain(Instruction dto) throws Exception {
String task_code = dto.getTask_code();

View File

@@ -37,6 +37,7 @@ import org.nl.acs.task.service.dto.TaskDto;
import org.nl.acs.task.service.dto.TaskFeedbackDto;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.system.service.ParamService;
import org.nl.modules.system.util.CodeUtil;
@@ -91,6 +92,9 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
@Autowired
StorageCellService storageCellService;
private final RedisUtils redisUtils;
@Override
public void autoInitial() throws Exception {
Class var1 = TaskInstructionLock.class;
@@ -101,7 +105,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
public synchronized void reload() {
List list = this.queryAll("task_status <2 and is_delete =0 order by create_time");
tasks = new CopyOnWriteArrayList<>(list);
}
@@ -149,7 +152,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
@Override
public Map<String, Object> queryAllByCache(Map whereJson, Pageable page) {
this.reload();
//this.reload();
String task_code = (String) whereJson.get("task_code");
String vehicle_code = (String) whereJson.get("vehicle_code");
String material_type = (String) whereJson.get("material_type");
@@ -160,6 +163,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
List<TaskDto> taskList = new ArrayList();
synchronized (TaskServiceImpl.class) {
//redisUtils.get("task");
Iterator<TaskDto> it = tasks.iterator();
while (it.hasNext()) {
TaskDto task = it.next();
@@ -690,7 +694,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
// 判断是否为WMS下发的任务如果是反馈任务状态给WMS
String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
TaskFeedbackDto feefbackdto = taskFeedbackService.findByCode(entity.getTask_code());
JSONObject feed_jo = new JSONObject();
feed_jo.put("task_id", entity.getExt_task_id());
feed_jo.put("task_code", dto.getTask_code());
@@ -712,73 +715,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
flag = true;
message = e.getMessage();
e.printStackTrace();
} finally {
}
if (flag) {
if (ObjectUtil.isEmpty(feefbackdto)) {
feefbackdto = new TaskFeedbackDto();
feefbackdto.setTask_id(entity.getTask_id());
feefbackdto.setTask_code(entity.getTask_code());
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setVehicle_type(entity.getVehicle_type());
feefbackdto.setVehicle_code(entity.getVehicle_code());
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getStart_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
feefbackdto.setError_code("400");
feefbackdto.setIs_finished("0");
feefbackdto.setRemark(message);
taskFeedbackService.create(feefbackdto);
} else {
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getStart_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
feefbackdto.setError_code("400");
feefbackdto.setRemark(message);
taskFeedbackService.update(feefbackdto);
}
} else {
int status = body.getStatus();
JSONObject jo = JSONObject.parseObject(body.body());
if (ObjectUtil.isEmpty(feefbackdto)) {
feefbackdto = new TaskFeedbackDto();
feefbackdto.setTask_id(entity.getTask_id());
feefbackdto.setTask_code(entity.getTask_code());
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setVehicle_type(entity.getVehicle_type());
feefbackdto.setVehicle_code(entity.getVehicle_code());
feefbackdto.setError_code(String.valueOf(body.getStatus()));
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getNext_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
if (status == 200) {
if (StrUtil.equals(entity.getTask_status(), "2")) {
feefbackdto.setIs_finished("1");
} else {
feefbackdto.setIs_finished("0");
}
} else {
feefbackdto.setIs_finished("0");
feefbackdto.setRemark(jo.getString("message"));
}
taskFeedbackService.create(feefbackdto);
} else {
feefbackdto.setTask_status(entity.getTask_status());
if (status == 200) {
} else {
if (StrUtil.equals(entity.getTask_status(), "2")) {
feefbackdto.setIs_finished("1");
} else {
feefbackdto.setIs_finished("0");
}
}
taskFeedbackService.update(feefbackdto);
}
}
}
@@ -812,8 +748,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
// 判断是否为WMS下发的任务如果是反馈任务状态给WMS
String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
TaskFeedbackDto feefbackdto = taskFeedbackService.findByCode(entity.getTask_code());
System.out.println(feefbackdto == null);
JSONObject feed_jo = new JSONObject();
feed_jo.put("task_id", entity.getExt_task_id());
feed_jo.put("task_code", entity.getTask_code());
@@ -829,83 +763,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
flag = true;
message = e.getMessage();
e.printStackTrace();
} finally {
}
if (flag) {
if (ObjectUtil.isEmpty(feefbackdto)) {
feefbackdto = new TaskFeedbackDto();
feefbackdto.setTask_id(entity.getTask_id());
feefbackdto.setTask_code(entity.getTask_code());
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setVehicle_type(entity.getVehicle_type());
feefbackdto.setVehicle_code(entity.getVehicle_code());
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getStart_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
feefbackdto.setError_code("400");
feefbackdto.setIs_finished("0");
feefbackdto.setRemark(message);
taskFeedbackService.create(feefbackdto);
} else {
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getStart_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
feefbackdto.setError_code("400");
feefbackdto.setRemark(message);
taskFeedbackService.update(feefbackdto);
}
} else {
int status = body.getStatus();
JSONObject jo = JSONObject.parseObject(body.body());
if (ObjectUtil.isEmpty(feefbackdto)) {
feefbackdto = new TaskFeedbackDto();
feefbackdto.setTask_id(entity.getTask_id());
feefbackdto.setTask_code(entity.getTask_code());
feefbackdto.setTask_status(entity.getTask_status());
feefbackdto.setVehicle_type(entity.getVehicle_type());
feefbackdto.setVehicle_code(entity.getVehicle_code());
feefbackdto.setError_code(String.valueOf(body.getStatus()));
feefbackdto.setStart_device_code(entity.getStart_device_code());
feefbackdto.setStart_point_code(entity.getStart_point_code());
feefbackdto.setNext_device_code(entity.getNext_device_code());
feefbackdto.setNext_point_code(entity.getNext_point_code());
if (status == 200) {
if (StrUtil.equals(entity.getTask_status(), "2")) {
feefbackdto.setIs_finished("1");
} else {
feefbackdto.setIs_finished("0");
}
} else {
feefbackdto.setIs_finished("0");
feefbackdto.setRemark(jo.getString("message"));
}
taskFeedbackService.create(feefbackdto);
} else {
feefbackdto.setTask_status(entity.getTask_status());
if (status == 200) {
if (StrUtil.equals(entity.getTask_status(), "2")) {
feefbackdto.setIs_finished("1");
} else {
feefbackdto.setIs_finished("0");
}
} else {
feefbackdto.setIs_finished("0");
feefbackdto.setRemark(jo.getString("message"));
}
taskFeedbackService.update(feefbackdto);
}
}
}
// 如果属于先知AGV关闭运单序列
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) {
try {
agvService.markComplete(entity.getTask_code());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -954,18 +811,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
ja.add(feed_jo);
acstowmsService.feedbackTaskStatusToWms(ja);
}
List<RouteLineDto> shortPathsList =
routeLineService.getShortPathLines(
entity.getStart_device_code(),
entity.getNext_device_code(),
entity.getRoute_plan_code());
String type = shortPathsList.get(0).getType();
// != 0 为agv任务
if (!StrUtil.equals(type, "0")) {
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) {
agvService.markComplete(entity.getTask_code());
}
}
}
@Override

View File

@@ -71,16 +71,16 @@
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-refresh"
@click="reload"
>
同步
</el-button>
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- size="mini"-->
<!-- type="primary"-->
<!-- icon="el-icon-refresh"-->
<!-- @click="reload"-->
<!-- >-->
<!-- 同步-->
<!-- </el-button>-->
</crudOperation>
<!--表单组件-->
<el-dialog
@@ -325,13 +325,13 @@ export default {
console.log(err.response.data.message)
})
},
reload() {
crudInstruction.reload().then(res => {
this.crud.toQuery()
}).catch(err => {
console.log(err.response.data.message)
})
},
// reload() {
// crudInstruction.reload().then(res => {
// this.crud.toQuery()
// }).catch(err => {
// console.log(err.response.data.message)
// })
// },
beforeHandleCommand(index, row, command) {
return {

View File

@@ -68,16 +68,16 @@
>
新增
</el-button>
<el-button
slot="right"
class="filter-item"
size="mini"
type="primary"
icon="el-icon-refresh"
@click="reload"
>
同步
</el-button>
<!-- <el-button-->
<!-- slot="right"-->
<!-- class="filter-item"-->
<!-- size="mini"-->
<!-- type="primary"-->
<!-- icon="el-icon-refresh"-->
<!-- @click="reload"-->
<!-- >-->
<!-- 同步-->
<!-- </el-button>-->
</crudOperation>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :visible.sync="formDia" :title="crud.status.title" width="500px">
@@ -586,13 +586,13 @@ export default {
console.log(err.response.data.message)
})
},
reload() {
crudTask.reload().then(res => {
this.crud.toQuery()
}).catch(err => {
console.log(err.response.data.message)
})
},
// reload() {
// crudTask.reload().then(res => {
// this.crud.toQuery()
// }).catch(err => {
// console.log(err.response.data.message)
// })
// },
beforeHandleCommand(index, row, command) {
return {