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); 
 | 
                                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); 
 | 
                        workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L); 
 | 
                    } 
 | 
                } 
 | 
                return SUCCESS; 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            log.error("自动移库出错,堆垛机号{},工作类型{}",crnNo,ioType); 
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
} 
 |