orderFinish(String string) {
JSONObject orderJson = JSONObject.parseObject(string);
String ext_order_id = orderJson.getString("ext_order_id");
// JSONArray array = JSONArray.parseArray(string);
String now = DateUtil.now();
- WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder");
+ WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER");
JSONObject map = new JSONObject();
- map.put("produceorder_id", ext_order_id);
+ map.put("workorder_id", ext_order_id);
map.put("order_status", "04");
map.put("update_optid", 1111111111);
map.put("device_id", "");
map.put("update_optname", "acs");
map.put("update_time", now);
map.put("realproduceend_date", now);
- wo.update(map, "produceorder_id = '" + ext_order_id + "'");
+ wo.update(map, "workorder_id = '" + ext_order_id + "'");
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
return result;
}
+ @LokiLog(type = LokiLogType.ACS_TO_LMS)
@Override
- @Transactional
- public JSONObject apply(JSONObject whereJson) {
+ @Transactional(rollbackFor = Exception.class)
+ public JSONObject apply(JSONObject whereJson) {
+ String type = whereJson.getString("type");
+ String point_code = whereJson.getString("point_code");
+ String vehicle_type = whereJson.getString("vehicle_type");
+ String vehicle_code = whereJson.getString("vehicle_code");
+ //载具数量
+ String vehicle_num = whereJson.getString("vehicle_num");
+ //物料数量
+ String material_num = whereJson.getString("material_num");
+
+ if (ObjectUtil.isEmpty(type)) throw new BadRequestException("类型不能为空");
+ if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空");
+
+ /*
+ * 根据type判断是什么业务类型:
+ * 1.共挤线申请空盘
+ * 2.共挤线满托入库
+ * 3.油漆线申请空盘
+ * 4.油漆线申请物料
+ * 5.油漆线空盘入库
+ * 6.一楼空盘入库 (有载具号)
+ * 7.油漆线->输送线(油漆线满料)
+ * 8.豪凯自动线下料入库
+ */
+
return null;
}
-
- @Transactional
- public void createEmp(JSONObject json) {
- String vehicle_qty = json.getString("vehicle_qty");
- String task_id = json.getString("task_id");
- String io_type = json.getString("io_type");
-
- WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表
- WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表
-
- JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
-
- JSONObject jsonEmp = new JSONObject();
- jsonEmp.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId());
- jsonEmp.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE"));
- jsonEmp.put("io_type", io_type);
- jsonEmp.put("bill_status", "20");
- jsonEmp.put("vehicle_qty", vehicle_qty);
- jsonEmp.put("start_point_code", jsonTask.getString("start_point_code"));
- Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id();
- jsonEmp.put("start_region_id", start_region_id);
- jsonEmp.put("next_point_code", jsonTask.getString("next_point_code"));
- Long next_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("next_point_code")).getRegion_id();
- jsonEmp.put("end_region_id", next_region_id);
- jsonEmp.put("task_uuid", task_id);
- jsonEmp.put("create_id", SecurityUtils.getCurrentUserId());
- jsonEmp.put("create_name", SecurityUtils.getCurrentNickName());
- jsonEmp.put("create_time", DateUtil.now());
- empTab.insert(jsonEmp);
- }
-
- @Transactional
- public JSONObject inCreateRegion(JSONObject json) {
- String start_point_code = json.getString("start_point_code");
- String next_point_code = json.getString("next_point_code");
- String qty = json.getString("qty");
- Long task_id = json.getLongValue("task_id");
- String io_type = json.getString("io_type");
-
- WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO");
- WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder");
- WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
-
-
- JSONObject jsonRegion = new JSONObject();
- jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId());
- jsonRegion.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
- jsonRegion.put("io_type", io_type);
- jsonRegion.put("bill_status", "20");
- // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型
- String device_code = start_point_code.substring(0, start_point_code.indexOf("_"));
-
- DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class);
- DeviceDto deviceDto = deviceBean.findByCode(device_code);
- if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在");
- JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0);
- if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在");
-
- jsonRegion.put("material_id", jsonOrder.getString("material_id"));
- jsonRegion.put("qty", qty);
- JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0);
- jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id"));
-
- jsonRegion.put("start_point_code", start_point_code);
- Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code).getRegion_id();
- jsonRegion.put("start_region_id", String.valueOf(start_region_id));
- jsonRegion.put("end_point_code", next_point_code);
- Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id();
- jsonRegion.put("end_region_id", String.valueOf(end_region_id));
-
- jsonRegion.put("create_mode", "02");
- jsonRegion.put("task_id", task_id);
- jsonRegion.put("create_id", SecurityUtils.getCurrentUserId());
- jsonRegion.put("create_name", SecurityUtils.getCurrentNickName());
- jsonRegion.put("create_time", DateUtil.now());
- regionTab.insert(jsonRegion);
-
- JSONObject resuft = new JSONObject();
- resuft.put("vehicle_type", jsonOrder.getString("vehicle_type"));
- resuft.put("material_id", jsonRegion.getString("material_id"));
- resuft.put("create_mode", jsonRegion.getString("create_mode"));
- return resuft;
- }
-
- @Transactional
- public JSONObject outCreateRegion(JSONObject json) {
- String next_point_code = json.getString("next_point_code");
- String io_type = json.getString("io_type");
-
- WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO");
- WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder");
- WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
-
- JSONObject jsonRegion = new JSONObject();
- jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId());
- jsonRegion.put("bill_code", CodeUtil.getNewCode("OUT_STORE_CODE"));
- jsonRegion.put("io_type", io_type);
- jsonRegion.put("bill_status", "20");
- // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型
- String device_code = next_point_code.substring(0, next_point_code.indexOf("_"));
-
- DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class);
- DeviceDto deviceDto = deviceBean.findByCode(device_code);
- if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在");
- JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0);
- if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在");
-
- jsonRegion.put("material_id", jsonOrder.getString("material_id"));
- jsonRegion.put("qty", "100"); // 暂时先按照100
- JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0);
- jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id"));
-
- jsonRegion.put("end_point_code", next_point_code);
- Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id();
- jsonRegion.put("end_region_id", String.valueOf(end_region_id));
-
- jsonRegion.put("create_mode", "02");
- jsonRegion.put("create_id", SecurityUtils.getCurrentUserId());
- jsonRegion.put("create_name", SecurityUtils.getCurrentNickName());
- jsonRegion.put("create_time", DateUtil.now());
- regionTab.insert(jsonRegion);
-
- // 需回显起始点位、起始区域、任务id
- JSONObject resuft = new JSONObject();
- resuft.put("iostorinv_id", jsonRegion.getString("iostorinv_id"));
- resuft.put("vehicle_type", jsonOrder.getString("vehicle_type"));
- resuft.put("create_mode", jsonRegion.getString("create_mode"));
- resuft.put("material_id", jsonOrder.getString("material_id"));
- return resuft;
- }
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java
index 90ba30508..9c28278bb 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java
@@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext.acs.service.WmsToAcsService;
-import org.nl.wms.sch.manage.AcsUtil;
+import org.nl.wms.sch.AcsUtil;
import org.springframework.stereotype.Service;
import java.util.Map;
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java
index 76e4693a8..466f2b1f3 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java
@@ -12,7 +12,9 @@ public enum LokiLogType {
LMS_TO_CRM("LMS请求CRM"),
CRM_TO_LMS("CRM请求LMS"),
LMS_TO_SAP("LMS请求SAP"),
- SAP_TO_LMS("SAP请求LMS");
+ SAP_TO_LMS("SAP请求LMS"),
+ LMS_TO_ACS("LMS请求ACS"),
+ ACS_TO_LMS("ACS请求LMS");
private String desc;
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
index cac26bea5..8cb752de4 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
@@ -14,7 +14,6 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.pda.mps.service.BakingService;
-import org.nl.wms.sch.manage.RegionTypeEnum;
import org.nl.wms.sch.tasks.InCoolIvtTask;
import org.nl.wms.sch.tasks.InHotTask;
import org.nl.wms.sch.tasks.OutHotTask;
@@ -101,13 +100,13 @@ public class BakingServiceImpl implements BakingService {
this.createHotDtl(hotParam);
// 4.下发任务
- JSONObject jsonObject = inHotTask.renotifyAcs(task_id);
+ /*JSONObject jsonObject = inHotTask.renotifyAcs(task_id);
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
jsonTask.put("task_status", "05");
taskTab.update(jsonTask);
- }
+ }*/
} else {
/*
* 冷却区入烘箱
@@ -122,7 +121,7 @@ public class BakingServiceImpl implements BakingService {
String point_location = jsonCoolIvt.getString("point_location"); // 位置
String reging_id = "";
- switch (product_area) {
+ /*switch (product_area) {
case "A":
reging_id = RegionTypeEnum.A_HKZC.getId();
break;
@@ -135,7 +134,7 @@ public class BakingServiceImpl implements BakingService {
case "D":
reging_id = RegionTypeEnum.D_HKZC.getId();
break;
- }
+ }*/
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("reging_id", reging_id);
@@ -197,7 +196,7 @@ public class BakingServiceImpl implements BakingService {
this.createHotDtl(hotParam);
// 5.下发任务
- JSONObject jsonObject = inHotTask.renotifyAcs(task_id);
+ /* JSONObject jsonObject = inHotTask.renotifyAcs(task_id);
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
@@ -207,7 +206,7 @@ public class BakingServiceImpl implements BakingService {
// 更新烘烤区主表状态为执行中
JSONObject jsonHotMst = hosReMstTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0);
jsonHotMst.put("bill_status", "40");
- }
+ }*/
}
} else if (StrUtil.equals(option, "2")) {
// 出箱
@@ -218,7 +217,7 @@ public class BakingServiceImpl implements BakingService {
// 1.查询暂存位有没有空位
String product_area = jsonHotIvt.getString("product_area");
String reging_id = "";
- switch (product_area) {
+ /* switch (product_area) {
case "A":
reging_id = RegionTypeEnum.A_HKZC.getId();
break;
@@ -231,7 +230,7 @@ public class BakingServiceImpl implements BakingService {
case "D":
reging_id = RegionTypeEnum.D_HKZC.getId();
break;
- }
+ }*/
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("reging_id", reging_id);
@@ -275,7 +274,7 @@ public class BakingServiceImpl implements BakingService {
this.createHotDtl(hotParam);
// 5.下发任务
- JSONObject jsonObject = outHotTask.renotifyAcs(task_id);
+ JSONObject jsonObject = outHotTask.immediateNotifyAcs();
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
@@ -339,7 +338,7 @@ public class BakingServiceImpl implements BakingService {
this.createHotDtl(hotParam);
// 5.下发任务
- JSONObject jsonObject = inCoolIvtTask.renotifyAcs(task_id);
+ JSONObject jsonObject = inCoolIvtTask.immediateNotifyAcs();
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java
index 0d96c8ffb..bd0a7a229 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java
@@ -18,8 +18,6 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.pda.mps.service.RawFoilService;
import org.nl.wms.sch.service.PointService;
-import org.nl.wms.sch.service.dto.PointDto;
-import org.nl.wms.sch.tasks.BookTwoConfirmTask;
import org.nl.wms.sch.tasks.CallEmpReelTask;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -194,13 +192,13 @@ public class RawFoilServiceImpl implements RawFoilService {
rawTab.update(jsonRaw);
// 下发任务
- JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_id);
+ /* JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_id);
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
jsonTask.put("task_status", "05");
taskTab.update(jsonTask);
- }
+ }*/
JSONObject jo = new JSONObject();
jo.put("message", "操作成功!");
return jo;
@@ -300,7 +298,7 @@ public class RawFoilServiceImpl implements RawFoilService {
rawTab.update(jsonRaw);
// 下发任务入库任务
- CallEmpReelTask callEmpReelTask = new CallEmpReelTask();
+ /*CallEmpReelTask callEmpReelTask = new CallEmpReelTask();
JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_jo.getString("task_id"));
if (StrUtil.equals(jsonObject.getString("status"), "200")) {
// 成功返回 更新任务状态
@@ -313,7 +311,7 @@ public class RawFoilServiceImpl implements RawFoilService {
jsonRegion.put("update_optname", currentUsername);
jsonRegion.put("update_time", DateUtil.now());
regionTab.update(jsonRegion);
- }
+ }*/
JSONObject jo = new JSONObject();
jo.put("message", "操作成功!");
return jo;
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java
similarity index 91%
rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java
rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java
index cc7da0ade..fc324b5ea 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java
@@ -1,8 +1,10 @@
-package org.nl.wms.sch.manage;
+package org.nl.wms.sch;
+import lombok.Builder;
import lombok.Data;
@Data
+@Builder
public class AcsTaskDto {
//任务标识
private String task_id;
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java
similarity index 93%
rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java
rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java
index 8f78dce4b..c123e8a67 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java
@@ -1,5 +1,5 @@
-package org.nl.wms.sch.manage;
+package org.nl.wms.sch;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
@@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus;
public class AcsUtil {
public static JSONObject notifyAcs(String api, JSONArray list) {
//判断是否连接ACS系统
- String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
+ String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("is_connect_acs").getValue();
JSONObject result = new JSONObject();
if (StrUtil.equals("0", isConnect)) {
result.put("status", HttpStatus.OK.value());
@@ -25,7 +25,7 @@ public class AcsUtil {
}
//ACS地址:127.0.0.1:8010
- String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("ACS_URL").getValue();
+ String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("acs_url").getValue();
String url = acsUrl + api;
try {
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 000000000..313d52df6
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java
@@ -0,0 +1,201 @@
+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_name;
+
+ /**
+ * 任务类型
+ */
+ 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_info_id;
+
+ /**
+ * 物料标识
+ */
+ 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 material_qty;
+
+ /**
+ * 任务完成类型
+ */
+ 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;
+
+ /**
+ * 车号
+ */
+ private String car_no;
+
+ /**
+ * 是否自动下发
+ */
+ private String is_auto_issue;
+
+ /**
+ * 生成任务的请求参数
+ */
+ private String request_param;
+
+ /**
+ * 下发任务的请求参数
+ */
+ private String response_param;
+
+
+ /**
+ * 是否删除
+ */
+ private String is_delete;
+
+ /**
+ * 创建人
+ */
+ private Long create_id;
+
+ /**
+ * 创建人
+ */
+ private String create_name;
+ /**
+ * 创建方式
+ */
+ private String create_mode;
+
+ /**
+ * 创建时间
+ */
+ private String create_time;
+
+ /**
+ * 修改人
+ */
+ private Long update_optid;
+
+ /**
+ * 修改人
+ */
+ private String update_optname;
+
+ /**
+ * 修改时间
+ */
+ private String update_time;
+}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java
deleted file mode 100644
index bdada08d7..000000000
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.nl.wms.sch;
-
-/**
- * 任务状态枚举
- */
-public enum TaskTypeEnum {
- //生箔任务
- SB_QKFM("sb_qkfm", "生箔取空放满","生箔取空放满"),
- SB_QK("sb_qk", "生箔取空","生箔取空"),
- SB_FM("sb_qk", "生箔放满","生箔放满"),
-
- //分切上料任务
- FQ_SL_QMFK("fq_sl_qmfk", "分切取满放空","分切放满"),
- FQ_SL_FM("fq_sl_fm", "分切放满","分切初始化"),
- FQ_SL_QK("fq_sl_qk", "分切取满放空","分切放满"),
-
- //分切下料任务
- FQ_XL_CZ("FQ_XL_QK", "子卷出站","子卷出站4个点"),
-
- //烘箱
- //入烘箱:3个点
- //输送任务。
- HX_R_QMFMFM("hx_r_qmfmfm", "入烘箱","入烘箱3个点"),
- HX_C_SS("hx_c_ss", "出烘箱输送线","出烘箱输送线"),
- HX_C_AGV("hx_c_agv", "出烘箱AGV","出烘箱AGV");
-
-
-
-
-
- private String code;
- private String name;
- private String description;
-
- public String getCode() {
- return code;
- }
-
- public String getName() {
- return name;
- }
-
- TaskTypeEnum(String code, String name,String description) {
- this.code = code;
- this.name = name;
- this.description = description;
- }
-
-}
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 55edd3da7..d4c3d0190 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,25 +1,24 @@
package org.nl.wms.sch.manage;
+import cn.hutool.core.util.ObjectUtil;
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.AcsTaskDto;
+import org.nl.wms.sch.AcsUtil;
-import java.util.ArrayList;
import java.util.List;
/**
* Title: AbstractAcsTask.java Description:任务抽象类
*
- * Task状态:01生成 ,02:确定起点,03、确定终点,04、起点和终点都确认,05:下发,可以下发, 06、执行中 07、完成
- * 完成方式:01自动,02:wcs删除,03、wms删除,04、发给wcs失败自动删除
+ * Task状态:1生成 ,2:确定起点,3、确定终点,4、起点和终点都确认,5:下发,可以下发, 6、执行中 7、完成
+ * 完成方式:1自动,2:wcs删除,3、wms删除,4、发给wcs失败自动删除
*
* @author ldjun
* @created 2020年6月12日 下午5:53:28
*/
public abstract class AbstractAcsTask {
-
-
/**
* @discription 在如果任务无法形成会一直定时刷新判断
* @author ldjun
@@ -37,29 +36,11 @@ 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("start_point_code"));
- taskDto.setNext_device_code(json.getString("next_point_code"));
- taskDto.setVehicle_code(json.getString("vehicle_code"));
- arr.add(taskDto);
- }
- return arr;
- }
+ public abstract List addTask();
/**
* @param taskObj 代表一条任务对象
- * @param status 代表wcs任务完成状态: //1:执行中,2:完成 ,3:acs取消
+ * @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成
* @return
* @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息
* @author ldjun
@@ -74,7 +55,9 @@ public abstract class AbstractAcsTask {
* @created 2020年6月12日 下午6:01:30
*/
- public abstract void findStartPoint();
+ public void findStartPoint() {
+
+ }
/**
* @return
@@ -82,7 +65,11 @@ public abstract class AbstractAcsTask {
* @author ldjun
* @created 2020年6月12日 下午6:01:06
*/
- public abstract void findNextPoint();
+ public void findNextPoint() {
+
+ }
+
+ ;
/**
* @param form 创建任务需要的参数
@@ -97,35 +84,40 @@ 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("start_point_code"));
- taskDto.setNext_device_code(json.getString("next_point_code"));
- taskDto.setPriority("1");
- taskDto.setVehicle_code(json.getString("vehicle_code"));
- 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 taskList = this.schedule();
+ if (ObjectUtil.isNotEmpty(taskList)) {
+
+ JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
+ return AcsUtil.notifyAcs("api/wms/task", arr);
+ }
+ return null;
+
+ }
+
/**
* @param task_id 任务标识
* @return
@@ -136,20 +128,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 二次申请的点位
+ */
+ public String againApply(String task_id) {
+ return null;
+ }
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java
new file mode 100644
index 000000000..d3d4a4fba
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java
@@ -0,0 +1,120 @@
+package org.nl.wms.sch.manage;
+
+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.AcsTaskDto;
+import org.nl.wms.sch.AcsUtil;
+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");
+ 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_id,message
+ JSONArray errArr = result.getJSONArray("errArr");
+
+ //任务下发以后,更新任务状态
+ //成功
+ if ("200".equals(status)) {
+ taskList.forEach(item -> {
+ JSONObject taskObj = new JSONObject();
+ taskObj.put("task_id", 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_id", 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/sch/manage/RegionTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java
deleted file mode 100644
index 71afd33bf..000000000
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.nl.wms.sch.manage;
-
-/**
- * 完成方式:00自动,01:手动
- */
-public enum RegionTypeEnum {
- A_SB("01","A生箔区","1578627451293143040"),
- B_SB("02","B生箔区",""),
- C_SB("03","C生箔区",""),
- D_SB("04","D生箔区",""),
- A_FQ("05","A分切区","1578628922277498880"),
- B_FQ("06","B分切区",""),
- C_FQ("07","C分切区",""),
- D_FQ("08","D分切区",""),
- A_HKZC("09","A烘烤暂存区","1578657813205487616"),
- B_HKZC("10","B烘烤暂存区",""),
- C_HKZC("11","C烘烤暂存区",""),
- D_HKZC("12","D烘烤暂存区","");
-
-
- private String name;
- private String code;
- private String id;
-
- private RegionTypeEnum(String code, String name, String id) {
- this.code = code;
- this.name = name;
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public String getCode() {
- return code;
- }
-
- public String getId() {
- return id;
- }
-}
-
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java
index a432fa1b4..8afd41e40 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java
@@ -1,16 +1,13 @@
package org.nl.wms.sch.manage;
-/**
- * Task状态:00生成 ,01:下发,02、执行中,03、完成
- */
public enum TaskStatusEnum {
- CREATED("01", "生成"),
- SURE_START("02", "确定起点"),
- SURE_END("03", "确定终点"),
- START_AND_POINT("04", "起点终点确认"),
- ISSUE("05", "下发"),
- EXECUTING("06", "执行中"),
- FINISHED("07", "完成");
+ CREATED("1", "生成"),
+ SURE_START("2", "确定起点"),
+ SURE_END("3", "确定终点"),
+ START_AND_POINT("4", "起点终点确认"),
+ ISSUE("5", "下发"),
+ EXECUTING("6", "执行中"),
+ FINISHED("7", "完成");
private String name;
private String code;
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java
index e65458932..87afafc62 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java
@@ -34,7 +34,7 @@ public class PointController {
@GetMapping
@Log("查询点位")
@ApiOperation("查询点位")
- //@PreAuthorize("@el.check('point:list')")
+ //@SaCheckPermission("point:list")
public ResponseEntity