qin 1 рік тому
батько
коміт
20669219d8

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

@@ -12,6 +12,8 @@ import com.poteviohealth.cgp.common.facade.log.OperationLog;
 import com.poteviohealth.cgp.common.facade.time.MethodTime;
 import com.poteviohealth.cgp.common.filter.TokenContext;
 import com.poteviohealth.cgp.common.filter.repeatSubmit.RepeatSubmit;
+import com.poteviohealth.cgp.common.integrated.finance.model.MemberPlanDTO;
+import com.poteviohealth.cgp.common.integrated.finance.model.MemberPlanPageDTO;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.cgp.statistics.model.indto.*;
 import com.poteviohealth.cgp.statistics.model.outdto.DishesOrderWebOutDTO;
@@ -224,4 +226,32 @@ public class OrderController extends BaseWebController {
 
         return VaultsResponse.success();
     }
+
+    @PostMapping(value = "/pageCardExport")
+    @ApiOperation(httpMethod = "POST", value = "后台账户查询Excel导出")
+    public void orderExport(HttpServletResponse resp,@RequestBody MemberPlanPageDTO dto){
+        String key ="pageCardExport";
+        String error =  this.checkExcelExport(key);
+        try{
+            if ("".equals(error)) {
+                String templateLocation = "classpath:excel/pageCard.xlsx";
+                String filename = "消费卡账户.xlsx";
+                Map<String, Object> data = Maps.newHashMap();
+                orgConstrainService.fillOrgParams(dto);
+                List<MemberPlanDTO> list = orderService.pageCardExcel(dto);
+                ExcelUtils2.easyDownload(templateLocation,data , list, filename, resp);
+            }else{
+                throw new BusinessException(error);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new BusinessException(e.getMessage());
+        }finally {
+            if(cacheService.exists(key)){
+                if(cacheService.get(key).equals(TokenContext.cureWebUser().getUserId().toString())){
+                    cacheService.del(key);
+                }
+            }
+        }
+    }
 }

+ 51 - 0
src/main/java/com/poteviohealth/cgp/statistics/service/impl/OrderServiceImpl.java

@@ -15,6 +15,8 @@ import com.poteviohealth.cgp.common.integrated.customer.model.CustomerSubsidyDTO
 import com.poteviohealth.cgp.common.integrated.customer.model.SubsidyCustomerFace;
 import com.poteviohealth.cgp.common.integrated.customer.model.SubsidyCustomerJsonFace;
 import com.poteviohealth.cgp.common.integrated.finance.model.MemberListData;
+import com.poteviohealth.cgp.common.integrated.finance.model.MemberPlanDTO;
+import com.poteviohealth.cgp.common.integrated.finance.model.MemberPlanPageDTO;
 import com.poteviohealth.cgp.common.integrated.finance.model.MonthData;
 import com.poteviohealth.cgp.common.integrated.order.model.OrderStatisticsData;
 import com.poteviohealth.cgp.common.integrated.order.model.PayAccount;
@@ -25,6 +27,7 @@ import com.poteviohealth.cgp.common.service.impl.BaseServiceImpl;
 import com.poteviohealth.cgp.statistics.constant.enums.OrderConstantEnum;
 import com.poteviohealth.cgp.statistics.mapper.OrderMapper;
 import com.poteviohealth.cgp.statistics.model.Order;
+import com.poteviohealth.cgp.statistics.model.WatermarkImg;
 import com.poteviohealth.cgp.statistics.model.indto.*;
 import com.poteviohealth.cgp.statistics.model.outdto.*;
 import com.poteviohealth.cgp.statistics.service.IOrderService;
@@ -317,6 +320,54 @@ public class OrderServiceImpl extends BaseServiceImpl<OrderMapper, Order> implem
         }
     }
 
+    @Override
+    public List<MemberPlanDTO> pageCardExcel(MemberPlanPageDTO dto) {
+
+        try {
+            QueryWrapper queryWrapper = cardQueryWrapper(dto);
+            int  count = baseMapper.pageCardListSize(dto,queryWrapper,dbName);
+            //每页10000条,计算总页数
+            int maxPage = (int) Math.ceil(count/10000.0);
+            int start = 0;
+            LinkedList<MemberPlanDTO> list = Lists.newLinkedList();
+            for (int i = 0; i < maxPage; i++) {
+                LinkedList<MemberPlanDTO> findList = baseMapper.pageCardList(dto,queryWrapper,dbName,start);
+                start = findList.getLast().getId();
+                list.addAll(findList);
+            }
+            return list;
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new BuilderException("账户导出失败,请重新操作");
+        }
+    }
+
+    private QueryWrapper cardQueryWrapper(MemberPlanPageDTO dto){
+        QueryWrapper<WatermarkImg> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("d.operator_id",TokenContext.cureOperatorId());
+        if (StringUtils.isNotEmpty(dto.getNameOrPhone())){
+            queryWrapper.and(wr->wr.like("d.name", dto.getNameOrPhone()).or().like("d.phone", dto.getNameOrPhone()));
+        }
+
+        if(StringUtils.isNotEmpty(dto.getIdNumber())){
+            queryWrapper.eq("d.id_number", dto.getIdNumber());
+        }
+
+        if(dto.getEnabled() != null){
+            queryWrapper.eq("d.enable", dto.getEnabled());
+        }
+
+        if(dto.getCardId() != null){
+            queryWrapper.eq("d.card_id", dto.getCardId());
+        }
+
+        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(dto.getSupplierIds())){
+            queryWrapper.in("d.supplier_id", dto.getSupplierIds());
+        }
+
+        return queryWrapper;
+    }
+
     private String getPayAccountString(String payAccount){
         StringBuilder sb = new StringBuilder();
         for (String s : payAccount.split(",")) {