123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- package com.ruoyi.tianao.service.impl;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.http.HttpRequest;
- import com.alibaba.fastjson.JSONObject;
- import com.ruoyi.ams.agv.ndc.domain.AmsTask;
- import com.ruoyi.ams.agv.ndc.entity.CarStatus;
- import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
- import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
- import com.ruoyi.ams.task.domain.WcsTask;
- import com.ruoyi.ams.task.mapper.WcsTaskMapper;
- 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.exception.base.BaseException;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.StringUtils;
- 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.context.event.EventListener;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- /**
- * Created with IntelliJ IDEA.
- *
- * @author: liuzhifei
- * Date: 2023/6/6
- * Time: 14:53
- * To change this template use File | Settings | File Templates.
- * Description:
- **/
- @Service
- @Slf4j
- public class TianaoServiceImpl implements TianaoService {
- @Autowired
- private IWcsTaskService wcsTaskService;
- @Autowired
- private WcsTaskMapper wcsTaskMapper;
- @Autowired
- private IBaseLocationInfoService iBaseLocationInfoService;
- @Autowired
- private StatusUpdateService statusUpdateService;
- @Autowired
- private IAmsTaskService amsTaskService;
- private final String taskBackUrl = "" ;
- private final String AGVStatusBackUrl = "" ;
- private final List<Long> statusLsit = Arrays.asList(11L,12L,5L,6L,7L);
- @Override
- public JSONObject addTask(TianaoTask tianaoTask) {
- if (tianaoTask.getFromLocation().equals(tianaoTask.getToLocation())) {
- throw new BaseException("起始库位与目标库位不能相同");
- }
- BaseLocationInfo formAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getFromLocation(), Constant.WAREHOUSE_ID);
- if(ObjectUtil.isNull(formAddress)){
- throw new BaseException("起始位置不存在,请联系管理员");
- }
- BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
- if(ObjectUtil.isNull(formAddress)){
- throw new BaseException("目标位置不存在,请联系管理员");
- }
- WcsTask wcsTask = new WcsTask();
- wcsTask.setTaskNo(System.currentTimeMillis() + "");
- wcsTask.setState(9L);
- wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
- wcsTask.setBusinessType(tianaoTask.getTaskType());
- wcsTask.setAreaFrom(formAddress.getZoneId().toString());
- wcsTask.setLocationFrom(tianaoTask.getFromLocation());
- wcsTask.setAreaTo(toAddress.getZoneId().toString());
- wcsTask.setLocationTo(tianaoTask.getToLocation());
- wcsTask.setCreateTime(tianaoTask.getTime());
- wcsTask.setCreateBy("上层调用");
- wcsTask.setShopId(Constant.WAREHOUSE_ID.toString());
- wcsTask.setPriority(10L);
- wcsTask.setExt7(tianaoTask.getLcsTaskId());
- wcsTask.setExt8(tianaoTask.getContainerNo());
- if (wcsTaskService.insertWcsTask(wcsTask) ==1){
- return returnJson("00000","任务发起成功","ok");
- }
- return returnJson("e0001","任务发起出错","fail");
- }
- @Override
- public JSONObject cancelTask(TianaoTask tianaoTask) {
- WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
- log.info(wcsTask.toString());
- if (ObjectUtil.isNull(wcsTask)) {
- return returnJson("e0001","任务查询不存在","fail");
- }
- if (wcsTaskService.cancelTask(wcsTask).isSuccess()){
- return returnJson("00000","任务取消成功","ok");
- }
- return returnJson("e0001","任务取消出错","fail");
- }
- @Override
- @Transactional
- public JSONObject updateTask(TianaoTask tianaoTask) {
- WcsTask wcsTask = wcsTaskMapper.selectWcsTaskByLcsTaskId(tianaoTask.getLcsTaskId());
- if (ObjectUtil.isNull(wcsTask)) {
- return returnJson("e0001","任务查询不存在","fail");
- }
- if (statusLsit.contains(wcsTask.getState())){
- return returnJson("e0001","当前任务无法修改卸货点","fail");
- }
- if (wcsTask.getState()!=9) {
- try {
- AmsTask amsTask = new AmsTask();
- amsTask.setTaskNo(wcsTask.getTaskNo());
- amsTask = amsTaskService.selectAmsTaskByModel(amsTask);
- Integer carNo = Integer.getInteger(wcsTask.getAgvNo());
- if (ObjectUtil.isNotNull(carNo)){
- //TODO To志飞:这一步是做什么的?
- statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(),carNo
- , "02", tianaoTask.getToLocation());
- Thread.sleep(1000);
- //TODO To志飞:这一步是做什么的?
- statusUpdateService.confirmAnalysis(wcsTask.getTaskNo(), amsTask.getAciIndex(), carNo
- , "10", "1");
- Thread.sleep(1000);
- }
- }catch (Exception e){
- log.info(e.getMessage());
- return returnJson("e0001","任务修改卸货点失败","fail");
- }
- }
- BaseLocationInfo toAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(tianaoTask.getToLocation(), Constant.WAREHOUSE_ID);
- wcsTask.setAreaTo(toAddress.getZoneId().toString());
- wcsTask.setLocationTo(tianaoTask.getToLocation());
- if(wcsTaskService.updateWcsTask(wcsTask)==1){
- return returnJson("00000","卸货点修改成功","ok");
- }
- return returnJson("e0001","任务修改卸货点失败","fail");
- }
- @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());
- String body = HttpRequest.post(AGVStatusBackUrl)
- .form(jsonObject)
- .contentType("application/json").execute().body();
- System.out.println(String.format("回调结果:%s", body));
- return body;
- }
- @EventListener
- @Async
- public void 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()));
- String body = HttpRequest.post(taskBackUrl)
- .form(jsonObject)
- .contentType("application/json").execute().body();
- System.out.println(String.format("回调结果:%s", body));
- }
- }
- @Override
- public JSONObject returnJson(String code,String msg,String state){
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("code",code);
- jsonObject.put("msg",msg);
- jsonObject.put("state",state);
- return jsonObject;
- }
- }
|