|
@@ -13,7 +13,6 @@ import com.ruoyi.ams.task.service.IWcsTaskService;
|
|
|
import com.ruoyi.base.constant.Constant;
|
|
|
import com.ruoyi.base.domain.BaseLocationInfo;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
|
-import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
|
|
import com.ruoyi.common.exception.base.BaseException;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
@@ -22,6 +21,7 @@ import com.ruoyi.tianao.domian.TianaoTask;
|
|
|
import com.ruoyi.tianao.service.TianaoService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.event.EventListener;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -61,9 +61,10 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
@Autowired
|
|
|
private IAmsTaskService amsTaskService;
|
|
|
|
|
|
- private final String taskBackUrl = "" ;
|
|
|
-
|
|
|
- private final String AGVStatusBackUrl = "" ;
|
|
|
+ @Value("${tianao.taskBackUrl}")
|
|
|
+ private String taskBackUrl;
|
|
|
+ @Value("${tianao.AGVStatusBackUrl}")
|
|
|
+ private String AGVStatusBackUrl ;
|
|
|
|
|
|
private final List<Long> statusLsit = Arrays.asList(11L,12L,5L,6L,7L);
|
|
|
|
|
@@ -73,37 +74,40 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject addTask(TianaoTask tianaoTask) {
|
|
|
- if (redisCache.checkIsLock(tianaoTask.getLcsTaskId())){
|
|
|
+ if (redisCache.checkIsLock(tianaoTask.getLcs_task_id())){
|
|
|
return returnJson("e0001","任务Id已重复","fail");
|
|
|
}
|
|
|
- if (tianaoTask.getFromLocation().equals(tianaoTask.getToLocation())) {
|
|
|
- throw new BaseException("起始库位与目标库位不能相同");
|
|
|
+ if (tianaoTask.getFrom_location().equals(tianaoTask.getTo_location())) {
|
|
|
+ return returnJson("e0001","起始库位与目标库位不能相同","fail");
|
|
|
}
|
|
|
- BaseLocationInfo formAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getFromLocation(), Constant.WAREHOUSE_ID);
|
|
|
+ BaseLocationInfo formAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getFrom_location(), Constant.WAREHOUSE_ID);
|
|
|
if(ObjectUtil.isNull(formAddress)){
|
|
|
- throw new BaseException("起始位置不存在,请联系管理员");
|
|
|
+ return returnJson("e0001","起始位置不存在","fail");
|
|
|
}
|
|
|
- BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
|
|
|
- if(ObjectUtil.isNull(formAddress)){
|
|
|
- throw new BaseException("目标位置不存在,请联系管理员");
|
|
|
+ BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getTo_location(), Constant.WAREHOUSE_ID);
|
|
|
+ if(ObjectUtil.isNull(toAddress)){
|
|
|
+ return returnJson("e0001","目标位置不存在","fail");
|
|
|
+ }
|
|
|
+ if("N".equals(toAddress.getIsEmpty())){
|
|
|
+ return returnJson("e0001","目标位置库存不为空","fail");
|
|
|
}
|
|
|
WcsTask wcsTask = new WcsTask();
|
|
|
wcsTask.setTaskNo(System.currentTimeMillis() + "");
|
|
|
wcsTask.setState(9L);
|
|
|
wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
|
|
|
- wcsTask.setBusinessType(tianaoTask.getTaskType());
|
|
|
+ wcsTask.setBusinessType(tianaoTask.getTask_type());
|
|
|
wcsTask.setAreaFrom(formAddress.getZoneId().toString());
|
|
|
- wcsTask.setLocationFrom(tianaoTask.getFromLocation());
|
|
|
+ wcsTask.setLocationFrom(formAddress.getId().toString());
|
|
|
wcsTask.setAreaTo(toAddress.getZoneId().toString());
|
|
|
- wcsTask.setLocationTo(tianaoTask.getToLocation());
|
|
|
+ wcsTask.setLocationTo(toAddress.getId().toString());
|
|
|
wcsTask.setCreateTime(tianaoTask.getTime());
|
|
|
wcsTask.setCreateBy("上层调用");
|
|
|
wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
|
|
|
wcsTask.setPriority(10L);
|
|
|
- wcsTask.setExt7(tianaoTask.getLcsTaskId());
|
|
|
- wcsTask.setExt8(tianaoTask.getContainerNo());
|
|
|
+ wcsTask.setExt7(tianaoTask.getLcs_task_id());
|
|
|
+ wcsTask.setExt5(tianaoTask.getContainer_no());
|
|
|
if (wcsTaskService.insertWcsTask(wcsTask) ==1){
|
|
|
- redisCache.setCacheObject(tianaoTask.getLcsTaskId(),tianaoTask.getLcsTaskId(),30,TimeUnit.SECONDS);
|
|
|
+ redisCache.setCacheObject(tianaoTask.getLcs_task_id(),tianaoTask.getLcs_task_id(),30,TimeUnit.SECONDS);
|
|
|
return returnJson("00000","任务发起成功","ok");
|
|
|
}
|
|
|
return returnJson("e0001","任务发起出错","fail");
|
|
@@ -111,7 +115,7 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject cancelTask(TianaoTask tianaoTask) {
|
|
|
- WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
|
|
|
+ WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcs_task_id());
|
|
|
log.info(wcsTask.toString());
|
|
|
if (ObjectUtil.isNull(wcsTask)) {
|
|
|
return returnJson("e0001","任务查询不存在","fail");
|
|
@@ -125,14 +129,14 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public JSONObject updateTask(TianaoTask tianaoTask) {
|
|
|
- WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
|
|
|
+ WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcs_task_id());
|
|
|
if (ObjectUtil.isNull(wcsTask)) {
|
|
|
return returnJson("e0001","任务查询不存在","fail");
|
|
|
}
|
|
|
if (statusLsit.contains(wcsTask.getState())){
|
|
|
return returnJson("e0001","当前任务无法修改卸货点","fail");
|
|
|
}
|
|
|
- if("N".equals( iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID).getIsEmpty())){
|
|
|
+ if("N".equals( iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getTo_location(), Constant.WAREHOUSE_ID).getIsEmpty())){
|
|
|
return returnJson("e0001","目标卸货点不为空","fail");
|
|
|
}
|
|
|
if (wcsTask.getState()!=9) {
|
|
@@ -144,7 +148,7 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
if (ObjectUtil.isNotNull(carNo)){
|
|
|
//修改AGV任务目标地址
|
|
|
statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(),carNo
|
|
|
- , "02", tianaoTask.getToLocation());
|
|
|
+ , "02", tianaoTask.getTo_location());
|
|
|
Thread.sleep(1000);
|
|
|
statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(), carNo
|
|
|
, "10", "1");
|
|
@@ -155,9 +159,9 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
return returnJson("e0001","任务修改卸货点失败","fail");
|
|
|
}
|
|
|
}
|
|
|
- BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
|
|
|
+ BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getTo_location(), Constant.WAREHOUSE_ID);
|
|
|
wcsTask.setAreaTo(toAddress.getZoneId().toString());
|
|
|
- wcsTask.setLocationTo(tianaoTask.getToLocation());
|
|
|
+ wcsTask.setLocationTo(tianaoTask.getTo_location());
|
|
|
if(wcsTaskService.updateWcsTask(wcsTask)==1){
|
|
|
return returnJson("00000","卸货点修改成功","ok");
|
|
|
}
|
|
@@ -167,34 +171,42 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
@EventListener
|
|
|
@Async
|
|
|
public String getAGVCoordinate(CarStatus car) {
|
|
|
- System.out.println(String.format("叉车信息:%s", car));
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("carNo",car.getCarNo());
|
|
|
- jsonObject.put("y",car.getY());
|
|
|
- jsonObject.put("x",car.getX());
|
|
|
+ JSONObject jsonObject1 = new JSONObject();
|
|
|
+ jsonObject1.put("carNo",car.getCarNo());
|
|
|
+ jsonObject1.put("y",car.getY());
|
|
|
+ jsonObject1.put("x",car.getX());
|
|
|
+ jsonObject1.put("time",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
|
|
|
+ jsonObject.put("HEADER",jsonObject1);
|
|
|
+ log.info("反馈AGV坐标请求参数:{}",jsonObject);
|
|
|
String body = HttpRequest.post(AGVStatusBackUrl)
|
|
|
- .form(jsonObject)
|
|
|
+ .body(jsonObject.toString())
|
|
|
.contentType("application/json").execute().body();
|
|
|
- System.out.println(String.format("回调结果:%s", body));
|
|
|
+ log.info("反馈AGV坐标回调结果:{}",body);
|
|
|
return body;
|
|
|
}
|
|
|
|
|
|
@EventListener
|
|
|
@Async
|
|
|
- public void tianaoCallBack(WcsTask wcsTask){
|
|
|
+ public String tianaoCallBack(WcsTask wcsTask){
|
|
|
if (StringUtils.isNotEmpty(wcsTask.getExt7())){
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("lcsTaskId", wcsTask.getExt7());
|
|
|
- jsonObject.put("containerNo", wcsTask.getExt8());
|
|
|
- jsonObject.put("taskType", wcsTask.getBusinessType());
|
|
|
- jsonObject.put("taskStatus", wcsTask.getState());
|
|
|
- jsonObject.put("agvNo", wcsTask.getAgvNo());
|
|
|
- jsonObject.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
|
|
|
+ JSONObject jsonObject1 = new JSONObject();
|
|
|
+ jsonObject1.put("lcs_task_id", wcsTask.getExt7());
|
|
|
+ jsonObject1.put("container_no", wcsTask.getExt5());
|
|
|
+ jsonObject1.put("task_type", wcsTask.getBusinessType());
|
|
|
+ jsonObject1.put("task_status", wcsTask.getState());
|
|
|
+ jsonObject1.put("agv_no", wcsTask.getAgvNo());
|
|
|
+ jsonObject1.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
|
|
|
+ jsonObject.put("HEADER",jsonObject1);
|
|
|
+ log.info("反馈任务状态请求参数:{}",jsonObject);
|
|
|
String body = HttpRequest.post(taskBackUrl)
|
|
|
- .form(jsonObject)
|
|
|
+ .body(jsonObject.toString())
|
|
|
.contentType("application/json").execute().body();
|
|
|
- System.out.println(String.format("回调结果:%s", body));
|
|
|
+ log.info("反馈任务状态回调结果:{}", body);
|
|
|
+ return body;
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -205,4 +217,14 @@ public class TianaoServiceImpl implements TianaoService {
|
|
|
jsonObject.put("state",state);
|
|
|
return jsonObject;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testTask(WcsTask wcsTask) {
|
|
|
+ return tianaoCallBack(wcsTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testAgvAddress(CarStatus car) {
|
|
|
+ return getAGVCoordinate(car);
|
|
|
+ }
|
|
|
}
|