From 1a0bd089510bf3752fb895d314197990e6ccf3c6 Mon Sep 17 00:00:00 2001 From: ldj_willow Date: Sat, 22 Oct 2022 14:30:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BB=A3=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 37 +--- .../org/nl/wms/ext/auto/AutoQueryTask.java | 4 +- .../main/java/org/nl/wms/sch/SchTaskDto.java | 175 ++++++++++++++++++ .../nl/wms/sch/manage/AbstractAcsTask.java | 91 +++------ .../sch/manage}/AutoCreateTask.java | 4 +- .../nl/wms/sch/tasks/CallEmpVehicleTask.java | 13 +- .../nl/wms/sch/tasks/CallMaterialTask.java | 29 ++- .../wms/sch/tasks/GjxCallEmpVehicleTask.java | 34 ++-- .../wms/sch/tasks/HtSendEmpVehicleTask.java | 14 +- .../nl/wms/sch/tasks/PointToPointTask.java | 10 +- .../nl/wms/sch/tasks/SendEmpVehicleTask.java | 10 +- .../nl/wms/sch/tasks/SendMaterialTask.java | 13 +- .../wms/sch/tasks/YqxCallEmpVehicleTask.java | 11 +- .../wms/sch/tasks/YqxSendEmpVehicleTask.java | 10 +- .../tasks/sendMaterial/GjxSendMaterial.java | 75 ++++++++ .../src/main/java/org/nl/wms/util/IdUtil.java | 11 ++ .../src/main/java/org/nl/wms/wms.xls | Bin 235008 -> 273920 bytes 17 files changed, 390 insertions(+), 151 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java rename lms/nladmin-system/src/main/java/org/nl/{modules/quartz/task => wms/sch/manage}/AutoCreateTask.java (97%) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterial.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/util/IdUtil.java 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 9835f00..bb2436c 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 @@ -224,16 +224,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 回显任务载具类型 jsonTask.put("vehicle_type", json.getString("vehicle_type")); taskTab.update(jsonTask); - - // 下发 - JSONObject jsonObject = taskBean.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode()); - taskTab.update(jsonTask); - } else { - throw new BadRequestException(jsonObject.getString("message")); - } } else if (StrUtil.equals(type, "3")) { // 3.油漆线申请空盘: 调用空托盘出库处理类创建任务 if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); @@ -244,14 +234,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 创建任务 CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class); String task_id = taskBean.createTask(param); - JSONObject jsonObject = taskBean.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode()); - taskTab.update(jsonTask); - } else { - throw new BadRequestException(jsonObject.getString("message")); - } } else if (StrUtil.equals(type, "4")) { // 4.油漆线申请物料: 调用物料出库库处理类创建任务 JSONObject param = new JSONObject(); @@ -277,14 +259,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonRegion.put("task_id", Long.valueOf(task_id)); regionTab.update(jsonRegion); - // 下发 - JSONObject jsonObject = taskBean.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode()); - taskTab.update(jsonTask); - } else { - throw new BadRequestException(jsonObject.getString("message")); - } } else if (StrUtil.equals(type, "5")) { // 5.油漆线空盘入库: 调用空托盘入库处理类创建任务 if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); @@ -322,7 +296,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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 = taskBean.renotifyAcs(task_id); + JSONObject jsonObject=new JSONObject(); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 更新任务状态 jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode()); @@ -363,14 +338,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonTask.put("vehicle_type", json.getString("vehicle_type")); taskTab.update(jsonTask); - // 下发 - JSONObject jsonObject = taskBean.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - jsonTask.put("task_status", TaskStatusEnum.ISSUE.getCode()); - taskTab.update(jsonTask); - } else { - throw new BadRequestException(jsonObject.getString("message")); - } } return null; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java index e40b413..7614ba1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java @@ -101,7 +101,7 @@ public class AutoQueryTask { jsonTask.put("point_code2", "SSX01A1"); taskTab.update(jsonTask); // 4.4.下发ACS - JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); + JSONObject jsonResultAcs = pointTaskBean.notifyAcs(jsonTask.getString("task_id")); if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { // 4.5.下发成功、更新任务状态 @@ -125,7 +125,7 @@ public class AutoQueryTask { jsonTask.put("point_code2", "SSX02A1"); taskTab.update(jsonTask); // 5.4.下发ACS - JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); + JSONObject jsonResultAcs = pointTaskBean.notifyAcs(jsonTask.getString("task_id")); if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { // 4.5.下发成功、更新任务状态 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java new file mode 100644 index 0000000..a70f0f5 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java @@ -0,0 +1,175 @@ +package org.nl.wms.sch; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ldjun + * @description / + * @date 2022-10-22 + **/ +@Data +@Builder +public class SchTaskDto implements Serializable { + + /** 任务标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long task_id; + + /** + * 任务编码 + */ + private String task_code; + + /** + * 任务类型 + */ + private String task_type; + + /** + * 任务状态 + */ + private String task_status; + + /** + * 点位1 + */ + private String point_code1; + + /** + * 点位2 + */ + private String point_code2; + + /** + * 点位3 + */ + private String point_code3; + + /** + * 点位4 + */ + private String point_code4; + + /** + * 物料标识 + */ + private Long material_id; + + /** + * 载具类型 + */ + private String vehicle_type; + + /** + * 载具数量 + */ + private Integer vehicle_qty; + + /** + * 载具编码 + */ + private String vehicle_code; + + /** + * 优先级 + */ + private String priority; + + /** + * 处理类 + */ + private String handle_class; + + /** + * 任务组标识 + */ + private Long task_group_id; + + /** + * 任务顺序号 + */ + private Integer sort_seq; + + /** + * 任务完成类型 + */ + private String finished_type; + + /** + * acs任务类型 + */ + private String acs_task_type; + + /** + * 业务表表名 + */ + private String table_name; + + /** + * 业务表表名主键字段 + */ + private String table_fk; + + /** + * 业务表表名主键值 + */ + private Long table_fk_id; + + /** + * 备注 + */ + private String remark; + + /** + * 备注1 + */ + private String remark2; + + /** + * 备注2 + */ + private String remark3; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 车号 + */ + private String car_no; + + /** + * 是否自动下发 + */ + private String is_auto_issue; + + /** + * 生成任务的请求参数 + */ + private String request_param; + + /** + * 下发任务的请求参数 + */ + private String response_param; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index 28dcc20..1f64773 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -1,14 +1,10 @@ package org.nl.wms.sch.manage; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.AcsUtil; import org.nl.wms.sch.tasks.AcsTaskDto; - -import java.util.ArrayList; import java.util.List; /** @@ -21,8 +17,6 @@ import java.util.List; * @created 2020年6月12日 下午5:53:28 */ public abstract class AbstractAcsTask { - - /** * @discription 在如果任务无法形成会一直定时刷新判断 * @author ldjun @@ -40,25 +34,7 @@ public abstract class AbstractAcsTask { * * @return */ - public List addTask() { - //任务基础表【sch_base_task】 - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONArray tasks = taskTab.query("handle_class = '" + this.getClass().getName() + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); - List arr = new ArrayList<>(); - for (int i = 0, j = tasks.size(); i < j; i++) { - JSONObject json = tasks.getJSONObject(i); - AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setTask_id(json.getString("task_id")); - taskDto.setTask_code(json.getString("task_code")); - taskDto.setTask_type("1"); - taskDto.setRoute_plan_code("normal"); - 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); - } - return arr; - } + public abstract List addTask(); /** * @param taskObj 代表一条任务对象 @@ -77,7 +53,7 @@ public abstract class AbstractAcsTask { * @created 2020年6月12日 下午6:01:30 */ - public void findStartPoint(){ + public void findStartPoint() { } @@ -87,9 +63,11 @@ public abstract class AbstractAcsTask { * @author ldjun * @created 2020年6月12日 下午6:01:06 */ - public void findNextPoint(){ + public void findNextPoint() { - }; + } + + ; /** * @param form 创建任务需要的参数 @@ -104,37 +82,35 @@ public abstract class AbstractAcsTask { } - /** * @return WCS的任务集合 - * @discription 重新下发给wcs任务 + * @discription 下发给wcs任务 * @author ldjun * @created 2020年6月12日 下午5:52:28 */ - public JSONObject renotifyAcs(String task_id) { - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONArray jsonArray = new JSONArray(); - JSONArray arr = taskTab.query("task_id = '" + task_id + "'").getResultJSONArray(0); - for (int i = 0, j = arr.size(); i < j; i++) { - JSONObject json = arr.getJSONObject(i); - AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setTask_id(json.getString("task_id")); - taskDto.setTask_code(json.getString("task_code")); - taskDto.setStart_device_code(json.getString("point_code1")); - taskDto.setNext_device_code(json.getString("point_code2")); - taskDto.setPriority("1"); - taskDto.setVehicle_type(json.getString("vehicle_type")); - taskDto.setVehicle_code(json.getString("vehicle_code")); - taskDto.setPriority(json.getString("priority")); - taskDto.setTask_type("1"); - taskDto.setRoute_plan_code("normal"); + public JSONObject notifyAcs(String task_id) { + return AcsUtil.notifyAcs("api/wms/task", null); + } - jsonArray.add(JSONObject.parse(JSON.toJSONString(taskDto))); - - } + /** + * @return WCS的任务集合 + * @discription 再次下发给wcs任务 + * @author ldjun + * @created 2020年6月12日 下午5:52:28 + */ + public JSONObject notifyAcs(JSONArray jsonArray) { return AcsUtil.notifyAcs("api/wms/task", jsonArray); } + /** + * + */ + public JSONObject immediateNotifyAcs() { + List schedule = this.schedule(); + JSONArray arr = JSONArray.parseArray(schedule.toString()); + return AcsUtil.notifyAcs("api/wms/task", arr); + } + /** * @param task_id 任务标识 * @return @@ -145,29 +121,18 @@ public abstract class AbstractAcsTask { public abstract void forceFinish(String task_id); /** - * @param task_id - * @return - * @discription 任务搬回原起点。 - * @author ldjun - * @created 2020年6月22日 下午8:40:58 - */ - public abstract void pullBack(String task_id); - - /** - * 取消任务 + * 取消任务,货物搬回原点 * * @param task_id */ public abstract void cancel(String task_id); /** - * * @param task_id: 任务标识 * @return 二次申请的点位 */ - String againApply(String task_id){ + String againApply(String task_id) { return null; } - } 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/wms/sch/manage/AutoCreateTask.java similarity index 97% rename from lms/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateTask.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java index 198950a..af2d49e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java @@ -1,4 +1,4 @@ -package org.nl.modules.quartz.task; +package org.nl.wms.sch.manage; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -9,8 +9,6 @@ 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; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java index fb48d75..e6060b3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.List; @Service @RequiredArgsConstructor @@ -32,6 +33,9 @@ import java.math.BigDecimal; public class CallEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = CallEmpVehicleTask.class.getName(); + + + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -166,10 +170,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { @@ -289,4 +290,10 @@ public class CallEmpVehicleTask extends AbstractAcsTask { resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); return resuft; } + + @Override + public List addTask() { + return null; + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java index 5d87503..640513e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java @@ -21,7 +21,9 @@ import org.nl.wms.sch.service.impl.PointServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; @Service public class CallMaterialTask extends AbstractAcsTask { @@ -122,7 +124,6 @@ public class CallMaterialTask extends AbstractAcsTask { } - @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { @@ -209,14 +210,30 @@ public class CallMaterialTask extends AbstractAcsTask { } @Override - 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()); + public List addTask() { + //任务基础表【sch_base_task】 + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONArray tasks = taskTab.query("handle_class = '" + this.getClass().getName() + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + List arr = new ArrayList<>(); + for (int i = 0, j = tasks.size(); i < j; i++) { + JSONObject json = tasks.getJSONObject(i); + AcsTaskDto taskDto = new AcsTaskDto(); + taskDto.setTask_id(json.getString("task_id")); + taskDto.setTask_code(json.getString("task_code")); + taskDto.setTask_type("1"); + taskDto.setRoute_plan_code("normal"); + 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); + } + return arr; } @Override - public void pullBack(String task_id) { - + 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()); } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java index 5e353c1..1483eec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java @@ -18,6 +18,8 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j @@ -27,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; public class GjxCallEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = GjxCallEmpVehicleTask.class.getName(); + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -69,21 +72,21 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { startPoint.put("update_time", DateUtil.now()); pointTab.update(startPoint, "point_code = '" + start_point_code + "'"); //更新终点点位状态 - endPoint.put("point_status","2"); - endPoint.put("lock_type","00"); - endPoint.put("vehicle_qty",jsonTask.getString("vehicle_qty")); - endPoint.put("vehicle_type",jsonTask.getString("vehicle_type")); - endPoint.put("update_time",DateUtil.now()); + endPoint.put("point_status", "2"); + endPoint.put("lock_type", "00"); + endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty")); + endPoint.put("vehicle_type", jsonTask.getString("vehicle_type")); + endPoint.put("update_time", DateUtil.now()); pointTab.update(endPoint); - }else { + } else { JSONObject startPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); Integer vehicle_qty = startPoint.getInteger("vehicle_qty"); - int after_qty=vehicle_qty-1; + int after_qty = vehicle_qty - 1; startPoint.put("lock_type", "1"); startPoint.put("vehicle_qty", after_qty); - if (after_qty>0){ + if (after_qty > 0) { startPoint.put("point_status", "2"); - }else { + } else { startPoint.put("point_status", "1"); } startPoint.put("update_time", DateUtil.now()); @@ -91,6 +94,10 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { } } } + @Override + public List addTask() { + return null; + } @Override public void findStartPoint() { @@ -129,7 +136,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { //去缓存位和养生A区找,生成到叠盘架的任务 JSONObject whereParam = new JSONObject(); whereParam.put("flag", "1"); - whereParam.put("vehicle_type", '%'+jsonTask.getString("vehicle_type")+"%"); + whereParam.put("vehicle_type", '%' + jsonTask.getString("vehicle_type") + "%"); JSONObject outJsonObj = WQL.getWO("ST_VEHICLE_OUT_01").addParamMap(whereParam).process().uniqueResult(0); // 空托盘缓存货架或者养生A区------>叠盘架B区 @@ -155,7 +162,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { //锁住起点 outJsonObj.put("lock_type", "2"); pointTab.update(outJsonObj); - this.renotifyAcs(String.valueOf(task_id)); + this.notifyAcs(String.valueOf(task_id)); jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); @@ -223,11 +230,6 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - - } - @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/HtSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/HtSendEmpVehicleTask.java index 0c5f226..6ac4e3a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/HtSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/HtSendEmpVehicleTask.java @@ -19,12 +19,16 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j 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) { @@ -298,11 +302,6 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - - } - @Override public void cancel(String task_id) { @@ -459,5 +458,8 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask { return point_code; } - + @Override + public List addTask() { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java index be4e610..4e6e115 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java @@ -10,11 +10,14 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 普通点对点任务 */ @Service public class PointToPointTask extends AbstractAcsTask { + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -62,10 +65,13 @@ public class PointToPointTask extends AbstractAcsTask { } @Override - public void pullBack(String task_id) { - + public List addTask() { + return null; } + + + @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java index 64b3d8d..bb55cdf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; @Service @RequiredArgsConstructor @@ -32,6 +33,8 @@ import java.util.HashMap; public class SendEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = SendEmpVehicleTask.class.getName(); + + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -155,10 +158,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { @@ -270,4 +270,8 @@ public class SendEmpVehicleTask extends AbstractAcsTask { resuft.put("vehicle_type",vehicle_type); return resuft; } + @Override + public List addTask() { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index 6bc9681..6dfaf49 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -24,6 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; @Service @RequiredArgsConstructor @@ -32,6 +33,8 @@ public class SendMaterialTask extends AbstractAcsTask { private final String THIS_CLASS = SendMaterialTask.class.getName(); + + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -229,11 +232,6 @@ public class SendMaterialTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - - } - @Override public void cancel(String task_id) { @@ -278,6 +276,9 @@ public class SendMaterialTask extends AbstractAcsTask { resuft.put("point_code2", point_code2); return resuft; } - + @Override + public List addTask() { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxCallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxCallEmpVehicleTask.java index ff8c4bc..8416903 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxCallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxCallEmpVehicleTask.java @@ -25,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.List; @Service @RequiredArgsConstructor @@ -32,6 +33,8 @@ import java.math.BigDecimal; public class YqxCallEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = YqxCallEmpVehicleTask.class.getName(); + + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -165,10 +168,7 @@ public class YqxCallEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { @@ -288,4 +288,9 @@ public class YqxCallEmpVehicleTask extends AbstractAcsTask { resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); return resuft; } + + @Override + public List addTask() { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxSendEmpVehicleTask.java index 49c1911..b470314 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/YqxSendEmpVehicleTask.java @@ -18,12 +18,15 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j public class YqxSendEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = YqxSendEmpVehicleTask.class.getName(); + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -173,14 +176,15 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { } + @Override + public List addTask() { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterial.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterial.java new file mode 100644 index 0000000..6fb220c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterial.java @@ -0,0 +1,75 @@ +package org.nl.wms.sch.tasks.sendMaterial; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +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.tasks.AcsTaskDto; +import org.nl.wms.util.IdUtil; + +import java.util.List; + + +/** + * 共挤线送料任务服务 + */ +public class GjxSendMaterial extends AbstractAcsTask { + + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + + } + + @Override + public void findNextPoint() { + + } + + @Override + public List addTask() { + return null; + } + + @Override + public String createTask(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + String vehicle_type = whereJson.getString("vehicle_type"); + String vehicle_code = whereJson.getString("vehicle_code"); + String qty = whereJson.getString("qty"); + + SchTaskDto dto = SchTaskDto.builder() + .task_id(IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("")) + .task_type("task_type") + .point_code1(point_code) + .vehicle_code("") + .handle_class("") + .create_time(DateUtil.now()) + .point_code1("") + .request_param(whereJson.toJSONString()) + .build(); + //任务表【SCH_BASE_Task】 + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + + //创建好立即下发 + this.immediateNotifyAcs(); + return String.valueOf(dto.getTask_id()); + } + + @Override + public void forceFinish(String task_id) { + + } + + + @Override + public void cancel(String task_id) { + + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/util/IdUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/util/IdUtil.java new file mode 100644 index 0000000..7af5e9a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/util/IdUtil.java @@ -0,0 +1,11 @@ +package org.nl.wms.util; + +public class IdUtil { + public static Long getLongId() { + return cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId(); + } + + public static String getStringId() { + return String.valueOf(IdUtil.getLongId()); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index 8469b6192d7ae4cde89301975f7f0ac85da93d6e..d7e96a3ec4435ec698cd7a3e3a0bc23982e68022 100644 GIT binary patch delta 91315 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 O+x0jM6DDSPUH=UbdJOvj delta 59899 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