TianaoServiceImpl.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. package com.ruoyi.tianao.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import cn.hutool.http.HttpRequest;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.ruoyi.ams.agv.ndc.domain.AmsTask;
  6. import com.ruoyi.ams.agv.ndc.entity.CarStatus;
  7. import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
  8. import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
  9. import com.ruoyi.ams.task.domain.WcsTask;
  10. import com.ruoyi.ams.task.mapper.WcsTaskMapper;
  11. import com.ruoyi.ams.task.service.IWcsTaskService;
  12. import com.ruoyi.base.constant.Constant;
  13. import com.ruoyi.base.domain.BaseLocationInfo;
  14. import com.ruoyi.base.service.IBaseLocationInfoService;
  15. import com.ruoyi.common.core.domain.AjaxResult;
  16. import com.ruoyi.common.exception.base.BaseException;
  17. import com.ruoyi.common.utils.DateUtils;
  18. import com.ruoyi.common.utils.StringUtils;
  19. import com.ruoyi.tianao.domian.TianaoTask;
  20. import com.ruoyi.tianao.service.TianaoService;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.context.event.EventListener;
  24. import org.springframework.scheduling.annotation.Async;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import java.util.Arrays;
  28. import java.util.Date;
  29. import java.util.List;
  30. /**
  31. * Created with IntelliJ IDEA.
  32. *
  33. * @author: liuzhifei
  34. * Date: 2023/6/6
  35. * Time: 14:53
  36. * To change this template use File | Settings | File Templates.
  37. * Description:
  38. **/
  39. @Service
  40. @Slf4j
  41. public class TianaoServiceImpl implements TianaoService {
  42. @Autowired
  43. private IWcsTaskService wcsTaskService;
  44. @Autowired
  45. private WcsTaskMapper wcsTaskMapper;
  46. @Autowired
  47. private IBaseLocationInfoService iBaseLocationInfoService;
  48. @Autowired
  49. private StatusUpdateService statusUpdateService;
  50. @Autowired
  51. private IAmsTaskService amsTaskService;
  52. private final String taskBackUrl = "" ;
  53. private final String AGVStatusBackUrl = "" ;
  54. private final List<Long> statusLsit = Arrays.asList(11L,12L,5L,6L,7L);
  55. @Override
  56. public JSONObject addTask(TianaoTask tianaoTask) {
  57. if (tianaoTask.getFromLocation().equals(tianaoTask.getToLocation())) {
  58. throw new BaseException("起始库位与目标库位不能相同");
  59. }
  60. BaseLocationInfo formAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getFromLocation(), Constant.WAREHOUSE_ID);
  61. if(ObjectUtil.isNull(formAddress)){
  62. throw new BaseException("起始位置不存在,请联系管理员");
  63. }
  64. BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
  65. if(ObjectUtil.isNull(formAddress)){
  66. throw new BaseException("目标位置不存在,请联系管理员");
  67. }
  68. WcsTask wcsTask = new WcsTask();
  69. wcsTask.setTaskNo(System.currentTimeMillis() + "");
  70. wcsTask.setState(9L);
  71. wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
  72. wcsTask.setBusinessType(tianaoTask.getTaskType());
  73. wcsTask.setAreaFrom(formAddress.getZoneId().toString());
  74. wcsTask.setLocationFrom(tianaoTask.getFromLocation());
  75. wcsTask.setAreaTo(toAddress.getZoneId().toString());
  76. wcsTask.setLocationTo(tianaoTask.getToLocation());
  77. wcsTask.setCreateTime(tianaoTask.getTime());
  78. wcsTask.setCreateBy("上层调用");
  79. wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
  80. wcsTask.setPriority(10L);
  81. wcsTask.setExt7(tianaoTask.getLcsTaskId());
  82. wcsTask.setExt8(tianaoTask.getContainerNo());
  83. if (wcsTaskService.insertWcsTask(wcsTask) ==1){
  84. return returnJson("00000","任务发起成功","ok");
  85. }
  86. return returnJson("e0001","任务发起出错","fail");
  87. }
  88. @Override
  89. public JSONObject cancelTask(TianaoTask tianaoTask) {
  90. WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
  91. log.info(wcsTask.toString());
  92. if (ObjectUtil.isNull(wcsTask)) {
  93. return returnJson("e0001","任务查询不存在","fail");
  94. }
  95. if (wcsTaskService.cancelTask(wcsTask).isSuccess()){
  96. return returnJson("00000","任务取消成功","ok");
  97. }
  98. return returnJson("e0001","任务取消出错","fail");
  99. }
  100. @Override
  101. @Transactional
  102. public JSONObject updateTask(TianaoTask tianaoTask) {
  103. WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
  104. if (ObjectUtil.isNull(wcsTask)) {
  105. return returnJson("e0001","任务查询不存在","fail");
  106. }
  107. if (statusLsit.contains(wcsTask.getState())){
  108. return returnJson("e0001","当前任务无法修改卸货点","fail");
  109. }
  110. if (wcsTask.getState()!=9) {
  111. try {
  112. AmsTask amsTask = new AmsTask();
  113. amsTask.setTaskNo(wcsTask.getTaskNo());
  114. amsTask = amsTaskService.selectAmsTaskByModel(amsTask);
  115. Integer carNo = Integer.getInteger(wcsTask.getAgvNo());
  116. if (ObjectUtil.isNotNull(carNo)){
  117. //TODO To志飞:这一步是做什么的?
  118. statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(),carNo
  119. , "02", tianaoTask.getToLocation());
  120. Thread.sleep(1000);
  121. //TODO To志飞:这一步是做什么的?
  122. statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(), carNo
  123. , "10", "1");
  124. Thread.sleep(1000);
  125. }
  126. }catch (Exception e){
  127. log.info(e.getMessage());
  128. return returnJson("e0001","任务修改卸货点失败","fail");
  129. }
  130. }
  131. BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
  132. wcsTask.setAreaTo(toAddress.getZoneId().toString());
  133. wcsTask.setLocationTo(tianaoTask.getToLocation());
  134. if(wcsTaskService.updateWcsTask(wcsTask)==1){
  135. return returnJson("00000","卸货点修改成功","ok");
  136. }
  137. return returnJson("e0001","任务修改卸货点失败","fail");
  138. }
  139. @EventListener
  140. @Async
  141. public String getAGVCoordinate(CarStatus car) {
  142. System.out.println(String.format("叉车信息:%s", car));
  143. JSONObject jsonObject = new JSONObject();
  144. jsonObject.put("carNo",car.getCarNo());
  145. jsonObject.put("y",car.getY());
  146. jsonObject.put("x",car.getX());
  147. String body = HttpRequest.post(AGVStatusBackUrl)
  148. .form(jsonObject)
  149. .contentType("application/json").execute().body();
  150. System.out.println(String.format("回调结果:%s", body));
  151. return body;
  152. }
  153. @EventListener
  154. @Async
  155. public void tianaoCallBack(WcsTask wcsTask){
  156. if (StringUtils.isNotEmpty(wcsTask.getExt7())){
  157. JSONObject jsonObject = new JSONObject();
  158. jsonObject.put("lcsTaskId", wcsTask.getExt7());
  159. jsonObject.put("containerNo", wcsTask.getExt8());
  160. jsonObject.put("taskType", wcsTask.getBusinessType());
  161. jsonObject.put("taskStatus", wcsTask.getState());
  162. jsonObject.put("agvNo", wcsTask.getAgvNo());
  163. jsonObject.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
  164. String body = HttpRequest.post(taskBackUrl)
  165. .form(jsonObject)
  166. .contentType("application/json").execute().body();
  167. System.out.println(String.format("回调结果:%s", body));
  168. }
  169. }
  170. @Override
  171. public JSONObject returnJson(String code,String msg,String state){
  172. JSONObject jsonObject = new JSONObject();
  173. jsonObject.put("code",code);
  174. jsonObject.put("msg",msg);
  175. jsonObject.put("state",state);
  176. return jsonObject;
  177. }
  178. }