package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkDetlService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.VersionUtils; 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; import java.util.List; @Slf4j @Service @Transactional public class AutomaticLibraryTransferHandler extends AbstractHandler { @Autowired private WrkMastService wrkMastService; @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @Autowired private WrkDetlService wrkDetlService; @Autowired private CommonService commonService; public ReturnT startOne() { List locMastsF=locMastService.selectList(new EntityWrapper() .eq("loc_sts","F").eq("lev1",1).orderBy("bay1",false)); List locMastsO=locMastService.selectList(new EntityWrapper() .eq("loc_sts","O").eq("lev1",1).orderBy("bay1",false)); if(Cools.isEmpty(locMastsO)){ return FAIL; } LocMast locMast1 = locMastsO.get(0); LocMast locMast2 = locMastsF.get(locMastsF.size()-1); if(locMast2.getBay1()>locMast1.getBay1()){ return FAIL; } String locNo=null; for(LocMast locMast:locMastsF){ if(locMast.getBay1() locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", locMast.getLocNo())); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(new Date()); wrkDetl.setModiTime(new Date()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } } // 修改源库位状态 if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("F")) { locMast.setLocSts("R"); // R.出库预约 locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败"); } // 修改目标库位状态 if (locMast1.getLocSts().equals("O")) { locMast1.setLocSts("S"); // S.入库预约 locMast1.setModiTime(new Date()); if (!locMastService.updateById(locMast1)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败"); } break; } } return SUCCESS; } public ReturnT startTwo() { List locMastsF=locMastService.selectList(new EntityWrapper() .eq("loc_sts","F").eq("lev1",2).orderBy("bay1",false)); List locMastsO=locMastService.selectList(new EntityWrapper() .eq("loc_sts","O").eq("lev1",2).orderBy("bay1",false)); if(Cools.isEmpty(locMastsO)){ return FAIL; } LocMast locMast1 = locMastsO.get(0); LocMast locMast2 = locMastsF.get(locMastsF.size()-1); if(locMast2.getBay1()>locMast1.getBay1()){ return FAIL; } String locNo=null; for(LocMast locMast:locMastsF){ if(locMast.getBay1() locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", locMast.getLocNo())); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(new Date()); wrkDetl.setModiTime(new Date()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } } // 修改源库位状态 if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("F")) { locMast.setLocSts("R"); // R.出库预约 locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败"); } // 修改目标库位状态 if (locMast1.getLocSts().equals("O")) { locMast1.setLocSts("S"); // S.入库预约 locMast1.setModiTime(new Date()); if (!locMastService.updateById(locMast1)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败"); } break; } } return SUCCESS; } public ReturnT startThree() { List locMastsF=locMastService.selectList(new EntityWrapper() .eq("loc_sts","D").eq("lev1",3).orderBy("bay1",true)); List locMastsO=locMastService.selectList(new EntityWrapper() .eq("loc_sts","O").eq("lev1",3).orderBy("bay1",true)); if(Cools.isEmpty(locMastsO)){ return FAIL; } LocMast locMast1 = locMastsO.get(0); LocMast locMast2 = locMastsF.get(locMastsF.size()-1); if(locMast2.getBay1()>locMast1.getBay1()){ return FAIL; } String locNo=null; for(LocMast locMast:locMastsF){ if(locMast.getBay1() locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", locMast.getLocNo())); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(new Date()); wrkDetl.setModiTime(new Date()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } } // 修改源库位状态 if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("F")) { locMast.setLocSts("R"); // R.出库预约 locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败"); } // 修改目标库位状态 if (locMast1.getLocSts().equals("O")) { locMast1.setLocSts("S"); // S.入库预约 locMast1.setModiTime(new Date()); if (!locMastService.updateById(locMast1)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败"); } break; } } return SUCCESS; } public ReturnT startAll() { for(int i=1;i<=3;i++){ boolean boo=false; String sts="F"; if(i==3){ boo=true; sts="D"; } List locMastsF=locMastService.selectList(new EntityWrapper() .eq("loc_sts",sts).eq("lev1",i).orderBy("bay1",boo)); List locMastsO=locMastService.selectList(new EntityWrapper() .eq("loc_sts","O").eq("lev1",i).orderBy("bay1",boo)); if(Cools.isEmpty(locMastsO)){ continue; } LocMast locMast1 = locMastsO.get(0); LocMast locMast2 = locMastsF.get(locMastsF.size()-1); if(i!=3&&locMast2.getBay1()>locMast1.getBay1()){ continue; }else if(i==3&&locMast2.getBay1()locMast1.getBay1()){ locNo=locMast1.getLocNo(); } //生成移库任务 if(locNo!=null){ // 获取工作号 int workNo = commonService.getWorkNo(0); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(0L); // 工作状态:11.生成出库ID wrkMast.setIoType(11); // 入出库状态: 11.库格移载 wrkMast.setIoPri(10D); wrkMast.setCrnNo(1); wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 wrkMast.setLocNo(locNo); // 目标库位 if(i!=3){ wrkMast.setFullPlt("Y"); // 满板 wrkMast.setEmptyMk("N"); // 空板 }else{ wrkMast.setFullPlt("N"); // 满板 wrkMast.setEmptyMk("Y"); // 空板 } wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setBarcode(locMast.getBarcode()); // 托盘码 wrkMast.setLinkMis("N"); wrkMast.setAppeTime(new Date()); wrkMast.setModiTime(new Date()); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败"); } // 工作档明细保存 if (locMast.getLocSts().equals("F")) { List locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", locMast.getLocNo())); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(new Date()); wrkDetl.setModiTime(new Date()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } } // 修改源库位状态 if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("F")) { locMast.setLocSts("R"); // R.出库预约 locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败"); } // 修改目标库位状态 if (locMast1.getLocSts().equals("O")) { locMast1.setLocSts("S"); // S.入库预约 locMast1.setModiTime(new Date()); if (!locMastService.updateById(locMast1)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败"); } break; } } if (locNo !=null){ break; } } return SUCCESS; } }