自动化立体仓库 - WMS系统
#
whycq
2024-04-16 2002142e29ed84ae83d55a9ceedb90d13ef84aaf
#
4个文件已修改
72 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -225,6 +225,24 @@
    }
    /*
   任务完成
    */
    @RequestMapping(value = "/basDevp/visualized/container/moveOut2")
    public R visualiZedContainerMoveOut2(@RequestBody Map<String,Object> map) {
        String barcode = map.get("barcode").toString();
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", barcode).eq("wrk_sts",205L));
        if(agvWrkMast.getIoType() != 101 && agvWrkMast.getIoType() != 110){
            throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型不为101.出库,无法执行容器离场任务,请重新选择站点。");
        }
        agvWrkMast.setWrkSts(208L);
        agvWrkMastService.updateById(agvWrkMast);
        return R.ok("容器离场成功");
    }
    /*
    拣料/盘点入库
     */
    @RequestMapping(value = "/basDevp/visualized/container/pickIn")
src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
@@ -48,5 +48,5 @@
    AgvLocDetl selectLocdetl(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("csocode")String csocode, @Param("isocode")String isocode);
    @Update("update agv_loc_detl set loc_no = '${targetLoc}' where loc_no = '${sourceLoc}' and supp_code = '${containerCode}'")
    void updateLocNo(String targetLoc, String sourceLoc, String containerCode);
    void updateLocNo(@Param("targetLoc")String targetLoc, @Param("sourceLoc")String sourceLoc, @Param("containerCode")String containerCode);
}
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -76,6 +76,23 @@
    }
    /*
    定时处理AGV工作档中工作状态为206.出库完成 且 (101.出库 || 110.空板出库)
     */
    @Scheduled(cron = "0/10 * * * * ? ")
    public void excuteCarryWrk2(){
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 208)
                .andNew().eq("io_type",110)
                .or().eq("io_type",101));
        if(!Cools.isEmpty(agvWrkMastList)){
            agvWrkMastList.stream().forEach(agvWrkMast -> {
                ReturnT<String> returnT = agvWrkMastHandler.completedCarryWrk2(agvWrkMast);
            });
        }
    }
    /*
    putaway:上架
    定时处理AGV工作档中工作状态为201.生成入库任务ID 且(出库类型为 53.拣料再入库 || 1.入库 || 10.空板入库栽 || 57.盘点再入库)的数据
     */
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -149,6 +149,41 @@
    }
    @Transactional
    public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
        int wrkNo = agvWrkMast.getWrkNo();
        String orderNo = getOrderNoByWrkNo(wrkNo);
        //修改工作档状态为207.库存更新完成
        agvWrkMast.setWrkSts(207L);
        agvWrkMastService.updateById(agvWrkMast);
        //修改源库位状态为O
        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
        if(agvWrkMast.getIoType() == 101){
            //更新目标库位明细 101.出库 删除源库位库存明细
            agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
        }
        //生成AGV工作历史档
        agvWrkMastLogService.save(agvWrkMast);
        //生成AGV工作明细历史档
        agvWrkDetlLogService.save(wrkNo);
        //删除AGV工作档
        agvWrkMastService.deleteById(wrkNo);
        //删除AGV工作明细档
        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
        if(!isJSON(orderNo)){
            //检查订单是否已完成
            orderService.checkComplete(orderNo);
        }else{
            List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
            maps.forEach(map -> {
                String o = map.get("orderNo").toString();
                orderService.checkComplete(o);
            });
        }
        return SUCCESS;
    }
    @Transactional
    @Synchronized
    public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {