package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.StaDesc; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.StaDescService; import com.zy.asrs.service.WrkMastService; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; @Component public class EmptyOutWing { @Autowired private WrkMastService wrkMastService; @Autowired private LocMastService locMastService; @Autowired private StaDescService staDescService; @Autowired private CommonService commonService; @Autowired ConfigService configService; @Autowired private BasDevpService basDevpService; /** * 自动出空板 */ @Scheduled(cron = "0/3 * * * * ? ") private void execute() { Config config = configService.selectConfigByCode("AutoEmpty"); if (config.getStatus() == 0) { return; } BasDevp basDevp = basDevpService.selectOne(new EntityWrapper().eq("dev_no", 100)); if (Cools.isEmpty(basDevp.getLoading())||basDevp.getLoading().equals("N")) { List locMastss = locMastService.selectList(new EntityWrapper().eq("loc_sts", "D").orderBy("bay1")); if (Cools.isEmpty(locMastss)) { return; } for (LocMast locMasta : locMastss) { // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); // 获取库位 LocMast locMast = locMastService.selectById(locMasta.getLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException(locMasta.getLocNo() + "库位不存在"); } if (!locMast.getLocSts().equals("D")) { throw new CoolException("所选库位存在状态不为D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); } boolean res1 = true; List locMasts = locMastService.selectList(new EntityWrapper() .eq("lev1", locMast.getLev1()) .orderBy("bay1", res1)); for (LocMast locMast1 : locMasts) { if (locMast1.getLocNo().equals(locMast.getLocNo())) { break; } if (locMast1.getLocSts().equals("D") || locMast1.getLocSts().equals("F")) { throw new CoolException(locMasta.getLocNo() + "库位堵塞,禁止出库"); }else if(!locMast1.getLocSts().equals("O")){ return; } } // 获取源站 Wrapper wrapper = new EntityWrapper() .eq("type_no", 110) .eq("stn_no", 100) .eq("crn_no", locMast.getCrnNo()); StaDesc staDesc = staDescService.selectOne(wrapper); Integer sourceStaNo = staDesc.getCrnStn(); if (Cools.isEmpty(sourceStaNo)) { throw new CoolException("检索源站失败"); } Date now = new Date(); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(0L); // 工作状态:0.待发送 wrkMast.setIoType(110); // 入出库状态: 110.空板出库 wrkMast.setIoPri(13D); //优先级排序 15.出库>14.入库>13.空板出库>12.空板入库>11.移库 wrkMast.setSourceStaNo(sourceStaNo); // 源站 wrkMast.setStaNo(100); // 目标站 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locMasta.getLocNo()); // 源库位 wrkMast.setFullPlt("N"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("Y"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setAppeUser(9998L); wrkMast.setAppeTime(now); wrkMast.setModiUser(9998L); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 更新库位状态 D.空板 -> R.出库预约 if (locMast.getLocSts().equals("D")) { locMast.setLocSts("R"); locMast.setModiUser(9998L); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("更新库位状态失败"); } break; } } } } }