| | |
| | | import com.zy.asrs.service.AgvBasDevpService; |
| | | import com.zy.asrs.service.AgvLocMastService; |
| | | import com.zy.asrs.service.AgvWrkMastService; |
| | | import com.zy.asrs.task.core.ProcesTimeData; |
| | | import com.zy.asrs.task.handler.AutoMoveHandler; |
| | | import com.zy.asrs.utils.TimeUtils; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | */ |
| | | @Scheduled(cron = "0/1 * * * * ? ") |
| | | private synchronized void execute2() { |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() |
| | | .eq("wrk_sts", 22) |
| | | .andNew().eq("io_type", 108) |
| | | .andNew() |
| | | .eq("crn_no", 2).or().eq("crn_no", 3) |
| | | .orderBy("io_pri", false).orderBy("appe_time", true) |
| | | ); |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 22).andNew().eq("io_type", 108).andNew().eq("crn_no", 2).or().eq("crn_no", 3).orderBy("io_pri", false).orderBy("appe_time", true)); |
| | | if (agvWrkMastList.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void execute3() { |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() |
| | | .eq("wrk_sts", 22) |
| | | .andNew().eq("io_type", 111) |
| | | .orderBy("io_pri", false) |
| | | .orderBy("appe_time", true) |
| | | ); |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 22).andNew().eq("io_type", 111).orderBy("io_pri", false).orderBy("appe_time", true)); |
| | | if (agvWrkMastList.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void execute4() { |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() |
| | | .eq("wrk_sts", 22) |
| | | .andNew().eq("io_type", 114) |
| | | .orderBy("io_pri", false) |
| | | .orderBy("appe_time", true) |
| | | ); |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 22).andNew().eq("io_type", 114).orderBy("io_pri", false).orderBy("appe_time", true)); |
| | | if (agvWrkMastList.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack3() { |
| | | // 工作档为201 且 入出库类型为109 |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() |
| | | .eq("wrk_sts", 214) |
| | | .eq("loc_no", "") |
| | | .eq("io_type", 113) |
| | | .orderBy("io_pri", false)); |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 214).eq("loc_no", "").eq("io_type", 113).orderBy("io_pri", false)); |
| | | if (agvWrkMastList.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | * 优先选择先到接驳位(接驳位可入) 后选择直接回库 |
| | | * 2楼或3楼站点可入信号全部没有,代表走电梯自动搬运模式 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | @Scheduled(cron = "0/30 * * * * ? ") |
| | | private void autoEmptyBack4() { |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | // TODO 四期 |
| | | .eq("loc_sts", "D") |
| | | .eq("loc_type1", 3) |
| | | .ne("floor", 1) |
| | | .ne("lve1", 1)); |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>() |
| | | // TODO 四期 |
| | | .eq("loc_sts", "D").eq("loc_type1", 3).andNew().ne("floor", 1).or().ne("lev1", 1)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | // TODO 四期 |
| | | * 将二厂的6类型的空货架调拨回吸塑二楼 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | // TODO 四期 |
| | | @Scheduled(cron = "0/30 * * * * ? ") |
| | | private void autoEmptyBackSiqi() { |
| | | // 查询6类型空货架返回的执行时间点 |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "RETURN_6_TIME")); |
| | | if (config != null && !Cools.isEmpty(config.getValue())) { |
| | | boolean flag = false; |
| | | try { |
| | | // 判断是否在执行时间内 |
| | | ProcesTimeData procesTimeData = JSONObject.parseObject(config.getValue(), ProcesTimeData.class); |
| | | if (procesTimeData != null && config.getStatus() == 1 && TimeUtils.between(procesTimeData)) { |
| | | flag = true; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("6类型空货架返回的执行时间点解析异常:===》异常原因:" + e.getMessage()); |
| | | flag = true; |
| | | } |
| | | if (flag) { |
| | | executeLocType6(); |
| | | } |
| | | } |
| | | // else { |
| | | // executeLocType6(); |
| | | // } |
| | | } |
| | | |
| | | |
| | | private void executeLocType6() { |
| | | // 查询 二厂的的半成品箱壳类型的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | .eq("loc_sts", "D") |
| | | .eq("loc_type1", 6) |
| | | .eq("floor", 2)); |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("loc_sts", "D").eq("loc_type1", 6).eq("floor", 2)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | private boolean determineFloorConnection(Integer floor) { |
| | | try { |
| | |
| | | * 自动: 生成 109 自动回流 |
| | | * 手动: 生成 113 手动回流 |
| | | * 优先选择先到接驳位(接驳位可入) 后选择直接回库 |
| | | * |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack5() { |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .ne("floor", 1) |
| | | .eq("loc_sts", "F") |
| | | .like("dev_no", "DB")); |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().ne("floor", 1).eq("loc_sts", "F").like("dev_no", "DB")); |
| | | if (agvBasDevps.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack6() { |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .eq("floor", 1) |
| | | .eq("loc_sts", "F") |
| | | .like("dev_no", "DB")); |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().eq("floor", 1).eq("loc_sts", "F").like("dev_no", "DB")); |
| | | if (agvBasDevps.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 自动移库 |
| | | * |
| | | * 跨层自动移库 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack7() throws ParseException { |
| | |
| | | return; |
| | | } |
| | | |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | .eq("floor", 1) |
| | | .eq("lev1", 1) |
| | | .eq("loc_sts", "F") |
| | | .eq("loc_type1", 3)); |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("floor", 1).eq("lev1", 1).eq("loc_sts", "F").eq("loc_type1", 3)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 打标记的库位进行自动移库,四期 |
| | | * 在库位不够的情况下,箱壳入库别的楼层库位的时候,晚上进行跨层移库 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack8() throws ParseException { |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String currentDay = sdf.format(now); |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoTime2")); |
| | | if (Cools.isEmpty(config)) { |
| | | |
| | | } else { |
| | | if (config.getStatus().intValue() == 0) { |
| | | return; |
| | | } |
| | | JSONObject jsonObject = JSON.parseObject(config.getValue().toString()); |
| | | Integer maxTansk = jsonObject.getInteger("maxTansk"); |
| | | //Integer startTime = jsonObject.getInteger("startTime"); |
| | | String startTime = jsonObject.getString("startTime"); |
| | | long time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(currentDay + " " + startTime).getTime(); |
| | | long time = now.getTime(); |
| | | long time3 = time - time1; |
| | | |
| | | |
| | | if (time3 > 0) { |
| | | |
| | | List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 12)); |
| | | if (agvWrkMasts != null && maxTansk <= agvWrkMasts.size()) { |
| | | return; |
| | | } |
| | | |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>().eq("floor", 1).eq("loc_sts", "F").eq("loc_type1", 3).isNotNull("ctn_no")); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | if (agvLocMast.getLev1() == 1 && agvLocMast.getFloor() == 1 && !Cools.isEmpty(agvLocMast.getCtnNo()) && agvLocMast.getCtnNo().toString().equals("2")) { |
| | | try { |
| | | autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk); |
| | | } catch (Exception e) { |
| | | log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage()); |
| | | } |
| | | } else if (agvLocMast.getLev1() == 2 && agvLocMast.getFloor() == 1 && !Cools.isEmpty(agvLocMast.getCtnNo()) && agvLocMast.getCtnNo().toString().equals("1")) { |
| | | try { |
| | | autoMoveHandler.autoTransfersV2(agvLocMast, maxTansk); |
| | | } catch (Exception e) { |
| | | log.error("库位号" + agvLocMast.getLocNo() + "四期定时移库任务 吸塑 --> 吸塑,处理失败:===》异常原因:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |