任务完成、取消

This commit is contained in:
2023-03-24 17:35:36 +08:00
parent 7faf39babb
commit a62ca100a2
2 changed files with 39 additions and 51 deletions

View File

@@ -20,6 +20,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.TaskService;
import org.nl.wms.sch.service.dto.TaskDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
@@ -29,11 +30,12 @@ import java.util.HashMap;
import java.util.Map;
@Service
@RequiredArgsConstructor
@Slf4j
public class AcsToWmsServiceImpl implements AcsToWmsService {
private final TaskService taskService;
private final AgvInstService agvInstService;
@Autowired
private TaskService taskService;
@Autowired
private AgvInstService agvInstService;
@Override
public Map<String, Object> apply(JSONObject jsonObject) {
@@ -70,7 +72,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
String task_uuid = row.getString("task_uuid");
String task_uuid = row.getString("task_id");
TaskDto taskDto = taskService.findById(task_uuid);
String processing_class = taskDto.getHandle_class();
//1:执行中,2:完成 ,3:acs取消

View File

@@ -17,9 +17,13 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.basedata.master.service.dto.ClassstandardDto;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.TaskService;
import org.nl.wms.sch.service.dto.TaskDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -36,11 +40,13 @@ import java.util.Map;
* @date 2021-08-19
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class TaskServiceImpl implements TaskService {
private final ClassstandardService classstandardService;
@Autowired
private ClassstandardService classstandardService;
@Autowired
private AcsToWmsService acsToWmsService;
@Override
public Map<String, Object> queryAll(Map form, Pageable page) {
@@ -176,55 +182,35 @@ public class TaskServiceImpl implements TaskService {
@Override
public void operation(Map<String, Object> map) {
WmsToAcsServiceImpl wms = new WmsToAcsServiceImpl();
String task_id = MapUtil.getStr(map, "task_id");
String method_name = MapUtil.getStr(map, "method_name");
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
if (taskObj.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) throw new BadRequestException("任务已完成!");
// 任务处理类
String processing_class = taskObj.getString("handle_class");
String message = "";
// 根据任务类型获取对应的任务操作类
try {
Class<?> clz = Class.forName(processing_class);
Object obj = clz.newInstance();
// 调用每个任务类的method_name()强制结束方法
Method m;
JSONObject result;
if (method_name.equals("immediateNotifyAcs")) { // 立即下发不需要参数
m = obj.getClass().getMethod(method_name);
result = (JSONObject) m.invoke(obj);
} else {
m = obj.getClass().getMethod(method_name, String.class);
result = (JSONObject) m.invoke(obj, task_id);
}
if (ObjectUtil.isEmpty(result)) return;
JSONArray arr = result.getJSONArray("errArr");
WQLObject wo = WQLObject.getWQLObject("sch_base_task");
if (ObjectUtil.isNotEmpty(arr)) {
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
JSONObject param = new JSONObject();
param.put("task_id", json.getString("task_id"));
param.put("remark", json.getString("message"));
wo.update(param);
}
throw new BadRequestException("任务操作失败!");
} else {
JSONObject param = new JSONObject();
param.put("task_id", task_id);
param.put("remark", "操作成功");
wo.update(param);
}
} catch (InvocationTargetException e) {
if (ObjectUtil.isNull(e.getTargetException().getMessage())) {
message = e.getTargetException().toString();
} else {
message = e.getTargetException().getMessage();
}
throw new BadRequestException(message);
} catch (Exception e) {
e.printStackTrace();
throw new BadRequestException("任务操作失败!");
switch (method_name) { // forceFinish, cancel
case "immediateNotifyAcs":
JSONArray array = new JSONArray();
array.add(taskObj);
wms.issueTaskToAcs(array);
break;
case "forceFinish":
JSONArray finish = new JSONArray();
JSONObject res = new JSONObject();
res.put("task_id", task_id);
res.put("task_status", "2");
finish.add(res);
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
break;
case "cancel":
JSONArray cancel = new JSONArray();
JSONObject res2 = new JSONObject();
res2.put("task_id", task_id);
res2.put("task_status", "1");
cancel.add(res2);
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
break;
default: break;
}
}