| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.enums.SqlLike; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.*; |
| | |
| | | |
| | | @Value("${wms.zpalletId}") |
| | | public String WMS_ZPALLET_ID; |
| | | |
| | | @Value("${wms.loadedPallet}") |
| | | public String WMS_LOADED_PALLET; |
| | | |
| | | @Autowired |
| | | private MatService matService; |
| | |
| | | } |
| | | |
| | | int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode())); |
| | | int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode())); |
| | | // int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode())); |
| | | int countWrk = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()).ne("wrk_sts",15)); |
| | | int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); |
| | | if (countLoc > 0 || countWrk > 0 || countwait > 0) { |
| | | throw new CoolException("组托档/工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | |
| | | |
| | | 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()); |
| | |
| | | @Transactional |
| | | 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")); |
| | | .eq("loc_sts", "D").eq("frozen", 0).like("barcode", locType, SqlLike.RIGHT).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("stn_no", staNo.startsWith("B") ? 204 : staNo) |
| | | .eq("crn_no", 1); |
| | | StaDesc staDesc = staDescService.selectOne(wrapper); |
| | | if (staDesc == null) { |
| | |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setBarcode(locMast.getBarcode()); |
| | | if (mesOutApply != null) { |
| | | wrkMast.setTaskNo(mesOutApply.getTaskno()); |
| | | wrkMast.setAgvSta(mesOutApply.getStationId()); |
| | |
| | | } |
| | | |
| | | @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)); |