package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WorkService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.Utils; import com.zy.common.properties.SlaveProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Component @Slf4j public class CheckDeepScheduler { @Value("${wcs-slave.doubleDeep}") private boolean confirmDeep; @Value("${wcs-slave.doubleLocs}") private String deepLocs; @Value("${wcs-slave.shallowLocs}") private String shallowLocs; @Autowired private LocDetlService locDetlService; @Autowired private LocMastService locMastService; @Autowired private WorkService workService; @Autowired private WrkMastService wrkMastService; @Autowired private SlaveProperties slaveProperties; /** * 遍历库存中,浅库位状态F/D,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去 */ @Scheduled(cron = "0/30 * * * * ?") private void locMoveToDeep(){ if (!confirmDeep) return; List locMasts = locMastService.queryShallowLocFMast(); if (null == locMasts) return; for (LocMast sourceLoc : locMasts){ String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo()); LocMast destLoc = locMastService.selectById(deep); if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) { //查找源库位是否有转移任务,如果有,不生成库位移转 WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper() .eq("source_loc_no", sourceLoc.getLocNo())); if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") && (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) { workService.locMove(sourceLoc.getLocNo(), deep, 1L); } } } } /** *遍历库存中,深浅库位状态都为F,物料不相同,或者浅库位入库日期比深库位早的库位,做库位移转移到新的深库位中去 * 0点到5点之间执行,每次只执行一笔 */ // @Scheduled(cron = "0/90 * * * * ?") private void LocMoveToNewLoc() throws ParseException { // if (!confirmDeep) return; // // for (int crnNo = 1; crnNo < 4; crnNo++){ // List wrkMasts = wrkMastService.selectList(new EntityWrapper() // .eq("crn_no",crnNo) // .last(" and wrk_sts in (2,3,4,11,12)") // ); // if (wrkMasts.size() > 0) continue; // List locMasts = locMastService.queryNeedMoveShallLoc(crnNo); // for (LocMast locMast : locMasts) { // LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo); // if(!Cools.isEmpty(targetLoc)) { // workService.locMove(locMast.getLocNo(), targetLoc.getLocNo(), 1L); // } // break; // } // } } /** * 将深库位转为对应浅库位 * @param deep * @return */ private String convertShallow(String deep){ String shallLoc = ""; Integer mastInt = Integer.parseInt(deep.substring(0, 2)); if (mastInt % 2 == 0){ mastInt -= 1; }else if (mastInt % 2 == 1){ mastInt += 1; } if (mastInt <10){ shallLoc = "0" + mastInt+ deep.substring(2,7); }else { shallLoc = mastInt+ deep.substring(2,7); } return shallLoc; } }