廖井涛
2024-10-21 e131f6e16de1df9fdcb7ede55cb9f4dc93e48ae8
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -113,6 +113,9 @@
            log.setContent(orderMap.toString());
            log.setFunction("saveOrderTitle保存表头:"+order.getOrderId());
            Order order1 = orderMapper.selectOrderId(order.getOrderId());
            order.setCalculateType(order1.getCalculateType());
            LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(Order::getOrderId, order.getOrderId());
            order.setCreateTime(null);
@@ -217,15 +220,19 @@
    //插入其他副表数据,被其他方法引用
    public void insertOtherDetail(String orderId,List<OrderDetail> OrderDetails,List<OrderOtherMoney> orderOtherMoneyList) {
        //先把其他金额副表的金额与数量置0
        orderOtherMoneyList.forEach(orderOtherMoney -> {
            orderOtherMoney.setQuantity(0.0);
        });
        if(orderOtherMoneyList!=null){
            orderOtherMoneyList.forEach(orderOtherMoney -> {
                orderOtherMoney.setQuantity(0.0);
            });
        }
        //循环给订单明细表字段添加序号和周长
        for (int i = 0; i < OrderDetails.size(); i++) {
            OrderDetails.get(i).setOrderNumber(i+1);
            OrderDetails.get(i).setOrderId(orderId);
            OrderDetails.get(i).setPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000*OrderDetails.get(i).getQuantity())));
            OrderDetails.get(i).setMonolithicPerimeter(Double.valueOf(String.format("%.3f",(OrderDetails.get(i).getWidth()+OrderDetails.get(i).getHeight())*2/1000)));
            Product product = productMapper.selectById(OrderDetails.get(i).getProductId());
            OrderDetails.get(i).setWeight(Double.valueOf(String.format("%.2f",product.getThickness()*OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()/1000000*2.5)));
@@ -271,14 +278,19 @@
        orderDetailMapper.insertBatch(OrderDetails);
        //往小片表传入产品数据
        orderGlassDetailMapper.insertOrderGlassDetail(orderId);
        orderOtherMoneyList.forEach(orderOtherMoney ->{
            orderOtherMoney.setId(null);
            orderOtherMoney.setOrderId(orderId);
            if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
                orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
            }
            orderOtherMoneyMapper.insert(orderOtherMoney);
        });
        if(orderOtherMoneyList!=null){
            orderOtherMoneyList.forEach(orderOtherMoney ->{
                orderOtherMoney.setId(null);
                orderOtherMoney.setOrderId(orderId);
                if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
                    orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
                }else {
                    orderOtherMoney.setMoney(0.0);
                }
                orderOtherMoneyMapper.insert(orderOtherMoney);
            });
        }
        //修改订单主表面积与周长以及重量
        orderMapper.updateOrderParameter(orderId);
@@ -391,26 +403,69 @@
        Order order = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("order")), Order.class);
        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("detail")), OrderDetail.class);
        List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class);
        double money = 0;
        for (OrderDetail orderDetail : OrderDetails) {
            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
            money+=getGrossAmount.doubleValue();
        if(orderOtherMoneyList != null ){
            orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList());
        }
        if(orderOtherMoneyList!=null){
            orderOtherMoneyList.forEach(orderOtherMoney -> {
                orderOtherMoney.setQuantity(0.0);
            });
        }
        Log log = new Log();
        log.setOperator(order.getCreator());
        log.setOperatorId(order.getCreatorId());
        log.setContent(jsonObject.toString());
        log.setFunction("updateOrderMoney金额重置:"+order.getOrderId());
        orderOtherMoneyList.forEach(orderOtherMoney -> {
            if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
                orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
        //删除其他金额明细表
        orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
        List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList;
        double money = 0;
        for (OrderDetail orderDetail : OrderDetails) {
            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
            money+=getGrossAmount.doubleValue();
            Map<String,Object> otherColumns = JSON.parseObject(orderDetail.getOtherColumns(), new TypeReference<Map<String, Object>>(){});
            if(otherColumns!=null){
                otherColumns.values().removeIf(value -> value == null || value.equals(""));
                orderDetail.setOtherColumns(JSON.toJSONString(otherColumns));
                OrderDetail finalOrderDetail = orderDetail;
                otherColumns.forEach((key, value) ->{
                    if(value!=null && !value.equals("") && key.contains("M")) {
                        orderOtherMoneyLists.forEach(orderOtherMoney -> {
                            if (orderOtherMoney.getColumn().equals(key)) {
                                orderOtherMoney.setQuantity(
                                        orderOtherMoney.getQuantity()+(Double.parseDouble((String) value)  * finalOrderDetail.getQuantity()));
                            }
                        });
                    }
                });
            }else{
                orderDetail.setOtherColumns("{}");
            }
            orderOtherMoneyMapper.update(orderOtherMoney,new QueryWrapper<OrderOtherMoney>()
                    .eq("order_id",orderOtherMoney.getOrderId())
                    .eq("`column`",orderOtherMoney.getColumn()));
        });
        }
        if(orderOtherMoneyLists!=null){
            orderOtherMoneyLists.forEach(orderOtherMoney ->{
                orderOtherMoney.setId(null);
                orderOtherMoney.setOrderId(order.getOrderId());
                if(orderOtherMoney.getQuantity()!=null && orderOtherMoney.getPrice()!=null){
                    orderOtherMoney.setMoney((orderOtherMoney.getQuantity()*orderOtherMoney.getPrice()));
                }else {
                    orderOtherMoney.setMoney(0.0);
                }
                orderOtherMoneyMapper.insert(orderOtherMoney);
            });
        }
        order.setMoney(money+orderOtherMoneyMapper.selectGrossAmount(order.getOrderId()));
        order.setOtherMoney(orderOtherMoneyMapper.selectGrossAmount(order.getOrderId()));
        orderMapper.updateMoney(order);
@@ -688,12 +743,33 @@
        JSONObject orderJson = new JSONObject(map);
        String oldOrderId = orderJson.getString("oldOrderId");
        String newOrderId = orderJson.getString("newOrderId");
        String orderIdType = orderJson.getString("orderIdType");
        Log log = new Log();
        log.setContent(map.toString());
        log.setFunction("updateOrderId修改订单号");
        log.setOperator(orderJson.getString("creator"));
        if(!Objects.equals(newOrderId, oldOrderId)){
            if(newOrderId.length()!=10){
                return "false4";
            }
            if(!newOrderId.substring(2, 10).matches("\\d+")){
                return "false5";
            }
            if(Objects.equals(orderIdType, "day")){
                if(orderMapper.selectOrderIdDay(oldOrderId)==1){
                    return "false6";
                }
            }else if(Objects.equals(orderIdType, "month")){
                if(orderMapper.selectOrderIdMonth(oldOrderId)==1){
                    return "false6";
                }
            }else if(Objects.equals(orderIdType, "year")){
                if(orderMapper.selectOrderIdYear(oldOrderId)==1){
                    return "false6";
                }
            }
            String substring = newOrderId.substring(1, 3);
            Integer substringInt = Integer.parseInt(newOrderId.substring(2, 10));
@@ -707,6 +783,7 @@
            if(count1>0 && count2==0){
                orderMapper.updateOrderId(oldOrderId,newOrderId);
                saveState= "true";
                logService.saveLog(log);
            }else if(count1==0){
                saveState= "false1";
                ;