| | |
| | | package com.zy.common.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Random; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | private NavigateUtils navigateUtils; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private BasOutStationAreaService basOutStationAreaService; |
| | | |
| | | /** |
| | | * 生成工作号 |
| | |
| | | } |
| | | |
| | | public boolean completeTask(CompleteTaskParam param) { |
| | | WrkMast wrkMast = null; |
| | | Integer wrkNo = param.getWrkNo(); |
| | | WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); |
| | | String taskNo = param.getTaskNo();//wms任务号 |
| | | |
| | | if(wrkNo == null) { |
| | | if (!Cools.isEmpty(taskNo)) { |
| | | wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo)); |
| | | } |
| | | }else { |
| | | wrkMast = wrkMastService.selectByWorkNo(wrkNo); |
| | | } |
| | | |
| | | if (null == wrkMast) { |
| | | throw new CoolException("任务不存在"); |
| | | } |
| | |
| | | } |
| | | |
| | | public boolean cancelTask(CancelTaskParam param) { |
| | | WrkMast wrkMast = null; |
| | | Integer wrkNo = param.getWrkNo(); |
| | | WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); |
| | | String taskNo = param.getTaskNo();//wms任务号 |
| | | |
| | | if(wrkNo == null) { |
| | | if (!Cools.isEmpty(taskNo)) { |
| | | wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", taskNo)); |
| | | } |
| | | }else { |
| | | wrkMast = wrkMastService.selectByWorkNo(wrkNo); |
| | | } |
| | | |
| | | if (null == wrkMast) { |
| | | throw new CoolException("任务不存在"); |
| | | } |
| | |
| | | if (!sourceCrnResult.getCrnNo().equals(targetCrnResult.getCrnNo())) { |
| | | throw new CoolException("源库位和目标库位不在同一巷道"); |
| | | } |
| | | Integer crnNo = targetCrnResult.getCrnNo(); |
| | | |
| | | // 获取工作号 |
| | | int workNo = getWorkNo(WrkIoType.LOC_MOVE.id); |
| | |
| | | wrkMast.setIoPri(ioPri); |
| | | wrkMast.setSourceLocNo(param.getSourceLocNo()); |
| | | wrkMast.setLocNo(param.getLocNo()); // 目标库位 |
| | | wrkMast.setCrnNo(crnNo); |
| | | wrkMast.setWmsWrkNo(param.getTaskNo()); |
| | | wrkMast.setBarcode(sourceLocMast.getBarcode()); |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | | |
| | | if (targetCrnResult.getCrnType().equals(SlaveType.Crn)) { |
| | | wrkMast.setCrnNo(targetCrnResult.getCrnNo()); |
| | | } else if (targetCrnResult.getCrnType().equals(SlaveType.DualCrn)) { |
| | | wrkMast.setDualCrnNo(targetCrnResult.getCrnNo()); |
| | | }else { |
| | | throw new CoolException("未知设备类型"); |
| | | } |
| | | |
| | | boolean res = wrkMastService.insert(wrkMast); |
| | | if (!res) { |
| | | News.error("移库任务 --- 保存工作档失败!"); |
| | |
| | | } |
| | | Integer crnNo = findCrnResult.getCrnNo(); |
| | | |
| | | Integer sourceStationId = this.findOutStationId(findCrnResult, param.getStaNo()); |
| | | Integer staNo = param.getStaNo(); |
| | | String outArea = param.getOutArea(); |
| | | if(Cools.isEmpty(staNo) && Cools.isEmpty(outArea)) { |
| | | throw new CoolException("请传入出库站点或出库区域"); |
| | | } |
| | | |
| | | if(Cools.isEmpty(staNo)) { |
| | | List<BasOutStationArea> areaList = basOutStationAreaService.selectList(new EntityWrapper<BasOutStationArea>().eq("area_code", outArea)); |
| | | if (areaList.isEmpty()) { |
| | | throw new CoolException("出库区域不存在"); |
| | | } |
| | | int nextInt = new Random().nextInt(areaList.size()); |
| | | BasOutStationArea basOutStationArea = areaList.get(nextInt); |
| | | staNo = basOutStationArea.getStationId(); |
| | | } |
| | | |
| | | Integer sourceStationId = this.findOutStationId(findCrnResult, staNo); |
| | | if (sourceStationId == null) { |
| | | throw new CoolException("未找到输送目标站点可走行路径"); |
| | | } |
| | |
| | | wrkMast.setIoPri(ioPri); |
| | | wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 |
| | | wrkMast.setSourceStaNo(sourceStationId);//源站 |
| | | wrkMast.setStaNo(param.getStaNo());//目标站 |
| | | wrkMast.setStaNo(staNo);//目标站 |
| | | wrkMast.setWmsWrkNo(param.getTaskNo()); |
| | | wrkMast.setBarcode(locMast.getBarcode()); |
| | | wrkMast.setAppeTime(now); |
| | |
| | | break; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | // e.printStackTrace(); |
| | | } |
| | | } |
| | | return targetStationId; |
| | |
| | | break; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | // e.printStackTrace(); |
| | | } |
| | | } |
| | | return finalSourceStationId; |