Merge branch 'phyzasrs' of http://47.97.1.152:5880/r/zy-asrs into phyzasrs
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |     AgvWaitPakinService agvWaitPakinService; | 
 |  |  |     @Autowired | 
 |  |  |     AgvWorkService agvWorkService; | 
 |  |  |     @Autowired | 
 |  |  |     AgvLocDetlService agvLocDetlService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/basDevp/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  | 
 |  |  |                 AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() | 
 |  |  |                         .eq("loc_no", agvBasDevp.getDevNo()) | 
 |  |  |                         .or().eq("source_loc_no",agvBasDevp.getDevNo())); | 
 |  |  |                 if (Cools.isEmpty(agvWrkMast)) { | 
 |  |  |                     Page<AgvLocDetl> agvLocDetlPage = agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>() | 
 |  |  |                             .eq("supp_code", agvBasDevp.getBarcode())); | 
 |  |  |                     if (agvLocDetlPage.getRecords().size() > 0) { | 
 |  |  |                         return R.ok(agvLocDetlPage); | 
 |  |  |                     } else { | 
 |  |  |                         return R.error("当前货架码异常!"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 Page<AgvWrkDetl> agvWrkDetlPage = agvWrkDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWrkDetl>() | 
 |  |  |                         .eq("wrk_no", agvWrkMast.getWrkNo())); | 
 
 |  |  | 
 |  |  |         short floor =(short)Integer.parseInt(fl.substring(0, 1)); | 
 |  |  |         List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList"); | 
 |  |  |          params.get("dbList"); | 
 |  |  |         Object moveType = params.get("moveType"); | 
 |  |  |         if (moveType == "unAuto") { | 
 |  |  |             return R.error("手动功能暂时无法使用"); | 
 |  |  |         Object mT = params.get("moveType"); | 
 |  |  |         String moveType = ""; | 
 |  |  |         if (mT.equals("unAuto")) { | 
 |  |  |             moveType = "2"; | 
 |  |  |         } else { | 
 |  |  |             moveType = "1"; | 
 |  |  |         } | 
 |  |  |         for (HashMap<String, String> map : dbList) { | 
 |  |  |             String locNo = map.get("locNo"); | 
 |  |  |             Wrapper<AgvLocMast> wrapper = new EntityWrapper<AgvLocMast>().eq("loc_no", locNo); | 
 |  |  |             AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper); | 
 |  |  |             agvLocMast.setLocType("1"); | 
 |  |  |             agvLocMast.setLocType(moveType); | 
 |  |  |             agvLocMast.setLocType3(floor); | 
 |  |  |             agvLocMastService.update(agvLocMast,wrapper); | 
 |  |  |             // 同步调拨单 | 
 |  |  | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @PostMapping("/hand/control/allocationOut") | 
 |  |  |     @Transactional | 
 |  |  |     @ManagerAuth(memo = "调拨离场") | 
 |  |  |     public R allocationOut(@RequestBody AgvMobileStartPakin param){ | 
 |  |  |         agvMobileService.allocationOut(param, getUserId()); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @PostMapping("/hand/control/allocationIn") | 
 |  |  |     @Transactional | 
 |  |  |     @ManagerAuth(memo = "调拨进场") | 
 |  |  |     public R allocationIn(@RequestBody AgvMobileStartPakin param){ | 
 |  |  |         agvMobileService.allocationIn(param, getUserId()); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         List<AgvLocDetl> agvLocDetls1 = new ArrayList<>(); | 
 |  |  |         List<AgvLocDetl> agvLocDetls2 = new ArrayList<>(); | 
 
 |  |  | 
 |  |  | package com.zy.asrs.service; | 
 |  |  |  | 
 |  |  | import com.zy.asrs.entity.AgvBasDevp; | 
 |  |  | import com.zy.asrs.entity.param.CombParam; | 
 |  |  | import com.zy.asrs.entity.param.LocMoveParam; | 
 |  |  | import com.zy.asrs.entity.param.MobileAdjustParam; | 
 |  |  | import com.zy.asrs.entity.param.PickParam; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     String handControlLocMove(LocMoveParam param, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 调拨离场 | 
 |  |  |      */ | 
 |  |  |     String allocationOut(AgvMobileStartPakin param, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 调拨离场 | 
 |  |  |      */ | 
 |  |  |     String allocationIn(AgvMobileStartPakin param, Long userId); | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     public int callCancelTask(int wrkNo); | 
 |  |  |  | 
 |  |  |     public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException; | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.CombParam; | 
 |  |  | import com.zy.asrs.entity.param.LocMoveParam; | 
 |  |  | import com.zy.asrs.entity.param.MobileAdjustParam; | 
 |  |  | import com.zy.asrs.entity.param.PickParam; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.common.model.DetlDto; | 
 |  |  | import com.zy.common.service.AgvCommonService; | 
 |  |  | 
 |  |  |     private AgvLocMastService agvLocMastService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvCommonService agvCommonService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvWrkMastLogService agvWrkMastLogService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvWrkDetlLogService agvWrkDetlLogService; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |        调拨离场 | 
 |  |  |     */ | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public String allocationOut(AgvMobileStartPakin param, Long userId) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo())); | 
 |  |  |         if (Cools.isEmpty(agvWrkMast)) { | 
 |  |  |             throw new CoolException("工作档中没有此站点任务"); | 
 |  |  |         } | 
 |  |  |         //生成AGV工作历史档 + 生成AGV工作明细历史档 | 
 |  |  |         agvWrkMastLogService.save(agvWrkMast); | 
 |  |  |         agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); | 
 |  |  |  | 
 |  |  |         //生成工作档 | 
 |  |  |         AgvWrkMast mast = new AgvWrkMast(); | 
 |  |  |         //工作状态 | 
 |  |  |         mast.setWrkSts(210L); | 
 |  |  |         //入出库类型 | 
 |  |  |         mast.setIoType(111); | 
 |  |  |         mast.setIoTime(now); | 
 |  |  |         //优先级 | 
 |  |  |         mast.setIoPri(300.0); | 
 |  |  |         //源站点 | 
 |  |  |         mast.setSourceLocNo(""); | 
 |  |  |         //目标站点 | 
 |  |  |         mast.setLocNo(""); | 
 |  |  |         //容器编码 | 
 |  |  |         mast.setBarcode(agvWrkMast.getBarcode()); | 
 |  |  |         //容器类型 | 
 |  |  |         mast.setWhsType(30); | 
 |  |  |         // 目标楼层 | 
 |  |  |         mast.setPauseMk(agvWrkMast.getPauseMk()); | 
 |  |  |         mast.setAppeUser(userId); | 
 |  |  |         mast.setAppeTime(now); | 
 |  |  |         mast.setModiUser(userId); | 
 |  |  |         mast.setModiTime(now); | 
 |  |  |         if (!agvWrkMastService.insertByIncrease(mast)) { | 
 |  |  |             throw new CoolException("保存工作档失败"); | 
 |  |  |         } | 
 |  |  |         // 更新工作明细 | 
 |  |  |         List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); | 
 |  |  |         for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { | 
 |  |  |             agvWrkDetl.setWrkNo(mast.getWrkNo()); | 
 |  |  |             if (!agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()))) { | 
 |  |  |                 throw new CoolException("更新工作明细失败"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         // 更新站点状态 | 
 |  |  |         agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); | 
 |  |  |         // 更新源库位状态 | 
 |  |  |         agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); | 
 |  |  |         //删除AGV工作档 | 
 |  |  |         agvWrkMastService.deleteById(agvWrkMast); | 
 |  |  |         return "ok"; | 
 |  |  |     } | 
 |  |  |     /* | 
 |  |  |        调拨进场 | 
 |  |  |     */ | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public String allocationIn(AgvMobileStartPakin param, Long userId) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); | 
 |  |  |         if (Cools.isEmpty(agvWrkMast)) { | 
 |  |  |             throw new CoolException("工作档中没有此货架任务"); | 
 |  |  |         } | 
 |  |  |         //工作状态 | 
 |  |  |         agvWrkMast.setWrkSts(211L); | 
 |  |  |         //入出库类型 | 
 |  |  |         agvWrkMast.setIoType(112); | 
 |  |  |         agvWrkMast.setSourceLocNo(param.getDevNo()); | 
 |  |  |         agvWrkMast.setModiUser(userId); | 
 |  |  |         agvWrkMast.setModiTime(now); | 
 |  |  |         if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { | 
 |  |  |             throw new CoolException("更新工作档失败"); | 
 |  |  |         } | 
 |  |  |         // 更新源库位状态 | 
 |  |  |         agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); | 
 |  |  |         //删除AGV工作档 | 
 |  |  |         return "ok"; | 
 |  |  |     } | 
 |  |  |     /* | 
 |  |  |    更新目标库位信息 | 
 |  |  |     */ | 
 |  |  |     private void updateAgvLocMast(AgvLocMast locMast, String locSts){ | 
 
 |  |  | 
 |  |  |             agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); | 
 |  |  |             agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null); | 
 |  |  |             // 自动调拨出库取消 | 
 |  |  |         } else if(wrkMast.getIoType() == 108 ) { | 
 |  |  |         } else if(wrkMast.getIoType() == 108 || wrkMast.getIoType() == 111) { | 
 |  |  |             // 源库位 | 
 |  |  |             String locNo = wrkMast.getSourceLocNo(); | 
 |  |  |             // 目标库位 | 
 |  |  |             String targetLocNo = wrkMast.getLocNo(); | 
 |  |  |             agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0); | 
 |  |  |             agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null); | 
 |  |  |             if (wrkMast.getIoType() == 108) { | 
 |  |  |                 agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null); | 
 |  |  |             } else { | 
 |  |  |                 agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue()); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo)); | 
 |  |  |             // 更新订单 | 
 |  |  |             for (AgvLocDetl agvLocDetl : agvLocDetls) { | 
 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.service.impl.ServiceImpl; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.AgvBasDevp; | 
 |  |  | import com.zy.asrs.entity.AgvLocMast; | 
 |  |  | import com.zy.asrs.entity.AgvWrkMast; | 
 |  |  | import com.zy.asrs.entity.param.AgvTaskCreateParam; | 
 |  |  | import com.zy.asrs.entity.param.AgvTaskParam; | 
 |  |  | import com.zy.asrs.mapper.AgvWrkMastMapper; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.common.service.AgvCommonService; | 
 |  |  | import com.zy.common.utils.HttpHandler; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | 
 |  |  |     ApiLogService apiLogService; | 
 |  |  |     @Autowired | 
 |  |  |     AgvBasDevpService agvBasDevpService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvCommonService agvCommonService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvWrkMastService agvWrkMastService; | 
 |  |  |  | 
 |  |  |     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) { | 
 |  |  |         AgvWrkMast agvWrkMast = this.selectById(wrkNo); | 
 |  |  | 
 |  |  |         //return containerMoveParam; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { | 
 |  |  |         AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); | 
 |  |  |         //检索库位,选择合适的库位 | 
 |  |  |         AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor()); | 
 |  |  |         agvWrkMast.setLocNo(locMast.getLocNo()); | 
 |  |  |         agvWrkMast.setWrkSts(201L); | 
 |  |  |         agvWrkMastService.updateById(agvWrkMast); | 
 |  |  |         return 0; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //容器入场 | 
 |  |  |     public int containerMoveIn(List<AgvWrkMast> agvWrkMastList) throws IOException { | 
 |  |  |         //调用容器入场时所需要参数 | 
 
 |  |  | 
 |  |  |                 .or().eq("io_type",11) | 
 |  |  |                 .or().eq("io_type",12) | 
 |  |  |                 .or().eq("io_type",108) | 
 |  |  |                 .or().eq("io_type",109)); | 
 |  |  |                 .or().eq("io_type",109) | 
 |  |  |                 .or().eq("io_type",112)); | 
 |  |  |         if(!Cools.isEmpty(agvWrkMastList)){ | 
 |  |  |             agvWrkMastList.stream().forEach(agvWrkMast -> { | 
 |  |  |                 agvWrkMastHandler.completedPutWayWrk(agvWrkMast); | 
 |  |  | 
 |  |  |                 .or().eq("io_type", 11) | 
 |  |  |                 .or().eq("io_type", 12) | 
 |  |  |                 .or().eq("io_type", 109) | 
 |  |  |                 .or().eq("io_type", 108)).getRecords(); | 
 |  |  |                 .or().eq("io_type", 108) | 
 |  |  |                 .or().eq("io_type", 112)).getRecords(); | 
 |  |  |  | 
 |  |  |         if(!Cools.isEmpty(agvWrkMastList)){ | 
 |  |  |             agvWrkMastList.forEach(agvWrkMast -> { | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |     putaway:上架 | 
 |  |  |     定时处理AGV工作档中工作状态为201.生成入库任务ID 且(出库类型为 53.拣料再入库 || 1.入库 || 10.空板入库栽 || 57.盘点再入库)的数据 | 
 |  |  |      */ | 
 |  |  |     @Scheduled(cron = "0/3 * * * * ? ") | 
 |  |  |     public void startAllcationIn(){ | 
 |  |  |         List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50) | 
 |  |  |                 ,new EntityWrapper<AgvWrkMast>() | 
 |  |  |                         .eq("wrk_sts", 211) | 
 |  |  |                         .andNew().eq("io_type", 112)).getRecords(); | 
 |  |  |  | 
 |  |  |         if(!Cools.isEmpty(agvWrkMastList)){ | 
 |  |  |             agvWrkMastList.forEach(agvWrkMast -> { | 
 |  |  |                 try { | 
 |  |  |                     agvWrkMastHandler.startAllcationIn(agvWrkMast); | 
 |  |  |                 } catch (IOException e) { | 
 |  |  |                     log.error(e.getMessage()); | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |     carry:搬运,统指出库、移库、点到点搬运等 | 
 |  |  |     定时处理AGV工作档中工作状态为21.生成出库任务 且(出库类型为 101.出库 || 103.拣料出库 || 11.库格移栽 || 110.空板出库 || 107.盘点出库)的数据 | 
 |  |  |      */ | 
 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private AutoMoveHandler autoMoveHandler; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     // 调拨出库 | 
 |  |  |     @Scheduled(cron = "0/2 * * * * ? ") | 
 |  |  |     private void execute(){ | 
 |  |  |         List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 空板自动回库 | 
 |  |  |     @Scheduled(cron = "0/2 * * * * ? ") | 
 |  |  |     private void autoEmptyBack(){ | 
 |  |  |         // 查询 不为1楼的空货架 | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     @Synchronized | 
 |  |  |     public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { | 
 |  |  |          | 
 |  |  |         //下发任务 | 
 |  |  |         int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); | 
 |  |  |         if(startWrkCode != 0){ | 
 |  |  |             throw new CoolException("任务下发失败"); | 
 |  |  |         } | 
 |  |  |         return SUCCESS; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | //    @Transactional | 
 |  |  | //    public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException { | 
 |  |  | //        //log.info(agvWrkMastList.toString()); | 
 
 |  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.service.AgvLocDetlService; | 
 |  |  | import com.zy.asrs.service.AgvLocMastService; | 
 |  |  | import com.zy.asrs.service.AgvWrkDetlService; | 
 |  |  | import com.zy.asrs.service.AgvWrkMastService; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.task.AbstractHandler; | 
 |  |  | import com.zy.asrs.task.core.ReturnT; | 
 |  |  | import com.zy.common.service.AgvCommonService; | 
 |  |  | 
 |  |  |     private AgvLocDetlService agvLocDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvWrkDetlService agvWrkDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     AgvBasDevpService agvBasDevpService; | 
 |  |  |  | 
 |  |  |     public ReturnT<String> start(AgvLocMast agvLocMast) { | 
 |  |  |         // locType 1. 自动, 2. 手动 | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private ReturnT<String> doHandMove(AgvLocMast agvLocMast) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         //查询工作档 | 
 |  |  |         AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); | 
 |  |  |         if(!Cools.isEmpty(agvWrkMast)){ | 
 |  |  |             throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); | 
 |  |  |         } | 
 |  |  | //        //检索库位,选择合适的库位 | 
 |  |  | //        AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3()); | 
 |  |  |         // 检索agv接驳位 | 
 |  |  |         AgvBasDevp devpNo = agvCommonService.getDevpNo(3, 1); | 
 |  |  |         //生成工作档 | 
 |  |  |         AgvWrkMast mast = new AgvWrkMast(); | 
 |  |  |         //工作状态 | 
 |  |  |         mast.setWrkSts(21L); | 
 |  |  |         //入出库类型 | 
 |  |  |         mast.setIoType(111); | 
 |  |  |         mast.setIoTime(now); | 
 |  |  |         //优先级 | 
 |  |  |         mast.setIoPri(300.0); | 
 |  |  |         //源站点 | 
 |  |  |         mast.setSourceLocNo(agvLocMast.getLocNo()); | 
 |  |  |         //目标站点 | 
 |  |  |         mast.setLocNo(devpNo.getDevNo()); | 
 |  |  |         //容器编码 | 
 |  |  |         mast.setBarcode(agvLocMast.getBarcode()); | 
 |  |  |         //容器类型 | 
 |  |  |         mast.setWhsType(30); | 
 |  |  |         // 目标楼层 | 
 |  |  |         mast.setPauseMk(agvLocMast.getLocType3().toString()); | 
 |  |  |  | 
 |  |  |         mast.setAppeUser(9527L); | 
 |  |  |         mast.setAppeTime(now); | 
 |  |  |         mast.setModiUser(9527L); | 
 |  |  |         mast.setModiTime(now); | 
 |  |  |         if (!agvWrkMastService.insertByIncrease(mast)) { | 
 |  |  |             throw new CoolException("保存工作档失败"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devpNo.getDevNo()).eq("source_loc_no",agvLocMast.getLocNo())); | 
 |  |  |         //生成工作档明细 | 
 |  |  |         List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); | 
 |  |  |         agvLocDetls.forEach(agvLocDetl -> { | 
 |  |  |             AgvWrkDetl wrkDetl = new AgvWrkDetl(); | 
 |  |  |             wrkDetl.setWrkNo(mast1.getWrkNo()); | 
 |  |  |             wrkDetl.sync(agvLocDetl); | 
 |  |  |             wrkDetl.setSpecs("1-" + agvLocMast.getLocType3()); | 
 |  |  |             wrkDetl.setSuppCode(agvLocDetl.getSuppCode()); | 
 |  |  |             wrkDetl.setIoTime(now); | 
 |  |  |             wrkDetl.setAppeUser(9527L); | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setModiUser(9527L); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             if (!agvWrkDetlService.insert(wrkDetl)) { | 
 |  |  |                 throw new CoolException("保存工作明细失败"); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         //更新目标库位状态 | 
 |  |  |         updateAgvLocMast(agvLocMast,"R"); | 
 |  |  |         updateAgvBasDevp(devpNo,"S",null,agvLocMast.getBarcode()); | 
 |  |  |         return SUCCESS; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         locMast.setLocSts(locSts); | 
 |  |  |         agvLocMastService.updateById(locMast); | 
 |  |  |     } | 
 |  |  |     /* | 
 |  |  |     更新源站点信息 | 
 |  |  |      */ | 
 |  |  |     private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){ | 
 |  |  |         if(!Cools.isEmpty(agvBasDevp)){ | 
 |  |  |             agvBasDevp.setLocSts(locSts); | 
 |  |  |             agvBasDevpService.updateById(agvBasDevp); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){ | 
 |  |  |         if(!Cools.isEmpty(agvBasDevp)){ | 
 |  |  |             agvBasDevp.setLocSts(locSts); | 
 |  |  |             agvBasDevp.setBarcode(containerCode); | 
 |  |  |             agvBasDevpService.updateById(agvBasDevp); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public ReturnT<String> autoEmptyBack(AgvLocMast agvLocMast) { | 
 |  |  |         Date now = new Date(); | 
 
 |  |  | 
 |  |  |     private MatService matService; | 
 |  |  |     @Autowired | 
 |  |  |     private LocRuleService locRuleService; | 
 |  |  |     @Autowired | 
 |  |  |     AgvBasDevpService agvBasDevpService; | 
 |  |  |  | 
 |  |  |     public int getWorkNo(Integer wrkMk) { | 
 |  |  |         AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk); | 
 |  |  | 
 |  |  |                 .eq("floor",floor) | 
 |  |  |                 .eq("loc_type1",type)); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 检索库位号 | 
 |  |  |      * @return locNo 检索到的库位号 | 
 |  |  |      */ | 
 |  |  |     public AgvBasDevp getDevpNo(int type, int floor) { | 
 |  |  |         // 目标库位 | 
 |  |  |         AgvBasDevp basDevp = null; | 
 |  |  |  | 
 |  |  |         // 开始查找库位 ==============================>> | 
 |  |  |         basDevp = getDevpNoRule(type,floor); | 
 |  |  |         if (basDevp != null) { | 
 |  |  |             return basDevp; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //找不到库位,抛出异常 | 
 |  |  |         throw new CoolException("该楼层没有空库位"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //随机取一个货位 | 
 |  |  |     private AgvBasDevp getDevpNoRule(int type,int floor){ | 
 |  |  |         return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() | 
 |  |  |                 .eq("loc_sts","O") | 
 |  |  |                 .eq("floor",floor) | 
 |  |  |                 .eq("loc_type1",type) | 
 |  |  |                 .like("dev_no","DB")); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |