自动化立体仓库 - WMS系统
野心家
2023-07-01 e899597b10286b38fdda652b37872e5a170c8e2b
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -60,6 +60,8 @@
    private NodeService nodeService;
    @Autowired
    private ManLocDetlService manLocDetlService;
    @Autowired
    private ManPakOutService manPakOutService;
    @Override
    @Transactional
@@ -122,6 +124,7 @@
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -147,57 +150,12 @@
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setWeight(detlDto.getWeight());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
    }
//    @Override
//    @Transactional
//    public List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param) {
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
//    }
    @Override
    @Transactional
@@ -264,6 +222,7 @@
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -282,56 +241,12 @@
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setWeight(detlDto.getWeight());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
    }
//    @Override
//    public List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param) {
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
//    }
    @Override
    @Transactional
@@ -548,6 +463,9 @@
                mat.setStatus(1);
                mat.setCreateTime(now);
                mat.setUpdateTime(now);
                if (Cools.isEmpty(matParam.getLength()) || matParam.getLength() == 0) {
                    mat.setLength(null);
                }
                if (!matService.insert(mat)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                } else {
@@ -567,120 +485,6 @@
    public R getInOutDetl() {
        List<InOutCountDto> top100 = wrkMastService.selectTop100();
        return R.ok().add(top100);
    }
    @Transactional
    @Override
    public R manDetlIn(JSONObject json) {
        Date date = new Date();
        String jsonLocNo = (String) json.get("locNo");
        Node node = nodeService.selectOne(new EntityWrapper<Node>()
                .eq("name", jsonLocNo));
        String jsonOrderNo = (String) json.get("orderNo");
        Order order = orderService.selectOne(new EntityWrapper<Order>()
                .eq("order_no", jsonOrderNo));
        if (Cools.isEmpty(node, order)) {
            return R.error("参数为空");
        }
        JSONArray combMats = json.getJSONArray("combMats");
        for (int i = 0; i < combMats.size(); i++) {
            OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class);
            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
                    .eq("order_no", jsonOrderNo));
            if (Cools.isEmpty(orderDetl)) {
                return R.error("单据明细有误,请检查");
            }
            if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getQty()) < 0) {
                return R.error("入库数量大于可入数量");
            }
            ManLocDetl checkManLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
                    .eq("loc_no", jsonLocNo)
                    .eq("matnr", orderDetl.getMatnr()));
            if (checkManLocDetl == null) {
                ManLocDetl manLocDetl = new ManLocDetl();
                Synchro.Copy(orderDetl, manLocDetl);
                manLocDetl.setLocNo(node.getName());
                manLocDetl.setNodeId(node.getId());
                manLocDetl.setMatnr(orderDetl.getMatnr());
                manLocDetl.setMaktx(orderDetl.getMaktx());
                manLocDetl.setAnfme(orderDetl.getAnfme());
                manLocDetl.setModiTime(date);
                manLocDetl.setCreateTime(date);
                manLocDetlService.insert(manLocDetl);
            } else {
                checkManLocDetl.setAnfme(checkManLocDetl.getAnfme() + orderDetl.getAnfme());
                checkManLocDetl.setModiTime(date);
                manLocDetlService.update(checkManLocDetl, new EntityWrapper<ManLocDetl>()
                        .eq("loc_no", jsonLocNo)
                        .eq("matnr", orderDetl.getMatnr()));
            }
            orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme());
            orderDetl.setUpdateTime(date);
            orderDetlService.updateById(orderDetl);
        }
        orderService.checkComplete(order.getOrderNo());
        return R.ok("上架完成");
    }
    @Transactional
    @Override
    public R manDetlOut(JSONObject json) {
        Date date = new Date();
        String jsonLocNo = (String) json.get("locNo");
        Node node = nodeService.selectOne(new EntityWrapper<Node>()
                .eq("name", jsonLocNo));
        String jsonOrderNo = (String) json.get("orderNo");
        Order order = orderService.selectOne(new EntityWrapper<Order>()
                .eq("order_no", jsonOrderNo));
        if (Cools.isEmpty(node, order)) {
            return R.error("参数为空");
        }
        JSONArray combMats = json.getJSONArray("combMats");
        for (int i = 0; i < combMats.size(); i++) {
            OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class);
            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
                    .eq("order_no", jsonOrderNo));
            if (Cools.isEmpty(orderDetl)) {
                return R.error("单据明细有误,请检查");
            }
            if (jsonOrderDetl.getAnfme() > (orderDetl.getAnfme() - orderDetl.getQty())) {
                return R.error("出库数量大于单据可出数量");
            }
            ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
                    .eq("loc_no", jsonLocNo)
                    .eq("matnr", orderDetl.getMatnr()));
            if (manLocDetl == null) {
                return R.error("该库位没有出库的物料信息");
            }
            if (jsonOrderDetl.getAnfme() > manLocDetl.getAnfme()) {
                return R.error("出库数量大于可出数量");
            }
            Double finalQty = manLocDetl.getAnfme() - jsonOrderDetl.getAnfme();
            if (finalQty <= 0){
                manLocDetlService.delete(new EntityWrapper<ManLocDetl>()
                        .eq("loc_no", jsonLocNo)
                        .eq("matnr", orderDetl.getMatnr()));
            }else {
                manLocDetl.setAnfme(finalQty);
                manLocDetl.setModiTime(date);
                manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>()
                        .eq("loc_no", jsonLocNo)
                        .eq("matnr", orderDetl.getMatnr()));
            }
            orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme());
            orderDetl.setUpdateTime(date);
            orderDetlService.updateById(orderDetl);
            orderService.checkComplete(order.getOrderNo());
        }
        return R.ok("下架完成");
    }
}