自动化立体仓库 - WMS系统
zyh
20 小时以前 3bf6f972604761c9ac59a2cb9ea01eeacaec2189
src/main/java/com/zy/common/web/WcsController.java
@@ -1,14 +1,18 @@
package com.zy.common.web;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.MesReturn;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.RcsServiceImpl;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
@@ -17,6 +21,7 @@
import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -54,6 +59,9 @@
    @Autowired
    private TaskService taskService;
    @Value("${mes.url}")
    public String MES_URL;
    // TODO:称重、拍照上报存储,CTU料箱运转
    @PostMapping("/pakin/loc/v1")
@@ -65,6 +73,30 @@
        }
        if (Cools.isEmpty(param.getSourceStaNo())) {
            return R.error("源站编号不能为空");
        }
        if (Cools.isEmpty(param.getBarcode()) || param.getBarcode().equals("00000000")) {
            return R.error(".托盘码不能为空或者托盘码为0");
        }
        if (param.getSourceStaNo() == 301 || param.getSourceStaNo() == 304){
            String url = "CameraPictureRecognition";
//            return R.error("配盘不正确");
//            String URL = MES_URL + url;
//            String URL = "172.26.160.74:8080/basicmodel/WmsFit/Api/CameraPictureRecognition";
//            try{
//                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(param));
//                if (!StringUtils.isEmpty(response) && response.contains("Success")) {
//                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
//                    if ("2".equals(mesReturn.getSuccess())) {
//                        return R.error("配盘不正确");
//                    }else {
//                        log.info("配盘正确,允许入库");
//                    }
//                }
//            } catch (Exception e) {
//                return R.error("MES地址连接超时");
//            }
        }
        List<WaitPakin> waitPakins = null;
        if (param.getIoType() == 1) {
@@ -89,10 +121,17 @@
            return R.error("高低检测信号不能为空");
        }
        //入库时对空板出库任务进行完成
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()).eq("wrk_sts",110));
        if (!Cools.isEmpty(wrkMast)) {
            wrkMast.setWrkSts(15L);//空板出库任务转历史档
            wrkMastService.updateById(wrkMast);
        }
        // 源站点状态检测
//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
//        sourceStaNo.setLocType2(param.getLocType1());
        LocTypeDto locTypeDto = new LocTypeDto();
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
        sourceStaNo.setLocType1(param.getLocType1());
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo,param.getBarcode());
        StartupDto dto = null;
        switch (param.getIoType()) {
@@ -156,7 +195,7 @@
        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
        emptyPlateOutParam.setOutSite(12);
        emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}});
        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,50);
        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,50,"");
        return R.ok(!Cools.isEmpty(wrkMast)? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败"));
    }
@@ -250,7 +289,7 @@
        // 检索库位
        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
        StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto);
        StartupDto dto =commonService.getLocNoNew(10,devpNo,locTypeDto);
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
@@ -305,29 +344,39 @@
        }
        //查看是否有相关的AGV搬运任务存在
        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>()
                .eq("task_type", "AGV补空料架")
                .andNew()
                .in("sta_no", wrkMast.getStaNo(),wrkMast.getMemo())
                .or()
                .in("source_sta_no", wrkMast.getStaNo(),wrkMast.getMemo()));
        if (!tasks.isEmpty()){
            return R.error("有对堆垛机接驳站点的AGV搬运任务,暂时无法生成AGV搬运任务");
        }
        String sourceStaNo = "Q-";
        if(wrkMast.getStaNo().equals("401")){
            sourceStaNo = sourceStaNo + "E3";
        }else if(wrkMast.getStaNo().equals("402")){
            sourceStaNo = sourceStaNo + "E2";
        }else if(wrkMast.getStaNo().equals("307")){
            sourceStaNo = sourceStaNo + "E1";
        }
        //生成AGV搬运空料架任务
        // 保存工作档
        Task task = new Task();
        Date date = new Date();
        String TaskNo = wrkMast.getWrkNo()+"-"+date.getTime();
        String TaskNo = wrkMast.getWrkNo()+"aa"+date.getTime();
        task.setWrkNo(wrkMast.getWrkNo())
                .setTaskNo(TaskNo)
                .setIoTime(date)
                .setWrkSts(301L) // 工作状态:301.任务下发
                .setIoType(5) // 入出库状态: 5.区域到站
                .setTaskType("agv")
                .setTaskType("AGV补空料架")
                .setIoPri(10D)
                .setFullPlt("N") // 满板:Y
                .setPicking("N") // 拣料
                .setExitMk("N")// 退出
                .setStaNo(wrkMast.getStaNo())
                .setSourceStaNo("E1")//空料架缓存区E1
                .setSourceStaNo(sourceStaNo)//空料架缓存区
                .setEmptyMk("Y")// 空板
                .setBarcode("")// 托盘码
                .setLinkMis("N")