| | |
| | | @Value("${wms.zpalletId}") |
| | | public String WMS_ZPALLET_ID; |
| | | |
| | | @Value("${wms.loadedPallet}") |
| | | public String WMS_LOADED_PALLET; |
| | | |
| | | @Autowired |
| | | private MatService matService; |
| | | @Autowired |
| | |
| | | |
| | | Date now = new Date(); |
| | | // 无单组托 |
| | | if (Cools.isEmpty(param.getOrderNo())) { |
| | | if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) { |
| | | // 生成入库通知档 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getCombMats().forEach(elem -> { |
| | |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); |
| | | } |
| | | if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) { |
| | | throw new CoolException("物料:" + detlDto.getMatnr() + "单次最大组托上限为:" + mat.getUpQty()); |
| | | } |
| | | // if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) { |
| | | // throw new CoolException("物料:" + detlDto.getMatnr() + "单次最大组托上限为:" + mat.getUpQty()); |
| | | // } |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | BeanUtils.copyProperties(mat, waitPakin); |
| | | waitPakin.setBatch(detlDto.getBatch()); |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R callEmptyBinOutBound(MesOutApply mesOutApply, String staNo, String locType, Long userId) { |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'D').eq("loc_type2", locType)); |
| | | if(locMast == null) { |
| | | return R.parse("该类型:" + locType +"空托盘不存在"); |
| | | public R callEmptyBinOutBound(MesOutApply mesOutApply, String staNo, String locType,int count, Long userId) { |
| | | List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().setSqlSelect("TOP " + count + " *") |
| | | .eq("loc_sts", "D").eq("frozen", 0).eq("loc_type2", locType).orderBy("lev1").orderBy("bay1").orderBy("row1")); |
| | | if (locMastList.size() < count) { |
| | | return R.parse("空托数量不足(或冻结),剩余数量:" + locMastList.size()); |
| | | } |
| | | |
| | | // 获取路径 |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", 110) |
| | | .eq("stn_no", 204) |
| | | .eq("crn_no", locMast.getCrnNo()); |
| | | .eq("crn_no", 1); |
| | | StaDesc staDesc = staDescService.selectOne(wrapper); |
| | | if (staDesc == null) { |
| | | return R.parse("出库路径不存在,站点:" + staNo); |
| | | } |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(110); // 入出库状态: 110.空板出库 |
| | | wrkMast.setIoPri(10D); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn$()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo$()); // 目标站 |
| | | wrkMast.setCrnNo(staDesc.getCrnNo()); |
| | | wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("N"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("Y"); // 空板 |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | if (mesOutApply != null) { |
| | | wrkMast.setTaskNo(mesOutApply.getTaskno()); |
| | | wrkMast.setAgvSta(mesOutApply.getStationId()); |
| | | wrkMast.setMemo(JSONObject.toJSONString(mesOutApply)); |
| | | } else { |
| | | wrkMast.setAgvSta(staNo); |
| | | } |
| | | for (LocMast locMast: locMastList) { |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(110); // 入出库状态: 110.空板出库 |
| | | wrkMast.setIoPri(10D); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn$()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo$()); // 目标站 |
| | | wrkMast.setCrnNo(staDesc.getCrnNo()); |
| | | wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("N"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("Y"); // 空板 |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | if (mesOutApply != null) { |
| | | wrkMast.setTaskNo(mesOutApply.getTaskno()); |
| | | wrkMast.setAgvSta(mesOutApply.getStationId()); |
| | | wrkMast.setMemo(JSONObject.toJSONString(mesOutApply)); |
| | | } else { |
| | | wrkMast.setAgvSta(staNo); |
| | | } |
| | | |
| | | wrkMastService.insert(wrkMast); |
| | | wrkMastService.insert(wrkMast); |
| | | |
| | | // 更新库位状态 |
| | | if (locMast.getLocSts().equals("D")) { |
| | | locMast.setLocSts("R"); |
| | | locMast.setModiUser(userId); |
| | | locMast.setModiTime(now); |
| | | locMastService.updateById(locMast); |
| | | // 更新库位状态 |
| | | if (locMast.getLocSts().equals("D")) { |
| | | locMast.setLocSts("R"); |
| | | locMast.setModiUser(userId); |
| | | locMast.setModiTime(now); |
| | | locMastService.updateById(locMast); |
| | | } |
| | | log.info("生成空托出库任务成功,任务号:{}",wrkMast.getWrkNo()); |
| | | } |
| | | log.info("生成空托出库任务成功,任务号:{}",wrkMast.getWrkNo()); |
| | | return R.ok("出库成功"); |
| | | } |
| | | |
| | | @Override |
| | | public R callEmptyBinInBound(String site, Long userId) { |
| | | public R callEmptyBinInBound(String site, String barcode, String emptyFlag, Long userId) { |
| | | TransTask transTask = new TransTask(); |
| | | // transTask.setTaskno(mesInApply.getTaskno()); |
| | | transTask.setTaskno(String.valueOf(new Date().getTime())); |
| | | // transTask.setTaskname(mesInApply.getTaskname()); |
| | | // transTask.setOrderNo(mesInApply.getOrderNo()); |
| | | transTask.setTransType("02"); // 下毛坯 |
| | |
| | | transTask.setCurStationId(site); |
| | | transTask.setNextStationId(WMS_TRANS_START_STATION_2); |
| | | transTask.setItemno(WMS_ZPALLET_ID); // 固定为空托的编码 |
| | | if ("1".equals(emptyFlag)) { // 判断是否组托 |
| | | int count = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); |
| | | if(count <= 0) { |
| | | return R.parse("未组托:" + barcode); |
| | | } |
| | | transTask.setItemno(WMS_LOADED_PALLET); // 固定为满托的编码 |
| | | } |
| | | transTask.setQty(1); // 空托只回1个 |
| | | // transTask.setProductLineId(mesInApply.getProductLineId()); |
| | | transTask.setOperateType(1); |
| | | transTask.setAgvFactory(1); |
| | | transTask.setTuoPanId(barcode); |
| | | JSONObject sendAgvTask = mesService.submitTask(transTask); |
| | | if ("1".equals(sendAgvTask.getString("Success"))) { |
| | | log.info("pda呼叫料框回库成功,{}", JSONObject.toJSONString(transTask)); |