AcsServiceImpl.java 5.3 KB
package com.huaheng.api.acs.service;

import com.alibaba.fastjson.JSON;
import com.huaheng.api.acs.domain.AgvDomain;
import com.huaheng.api.acs.domain.StateInfoUploadModel;
import com.huaheng.common.constant.HttpConstant;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.OkHttpUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.task.agvTask.domain.AgvTask;
import com.huaheng.pc.task.agvTask.service.AgvTaskService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName AcsServiceImpl
 * @Description TODO
 * @Author Administrator
 * @Date 2019/12/2615:38
 */
@Service
public class AcsServiceImpl implements AcsService {

    @Resource
    private AgvTaskService agvTaskService;
    @Resource
    private AddressService addressService;

    @Override
    public AjaxResult StateInfoUpload(StateInfoUploadModel model) {
        return null;
    }

    @Override
    public AjaxResult TaskConfirm(AgvTask agvTask) {
        return null;
    }

    @Override
    public AjaxResult executeAGVTask(AgvTask agvTask) {
        String toLocationCode = agvTask.getToPort();
        String fromLocationCode = agvTask.getFromPort();
        if(StringUtils.isEmpty(fromLocationCode)) {
            return AjaxResult.error("创建AGV任务失败,起点为空");
        }

        if(StringUtils.isEmpty(toLocationCode)) {
            return AjaxResult.error("创建AGV任务失败,终点为空");
        }
        AgvDomain agvDomain = new AgvDomain();
        agvDomain.setTaskNo(String.valueOf(agvTask.getId()));
        agvDomain.setTaskType(agvTask.getTaskType());
        agvDomain.setFromPort(agvTask.getFromPort());
        agvDomain.setToPort(agvTask.getToPort());
        agvDomain.setPriority(10);
//        if(!agvTaskService.save(agvTask)) {
//            throw new ServiceException("更新AGV任务状态失败");
//        }
        agvTask.setPriority(agvDomain.getPriority());
        agvDomain.setCreatedBy(agvTask.getCreatedBy());
        agvDomain.setQty(agvTask.getQty());
        agvDomain.setContainerCode(agvTask.getContainerCode());
        String warehouseCode = agvTask.getWarehouseCode();
        String url = addressService.selectAddress(QuantityConstant.ADDRESS_AGV_TASK_ASSIGN,
                warehouseCode, null);
        String jsonParam = JSON.toJSONString(agvDomain);
        String result = OkHttpUtils.bodypost(url, jsonParam);
        if(StringUtils.isEmpty(result)) {
            throw new ServiceException("接口地址错误或返回为空");
        }
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        if(ajaxResult.getCode() != HttpConstant.OK) {
            return AjaxResult.error(ajaxResult.getMsg());
        }
        return AjaxResult.success("创建AGV任务成功");
    }

    @Override
    public AjaxResult cancelAGVTask(AgvTask agvTask) {
        List<String> ids = new ArrayList<String>();
        ids.add(String.valueOf(agvTask.getId()));
        AgvDomain agvDomain = new AgvDomain();
        agvDomain.setTaskNo(String.valueOf(agvTask.getId()));
        String url = addressService.selectAddress(QuantityConstant.ADDRESS_AGV_TASK_CANCEL);
        String jsonParam = JSON.toJSONString(agvDomain);
        String result = OkHttpUtils.bodypost(url, jsonParam);
        if(StringUtils.isEmpty(result)) {
            throw new ServiceException("接口地址错误或返回为空");
        }
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        if(ajaxResult.getCode() != HttpConstant.OK) {
            return AjaxResult.error(ajaxResult.getMsg());
        }
        return AjaxResult.success("取消AGV任务成功");
    }

    @Override
    public AjaxResult updateAGVTask(AgvTask agvTask) {
        AgvDomain agvDomain = new AgvDomain();
        agvDomain.setTaskNo(String.valueOf(agvTask.getId()));
        agvDomain.setPriority(1);
        String url = addressService.selectAddress(QuantityConstant.ADDRESS_AGV_TASK_UPDATE);
        String jsonParam = JSON.toJSONString(agvDomain);
        String result = OkHttpUtils.bodypost(url, jsonParam);
        if(StringUtils.isEmpty(result)) {
            throw new ServiceException("接口地址错误或返回为空");
        }
        AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
        if(ajaxResult.getCode() != HttpConstant.OK) {
            return AjaxResult.error(ajaxResult.getMsg());
        }
        return AjaxResult.success("更新AGV任务成功");
    }

    @Override
    public AjaxResult notifyAGVTask(String taskNo, String carNo, int status, String updateBy) {
        AgvTask agvTask = agvTaskService.getById(taskNo);
        if(agvTask == null) {
            return AjaxResult.error("没有找到对应AGV任务,任务号为" + taskNo);
        }
        agvTask.setStatus(status);
        agvTask.setCarNo(carNo);
        agvTask.setLastUpdatedBy(updateBy);
        boolean result = agvTaskService.updateById(agvTask);
        if(!result) {
            return AjaxResult.error("更新任务信息失败 ");
        }
        return AjaxResult.success("更新任务信息成功");
    }
}