CreateWXAgvTaskApiService.java 3.11 KB
package com.huaheng.api.sap.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.sap.domain.WxAgvTaskDomain;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.station.domain.Station;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.sap.service.ZarshService;
import com.huaheng.pc.sap.service.ZarsiService;
import com.huaheng.pc.task.agvTask.domain.AgvTask;
import com.huaheng.pc.task.agvTask.service.AgvTaskService;

@Service
public class CreateWXAgvTaskApiService {
    @Resource
    private ZarshService zarshService;
    @Resource
    private ZarsiService zarsiService;
    @Resource
    private ZoneService zoneService;
    @Resource
    private ZarApiService zarApiService;
    @Resource
    private AgvTaskService agvTaskService;
    @Resource
    private StationService stationService;

    /**
     * @param wxAgvTaskDomain
     */
    public AjaxResult createWXAgvTask(WxAgvTaskDomain wxAgvTaskDomain) {
        Station from_station = stationService.getStaionByCode(wxAgvTaskDomain.getFromPos());
        Station to_station = stationService.getStaionByCode(wxAgvTaskDomain.getFromPos());

        if (from_station.getIsWXF() != 2 || to_station.getIsWXF() != 2) {
            return AjaxResult.error("起点或终点只能是维修房或提升间");
        }
        String fromPos = wxAgvTaskDomain.getFromPos();
        String toPos = wxAgvTaskDomain.getToPos();
        if (fromPos.equals(toPos)) {
            return AjaxResult.error("起点和终点不能重复");
        }
        String[] splitstr = wxAgvTaskDomain.getStopPoint().split(",");
        for (int a = 0; a < splitstr.length; a++) {
            Station stop_station = stationService.getStaionByCode(splitstr[a]);
            if (stop_station.getIsWXF() != 3) {
                return AjaxResult.error("不是暂停点" + splitstr[a]);
            }
        }
        // 重复任务判断
        LambdaQueryWrapper<AgvTask> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(AgvTask::getFromPoint, fromPos);
        wrapper.eq(AgvTask::getToPoint, toPos);
        wrapper.lt(AgvTask::getState, 100);
        wrapper.last("limit 1");
        AgvTask agvTask1 = agvTaskService.getOne(wrapper);
        if (agvTask1 != null) {
            return AjaxResult.error("已经存在任务,请不要重复下发" + fromPos + ":" + toPos);
        }

        AgvTask agvTask = new AgvTask();
        agvTask.setFromPoint(wxAgvTaskDomain.getFromPos());
        agvTask.setToPoint(wxAgvTaskDomain.getToPos());
        agvTask.setStopPoint(wxAgvTaskDomain.getStopPoint());
        agvTask.setUniqueId(wxAgvTaskDomain.getUniqueId());
        agvTask.setZoneCode(QuantityConstant.AGV_ZONE);
        if (!agvTaskService.save(agvTask)) {
            return AjaxResult.error("创建任务失败");
        }
        return AjaxResult.success();
    }

}