|  |  | 
 |  |  |     public R inLocCallAgv(String sta, String inSta) { | 
 |  |  |  | 
 |  |  |         BasDevp basDevp = basDevpMapper.selectById(inSta); | 
 |  |  |         // 0.出库模式,1.agv入库中,2.生成入库任务 | 
 |  |  |         if (basDevp.getDevMk().equals("0")) { // 是出库 | 
 |  |  |              // 判断是否有出库任务 | 
 |  |  |             Wrapper<WrkMast> wrapper = new EntityWrapper<WrkMast>().lt("wrk_sts", 14).in("io_type", 101, 103, 107, 110); | 
 |  |  |             switch (inSta) { | 
 |  |  |                 case "1040": wrapper.in("source_sta_no","1043","1044");break; | 
 |  |  |                 case "2010": wrapper.in("source_sta_no","2013","2014"); break; | 
 |  |  |                 case "2000": wrapper.in("source_sta_no","2003","2004");break; | 
 |  |  |                 case "3010": wrapper.in("source_sta_no","3013","3014");break; | 
 |  |  |                 default: | 
 |  |  |             } | 
 |  |  |             int count = wrkMastService.selectCount(wrapper); | 
 |  |  |             if (count == 0) { | 
 |  |  |                 // 没有出库任务,更改为入库模式 | 
 |  |  |                 basDevp.setDevMk("1"); | 
 |  |  |                 basDevpMapper.updateById(basDevp); | 
 |  |  |             } else { | 
 |  |  |                 return R.parse(inSta + "站点存在出库任务"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         // 判断是否有出库任务 | 
 |  |  |         Wrapper<WrkMast> wrapper = new EntityWrapper<WrkMast>().lt("wrk_sts", 14).in("io_type", 101, 103, 107, 110); | 
 |  |  |  | 
 |  |  |         switch (inSta) { | 
 |  |  |             case "1040": | 
 |  |  |                 wrapper.in("source_sta_no", "1043", "1044"); | 
 |  |  |                 break; | 
 |  |  |             case "2010": | 
 |  |  |                 wrapper.in("source_sta_no", "2013", "2014"); | 
 |  |  |                 break; | 
 |  |  |             case "2000": | 
 |  |  |                 wrapper.in("source_sta_no", "2003", "2004"); | 
 |  |  |                 break; | 
 |  |  |             case "3010": | 
 |  |  |                 wrapper.in("source_sta_no", "3013", "3014"); | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |         } | 
 |  |  |         int count = wrkMastService.selectCount(wrapper); | 
 |  |  |         log.info("入库呼叫agv呼叫站点:{},目标站点:{},出库任务数:{}",sta,inSta,count); | 
 |  |  |         if (count != 0) { | 
 |  |  |             return R.parse(inSta + "站点存在出库任务"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 先绑定 | 
 |  |  | 
 |  |  |                     .build() | 
 |  |  |                     .doPost(); | 
 |  |  |             JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |             jsonObject.getString("message"); | 
 |  |  |             if (jsonObject.getInteger("code").equals(0)) { | 
 |  |  |                 success = true; | 
 |  |  |                 // 入库暂存+1 | 
 |  |  |                 basDevp.setInQty(basDevp.getInQty() + 1); | 
 |  |  |                 basDevpMapper.updateById(basDevp); | 
 |  |  |             } else { | 
 |  |  |                 message = jsonObject.getString("message"); | 
 |  |  |                 log.error("入库呼叫agv失败!!!url:{};request:{};response:{}", ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_CALL_IN_PATH, body, response); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  | 
 |  |  |                 waitPakin.setTemp2(detlDto.getTemp2()); | 
 |  |  |                 waitPakin.setTemp3(detlDto.getTemp3()); | 
 |  |  |                 waitPakin.setTemp4(detlDto.getTemp4()); | 
 |  |  |                 int countWrk2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); | 
 |  |  |                 if (countWrk2 > 0) { | 
 |  |  |                     throw new CoolException("工作档条码数据已存在===>>" + param.getBarcode()); | 
 |  |  |                 } | 
 |  |  |                 if (!waitPakinService.insert(waitPakin)) { | 
 |  |  |                     throw new CoolException("保存入库通知档失败"); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setModiUser(userId); | 
 |  |  |             wrkDetl.setManu(orderDetl.getManu()); | 
 |  |  |             wrkDetl.setSupp(orderDetl.getSupp()); | 
 |  |  |             wrkDetl.setTemp1(orderDetl.getTemp1()); | 
 |  |  |             wrkDetl.setTemp2(orderDetl.getTemp2()); | 
 |  |  |             wrkDetl.setTemp3(orderDetl.getTemp3()); | 
 |  |  |             wrkDetl.setTemp4(orderDetl.getTemp4()); | 
 |  |  |             wrkDetlService.insert(wrkDetl); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |         Date now = new Date(); | 
 |  |  |         for(OrderDetl orderDetl : orderDetls){ | 
 |  |  |             //查询所有库位状态为F的库位信息 | 
 |  |  |             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null,null); | 
 |  |  |             List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null,orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2()); | 
 |  |  |             if (locDetls.size() == 0) { | 
 |  |  |                 throw new CoolException("库存中没有该物料"); | 
 |  |  |             } | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void pingKuShelves(CombParam combParam,Long userId) { | 
 |  |  |         Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", combParam.getLocno()).eq("type", 3)); | 
 |  |  |         if (Cools.isEmpty(node)){ | 
 |  |  |             throw new CoolException("未找到库位信息"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Order order = orderService.selectByNo(combParam.getOrderNo()); | 
 |  |  |         if (Cools.isEmpty(order) || order.getSettle() > 2) { | 
 |  |  |             throw new CoolException("单据编号已过期"); | 
 |  |  |         } | 
 |  |  |         // 生成入库通知档 | 
 |  |  |         List<DetlDto> detlDtos = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         for (CombParam.CombMat elem : combParam.getCombMats()) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  | //            param.getCombMats().forEach(elem -> { | 
 |  |  |  | 
 |  |  |             // 订单明细数量校验 | 
 |  |  |             OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); | 
 |  |  |             if (Cools.isEmpty(orderDetl)) { | 
 |  |  |                 throw new CoolException("该单据中未找到对应物料明细"); | 
 |  |  |             } | 
 |  |  |             if (elem.getAnfme() > orderDetl.getEnableQty()) { | 
 |  |  |                 throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); | 
 |  |  |             } | 
 |  |  |             // 修改订单作业数量 | 
 |  |  |             if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { | 
 |  |  |                 throw new CoolException("修改单据作业数量失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | //                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getManu()); | 
 |  |  |             DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode() | 
 |  |  |                     , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4()); | 
 |  |  |             if (DetlDto.has(detlDtos, detlDto)) { | 
 |  |  |                 DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); | 
 |  |  |                 assert one != null; | 
 |  |  |                 one.setAnfme(one.getAnfme() + detlDto.getAnfme()); | 
 |  |  |             } else { | 
 |  |  |                 detlDtos.add(detlDto); | 
 |  |  |             } | 
 |  |  | //            }); | 
 |  |  |         } | 
 |  |  |         int workNo = commonService.getWorkNo(4); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  |         wrkMast.setWrkNo(workNo); | 
 |  |  |         wrkMast.setIoTime(new Date()); | 
 |  |  |         wrkMast.setWrkSts(4L); // 工作状态:生成入库ID | 
 |  |  |         wrkMast.setIoType(300); // 入出库状态:1.入库 | 
 |  |  |         wrkMast.setIoPri(12D); // 优先级 | 
 |  |  |         wrkMast.setLocNo(node.getName()); | 
 |  |  |         wrkMast.setBarcode(""); // 托盘码 | 
 |  |  |         wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  |         wrkMast.setPicking("N"); // 拣料 | 
 |  |  |         wrkMast.setExitMk("N"); // 退出 | 
 |  |  |         wrkMast.setEmptyMk("N"); // 空板 | 
 |  |  |         wrkMast.setLinkMis("Y"); | 
 |  |  |         wrkMast.setSheetNo(order.getOrderNo()); | 
 |  |  |         // 操作人员数据 | 
 |  |  |         wrkMast.setAppeTime(now); | 
 |  |  |         wrkMast.setModiTime(now); | 
 |  |  |         boolean res = wrkMastService.insert(wrkMast); | 
 |  |  |         if (!res) { | 
 |  |  |             throw new CoolException("保存工作档失败"); | 
 |  |  |         } | 
 |  |  |         for (DetlDto detlDto : detlDtos) { | 
 |  |  |             Mat mat = matService.selectByMatnr(detlDto.getMatnr()); | 
 |  |  |             if (Cools.isEmpty(mat)) { | 
 |  |  |                 throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); | 
 |  |  |             } | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |  | 
 |  |  |             wrkDetl.sync(detlDto); | 
 |  |  |             wrkDetl.sync(mat); | 
 |  |  |  | 
 |  |  |             wrkDetl.setOrderNo(order.getOrderNo()); | 
 |  |  |             wrkDetl.setWrkNo(wrkMast.getWrkNo()); | 
 |  |  |             wrkDetl.setIoTime(wrkMast.getIoTime()); | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setManu(detlDto.getMark()); //标记 | 
 |  |  |             wrkDetl.setOrigin(order.getItemName());//仓库 | 
 |  |  |             wrkDetl.setSupp(detlDto.getSuppName()); //供应商 | 
 |  |  |             wrkDetl.setSku(detlDto.getCustomer()); //客户名称 | 
 |  |  |             wrkDetl.setThreeCode(detlDto.getOrderNo()); //u8发过来的订单号 | 
 |  |  |             wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //来源单号 | 
 |  |  |             wrkDetl.setTemp1(detlDto.getTemp1()); | 
 |  |  |             wrkDetl.setTemp2(detlDto.getTemp2()); | 
 |  |  |             wrkDetl.setTemp3(detlDto.getSuppName()); | 
 |  |  |             wrkDetl.setTemp4(detlDto.getTemp4()); | 
 |  |  |             if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                 throw new CoolException("保存工作明细失败"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         orderService.updateSettle(order.getId(), 2L, userId); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void pingKuUnShelves(CombParam combParam, Long userId) { | 
 |  |  |         String orderNo = combParam.getOrderNo(); | 
 |  |  |  | 
 |  |  |         Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", combParam.getLocno()).eq("type", 3)); | 
 |  |  |         if (Cools.isEmpty(node)){ | 
 |  |  |             throw new CoolException("未找到库位信息"); | 
 |  |  |         } | 
 |  |  |         //根据订单号生成出库任务工作档 | 
 |  |  |         Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); | 
 |  |  |         if (order.getSettle() != 1 && order.getSettle() != 2){ | 
 |  |  |             throw new CoolException("该订单已处理"); | 
 |  |  |         } | 
 |  |  |         List<DetlDto> detlDtos = new ArrayList<>(); | 
 |  |  |         for (CombParam.CombMat elem : combParam.getCombMats()) { | 
 |  |  |             Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno()) | 
 |  |  |                     .eq("matnr", elem.getMatnr()).eq("batch", elem.getBatch()) | 
 |  |  |                     .eq("temp3", elem.getSupp()).eq("temp1", elem.getTemp1()).eq("temp2", elem.getTemp2()); | 
 |  |  |             ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper); | 
 |  |  |  | 
 |  |  |             if (Cools.isEmpty(manLocDetl)){ | 
 |  |  |                 throw new CoolException("该库位未查询到货物信息"); | 
 |  |  |             } | 
 |  |  |             if (elem.getAnfme()> manLocDetl.getAnfme()){ | 
 |  |  |                 throw new CoolException("出库数量大于库位剩余数量"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); | 
 |  |  |             if (Cools.isEmpty(orderDetl)) { | 
 |  |  |                 throw new CoolException("该单据中未找到对应物料明细"); | 
 |  |  |             } | 
 |  |  |             if (elem.getAnfme() > orderDetl.getEnableQty()) { | 
 |  |  |                 throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); | 
 |  |  |             } | 
 |  |  |             // 修改订单作业数量 | 
 |  |  |             if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { | 
 |  |  |                 throw new CoolException("修改单据作业数量失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode() | 
 |  |  |                     , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4()); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             int workNo = commonService.getWorkNo(4); | 
 |  |  |             Date now = new Date(); | 
 |  |  |             // 生成工作档 | 
 |  |  |             WrkMast wrkMast = new WrkMast(); | 
 |  |  |             wrkMast.setWrkNo(workNo); | 
 |  |  |             wrkMast.setIoTime(new Date()); | 
 |  |  |             wrkMast.setWrkSts(14L); // 工作状态:生成入库ID | 
 |  |  |             wrkMast.setIoType(301); // 入出库状态:301.平库出库 | 
 |  |  |             wrkMast.setIoPri(12D); // 优先级 | 
 |  |  |             wrkMast.setSourceLocNo(node.getName()); | 
 |  |  |             wrkMast.setBarcode(""); // 托盘码 | 
 |  |  |             wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  |             wrkMast.setPicking("N"); // 拣料 | 
 |  |  |             wrkMast.setExitMk("N"); // 退出 | 
 |  |  |             wrkMast.setEmptyMk("N"); // 空板 | 
 |  |  |             wrkMast.setLinkMis("Y"); | 
 |  |  |             wrkMast.setSheetNo(order.getOrderNo()); | 
 |  |  |             // 操作人员数据 | 
 |  |  |             wrkMast.setAppeTime(now); | 
 |  |  |             wrkMast.setModiTime(now); | 
 |  |  |             boolean res = wrkMastService.insert(wrkMast); | 
 |  |  |             if (!res) { | 
 |  |  |                 throw new CoolException("保存工作档失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             Mat mat = matService.selectByMatnr(detlDto.getMatnr()); | 
 |  |  |             if (Cools.isEmpty(mat)) { | 
 |  |  |                 throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); | 
 |  |  |             } | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |  | 
 |  |  |             wrkDetl.sync(detlDto); | 
 |  |  |             wrkDetl.sync(mat); | 
 |  |  |  | 
 |  |  |             wrkDetl.setOrderNo(order.getOrderNo()); | 
 |  |  |             wrkDetl.setWrkNo(wrkMast.getWrkNo()); | 
 |  |  |             wrkDetl.setIoTime(wrkMast.getIoTime()); | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setManu(detlDto.getMark()); //标记 | 
 |  |  |             wrkDetl.setOrigin(order.getItemName());//仓库 | 
 |  |  |             wrkDetl.setSupp(detlDto.getSuppName()); //供应商 | 
 |  |  |             wrkDetl.setSku(detlDto.getCustomer()); //客户名称 | 
 |  |  |             wrkDetl.setThreeCode(detlDto.getOrderNo()); //u8发过来的订单号 | 
 |  |  |             wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //来源单号 | 
 |  |  |             wrkDetl.setTemp1(detlDto.getTemp1()); | 
 |  |  |             wrkDetl.setTemp2(detlDto.getTemp2()); | 
 |  |  |             wrkDetl.setTemp3(detlDto.getTemp3()); | 
 |  |  |             wrkDetl.setTemp4(detlDto.getTemp4()); | 
 |  |  |             if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                 throw new CoolException("保存工作明细失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue() == 0){ | 
 |  |  |                 manLocDetlService.delete(manLocDetlWrapper); | 
 |  |  |             }else { | 
 |  |  |                 manLocDetl.setAnfme(new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue()); | 
 |  |  |                 if (!manLocDetlService.update(manLocDetl,manLocDetlWrapper)) { | 
 |  |  |                     throw new CoolException("更新明细失败"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         orderService.updateSettle(order.getId(), 2L, userId); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void uploadErp(InventoryErpParam param){ | 
 |  |  |         String response = ""; | 
 |  |  |         boolean success = false; |