|
@@ -12,10 +12,14 @@ import com.ruoyi.ams.tm.entity.TsDataResponse;
|
|
|
import com.ruoyi.ams.tm.entity.TsTaskStateResponse;
|
|
|
import com.ruoyi.ams.tm.service.ITsTaskService;
|
|
|
import com.ruoyi.base.constant.Constant;
|
|
|
+import com.ruoyi.base.domain.BaseLocationInfo;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.common.utils.http.HttpRequest;
|
|
|
+import com.ruoyi.system.enums.PLCConnectNameEnum;
|
|
|
+import com.ruoyi.system.enums.PLCEnum;
|
|
|
+import com.ruoyi.system.init.PlcConnectServiceRunner;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -38,16 +42,25 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
@Autowired
|
|
|
private WcsTaskServiceImpl wcsTaskServiceImpl;
|
|
|
@Autowired
|
|
|
+ private PlcConnectServiceRunner plcConnectServiceRunner;
|
|
|
+ @Autowired
|
|
|
private IBaseLocationInfoService baseLocationInfoService;
|
|
|
|
|
|
|
|
|
//任务状态翻译
|
|
|
private Integer tsStateConvert(String code) {
|
|
|
|
|
|
+ /**
|
|
|
+ * 1-任务开始
|
|
|
+ * 13-取货申请中 > 3-取货中 > 4-取货完成
|
|
|
+ * 14-卸货申请中 > 5-卸货中 > 6-卸货完成
|
|
|
+ * 2-任务完成
|
|
|
+ * 7-任务取消
|
|
|
+ */
|
|
|
switch (code) {
|
|
|
- case "tsOrderStarted":
|
|
|
+ case "tsOrder Started":
|
|
|
return 1;
|
|
|
- case "tsOrderFinished":
|
|
|
+ case "tsOrder Finished":
|
|
|
return 2;
|
|
|
case "Fetching":
|
|
|
return 3;
|
|
@@ -57,8 +70,12 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
return 5;
|
|
|
case "Delivered":
|
|
|
return 6;
|
|
|
- case "tsOrderFailed":
|
|
|
+ case "tsOrder Failed":
|
|
|
return 7;
|
|
|
+ case "AskForFetch":
|
|
|
+ return 13;
|
|
|
+ case "AskForDeliver":
|
|
|
+ return 14;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -68,14 +85,32 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
public synchronized TsTaskStateResponse confirmAnalysis(String tsOrder,String reqType, String agvNo) {
|
|
|
|
|
|
|
|
|
+ log.info("TS-天目取卸货申请------------->:TS任务号-{},状态-{},车号-{}",tsOrder,reqType,agvNo);
|
|
|
//根据TSOrder 查询任务
|
|
|
- WcsTask wcsTask = wcsTaskServiceImpl.selectWcsTaskByTaskNo(tsOrder);
|
|
|
+ WcsTask wcsTask = wcsTaskServiceImpl.selectWcsTaskByTsIndex(tsOrder);
|
|
|
if(wcsTask == null){
|
|
|
+ log.info("TsTaskServiceImpl---confirmAnalysis:未查询到对应任务-" + JSON.toJSONString(tsOrder));
|
|
|
return TsTaskStateResponse.error("未查询到对应任务!","");
|
|
|
}
|
|
|
- log.info("TsTaskServiceImpl---confirmAnalysis:" + JSON.toJSONString(wcsTask));
|
|
|
- return TsTaskStateResponse.success("","");
|
|
|
|
|
|
+ //取卸货编号 (1:取货申请 2:卸货申请)
|
|
|
+ boolean b = true;
|
|
|
+ /*if("1".equals(reqType)){
|
|
|
+
|
|
|
+ b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata())
|
|
|
+ .readBoolean(PLCEnum.PACKING_BLANK_1.getMetadata());
|
|
|
+ }else{
|
|
|
+
|
|
|
+ b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata())
|
|
|
+ .readBoolean(PLCEnum.PACKING_CALL_EMPTY_1.getMetadata());
|
|
|
+ }*/
|
|
|
+ log.info("TsTaskServiceImpl---confirmAnalysis:申请PLC取卸货-" + JSON.toJSONString(b));
|
|
|
+
|
|
|
+ if(b){
|
|
|
+ return TsTaskStateResponse.success("申请PLC取卸货-可执行取卸货","");
|
|
|
+ }else{
|
|
|
+ return TsTaskStateResponse.error("申请PLC取卸货-不可执行取卸货","");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -106,11 +141,11 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
log.info("TsTaskServiceImpl---tsTaskStateBack:未匹配到任务状态!");
|
|
|
return TsTaskStateResponse.error("未匹配到任务状态!","");
|
|
|
}
|
|
|
- if (state == 2) {
|
|
|
+ if (wcsTask.getState() == 2) {
|
|
|
log.info("TsTaskServiceImpl---tsTaskStateBack:已完成的任务无需反馈!");
|
|
|
return TsTaskStateResponse.error("已完成的任务无需反馈!","");
|
|
|
}
|
|
|
- if (state == 7 && wcsTask.getState() == 7) {
|
|
|
+ if (wcsTask.getState() == 7) {
|
|
|
log.info("TsTaskServiceImpl---tsTaskStateBack:已取消的任务无需重复取消!");
|
|
|
return TsTaskStateResponse.error("已取消的任务无需重复取消!","");
|
|
|
}
|
|
@@ -121,12 +156,16 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
switch (state) {
|
|
|
case 1:
|
|
|
wcsTask.setStartTime(new Date());
|
|
|
+ wcsTask.setRemark("任务开始执行!");
|
|
|
break;
|
|
|
case 2:
|
|
|
if (wcsTask.getState() == 3 || wcsTask.getState() == 4) {
|
|
|
log.info("任务未取货,不能直接完成!" + wcsTask.getTaskNo());
|
|
|
return TsTaskStateResponse.error("任务未取货,不能直接完成!" ,"");
|
|
|
}
|
|
|
+ if (wcsTask.getState() == 6) {
|
|
|
+ return TsTaskStateResponse.success("执行成功!" ,"");
|
|
|
+ }
|
|
|
// 解锁终点库位
|
|
|
baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo()), Constant.WAREHOUSE_ID, "TS-TM");
|
|
|
// 将中间缓存位库存移动到终点
|
|
@@ -135,8 +174,10 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
}
|
|
|
+ wcsTask.setRemark("任务完成!");
|
|
|
break;
|
|
|
case 3:
|
|
|
+ wcsTask.setRemark("任务取货申请中!");
|
|
|
break;
|
|
|
case 4:
|
|
|
if (wcsTask.getState() == 4) {
|
|
@@ -151,11 +192,18 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
|
|
|
}
|
|
|
+ //下料 取货完成后 写PLC
|
|
|
+ /*if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_XL.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata())
|
|
|
+ .writeBoolean(PLCEnum.PACKING_BLANK_2.getMetadata(), true);
|
|
|
+ }*/
|
|
|
+ wcsTask.setRemark("任务取货完成!");
|
|
|
break;
|
|
|
case 5:
|
|
|
+ wcsTask.setRemark("任务卸货申请中!");
|
|
|
break;
|
|
|
case 6:
|
|
|
- if (wcsTask.getState() == 3 || wcsTask.getState() == 4) {
|
|
|
+ if (wcsTask.getState() != 4) {
|
|
|
log.info("任务未取货,不能直接卸货!" + wcsTask.getTaskNo());
|
|
|
return TsTaskStateResponse.error("任务未取货,不能直接卸货!","");
|
|
|
}
|
|
@@ -171,6 +219,12 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
}
|
|
|
+ // 添加空托 卸货完成后 写PLC
|
|
|
+ /*if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_SK.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata())
|
|
|
+ .writeBoolean(PLCEnum.PACKING_CALL_EMPTY_2.getMetadata(), true);
|
|
|
+ }*/
|
|
|
+ wcsTask.setRemark("任务卸货完成!");
|
|
|
break;
|
|
|
case 7:
|
|
|
//如果取到货就只解锁终点库位
|
|
@@ -185,6 +239,7 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
}
|
|
|
+ wcsTask.setRemark("任务取消!");
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -202,6 +257,7 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
|
|
|
wcsTask.setEndTime(new Date());
|
|
|
wcsTask.setState(state.longValue());
|
|
|
+ wcsTask.setAgvNo(agvNo);
|
|
|
wcsTask.setUpdateUser("TS-TM");
|
|
|
wcsTask.setUpdateDate(new Date());
|
|
|
wcsTaskService.updateWcsTask(wcsTask);
|
|
@@ -216,50 +272,59 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
try {
|
|
|
List<OrderSequence> orderSequenceList = new ArrayList<>();
|
|
|
|
|
|
+ BaseLocationInfo blf = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(wcsTask.getLocationFrom()));
|
|
|
+ BaseLocationInfo blt = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(wcsTask.getLocationTo()));
|
|
|
+
|
|
|
+ if(blf == null || blt ==null){
|
|
|
+ return new TsDataResponse();
|
|
|
+ }
|
|
|
+
|
|
|
//起始点位
|
|
|
Destinations deLocF = new Destinations();
|
|
|
- deLocF.setLocationName(wcsTask.getLocationFrom());
|
|
|
+ deLocF.setLocationName(blf.getAgvStation());
|
|
|
deLocF.setOperation("Floor0_Take");
|
|
|
List<Destinations> desFList = new ArrayList<>();
|
|
|
desFList.add(deLocF);
|
|
|
OrderSequence orderLocF = new OrderSequence();
|
|
|
- orderLocF.setStep("1");
|
|
|
+ orderLocF.setStep(1);
|
|
|
orderLocF.setDestinations(desFList);
|
|
|
//目标点位
|
|
|
Destinations deLocT = new Destinations();
|
|
|
- deLocT.setLocationName(wcsTask.getLocationTo());
|
|
|
+ deLocT.setLocationName(blt.getAgvStation());
|
|
|
deLocT.setOperation("Floor0_Place");
|
|
|
List<Destinations> desTList = new ArrayList<>();
|
|
|
desTList.add(deLocT);
|
|
|
OrderSequence orderLocT = new OrderSequence();
|
|
|
- orderLocT.setStep("2");
|
|
|
+ orderLocT.setStep(2);
|
|
|
orderLocT.setDestinations(desTList);
|
|
|
|
|
|
orderSequenceList.add(orderLocF);
|
|
|
orderSequenceList.add(orderLocT);
|
|
|
|
|
|
JSONObject jsonObject= new JSONObject();
|
|
|
- jsonObject.put("priority",wcsTask.getPriority()); //任务优先级
|
|
|
- jsonObject.put("intendedVehicle",""); //计划车辆(不指定的话不传参数)
|
|
|
- jsonObject.put("orderType",""); //TS 流程编号(默认值由 TS 的 json 文件给出)
|
|
|
- jsonObject.put("circulation",""); //循环执行订单(给1则表示循环,不需要循环可以不给改参数)
|
|
|
+ //jsonObject.put("priority",wcsTask.getPriority()); //任务优先级 该项目TS不需要或者为空的话就不传
|
|
|
+ //jsonObject.put("intendedVehicle",""); //计划车辆(不指定的话不传参数) 该项目TS不需要或者为空的话就不传
|
|
|
+ jsonObject.put("orderType",Integer.valueOf(wcsTask.getExt6())); //TS 流程编号(默认值由 TS 的 json 文件给出)
|
|
|
+ //jsonObject.put("circulation",""); //循环执行订单(给1则表示循环,不需要循环可以不给改参数) 该项目TS不需要或者为空的话就不传
|
|
|
jsonObject.put("orderSequence",orderSequenceList); //点位 列表
|
|
|
|
|
|
log.info("TsTaskServiceImpl---sendTaskOrder:创建TS任务单:"+ JSON.toJSONString(jsonObject));
|
|
|
- //String str = HttpRequest.postData(TsDataConfiguration.SEND_JOB_TS,jsonObject);
|
|
|
- String str = "{\n" +
|
|
|
+ String str = HttpRequest.postData(TsDataConfiguration.SEND_JOB_TS,jsonObject);
|
|
|
+ /*String str = "{\n" +
|
|
|
" \"success\": true,\n" +
|
|
|
" \"error_code\": \"0000\",\n" +
|
|
|
" \"msg\": \"\",\n" +
|
|
|
" \"data\": \"TSOrder-0003\"\n" +
|
|
|
- "}";
|
|
|
+ "}";*/
|
|
|
log.info("TsTaskServiceImpl---sendTaskOrder:TS任务单创建结果:"+ JSON.toJSONString(str));
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
|
|
|
if("true".equals(tsData.getSuccess())){
|
|
|
|
|
|
wcsTask.setState(10L);
|
|
|
+ wcsTask.setUpdateDate(new Date());
|
|
|
wcsTask.setDeviceName(tsData.getData().toString());
|
|
|
+ wcsTask.setRemark("TS任务下发成功!");
|
|
|
}else{
|
|
|
|
|
|
wcsTask.setRemark("错误码:"+tsData.getError_code()+",错误信息:"+tsData.getMsg());
|
|
@@ -281,8 +346,11 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
|
|
|
try {
|
|
|
|
|
|
- //String str = HttpRequest.getData(TsDataConfiguration.QUERY_ORDER_INFO_TS_INDEX,":orderIndex",tsIndex);
|
|
|
- String str = "{\n" +
|
|
|
+ String url = TsDataConfiguration.QUERY_ORDER_INFO_TS_INDEX+"/"+tsIndex;
|
|
|
+ log.info("TsTaskServiceImpl---queryOrderInfoByIndex:获取订单路径:"+ JSON.toJSONString(url));
|
|
|
+
|
|
|
+ String str = HttpRequest.getData(url);
|
|
|
+ /*String str = "{\n" +
|
|
|
"\t\"success\": true,\n" +
|
|
|
"\t\"error_code\": \"0000\",\n" +
|
|
|
"\t\"msg\": \"\",\n" +
|
|
@@ -297,7 +365,7 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
"\t\t\t\"Location-0004\"\n" +
|
|
|
"\t\t]\n" +
|
|
|
"\t}\n" +
|
|
|
- "}";
|
|
|
+ "}";*/
|
|
|
log.info("TsTaskServiceImpl---queryOrderInfoByIndex:获取订单信息结果:"+ JSON.toJSONString(str));
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
return tsData;
|
|
@@ -315,8 +383,8 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
|
|
|
try {
|
|
|
|
|
|
- //String str = HttpRequest.getData(TsDataConfiguration.QUERY_ORDER_INFO);
|
|
|
- String str = "{\n" +
|
|
|
+ String str = HttpRequest.getData(TsDataConfiguration.QUERY_ORDER_INFO);
|
|
|
+ /*String str = "{\n" +
|
|
|
"\t\"success\": true,\n" +
|
|
|
"\t\"error_code\": \"0000\",\n" +
|
|
|
"\t\"msg\": \"\",\n" +
|
|
@@ -366,7 +434,7 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
"\t\t\t]\n" +
|
|
|
"\t\t}\n" +
|
|
|
"\t]\n" +
|
|
|
- "}";
|
|
|
+ "}";*/
|
|
|
log.info("TsTaskServiceImpl---queryOrderInfo:全部订单信息结果:"+ JSON.toJSONString(str));
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
return tsData;
|
|
@@ -388,14 +456,14 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
return new TsDataResponse();
|
|
|
}
|
|
|
|
|
|
- JSONObject jsonObject= new JSONObject();
|
|
|
- jsonObject.put(":TSIndex",tsIndex);
|
|
|
-
|
|
|
- //String str = HttpRequest.postData(TsDataConfiguration.DEL_ORDER_TS_INDEX,jsonObject);
|
|
|
- String str = "{\n" +
|
|
|
+ String url = TsDataConfiguration.DEL_ORDER_TS_INDEX+"/"+tsIndex+"/true";
|
|
|
+ log.info("TsTaskServiceImpl---delOrderByIndex:根据TsIndex取消任务路径:"+ JSON.toJSONString(url));
|
|
|
+ String str = HttpRequest.postData(url);
|
|
|
+ /*String str = "{\n" +
|
|
|
"\"success\": true, \"error_code\": \"0000\", \"msg\": \"\", \"data\": \"\" }";
|
|
|
- log.info("TsTaskServiceImpl---delOrderByIndex:取消结果:"+ JSON.toJSONString(str));
|
|
|
+ */
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
+ log.info("TsTaskServiceImpl---delOrderByIndex:根据TsIndex取消任务结果:"+ JSON.toJSONString(str));
|
|
|
return tsData;
|
|
|
|
|
|
}catch (Exception e){
|
|
@@ -411,14 +479,14 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
|
|
|
try {
|
|
|
|
|
|
- JSONObject jsonObject= new JSONObject();
|
|
|
- jsonObject.put(":VehicleName",agvNo);
|
|
|
-
|
|
|
- //String str = HttpRequest.postData(TsDataConfiguration.DEL_ORDER_AGV_NO,jsonObject);
|
|
|
- String str = "{\n" +
|
|
|
+ String url = TsDataConfiguration.DEL_ORDER_AGV_NO+"/"+agvNo;
|
|
|
+ log.info("TsTaskServiceImpl---delOrderByAgvNo:根据车号取消任务路径:"+ JSON.toJSONString(url));
|
|
|
+ String str = HttpRequest.postData(url);
|
|
|
+ /*String str = "{\n" +
|
|
|
"\"success\": true, \"error_code\": \"0000\", \"msg\": \"\", \"data\": \"\" }";
|
|
|
- log.info("TsTaskServiceImpl---delOrder:取消结果:"+ JSON.toJSONString(str));
|
|
|
+ */
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
+ log.info("TsTaskServiceImpl---delOrderByAgvNo:根据车号取消任务结果:"+ JSON.toJSONString(str));
|
|
|
return tsData;
|
|
|
|
|
|
}catch (Exception e){
|
|
@@ -446,11 +514,35 @@ public class TsTaskServiceImpl implements ITsTaskService {
|
|
|
jsonObject.put("destinations",desList);
|
|
|
|
|
|
log.info("TsTaskServiceImpl---sendChargeJob:发送充电任务:"+ JSON.toJSONString(jsonObject));
|
|
|
- //String str = HttpRequest.postData(TsDataConfiguration.SEND_CHARGE_JOB,jsonObject);
|
|
|
- String str = "{\n" +
|
|
|
+ String str = HttpRequest.postData(TsDataConfiguration.SEND_CHARGE_JOB,jsonObject);
|
|
|
+ /*String str = "{\n" +
|
|
|
+ "\"success\": true, \"error_code\": \"0000\", \"msg\": \"\", \"data\": \"\" }";
|
|
|
+ log.info("TsTaskServiceImpl---sendChargeJob:充电消息发送结果:"+ JSON.toJSONString(str));*/
|
|
|
+ TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
+ log.info("TsTaskServiceImpl---sendChargeJob:发送任务结果:"+ JSON.toJSONString(tsData));
|
|
|
+ return tsData;
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ return new TsDataResponse();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public synchronized TsDataResponse delChargeJob(String agvTaskNo) {
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ String url = TsDataConfiguration.DEL_CHARGE_JOB+"/"+agvTaskNo;
|
|
|
+ log.info("TsTaskServiceImpl---delChargeJob:取消充电任务路径:"+ JSON.toJSONString(url));
|
|
|
+ String str = HttpRequest.postData(url);
|
|
|
+ /*String str = "{\n" +
|
|
|
"\"success\": true, \"error_code\": \"0000\", \"msg\": \"\", \"data\": \"\" }";
|
|
|
- log.info("TsTaskServiceImpl---sendChargeJob:充电消息发送结果:"+ JSON.toJSONString(str));
|
|
|
+ */
|
|
|
TsDataResponse tsData = JSONObject.parseObject(str, TsDataResponse.class);
|
|
|
+ log.info("TsTaskServiceImpl---delOrderByAgvNo:取消充电任务结果:"+ JSON.toJSONString(str));
|
|
|
return tsData;
|
|
|
|
|
|
}catch (Exception e){
|