|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.param.LocDetlAdjustParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.StockOutParam; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.utils.Utils; | 
|---|
|  |  |  | import com.zy.common.model.*; | 
|---|
|  |  |  | import com.zy.common.model.enums.IoWorkType; | 
|---|
|  |  |  | import com.zy.common.model.enums.WorkNoType; | 
|---|
|  |  |  | import com.zy.common.properties.SlaveProperties; | 
|---|
|  |  |  | import com.zy.common.service.CommonService; | 
|---|
|  |  |  | import com.zy.common.web.WcsController; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WcsController wcsController; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RowLastnoService rowLastnoService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SlaveProperties slaveProperties; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public StartupDto dealPreHaveStart(Integer wrkNo, Long userId) { | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public String dealPreHaveStart(Integer wrkNo, Long userId) { | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastService.selectById(wrkNo); | 
|---|
|  |  |  | if (wrkMast == null) { | 
|---|
|  |  |  | throw new CoolException("任务已失效"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String locNo = wrkMast.getLocNo(); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(locNo); | 
|---|
|  |  |  | assert locMast != null; | 
|---|
|  |  |  | RowLastno rowLastno = rowLastnoService.findBySection(locMast.getRow1()); | 
|---|
|  |  |  | assert rowLastno != null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | // 目标库位 | 
|---|
|  |  |  | LocMast targetLoc = null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (int curRow = rowLastno.getsRow(); curRow<=rowLastno.geteRow(); curRow++) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Utils.isShallowLoc(slaveProperties, curRow)) { | 
|---|
|  |  |  | Integer deepRow = Utils.getDeepRow(slaveProperties, curRow); | 
|---|
|  |  |  | targetLoc = locMastService.queryFreeLocMast(deepRow, locMast.getLocType1()); | 
|---|
|  |  |  | // 因库位移转、需预留空库位 | 
|---|
|  |  |  | if (!locMastService.checkEmptyCount(targetLoc)) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (Cools.isEmpty(targetLoc)) { | 
|---|
|  |  |  | targetLoc = locMastService.queryFreeLocMast(curRow, locMast.getLocType1()); | 
|---|
|  |  |  | // 因库位移转、需预留空库位 | 
|---|
|  |  |  | if (!locMastService.checkEmptyCount(targetLoc)) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 目标库位 ===>> 浅库位, 则校验其深库位是否为 F D X | 
|---|
|  |  |  | if (null != targetLoc && Utils.isShallowLoc(slaveProperties, targetLoc.getLocNo())) { | 
|---|
|  |  |  | LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, targetLoc.getLocNo())); | 
|---|
|  |  |  | if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 目标库位 ===>> 深库位, 则校验其浅库位是否为 O | 
|---|
|  |  |  | if (null != targetLoc && Utils.isDeepLoc(slaveProperties, targetLoc.getLocNo())) { | 
|---|
|  |  |  | LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, targetLoc.getLocNo())); | 
|---|
|  |  |  | if (!shallowLoc.getLocSts().equals("O")) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Cools.isEmpty(targetLoc)) { | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (targetLoc == null) { | 
|---|
|  |  |  | throw new CoolException("操作失败,当前仓库找不到空库位"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | // 修改工作档 | 
|---|
|  |  |  | StaDesc staDesc = staDescService.queryCrnStn(targetLoc.getCrnNo()); | 
|---|
|  |  |  | if (Cools.isEmpty(staDesc)) { | 
|---|
|  |  |  | throw new CoolException("入库路径不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wrkMast.setWrkSts(2L); | 
|---|
|  |  |  | wrkMast.setLocNo(targetLoc.getLocNo()); | 
|---|
|  |  |  | wrkMast.setStaNo(staDesc.getCrnStn()); | 
|---|
|  |  |  | wrkMast.setCrnNo(targetLoc.getCrnNo()); | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | wrkMast.setModiUser(userId); | 
|---|
|  |  |  | wrkMast.setPreHave("N"); | 
|---|
|  |  |  | if (!wrkMastService.updateById(wrkMast)) { | 
|---|
|  |  |  | throw new CoolException("修改工作档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改库位状态 O ===>>> S | 
|---|
|  |  |  | if (targetLoc.getLocSts().equals("O")){ | 
|---|
|  |  |  | targetLoc.setLocSts("S"); // S.入库预约 | 
|---|
|  |  |  | targetLoc.setModiUser(userId); | 
|---|
|  |  |  | targetLoc.setModiTime(now); | 
|---|
|  |  |  | if (!locMastService.updateById(targetLoc)){ | 
|---|
|  |  |  | throw new CoolException("改变库位状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | throw new CoolException(targetLoc.getLocNo()+"目标库位已被占用"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 禁用异常库位 | 
|---|
|  |  |  | //        locMast.setLocSts("X"); // X.禁用 | 
|---|
|  |  |  | //        locMast.setModiUser(userId); | 
|---|
|  |  |  | //        locMast.setModiTime(now); | 
|---|
|  |  |  | //        if (!locMastService.updateById(locMast)){ | 
|---|
|  |  |  | //            throw new CoolException("改变库位状态失败"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | return targetLoc.getLocNo(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|