package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Arith; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastCrnService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.WrkMastStaService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.Utils; import com.zy.common.model.LocTypeDto; import com.zy.common.model.StartupDto; import com.zy.common.properties.SlaveProperties; 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.Transactional; import java.util.Date; /** * Created by Monkey D. Luffy on 2023.11.21 * 徐工汉云..............以下.............上饶江铜.............工作档生成RGV小车任务 */ @Slf4j @Service @Transactional public class WrkMastCrnHandler extends AbstractHandler { @Autowired private WrkMastCrnService wrkMastCrnService; @Autowired private LocMastService locMastService; @Autowired private WrkMastService wrkMastService; @Transactional public ReturnT start(WrkMast wrkMast,WrkMast wrkMastOther) { try { Date now = new Date(); LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); Wrapper wrapper = new EntityWrapper().eq("crn_no", wrkMast.getCrnNo()) .eq("row1", wrkMast.getCrnNo() * 4-3) .eq("loc_sts", "O"); Wrapper wrapperOther = new EntityWrapper().eq("crn_no", wrkMast.getCrnNo()) .eq("row1", wrkMast.getCrnNo() * 4) .eq("loc_sts", "O"); int row1 = locMastService.selectCount(wrapper); int row2 = locMastService.selectCount(wrapperOther); LocMast locMast1 = null; if (row1>=row2){ locMast1 = locMastService.selectOne(wrapper.orderBy("lev1", true) .orderBy("bay1", true)); }else { locMast1 = locMastService.selectOne(wrapperOther.orderBy("lev1", true) .orderBy("bay1", true)); } if (Cools.isEmpty(locMast1)){ return FAIL; } String[] strings = staNoOther(locMast1.getLocNo()); if (Cools.isEmpty(strings) || Cools.isEmpty(strings[0]) || Cools.isEmpty(strings[1])){ return FAIL; } wrkMast.setLocNo(strings[0]); wrkMastOther.setLocNo(strings[1]); WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now); // 更新目标库位状态 LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.入库预约 locMast.setModiTime(now); if (!locMastService.updateById(locMast)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(locMast1.getLocNo()+"目标库位已被占用"); } // 更新目标库位状态 LocMast locMastOther = locMastService.selectById(wrkMastOther.getLocNo()); if (locMastOther.getLocSts().equals("O")){ locMastOther.setLocSts("S"); // S.入库预约 locMastOther.setModiTime(now); if (!locMastService.updateById(locMastOther)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(locMast1.getLocNo()+"目标库位已被占用"); } wrkMastService.updateById(wrkMast); wrkMastService.updateById(wrkMastOther); wrkMastCrnService.insert(wrkMastCrn); }catch (Exception e){ log.error("异常!!!"+e); return FAIL; } return SUCCESS; } public ReturnT start(WrkMast wrkMast) { try { Date now = new Date(); LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); String deepLocOther = getDeepLoc2(wrkMast.getSourceLocNo(), Utils.getRow(wrkMast.getSourceLocNo())); if (Cools.isEmpty(deepLocOther)){ return FAIL; } WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper().eq("source_loc_no", deepLocOther).eq("wrk_sts", 11L)); if (!Cools.isEmpty(wrkMastOther)){ WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now); wrkMastCrnService.insert(wrkMastCrn); }else { return FAIL; } }catch (Exception e){ log.error("异常!!!"+e); return FAIL; } return SUCCESS; } public String[] staNoOther(String locNo){ String[] strings = new String[2]; int row = Utils.getRow(locNo); if (row==1 || row==5 ){ strings[0] = locNo; strings[1] = getDeepLoc2(locNo,row); return strings; } else if (row == 4 || row == 8){ strings[0] = getDeepLoc2(locNo,row); strings[1] = locNo; return strings; }else { return null; } } // /** // * 获取 浅库位对应的深库位号 // */ // public static String getDeepLoc(String shallowLoc,int row) { // if (row == 2 || row == 6) { // return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2); // } else if (row == 3 || row == 7) { // return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2); // }else { // return shallowLoc; // } // } /** * 获取 深库位对应的浅库位号 */ public static String getDeepLoc2(String shallowLoc,int row) { if (row == 1 || row == 5) { return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2); } else if (row == 4 || row == 8) { return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2); }else { return null; } } }