| package com.zy.asrs.task.handler; | 
|   | 
| import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
| import com.core.common.Cools; | 
| import com.zy.asrs.entity.LocDetl; | 
| import com.zy.asrs.entity.LocMast; | 
| import com.zy.asrs.service.LocDetlService; | 
| import com.zy.asrs.service.LocMastService; | 
| import com.zy.asrs.service.WorkService; | 
| import com.zy.asrs.task.AbstractHandler; | 
| import com.zy.asrs.task.core.ReturnT; | 
| import com.zy.common.model.StartupDto; | 
| import com.zy.common.service.CommonService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Isolation; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
|   | 
| /** | 
|  * Created by vincent on 2023/7/7 | 
|  */ | 
| @Slf4j | 
| @Service | 
| public class AutoLocMoveHandler extends AbstractHandler<String> { | 
|     @Autowired | 
|     private CommonService commonService; | 
|     @Autowired | 
|     private LocMastService locMastService; | 
|     @Autowired | 
|     private LocDetlService locDetlService; | 
|     @Autowired | 
|     private WorkService workService; | 
|   | 
|     @Transactional(isolation = Isolation.REPEATABLE_READ) | 
|     public ReturnT<String> start(Integer crnNo, Integer ioType) { | 
|         try { | 
|             //11  穿梭移单边 | 
|             if (ioType==11){ | 
|                 for (int bay = 1;bay < 27;bay++){ | 
|                     for (int lev = 1 ; lev <6 ; lev++){ | 
|                         List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay,lev,crnNo); | 
|                         if (!Cools.isEmpty(locMasts) && locMasts.size()<4){ | 
|                             for (LocMast locMast:locMasts){ | 
|                                 LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); | 
| //                                StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null); | 
|                                 StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null,false); | 
|                                 workService.locMove(locMast.getLocNo(), startupDto.getLocNo(),9527L); | 
|                             } | 
|                             return SUCCESS; | 
|                         } | 
|                     } | 
|                 } | 
|             }else {//11  单边移穿梭 | 
|                 List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111   单边移穿梭 | 
|                 for (Map<String, Object> map : list) { | 
|                     String matnr = map.getOrDefault("matnr","").toString();//物料号 | 
|                     String batch = map.getOrDefault("batch","").toString();//批号 | 
|                     String grade = map.getOrDefault("brand","").toString();//等级 | 
|                     int count = Integer.parseInt(map.get("count").toString());//单边库数量 | 
|                     if (count < 4) { | 
|                         continue; | 
|                     } | 
|   | 
|                     List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo); | 
|                     for (LocDetl locDetl : locDetlList) { | 
| //                        StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null); | 
|                         StartupDto startupDto = commonService.getLocNo( ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null,false); | 
|                         workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L); | 
|                     } | 
|                 } | 
|                 return SUCCESS; | 
|             } | 
|         }catch (Exception e){ | 
|             log.error("自动移库出错,堆垛机号{},工作类型{}",crnNo,ioType); | 
|         } | 
|         return SUCCESS; | 
|     } | 
|   | 
| } |