diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index d6346a9..ec40204 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -57,6 +57,12 @@ test + + org.reflections + reflections + 0.9.10 + + diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateTask.java b/lms/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateTask.java new file mode 100644 index 0000000..df0f332 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateTask.java @@ -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 taskList = null; + private Set> 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 tasks = (List) 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); + } + } + + } + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 8c8c703..9ca2ee7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -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);