代码更新

This commit is contained in:
ldj_willow
2022-10-19 17:31:17 +08:00
parent 7b08b395c6
commit 6512a48a45
3 changed files with 130 additions and 1 deletions

View File

@@ -57,6 +57,12 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>
<!--Spring boot 安全框架-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->

View File

@@ -0,0 +1,123 @@
package org.nl.modules.quartz.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsUtil;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.reflections.Reflections;
import org.springframework.stereotype.Component;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Slf4j
@Component
public class AutoCreateTask {
// 下发acs的任务集合
private List<AcsTaskDto> taskList = null;
private Set<Class<? extends AbstractAcsTask>> subTypes = null;
WQLObject taskTab = null;
@SneakyThrows
public void run() {
if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) {
Reflections reflections = new Reflections("org.nl.wms.sch.tasks");
//System.out.println(AbstractAcsTask.class.isAssignableFrom(DumpInvTask.class));
subTypes = reflections.getSubTypesOf(AbstractAcsTask.class);
}
if (ObjectUtil.isNull(taskTab)) taskTab = WQLObject.getWQLObject("sch_base_task");
taskList = new ArrayList<>();
this.doExecute();
}
private void doExecute() {
subTypes.forEach(clz -> {
// 调用AbstractAcsTask类的每个子类的schedule()方法
try {
Object obj = clz.newInstance();
//Method m = obj.getClass().getDeclaredMethod("schedule");
Method m = obj.getClass().getMethod("schedule");
List<AcsTaskDto> tasks = (List<AcsTaskDto>) m.invoke(obj);
if (ObjectUtil.isNotEmpty(tasks)) {
taskList.addAll(tasks);
}
} catch (InvocationTargetException e) {
e.printStackTrace();
log.info("定时器执行失败:{}", e.getTargetException().getMessage());
} catch (Exception e) {
e.printStackTrace();
log.info("定时器执行失败:{}", e.getMessage());
}
});
if (ObjectUtil.isEmpty(taskList)) {
return;
}
JSONArray arr = new JSONArray();
taskList.forEach(item -> {
JSONObject param = JSONObject.parseObject(JSON.toJSONString(item));
arr.add(param);
});
String api = "api/wms/task";
log.info("下发acs任务的参数为:{}", arr.toString());
JSONObject result = AcsUtil.notifyAcs(api, arr);
log.info("下发acs任务的返回结果为:{}", result.toString());
String status = result.getString("status");
String message = result.getString("message");
//发送失败的任务JSON集合:task_uuid,message
JSONArray errArr = result.getJSONArray("errArr");
//任务下发以后,更新任务状态
//成功
if ("200".equals(status)) {
taskList.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_uuid", item.getTask_id());
taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发成功");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
});
} else {//下发失败
taskList.forEach(item -> {
JSONObject taskObj = new JSONObject();
taskObj.put("task_uuid", item.getTask_id());
taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskObj.put("remark", "下发失败:" + message);
taskObj.put("update_time", DateUtil.now());
taskTab.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());
taskTab.update(taskObj);
}
}
}
}

View File

@@ -179,7 +179,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
param.put("point_code2", point_code);
param.put("qty", vehicle_num);
// 创建任务
CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class);
GjxCallEmpVehicleTask taskBean = SpringContextHolder.getBean(GjxCallEmpVehicleTask.class);
String task_id = taskBean.createTask(param);
// 下发
JSONObject jsonObject = taskBean.renotifyAcs(task_id);