| | |
| | | // } |
| | | // 判断是否有相同条码的数据 |
| | | if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). |
| | | eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { |
| | | throw new CoolException(param.getBarcode() + "数据正在进行入库"); |
| | | eq("zpallet", param.getBarcode())) > 0) { |
| | | throw new CoolException(param.getBarcode() + "条码已组托"); |
| | | } |
| | | try{ |
| | | param.setOrderNo(param.getCombMats().get(0).getOrderNo()); |
| | |
| | | } |
| | | |
| | | int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); |
| | | int countLoc2 = manLocDetlMapper.selectCount(new EntityWrapper<ManLocDetl>().eq("zpallet",param.getBarcode())); |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); |
| | | if (wrkMast != null && wrkMast.getIoType() < 100){ |
| | | throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | |
| | | } |
| | | if (countLoc > 0 ) { |
| | | throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | } |
| | | if (countLoc2 > 0 ) { |
| | | throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | } |
| | | |
| | |
| | | } |
| | | Double anfme = orderDetl.getAnfme(); |
| | | Double workQty = orderDetl.getWorkQty(); |
| | | BigDecimal a1 = new BigDecimal(orderDetl.getAnfme()); |
| | | BigDecimal b1 = new BigDecimal(orderDetl.getWorkQty()); |
| | | BigDecimal c1 = new BigDecimal(combMat.getAnfme()); |
| | | BigDecimal a1 = new BigDecimal(orderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal b1 = new BigDecimal(orderDetl.getWorkQty()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal c1 = new BigDecimal(combMat.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | double e1 = b1.add(c1).doubleValue(); |
| | | BigDecimal f1 = new BigDecimal(e1); |
| | | BigDecimal f1 = new BigDecimal(e1).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | Double d1 = a1.subtract(f1).doubleValue(); |
| | | if ( d1 < 0.0) { |
| | | throw new CoolException("组托数量已超出订单需求量,请检查是否有其他的组托已完成"); |
| | |
| | | if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getWorkQty()) < 0) { |
| | | return R.error("入库数量大于可入数量"); |
| | | } |
| | | |
| | | |
| | | //查询平库中是否有一样的物料号,有的话直接增加数量 |
| | | ManLocDetl checkManLocDetl = manLocDetlService.selectInventory(jsonLocNo,orderDetl.getMatnr(),jsonOrderDetl.getBatch()); |
| | | if (checkManLocDetl == null) { |
| | | |
| | | ManLocDetl manLocDetl = new ManLocDetl(); |
| | | Synchro.Copy(orderDetl, manLocDetl); |
| | | |
| | | BigDecimal decimal = BigDecimal.valueOf(jsonOrderDetl.getAnfme()).subtract(BigDecimal.valueOf(jsonOrderDetl.getAnfme()).setScale(0,BigDecimal.ROUND_DOWN)); |
| | | if (decimal.doubleValue() > 0){ |
| | | manLocDetl.setPrice(1.0); |
| | | }else { |
| | | manLocDetl.setPrice(2.0); |
| | | } |
| | | |
| | | |
| | | |
| | | manLocDetl.setLocNo(node.getName()); |
| | | manLocDetl.setNodeId(node.getId()); |
| | | manLocDetl.setMatnr(orderDetl.getMatnr()); |
| | |
| | | // if (jsonOrderDetl.getAnfme() > manPakOut.getAnfme()) { //判断工作数量是否大于拣货单的数量 |
| | | // return R.error("出库数量大于拣货单总数量"); |
| | | // } |
| | | BigDecimal a1 = new BigDecimal(manPakOut.getAnfme()); |
| | | BigDecimal b1 = new BigDecimal(manPakOut.getCount()); |
| | | Double c1 = a1.subtract(b1).doubleValue(); |
| | | BigDecimal a1 = new BigDecimal(manPakOut.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal b1 = new BigDecimal(manPakOut.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | Double c1 = a1.subtract(b1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | if (jsonOrderDetl.getAnfme() > c1) { //判断工作数量是否大于拣货单剩余可出的数量 |
| | | return R.error("出库数量大于拣货单剩余可出数量"); |
| | | } |
| | | |
| | | BigDecimal e1 = new BigDecimal(orderDetl.getWorkQty()); |
| | | BigDecimal f1 = new BigDecimal(orderDetl.getQty()); |
| | | Double g1 = e1.subtract(f1).doubleValue(); |
| | | BigDecimal e1 = new BigDecimal(orderDetl.getWorkQty()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal f1 = new BigDecimal(orderDetl.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | Double g1 = e1.subtract(f1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | if ( g1 <jsonOrderDetl.getAnfme() ){ |
| | | return R.error("出库数量大于单据剩余可出数量"); |
| | | } |
| | |
| | | if(jsonOrderDetl.getWeight() == null){ |
| | | jsonOrderDetl.setWeight(0.0); |
| | | } |
| | | Double finalQty = new BigDecimal(checkManLocDetl.getAnfme()).subtract(new BigDecimal(jsonOrderDetl.getAnfme())).doubleValue() ; |
| | | Double weight = new BigDecimal(checkManLocDetl.getWeight()).subtract(new BigDecimal(jsonOrderDetl.getWeight())).doubleValue() ; |
| | | Double finalQty = new BigDecimal(checkManLocDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP).subtract(new BigDecimal(jsonOrderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue() ; |
| | | Double weight = new BigDecimal(checkManLocDetl.getWeight()).setScale(2,BigDecimal.ROUND_HALF_UP).subtract(new BigDecimal(jsonOrderDetl.getWeight()).setScale(2,BigDecimal.ROUND_HALF_UP)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue() ; |
| | | checkManLocDetl.setAnfme(finalQty); |
| | | checkManLocDetl.setWeight(weight); |
| | | if (weight < 0){ |
| | |
| | | return R.error("修改平库物料失败!"); |
| | | } |
| | | } |
| | | orderDetl.setQty( new BigDecimal(orderDetl.getQty()).add(new BigDecimal(jsonOrderDetl.getAnfme())).doubleValue() ); |
| | | orderDetl.setQty( new BigDecimal(orderDetl.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP).add(new BigDecimal(jsonOrderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue() ); |
| | | orderDetl.setUpdateTime(date); |
| | | orderDetlService.updateById(orderDetl); |
| | | //更新订单状态 |
| | |
| | | manPakOut.setCount(0.0); |
| | | } |
| | | |
| | | manPakOut.setCount(new BigDecimal(manPakOut.getCount()).add(new BigDecimal(jsonOrderDetl.getAnfme())).doubleValue()); |
| | | manPakOut.setCount(new BigDecimal(manPakOut.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP).add(new BigDecimal(jsonOrderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | if (!manPakOutService.update(manPakOut,manPakOutEntityWrapper)){ |
| | | return R.error("更新拣货单完成数目失败"); |
| | | } |
| | |
| | | if (node.equals(null)){ |
| | | return R.error("未查询到库位信息"); |
| | | } |
| | | Date date = new Date(); |
| | | ManLocDetl manLocDetl = new ManLocDetl(); //初始化库存实体类 |
| | | //获取组托小数位 |
| | | BigDecimal decimal = BigDecimal.valueOf(waitPakin.getAnfme()).subtract(BigDecimal.valueOf(waitPakin.getAnfme()).setScale(0,BigDecimal.ROUND_DOWN)); |
| | | if (decimal.doubleValue() > 0){ |
| | | manLocDetl.setPrice(1.0); |
| | | }else { |
| | | manLocDetl.setPrice(2.0); |
| | | } |
| | | |
| | | |
| | | |
| | | Date date = new Date(); |
| | | |
| | | manLocDetl.setLocNo(node.getName()); |
| | | manLocDetl.setNodeId(node.getId()); |
| | | manLocDetl.setZpallet(waitPakin.getZpallet()); |
| | |
| | | } |
| | | return R.ok("上架成功"); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R barcodeDelete(JSONObject json, User user) { |
| | | String jsonBarcode = (String) json.get("barcode"); |
| | | String jsonOrderNo = (String) json.get("orderNo"); |
| | | JSONArray combMats = json.getJSONArray("combMats"); |
| | | for (int i = 0; i < combMats.size(); i++) { |
| | | ManLocDetl jsonManLocDetl = combMats.getObject(i, ManLocDetl.class); |
| | | Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>() |
| | | .eq("order_no", jsonOrderNo) |
| | | .eq("matnr", jsonManLocDetl.getMatnr()); |
| | | OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper); |
| | | if (Cools.isEmpty(orderDetl)){ |
| | | return R.error("订单中未查询到下架数据"); |
| | | |
| | | } |
| | | EntityWrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<>(); |
| | | manLocDetlWrapper.eq("zpallet",jsonBarcode); |
| | | manLocDetlWrapper.eq("matnr",jsonManLocDetl.getMatnr()); |
| | | ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper); |
| | | if (Cools.isEmpty(manLocDetl)){ |
| | | return R.error("托盘码未查询到库存信息"); |
| | | |
| | | } |
| | | BigDecimal orderQty = new BigDecimal(orderDetl.getQty()); |
| | | BigDecimal orderWorkQty = new BigDecimal(orderDetl.getWorkQty()); |
| | | BigDecimal anfme = new BigDecimal(jsonManLocDetl.getAnfme()); |
| | | BigDecimal diffQty = orderQty.add(anfme); |
| | | BigDecimal diffWorkQty = orderWorkQty.add(anfme); |
| | | if (diffQty.doubleValue() > orderDetl.getAnfme()){ |
| | | return R.error("完成数量大于订单数量"); |
| | | } |
| | | if (diffWorkQty.doubleValue() > orderDetl.getAnfme()){ |
| | | return R.error("工作数量大于订单数量"); |
| | | } |
| | | BigDecimal locDetlAnfme = new BigDecimal(manLocDetl.getAnfme()); |
| | | |
| | | BigDecimal diffAnfme = locDetlAnfme.subtract(anfme); |
| | | if (diffAnfme.doubleValue() <0){ |
| | | return R.error("出库数量大于库存数量"); |
| | | } |
| | | if (diffAnfme.doubleValue() == 0){ |
| | | if (!manLocDetlService.delete(manLocDetlWrapper)){ |
| | | throw new RuntimeException("删除库存明细失败"); |
| | | } |
| | | } else if (diffAnfme.doubleValue() > 0) { |
| | | manLocDetl.setAnfme(diffAnfme.doubleValue()); |
| | | if (!manLocDetlService.update(manLocDetl,manLocDetlWrapper)){ |
| | | throw new RuntimeException("更新库存明细失败"); |
| | | } |
| | | } |
| | | orderDetl.setQty(diffQty.doubleValue()); |
| | | orderDetl.setWorkQty(diffWorkQty.doubleValue()); |
| | | if (!orderDetlService.updateById(orderDetl)){ |
| | | return R.error("订单明细更新失败"); |
| | | } |
| | | Order order = orderService.selectByNo(jsonOrderNo); |
| | | if (IsOrderStatus(jsonOrderNo)){ |
| | | order.setSettle(4L); |
| | | }else { |
| | | order.setSettle(2L); |
| | | } |
| | | if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no", jsonOrderNo))){ |
| | | throw new RuntimeException("更新订单状态失败"); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | public Boolean IsOrderStatus(String order){ |
| | | //判断订单是否完成 |
| | | boolean log =true; |
| | | //订单是否完成 |
| | | List<OrderDetl> or = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order)); |
| | | for (OrderDetl o: or) { |
| | | if(o.getAnfme()-o.getQty()>0){ |
| | | log=false; |
| | | break; |
| | | } |
| | | } |
| | | return log; |
| | | } |
| | | } |