自动化立体仓库 - WMS系统
tzsk
2024-02-07 f4af5b89cf61b3c4d7e1d49f23d7c0e617f3aabe
src/main/java/com/zy/common/web/WcsController.java
@@ -20,8 +20,10 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -32,6 +34,8 @@
@RestController
@RequestMapping("/rpc")
public class WcsController {
    private static HashMap<String,String> currentContainerMap;
    @Autowired
    private WrkMastService wrkMastService;
@@ -61,6 +65,8 @@
    private WrkMastMapper wrkMastMapper;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private AgvWrkDetlService agvWrkDetlService;
//    @Autowired
//    private ErpService erpService;
@@ -588,25 +594,27 @@
        //拣料、盘点完成任务
        if(!Cools.isEmpty(agvWrkMast) && (agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107) && agvWrkMast.getWrkSts() == 205){
            //绑定站点
            agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",containerCode);
            //生成拣料、盘点再入库任务
            List<AgvWrkMast> agvWrkMastList = new ArrayList<>();
            agvWrkMast.setMk("Y");
            agvWrkMast.setLocNo(agvBasDevp.getDevNo());
            agvWrkMastList.add(agvWrkMast);
            agvWorkService.pickIn(agvWrkMastList);
            //绑定站点
            agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",containerCode);
            return R.ok();
        }
        //入库任务
        if (!Cools.isEmpty(agvWaitPakinService.selectByContainerCode(containerCode))){
            //绑定站点
            agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",containerCode);
            //生成工作档
            List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().eq("dev_no", param.getDevNo()));
            agvWorkService.createWaitPainWrkMastStart(agvBasDevpList, null, true);
            //绑定站点
            agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",containerCode);
            return R.ok();
        }
@@ -614,15 +622,75 @@
    }
    @PostMapping("/current/containerCode")
    @ResponseBody
    public R move(@RequestBody ReplenishmentParam param){
        if(Cools.isEmpty(currentContainerMap)){
            currentContainerMap = new HashMap<>();
        }
        String containerCode = param.getContainerCode();
        if(Cools.isEmpty(containerCode)){
            throw new CoolException("料箱码为空");
        }
        if(!Character.isDigit(containerCode.charAt(0))){
            containerCode = containerCode.substring(3,containerCode.length());
        }
        String devNo = param.getDevNo();
        String currentContainerCode = currentContainerMap.get(devNo);
        //判断容器是否发生变化
        if(!Cools.eq(containerCode,currentContainerCode)){
            //查询旧容器的工作档
            AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(currentContainerCode);
            if(Cools.isEmpty(agvWrkMast) && agvWrkMast.getIoType() == 101){
                //发送容器立场请求,完成工作档
                List<AgvWrkMast> agvWrkMastList = new ArrayList<>();
                agvWrkMastList.add(agvWrkMast);
                try {
                    int code = agvWrkMastService.containerMoveOut(agvWrkMastList);
                    if(code == 0){
                        //将工作党状态改为容器离场
                        agvWrkMast.setWrkSts(206L);
                        agvWrkMastService.updateById(agvWrkMast);
                    }
                } catch (IOException e) {
                    log.error(e.getMessage());
                }
            }
        }
        currentContainerMap.put(devNo,containerCode);
        return R.ok();
    }
    /*
    显示AGV输送线拣料、盘点、入库信息
     */
    @PostMapping("/info")
    @ResponseBody
    public R showAgvBasDevInfo(@RequestBody ReplenishmentParam param){
    public R containerMove(@RequestBody ReplenishmentParam param){
        String devNo = param.getDevNo();
        String containerCode = currentContainerMap.get(devNo);
        return R.ok();
        //查找该容器的工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
        if(!Cools.isEmpty(agvWrkMast)){
            return R.ok(agvWrkDetlService.selectByWrkNo(agvWrkMast.getWrkNo()));
        }
        //查找该容器的入库通知档
        List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", containerCode));
        if(!Cools.isEmpty(agvWaitPakinList)){
            return R.ok(agvWaitPakinList);
        }
        return R.error("没有该容器的出库、拣料、入库信息等");
    }