AcsService.java 5.73 KB
package com.huaheng.api.ACS.service;

import com.alibaba.fastjson.JSON;
import com.huaheng.api.ACS.domain.AvgTaskModel;
import com.huaheng.api.ACS.domain.Points;
import com.huaheng.api.ACS.domain.StateInfoUploadModel;
import com.huaheng.common.utils.DataUtils;
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.task.task.domain.Task;
import com.huaheng.pc.task.task.mapper.AgvStateInfoMapper;
import com.huaheng.pc.task.task.mapper.AgvTaskMapper;
import com.huaheng.pc.task.task.service.ITaskService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.ITaskDetailService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@Service
public class AcsService {

    @Autowired
    private ITaskService taskService;
    @Autowired
    private ITaskDetailService taskDetailService;
    @Resource
    private AgvTaskMapper agvTaskMapper;
    @Resource
    private AgvStateInfoMapper agvStateInfoMapper;
    @Resource
    private PointsService pointsService;

    final String interactionId = "6EAB7794-CFD7-449A-A754-FFDB98CE44C7";

    /**
     * AGV 任务下发
     */
//    @RequiresPermissions("api:acs:TaskAssign")
    @Log(title = "AGV 任务下发", action = BusinessType.INSERT)
    @PostMapping("/TaskAssign")
    @ResponseBody
    public AjaxResult TaskAssign(String url)
    {
        //查找下发任务
        Task task=new Task();
        task.setZoneCode("AGV");
        task.setDeleted(false);
        task.setFirstStatus((short)1);
        task.setLastStatus((short)1);
        task=taskService.selectFirstEntity(task);

        //查找对应的子任务
        TaskDetail taskDetail = new TaskDetail();
        taskDetail.setDeleted(false);
        taskDetail.setTaskId(task.getId());
        taskDetail = taskDetailService.selectFirstEntity(taskDetail);

        //查找对应的货架
        String code=task.getContainerCode().substring(0,4);
        Points points=new Points();
        points=pointsService.selectEntity(code);
        //货架是否锁定,正在任务中
        if(points.getIsLocked().equals(0)) {
            AvgTaskModel model = new AvgTaskModel();
            model.setInteractionId(interactionId);
            model.setTaskHeaderId(taskDetail.getTaskId());
            model.setTaskDetailId(taskDetail.getId());
            model.setTaskType("pick");
            model.setShelfNo(points.getGoodsShelfNo());
            model.setStation("ws01");
            model.setFromLocationNo(task.getSourceLocation());
            model.setToLocationNo(task.getDestinationLocation());
            model.setOrientation("A");
            model.setPlatform("wms");
            String JsonParam = JSON.toJSONString(model);
            String result = HttpUtils.sendPost(url, JsonParam);
            AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
            points.setIsLocked(1);
            pointsService.updatePoints(points);
            return ajaxResult;
        }
        return AjaxResult.success("货架正在任务中");
    }

    /**
     * AGV 任务取消
     */
    public AjaxResult TaskCancel(String message)
    {
        Map<String, Object> map = new HashMap<>();
        map.put("interactionId", interactionId);
        map.put("reason", message);
        String JsonParam = JSON.toJSONString(map);
        String url= "http://172.16.30.242:8081/api/TaskCancel";
        String result = HttpUtils.sendPost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        return ajaxResult;
    }

    /**
     * AGV 信息查询
     */

    public AjaxResult StateInfoGET(String carNo)
    {
        Map<String, String> map = new HashMap<>();
        map.put("carNo", carNo);
        map.put("interactionId", interactionId);
        String JsonParam = JSON.toJSONString(map);
        String url= "http://172.16.30.242:8081/api/StateInfoGET";
        String result = HttpUtils.sendPost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        return ajaxResult;
    }

    /**
     * AGV 旋转方向
     */
    public AjaxResult TurnOriention(String carNo,String orientation)
    {
        Map<String, String> map = new HashMap<>();
        map.put("carNo", carNo);
        map.put("orientation", orientation);
        String JsonParam = JSON.toJSONString(map);
        String url= "http://172.16.30.242:8081/api/TurnOriention";
        String result = HttpUtils.sendPost(url, JsonParam);
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        return ajaxResult;
    }

    /**
     * AGV 任务回传
     */
    public AjaxResult TaskConfirm(@RequestBody AvgTaskModel model)
    {
        try {
            agvTaskMapper.insertModel(model);
        }catch (Exception e){
            return AjaxResult.error("没有数据");
        }
        return AjaxResult.success(model);
    }

    /**
     * AGV 信息上传
     */
    public AjaxResult StateInfoUpload(@RequestBody StateInfoUploadModel model)
    {
        try {
            agvStateInfoMapper.insertModel(model);
        }catch (Exception e){
            return AjaxResult.error("没有数据");
        }
        return AjaxResult.success("收到");
    }
}