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 { @Autowired private CommonService commonService; @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @Autowired private WorkService workService; @Transactional(isolation = Isolation.REPEATABLE_READ) public ReturnT 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 locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay,lev,crnNo); if (!Cools.isEmpty(locMasts) && locMasts.size()<4){ for (LocMast locMast:locMasts){ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper().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> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111 单边移穿梭 for (Map 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 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; } }