TrussRobotController.java 4.85 KB
package com.huaheng.api.acs.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.acs.domain.pickContainer.ContainerPositionDomain;
import com.huaheng.api.acs.service.AcsService;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.service.ConfigService;
import com.huaheng.pc.sap.domain.Zarsi;
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;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/***
 * 商片包装 自动行架抓取
 * @author tongzonghao
 *
 */
@RestController
@RequestMapping("/API/WMS/v2")
public class TrussRobotController {

    @Resource
    private AgvTaskService agvTaskService;
    @Resource
    private ZarshService zarshService;
    @Resource
    private ZarsiService zarsiService;
    @Resource
    private AcsService acsService;

    @PostMapping("/pickContainerPosition")
    @ApiOperation("商片分拣物料")
    @ResponseBody
    @ApiLogger(apiName = "商片分拣物料", from = "acs")
    public AjaxResult pickContainerPosition(@RequestBody ContainerPositionDomain domain) {
        if(StringUtils.isNull(domain)){
            AjaxResult.error("请求内容未空");
        }
        String containerCode = domain.getContainerCode();
        String port = domain.getStationCode();
        if(StringUtils.isEmpty(containerCode)){
            return AjaxResult.error("站台不能为空");
        }
        if(!"P2026".equals(port)){
            return AjaxResult.error("不是指定站台P2026");
        }
        //AGV任务
        AgvTask agvTask = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>()
                .eq(AgvTask::getPalletNo,containerCode)
                .eq(AgvTask::getState,60)
                .eq(AgvTask::getIsEmpty,1)
        );
        if(agvTask == null){
            return AjaxResult.error("未找到到位托盘");
        }

        String uniqueId = agvTask.getUniqueId();
        List<Zarsi> zarsis = zarsiService.getListByUniq(uniqueId);
        if(zarsis.isEmpty()){
            return AjaxResult.error("未找到库存记录");
        }
        zarsis = zarsis.stream().filter(e -> "X".equals(e.getUseFlag())).collect(Collectors.toList());
        JSONObject jsonObject = new JSONObject();
        if(zarsis.isEmpty()){
            acsService.busTaskFinish(agvTask);
            jsonObject.put("back",1);
            return AjaxResult.success(jsonObject);
        }

        zarsis = zarsis.stream().sorted(Comparator.comparing(Zarsi::getPosnr)).collect(Collectors.toList());
        Zarsi zarsi = zarsis.stream().findFirst().get();

        jsonObject.put("back",0);
        jsonObject.put("rollNumber",zarsi.getCharg());
        jsonObject.put("position",zarsi.getPosnr());
        return AjaxResult.success(jsonObject);

    }

    @PostMapping("/leavedContainerPosition")
    @ApiOperation("离开托盘位置")
    @ResponseBody
    @ApiLogger(apiName = "离开托盘位置", from = "acs")
    public AjaxResult leavedContainerPosition(@RequestBody ContainerPositionDomain domain) {

        String containerCode = domain.getContainerCode();
        Integer position = domain.getPosition();
        String rollNumber = domain.getRollNumber();
        if(StringUtils.isEmpty(containerCode)){
            return AjaxResult.error("抓取容器号不能为空");
        }
        if(StringUtils.isNull(position)){
            return AjaxResult.error("抓取位置号不能为空");
        }
        if(StringUtils.isEmpty(rollNumber)){
            return AjaxResult.error("抓取批次不能为空");
        }

        AgvTask agvTask = agvTaskService.getOne(new LambdaQueryWrapper<AgvTask>()
                .eq(AgvTask::getPalletNo,containerCode)
                .eq(AgvTask::getState,60)
                .eq(AgvTask::getIsEmpty,1)
                .isNotNull(AgvTask::getUniqueId));
        if(agvTask == null){
            return AjaxResult.error("未找到到达容器");
        }
        String uniqueId = agvTask.getUniqueId();
        List<Zarsi> zarsis = zarsiService.getListByUniq(uniqueId);

        for (Zarsi zarsi : zarsis) {
            if(zarsi.getCharg().equals(rollNumber)){
                zarsi.setUseFlag("XX");
                zarsiService.updateById(zarsi);
                return AjaxResult.success(zarsi);
            }
        }
        return AjaxResult.success();

    }

}