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; } }