Ver Fonte

优化导出

qin há 1 ano atrás
pai
commit
585423f15a

+ 2 - 0
src/main/java/com/poteviohealth/cgp/statistics/controller/OrderController.java

@@ -93,6 +93,7 @@ public class OrderController extends BaseWebController {
             }
         }catch (Exception e){
             e.printStackTrace();
+            throw new BusinessException(e.getMessage());
         }finally {
             if(cacheService.exists(key)){
                 if(cacheService.get(key).equals(TokenContext.cureWebUser().getUserId().toString())){
@@ -131,6 +132,7 @@ public class OrderController extends BaseWebController {
             }
         }catch (Exception e){
             e.printStackTrace();
+            throw new BusinessException(e.getMessage());
         }finally {
             if(cacheService.exists(key)){
                 if(cacheService.get(key).equals(TokenContext.cureWebUser().getUserId().toString())){

+ 2 - 2
src/main/java/com/poteviohealth/cgp/statistics/mapper/OrderMapper.java

@@ -191,7 +191,7 @@ public interface OrderMapper extends BaseMapper<Order>{
      * @return
      */
     @SqlParser(filter=true)
-    List<DishesOrderWebOutDTO> dishesOrderExcel(@Param(Constants.WRAPPER) Wrapper wrapper,@Param("dbName")String dbName,@Param("operatorId")Integer operatorId,@Param("start")Integer start,@Param("end")Integer end);
+    LinkedList<DishesOrderWebOutDTO> dishesOrderExcel(@Param(Constants.WRAPPER) Wrapper wrapper,@Param("dbName")String dbName,@Param("operatorId")Integer operatorId,@Param("start")Integer start);
 
 
     @SqlParser(filter = true)
@@ -204,6 +204,6 @@ public interface OrderMapper extends BaseMapper<Order>{
      * @return
      */
     @SqlParser(filter=true)
-    List<OrderCostWebOutDTO> costOrderExcel(@Param(Constants.WRAPPER) Wrapper wrapper,@Param("dbName")String dbName,@Param("operatorId")Integer operatorId,@Param("start")Integer start,@Param("end")Integer end);
+    LinkedList<OrderCostWebOutDTO> costOrderExcel(@Param(Constants.WRAPPER) Wrapper wrapper,@Param("dbName")String dbName,@Param("operatorId")Integer operatorId,@Param("start")Integer start);
 
 }

+ 2 - 0
src/main/java/com/poteviohealth/cgp/statistics/model/outdto/DishesOrderWebOutDTO.java

@@ -13,6 +13,8 @@ import lombok.Data;
 @Data
 @ApiModel(value="订单列表查询出参")
 public class DishesOrderWebOutDTO {
+    @ApiModelProperty(value = "id")
+    private Integer id;
 
     @ApiModelProperty(value = "驿站名称")
     private String serviceStationName;

+ 2 - 1
src/main/java/com/poteviohealth/cgp/statistics/model/outdto/OrderCostWebOutDTO.java

@@ -13,7 +13,8 @@ import lombok.Data;
 @Data
 @ApiModel(value="成本调整查询出参")
 public class OrderCostWebOutDTO {
-
+    @ApiModelProperty(value = "id")
+    private Integer id;
     @ApiModelProperty(value = "订单号")
     private String sn;
 

+ 43 - 12
src/main/java/com/poteviohealth/cgp/statistics/service/impl/OrderServiceImpl.java

@@ -30,8 +30,6 @@ import com.poteviohealth.cgp.statistics.model.indto.OrderCostWebInDTO;
 import com.poteviohealth.cgp.statistics.model.indto.OrderServiceWebInDTO;
 import com.poteviohealth.cgp.statistics.model.outdto.*;
 import com.poteviohealth.cgp.statistics.service.IOrderService;
-import com.poteviohealth.cgp.statistics.utils.CostOrderExcelTask;
-import com.poteviohealth.cgp.statistics.utils.DishesOrderExcelTask;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.EnumUtils;
@@ -45,9 +43,6 @@ import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.util.*;
-import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -270,12 +265,42 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
     }
 
     @Override
-    public List<DishesOrderWebOutDTO> orderDishes(DishesOrderWebInDTO dto) {
+    public List<DishesOrderWebOutDTO> orderDishes(DishesOrderWebInDTO inDTO) {
         Integer operatorId = TokenContext.cureOperatorId();
-        QueryWrapper queryWrapper = webQuery(dto);
+        QueryWrapper queryWrapper = webQuery(inDTO);
         int count = baseMapper.dishesOrderPageListAllSize(queryWrapper,dbName,operatorId);
         //每页1000条,计算总页数
         int maxPage = (int) Math.ceil(count/10000.0);
+
+        int start = 0;
+        LinkedList<DishesOrderWebOutDTO> list = Lists.newLinkedList();
+        for (int i = 0; i < maxPage; i++) {
+            LinkedList<DishesOrderWebOutDTO> findList = baseMapper.dishesOrderExcel(queryWrapper,dbName,operatorId,start);
+            start = findList.getLast().getId();
+            list.addAll(findList);
+        }
+
+        for (DishesOrderWebOutDTO dto : list) {
+            String val = "";
+            for (String s : dto.getPayAccountStr().split(",")) {
+                if("1".equals(s)){
+                    val+="助餐账户,";
+                }else if("2".equals(s)){
+                    val+="积分账户,";
+                }else if("3".equals(s)){
+                    val+="储值账户,";
+                }else if("4".equals(s)){
+                    val+="现金支付,";
+                }
+            }
+            if(val != ""){
+                val = val.substring(0, val.length()-1);
+            }
+            dto.setPayAccountStr(val);
+        }
+
+        return list;
+      /*
         List<DishesOrderWebOutDTO> list = Lists.newArrayList();
         ForkJoinPool pool = new ForkJoinPool();
         try {
@@ -290,7 +315,7 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
             e.printStackTrace();
             throw new BuilderException("餐单导出失败,请重新操作");
         }
-        return list;
+        return list;*/
     }
 
     @Override
@@ -301,7 +326,13 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
         //每页1000条,计算总页数
         int maxPage = (int) Math.ceil(count/10000.0);
         List<OrderCostWebOutDTO> list = Lists.newArrayList();
-        ForkJoinPool pool = new ForkJoinPool();
+        int start = 0;
+        for (int i = 0; i < maxPage; i++) {
+            LinkedList<OrderCostWebOutDTO> findList = baseMapper.costOrderExcel(queryWrapper,dbName,operatorId,start);
+            start = findList.getLast().getId();
+            list.addAll(findList);
+        }
+       /* ForkJoinPool pool = new ForkJoinPool();
         try {
             CostOrderExcelTask task = new CostOrderExcelTask(1,maxPage, queryWrapper, operatorId, dbName,baseMapper);
             Future<List<OrderCostWebOutDTO>> future = pool.submit(task);
@@ -313,7 +344,7 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
         }catch (Exception e){
             e.printStackTrace();
             throw new BuilderException("成本核算导出失败,请重新操作");
-        }
+        }*/
         return list;
     }
 
@@ -352,7 +383,7 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
         if(orderWebInDTO.getCostStatus() != null){
             orderQueryWrapper.eq( "o.cost_status",orderWebInDTO.getCostStatus());
         }
-        orderQueryWrapper.orderByDesc("o.order_cost_id");
+       // orderQueryWrapper.orderByDesc("o.order_cost_id");
 
         return orderQueryWrapper;
     }
@@ -385,7 +416,7 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
             orderQueryWrapper.in("o.service_station_id", orderWebInDTO.getStationIds());
         }
         orderQueryWrapper.eq("o.pay_status",3);
-        orderQueryWrapper.orderByDesc("o.order_id");
+        //orderQueryWrapper.orderByDesc("o.id");
         return orderQueryWrapper;
     }
 

+ 3 - 3
src/main/java/com/poteviohealth/cgp/statistics/utils/DishesOrderExcelTask.java

@@ -6,7 +6,6 @@ import com.poteviohealth.cgp.statistics.mapper.OrderMapper;
 import com.poteviohealth.cgp.statistics.model.outdto.DishesOrderWebOutDTO;
 import lombok.Data;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.RecursiveTask;
 
@@ -38,7 +37,8 @@ public class DishesOrderExcelTask extends RecursiveTask<List<DishesOrderWebOutDT
         // 当end-start的值小于MAX时候,开始打印
          List<DishesOrderWebOutDTO> list = Lists.newArrayList();
 
-         int page = (end - start);
+         return list;
+        /* int page = (end - start);
         if (page < 2) {
             // 小于最大值 直接执行
                 list.addAll(orderMapper.dishesOrderExcel(queryWrapper,dbName,operatorId,(start-1)*MAX,MAX));
@@ -77,7 +77,7 @@ public class DishesOrderExcelTask extends RecursiveTask<List<DishesOrderWebOutDT
             tasks.add(right);
             addResultFromTasks(list, tasks);
             return list;
-        }
+        }*/
     }
 
     // 等待所有的任务运行结束

+ 8 - 2
src/main/resources/mapper/statistics/OrderMapper.xml

@@ -288,6 +288,7 @@
     </select>
     <select id="dishesOrderExcel" resultType="com.poteviohealth.cgp.statistics.model.outdto.DishesOrderWebOutDTO">
         SELECT
+            id,
             customer_name,
             sn,
             customer_phone,
@@ -304,8 +305,10 @@
         FROM
             ${dbName}_order.o_dishes_order_${operatorId} o
         WHERE o.yn = 0
+          and o.id > #{start}
           and ${ew.sqlSegment}
-            limit #{start},#{end}
+        order by o.id
+            limit 10000
     </select>
     <select id="costOrderPageListAllSize" resultType="java.lang.Integer">
         SELECT count(*)
@@ -316,6 +319,7 @@
     </select>
     <select id="costOrderExcel" resultType="com.poteviohealth.cgp.statistics.model.outdto.OrderCostWebOutDTO">
         SELECT
+            o.id,
             o.sn,
             o.category_name,
             o.cost_year,
@@ -348,7 +352,9 @@
         FROM
             ${dbName}_order.o_order_cost_${operatorId} o
         WHERE o.yn = 0
+          and o.id > #{start}
           and ${ew.sqlSegment}
-            limit #{start},#{end}
+        order by o.id
+            limit 10000
     </select>
 </mapper>