| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | |
| | | if (Cools.isEmpty(param)) { |
| | | throw new CoolException("请求参数有误:" + param); |
| | | } |
| | | int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode())); |
| | | if (zpalletCount > 0) { |
| | | throw new CoolException("库存托盘码已存在:" + param.getBarcode()); |
| | | } |
| | | if (!Cools.isEmpty(param.getBarcode())) { |
| | | int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode())); |
| | | if (zpalletCount > 0) { |
| | | throw new CoolException("库存托盘码已存在:" + param.getBarcode()); |
| | | } |
| | | |
| | | int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode())); |
| | | if (barcodeCount > 0) { |
| | | throw new CoolException("工作档已存在该托盘码:" + param.getBarcode()); |
| | | int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode())); |
| | | if (barcodeCount > 0) { |
| | | throw new CoolException("工作档已存在该托盘码:" + param.getBarcode()); |
| | | } |
| | | } |
| | | |
| | | LocTypeDto locTypeDto = new LocTypeDto(); |
| | | locTypeDto.setLocType1((short)1); |
| | | |
| | | int iotype = 1; |
| | | if (Cools.isEmpty(param.getMatList())) { |
| | | iotype = 10; |
| | | } |
| | | // 根据源站点寻找库位 |
| | | // StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo(), null,null,null, locTypeDto); |
| | | StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto); |
| | | StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0); |
| | | |
| | | // 返回GWCS目标信息 |
| | | pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo()); |
| | | |
| | | |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(new Date()); |
| | | wrkMast.setWrkSts(1L); // 工作状态:设备上走 |
| | | wrkMast.setIoType(1); // 入出库状态:1.入库 |
| | | wrkMast.setIoType(iotype); // 入出库状态:1.入库 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(param.getPalletizingNo()); |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList(); |
| | | for (GwmsGenerateInventoryDto.MatList obj :matList) { |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | obj.getRolls().forEach(roll -> { |
| | | Mat mat = matService.selectByMatnr(roll.getSpecs()); |
| | | if (mat == null) { |
| | | mat = new Mat(); |
| | | mat.setTagId(6L); |
| | | mat.setMatnr(roll.getSpecs()); |
| | | mat.setMaktx(roll.getSpecs()); |
| | | mat.setSpecs(roll.getSpecs()); |
| | | mat.setStatus(1); |
| | | mat.setCreateTime(now); |
| | | mat.setUpdateTime(now); |
| | | if (!matService.insert(mat)) { |
| | | throw new CoolException("物料导入失败!"); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(param.getMatList())) { |
| | | List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList(); |
| | | for (GwmsGenerateInventoryDto.MatList obj :matList) { |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setMatnr(roll.getSpecs()); // 规格 |
| | | wrkDetl.setMaktx(roll.getSpecs()); //规格 |
| | | wrkDetl.setBatch(roll.getBoxNo()); // 箱号 |
| | | wrkDetl.setModel(roll.getRollNo()); // 卷号 |
| | | wrkDetl.setBrand(""); // 木箱类型 |
| | | wrkDetl.setZpallet(param.getBarcode()); // 托盘吗 |
| | | wrkDetl.setOrigin(obj.getBoxPos()); // 木箱在托盘位置 |
| | | wrkDetl.setWeight(roll.getNetWeight()); // 净重 |
| | | wrkDetl.setVolume(roll.getGrossWeight()); // 毛重 |
| | | wrkDetl.setPrice(roll.getLength()); |
| | | wrkDetl.setSpecs(String.valueOf(roll.getSplices())); |
| | | wrkDetl.setAnfme(1.0); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | }); |
| | | obj.getRolls().forEach(roll -> { |
| | | // Mat mat = matService.selectByMatnr(roll.getSpecs()); |
| | | // if (mat == null) { |
| | | // mat = new Mat(); |
| | | // mat.setTagId(6L); |
| | | // mat.setMatnr(roll.getSpecs()); |
| | | // mat.setMaktx(roll.getSpecs()); |
| | | // mat.setSpecs(roll.getSpecs()); |
| | | // mat.setStatus(1); |
| | | // mat.setCreateTime(now); |
| | | // mat.setUpdateTime(now); |
| | | // if (!matService.insert(mat)) { |
| | | // throw new CoolException("物料导入失败!"); |
| | | // } |
| | | // } |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setMatnr(roll.getSpecs()); // 规格 |
| | | wrkDetl.setMaktx(roll.getSpecs()); //规格 |
| | | wrkDetl.setBatch(roll.getBoxNo()); // 箱号 |
| | | wrkDetl.setModel(roll.getRollNo()); // 卷号 |
| | | wrkDetl.setBrand(obj.getPackageGroupNo()); // 包装组号 |
| | | wrkDetl.setZpallet(param.getBarcode()); // 托盘吗 |
| | | wrkDetl.setOrigin(obj.getBoxPos()); // 木箱在托盘位置 |
| | | wrkDetl.setWeight(roll.getNetWeight()); // 净重 |
| | | wrkDetl.setVolume(roll.getGrossWeight()); // 毛重 |
| | | wrkDetl.setPrice(roll.getLength()); |
| | | wrkDetl.setSpecs(String.valueOf(roll.getSplices())); |
| | | wrkDetl.setAnfme(1.0); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | |
| | | return "出库结果上报成功"; |
| | | } |
| | | |
| | | @Autowired |
| | | private BasCrnpService basCrnpService; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public String emptyOutLoc(GhjtApiParam param) { |
| | | // 3102/3009/3008/3006/3003/3002→3047/3112 |
| | | // 获取模式为电脑模式,无任务的堆垛机列表:防止分配到堆垛机不可用 |
| | | List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3) |
| | | .eq("wrk_no",0)); |
| | | if (basCrnps.isEmpty()) { |
| | | // 都有任务则获取电脑模式的堆垛机列表 |
| | | basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)); |
| | | } |
| | | if (basCrnps.isEmpty()) { |
| | | throw new CoolException("没有可用堆垛机,堆垛机停止或异常"); |
| | | } |
| | | // 可用堆垛机列表 |
| | | List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()); |
| | | // 寻找空托盘库位,先找浅库位 |
| | | List<LocMast> locMasts; |
| | | locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D") |
| | | .orderAsc(Arrays.asList("row1","lev1","bay1")).in("row1",3,4,6,7,10,11,14,15,18,19,22,23)); |
| | | .orderAsc(Arrays.asList("row1","lev1","bay1")).in("crn_no",crnNoList).in("row1",3,4,6,7,10,11,14,15,18,19,22,23)); |
| | | if (locMasts.isEmpty()) { |
| | | locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D") |
| | | .orderAsc(Arrays.asList("row1","lev1","bay1")).in("row1",1,4,5,8,9,12,13,16,17,20,21,24)); |
| | | .orderAsc(Arrays.asList("row1","lev1","bay1")).in("crn_no",crnNoList).in("row1",1,4,5,8,9,12,13,16,17,20,21,24)); |
| | | } |
| | | |
| | | if (locMasts.isEmpty()) { |
| | |
| | | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | | throw new CoolException("保存工作主档历史档失败"); |
| | | } |
| | | |
| | | // 获取目标站 |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", wrkMast.getIoType() - 50) |
| | | .eq("stn_no", wrkMast.getStaNo()) // 作业站点 = 拣料出库的目标站 |
| | | .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号 |
| | | StaDesc staDesc = staDescService.selectOne(wrapper); |
| | | if (Cools.isEmpty(staDesc)) { |
| | | throw new CoolException("入库路径不存在"); |
| | | } |
| | | // 堆垛机站点(目标站) |
| | | Integer staNo = staDesc.getCrnStn(); |
| | | // 更新工作类型103->53 |
| | | wrkMast.setIoType(53); |
| | | wrkMast.setWrkSts(52L); // 工作状态42->52.设备上走(拆垛完成) |
| | | Integer staNo = wrkMast.getStaNo(); |
| | | // 目标站点源站点转换 |
| | | wrkMast.setStaNo(wrkMast.getSourceStaNo()); |
| | | wrkMast.setSourceStaNo(staNo); |
| | | wrkMast.setSourceStaNo(wrkMast.getStaNo()); |
| | | wrkMast.setStaNo(staNo); |
| | | // 目标库位=源库位 |
| | | wrkMast.setLocNo(wrkMast.getSourceLocNo()); |
| | | // 源库位清除 |
| | |
| | | return wrkDetls.size() > 1 ? 0 : 1; // 一条记录就是一卷 |
| | | } |
| | | |
| | | private void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) { |
| | | public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) { |
| | | boolean success = false; |
| | | // 获取请求头 |
| | | Map<String, Object> headers = getHeaders(); |
| | |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "入库", |
| | | MesConstant.URL + MesConstant.PAKIN_URL, |
| | | MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, |
| | | null, |
| | | "127.0.0.1", |
| | | jsonObject.toJSONString(), |
| | | body, |
| | | response, |
| | | success |
| | | ); |