chenlu
7 天以前 97fba4a0e38c0b8455d43d2935aa996676407361
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -29,7 +29,6 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.SQLOutput;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -67,6 +66,8 @@
    public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
        JSONObject orderJson = new JSONObject(orderMap);
        String orderIdType = orderJson.getString("orderIdType");
        String orderIdTypeLetter = orderJson.getString("orderIdTypeLetter");
        Integer orderIdTypeMantissa = orderJson.getInteger("orderIdTypeMantissa");
        Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
        List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("otherMoney")), OrderOtherMoney.class);
@@ -85,7 +86,12 @@
            log.setContent(orderMap.toString());
            if(order.getOrderId() == null || order.getOrderId().isEmpty()){
                insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType, (Map<String, String>) orderMap.get("position"));
                insertOrder(order,
                        OrderDetails,orderOtherMoneyList,orderIdType,
                        (Map<String, String>) orderMap.get("position"),
                        orderIdTypeLetter,
                        orderIdTypeMantissa
                );
                log.setFunction("saveOrder创建:"+order.getOrderId());
            }else {
                updateOrder(order,OrderDetails,orderOtherMoneyList,(Map<String, String>) orderMap.get("position"));
@@ -165,9 +171,9 @@
        return map;
    }
    //生成订单数据
    public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position) {
    public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position, String orderIdTypeLetter, Integer orderIdTypeMantissa) {
        //根据传入的当前月份或者当天生成订单id
        String orderId =  getOrderId(orderIdType);
        String orderId =  getOrderId(orderIdType,orderIdTypeLetter,orderIdTypeMantissa);
        //往主表插数据
        order.setOrderId(orderId);
        order.setCreateOrder(2);
@@ -175,32 +181,34 @@
        insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList,position);
    }
    private String getOrderId(String dateType){
    private String getOrderId(String dateType, String orderIdTypeLetter, Integer orderIdTypeMantissa){
        String orderId = null;
        Integer orderIdTypeLetterLen = orderIdTypeLetter.length();
        Integer count = orderIdTypeLetterLen+orderIdTypeMantissa;
        if(dateType==null || dateType.equals("day")){
            Integer maxOrderId = orderMapper.selectMaxOrderId();
            //查询订单id,并且自增
            String formattedNumber = String.format("%02d", maxOrderId+1);
            String formattedNumber = String.format("%0"+orderIdTypeMantissa+"d", maxOrderId+1);
            //格式化当前日期
            Date currentDate = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
            String formattedDate = dateFormat.format(currentDate);
            orderId =  "NG"+formattedDate+formattedNumber;
            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
        }else if(dateType.equals("month")){
            Integer maxOrderId = orderMapper.selectMaxOrderIdByMonth();
            String formattedNumber = String.format("%04d", maxOrderId+1);
            String formattedNumber = String.format("%0"+(orderIdTypeMantissa+2)+"d", maxOrderId+1);
            Date currentDate = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyMM");
            String formattedDate = dateFormat.format(currentDate);
            orderId =  "NG"+formattedDate+formattedNumber;
            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
        }else if(dateType.equals("year")){
            Integer maxOrderId = orderMapper.selectMaxOrderIdByYear();
            String formattedNumber = String.format("%06d", maxOrderId+1);
            String formattedNumber = String.format("%"+(orderIdTypeMantissa+4)+"d", maxOrderId+1);
            Date currentDate = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yy");
            String formattedDate = dateFormat.format(currentDate);
            orderId =  "NG"+formattedDate+formattedNumber;
            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
        }
        return orderId;
    }
@@ -1045,6 +1053,7 @@
        List<Order> list = orderMapper.selectList(new LambdaQueryWrapper<Order>()
                .apply("create_order > 0")
                .apply("date(create_time) between {0} and {1}",startDate, endDate)
                .orderByDesc(Order::getOrderId)
        );
        Integer quantity = 0;
        Double area = 0.00;