浏览代码

导出excel

hankunkun 11 月之前
父节点
当前提交
f9407964bf

+ 2 - 0
src/main/java/ieven/server/webapp/domain/alipay/HeaderProperties.java

@@ -29,6 +29,8 @@ public class HeaderProperties {
   private List<String>economicOrderOutput;
   private List<String>staticUserAllOutput;
 
+  private List<String>userAccountOutput;
+
   public HeaderProperties() {}
 
 }

+ 7 - 2
src/main/java/ieven/server/webapp/domain/exporter/Exporter.java

@@ -5,6 +5,7 @@ import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.infrastructure.SpringContextUtil;
 import ieven.server.webapp.util.DataUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.bson.Document;
@@ -67,7 +68,11 @@ public class Exporter {
                 Cell cell = cRow.createCell(cInsert);
                 Object value = doc.get(alias);
                 if (value instanceof String) {
-                    cell.setCellValue((String) value);
+                    if(StringUtils.isBlank(String.valueOf(value))||"null".equals(String.valueOf(value))){
+                        cell.setCellValue("");
+                    }else {
+                        cell.setCellValue((String) value);
+                    }
                 } else if (value instanceof Number) {
                     cell.setCellType(CellType.NUMERIC);
                     cell.setCellValue(Double.parseDouble(String.valueOf(value)));
@@ -115,7 +120,7 @@ public class Exporter {
             throws IOException {
         Fields fields =
                 mongoTemplate.findOne(new Query(Criteria.where("fileId").is(fileId)), Fields.class);
-        String path = tmpdir + File.separator + filename + ".csv";
+         String path = tmpdir + File.separator + filename + ".csv";
         if (fields == null) {
             return "";
         }

+ 3 - 3
src/main/java/ieven/server/webapp/domain/model/ModelService.java

@@ -43,7 +43,7 @@ public class ModelService {
     @Autowired
     @Lazy
     private ModelService modelService;
-    @Value("spring.data.fileExportPath")
+    @Value("${spring.data.fileExportPath}")
     private String path;
 
     public ModelService() {
@@ -112,9 +112,9 @@ public class ModelService {
 
     public Mapped deleteModel(IdInput input) {
         String id = input.getId();
+        Model model = mongoTemplate.findOne(new Query(Criteria.where("_id").is(id)), Model.class);
         this.modelRepository.deleteById(id);
         List<LogicalFile> fileList = this.mongoTemplate.find(new Query(Criteria.where("modelId").is(id)), LogicalFile.class);
-
         for (LogicalFile file : fileList) {
             String fileId = file.getId();
             if (file.getGridId() != null) {
@@ -128,7 +128,7 @@ public class ModelService {
         }
 
         this.mongoTemplate.remove(new Query(Criteria.where("modelId").is(id)), TFromToFileIds.class);
-        String fileName=path+"测试"+".csv";
+        String fileName=path+File.separator+model.getModelName()+".csv";
         File file=new File(fileName);
         if(file.exists()){
             file.delete();

+ 5 - 1
src/main/java/ieven/server/webapp/service/alipay/AlipayService.java

@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
@@ -42,6 +43,9 @@ public class AlipayService {
     @Autowired
     private FileService fileService;
 
+    @Value("${spring.data.fileExportPath}")
+    private String path;
+
     public Mapped extractAll(String modelId) throws InterruptedException {
         final List<Fields> originFields = queryAllFields(modelId);
         // 先校验文件结构如果有不符合结构的文件 则暂停执行 给于提示
@@ -224,7 +228,7 @@ public class AlipayService {
 
         //数据统计-生成资金excel
         CountDownLatch latch14 = new CountDownLatch(1);
-        exec.execute(new DataStaticExportExcel( modelId, mongoTemplate, fileService, latch14));
+        exec.execute(new DataStaticExportExcel( modelId, mongoTemplate, fileService, latch14,path));
         latch14.await();
         reorder(modelId);
         log.info("执行完毕");

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/AntiSecurityTradeEndAnalysis.java

@@ -91,7 +91,7 @@ public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
           String alipayUsername = origin.getString("交易对手户名");
           if (StringUtils.isNotBlank(alipayUsername)
               && !"_".equals(alipayUsername)
-              && !"-".equals(alipayUsername)) {
+              && !"-".equals(alipayUsername)&& !"null".equals(alipayUsername)) {
             if (idToNames.containsKey(alipayId)) {
               Set<String> names = idToNames.get(alipayId);
               names.add(alipayUsername);

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java

@@ -94,7 +94,7 @@ public class EndAnalysis extends Ops implements Runnable {
           String alipayUsername = origin.getString("对手支付宝户名");
           if (StringUtils.isNotBlank(alipayUsername)
               && !"_".equals(alipayUsername)
-              && !"-".equals(alipayUsername)) {
+              && !"-".equals(alipayUsername)&& !"null".equals(alipayUsername)) {
             if (idToNames.containsKey(alipayId)) {
               Set<String> names = idToNames.get(alipayId);
               names.add(alipayUsername);

+ 1 - 1
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysis.java

@@ -47,7 +47,7 @@ public class DataStaticAnalysis extends Ops implements Runnable {
         String dateFileIdwld = getFileId("五联单-账户明细", modelId, mongoTemplate);
 
         if (StringUtils.isNotBlank(dateFileIdcft) || StringUtils.isNotBlank(dateFileIdfzza)) {
-            newFileId = createLogicAndDeleteOld("数据分析-主体信息汇总明细", modelId, headerProperties.getAntiSecurityTradeScaleAnalysisOutput(), mongoTemplate, fileService);
+            newFileId = createLogicAndDeleteOld("数据分析-主体信息汇总明细", modelId, headerProperties.getUserAccountOutput(), mongoTemplate, fileService);
         }
         // 插入记录用户后续查询明细
         //财付通

+ 24 - 24
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisDs.java

@@ -65,14 +65,14 @@ public class DataStaticAnalysisDs extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("交易对手账号", String.valueOf(origin.get("交易对手账号")));
                     dataMap.put("交易对手户名", String.valueOf(origin.get("交易对手户名")));
-                    dataMap.put("交易总额",  dataMap.get("交易总额"));
-                    dataMap.put("交易主体收入金额",  dataMap.get("交易主体收入金额"));
-                    dataMap.put("交易主体支出金额",  dataMap.get("交易主体支出金额"));
-                    dataMap.put("交易主体收入笔数", dataMap.get("交易主体收入笔数"));
-                    dataMap.put("交易主体支出笔数",dataMap.get("交易主体支出笔数"));
-                    dataMap.put("总笔数", dataMap.get("总笔数"));
-                    dataMap.put("共同交易主体数", dataMap.get("共同交易主体数"));
-                    dataMap.put("共同交易主体账号汇总", dataMap.get("共同交易主体账号汇总"));
+                    dataMap.put("交易总额",  origin.get("交易总额"));
+                    dataMap.put("交易主体收入金额",  origin.get("交易主体收入金额"));
+                    dataMap.put("交易主体支出金额",  origin.get("交易主体支出金额"));
+                    dataMap.put("交易主体收入笔数", origin.get("交易主体收入笔数"));
+                    dataMap.put("交易主体支出笔数",origin.get("交易主体支出笔数"));
+                    dataMap.put("总笔数", origin.get("总笔数"));
+                    dataMap.put("共同交易主体数", origin.get("共同交易主体数"));
+                    dataMap.put("共同交易主体账号汇总", origin.get("共同交易主体账号汇总"));
                     cftList.add(dataMap);
                     if (cftList.size() >= 1000) {
                         saveLines(new ArrayList<>(cftList), mongoTemplate);
@@ -103,14 +103,14 @@ public class DataStaticAnalysisDs extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("交易对手账号", String.valueOf(origin.get("交易对手账号")));
                     dataMap.put("交易对手户名", String.valueOf(origin.get("交易对手户名")));
-                    dataMap.put("交易总额", dataMap.get("交易总额"));
-                    dataMap.put("交易主体收入金额",  dataMap.get("交易主体收入金额"));
-                    dataMap.put("交易主体支出金额",  dataMap.get("交易主体支出金额"));
-                    dataMap.put("交易主体收入笔数",  dataMap.get("交易主体收入笔数"));
-                    dataMap.put("交易主体支出笔数",  dataMap.get("交易主体支出笔数"));
-                    dataMap.put("总笔数",  dataMap.get("总笔数"));
-                    dataMap.put("共同交易主体数",  dataMap.get("共同交易主体数"));
-                    dataMap.put("共同交易主体账号汇总",  dataMap.get("共同交易主体账号汇总"));
+                    dataMap.put("交易总额", origin.get("交易总额"));
+                    dataMap.put("交易主体收入金额",  origin.get("交易主体收入金额"));
+                    dataMap.put("交易主体支出金额",  origin.get("交易主体支出金额"));
+                    dataMap.put("交易主体收入笔数",  origin.get("交易主体收入笔数"));
+                    dataMap.put("交易主体支出笔数",  origin.get("交易主体支出笔数"));
+                    dataMap.put("总笔数",  origin.get("总笔数"));
+                    dataMap.put("共同交易主体数",  origin.get("共同交易主体数"));
+                    dataMap.put("共同交易主体账号汇总",  origin.get("共同交易主体账号汇总"));
                     fzList.add(dataMap);
                     if (fzList.size() >= 1000) {
                         saveLines(new ArrayList<>(fzList), mongoTemplate);
@@ -141,14 +141,14 @@ public class DataStaticAnalysisDs extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("对手支付宝用户ID", String.valueOf(origin.get("对手支付宝用户ID")));
                     dataMap.put("对手支付宝户名", String.valueOf(origin.get("对手支付宝用户ID")));
-                    dataMap.put("交易总额",  dataMap.get("交易总额"));
-                    dataMap.put("主用户ID收入金额", dataMap.get("主用户ID收入金额"));
-                    dataMap.put("主用户ID支出金额",  dataMap.get("主用户ID支出金额"));
-                    dataMap.put("主用户ID收入笔数",  dataMap.get("主用户ID收入笔数"));
-                    dataMap.put("主用户ID支出笔数",  dataMap.get("主用户ID支出笔数"));
-                    dataMap.put("总笔数",  dataMap.get("总笔数"));
-                    dataMap.put("共同主用户ID数",  dataMap.get("共同主用户ID数"));
-                    dataMap.put("共同主用户ID汇总",  dataMap.get("共同主用户ID汇总"));
+                    dataMap.put("交易总额",  origin.get("交易总额"));
+                    dataMap.put("主用户ID收入金额", origin.get("主用户ID收入金额"));
+                    dataMap.put("主用户ID支出金额",  origin.get("主用户ID支出金额"));
+                    dataMap.put("主用户ID收入笔数",  origin.get("主用户ID收入笔数"));
+                    dataMap.put("主用户ID支出笔数",  origin.get("主用户ID支出笔数"));
+                    dataMap.put("总笔数",  origin.get("总笔数"));
+                    dataMap.put("共同主用户ID数",  origin.get("共同主用户ID数"));
+                    dataMap.put("共同主用户ID汇总",  origin.get("共同主用户ID汇总"));
                     wldList.add(dataMap);
                     if (wldList.size() >= 1000) {
                         saveLines(new ArrayList<>(wldList), mongoTemplate);

+ 18 - 18
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisMain.java

@@ -68,12 +68,12 @@ public class DataStaticAnalysisMain extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("交易主体账号", String.valueOf(origin.get("交易主体账号")));
                     dataMap.put("交易主体户名", String.valueOf(origin.get("交易主体户名")));
-                    dataMap.put("交易总额", dataMap.get("交易总额"));
-                    dataMap.put("收入金额", dataMap.get("收入金额"));
-                    dataMap.put("支出金额", dataMap.get("支出金额"));
-                    dataMap.put("收入笔数", dataMap.get("收入笔数"));
-                    dataMap.put("支出笔数", dataMap.get("支出笔数"));
-                    dataMap.put("总笔数", dataMap.get("总笔数"));
+                    dataMap.put("交易总额", origin.get("交易总额"));
+                    dataMap.put("收入金额", origin.get("收入金额"));
+                    dataMap.put("支出金额", origin.get("支出金额"));
+                    dataMap.put("收入笔数", origin.get("收入笔数"));
+                    dataMap.put("支出笔数", origin.get("支出笔数"));
+                    dataMap.put("总笔数", origin.get("总笔数"));
                     cftList.add(dataMap);
                     if (cftList.size() >= 1000) {
                         saveLines(new ArrayList<>(cftList), mongoTemplate);
@@ -104,12 +104,12 @@ public class DataStaticAnalysisMain extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("交易主体账号", String.valueOf(origin.get("交易主体账号")));
                     dataMap.put("交易主体户名", String.valueOf(origin.get("交易主体户名")));
-                    dataMap.put("交易总额", dataMap.get("交易总额"));
-                    dataMap.put("收入金额", dataMap.get("收入金额"));
-                    dataMap.put("支出金额", dataMap.get("支出金额"));
-                    dataMap.put("收入笔数", dataMap.get("收入笔数"));
-                    dataMap.put("支出笔数", dataMap.get("支出笔数"));
-                    dataMap.put("总笔数", dataMap.get("总笔数"));
+                    dataMap.put("交易总额", origin.get("交易总额"));
+                    dataMap.put("收入金额", origin.get("收入金额"));
+                    dataMap.put("支出金额", origin.get("支出金额"));
+                    dataMap.put("收入笔数", origin.get("收入笔数"));
+                    dataMap.put("支出笔数", origin.get("支出笔数"));
+                    dataMap.put("总笔数", origin.get("总笔数"));
                     fzList.add(dataMap);
                     if (fzList.size() >= 1000) {
                         saveLines(new ArrayList<>(fzList), mongoTemplate);
@@ -140,12 +140,12 @@ public class DataStaticAnalysisMain extends Ops implements Runnable {
                     dataMap.put("fileId", newFileId);
                     dataMap.put("交易主体账号", String.valueOf(origin.get("支付宝用户ID")));
                     dataMap.put("交易主体户名", String.valueOf(origin.get("支付宝户名")));
-                    dataMap.put("交易总额", dataMap.get("交易总额"));
-                    dataMap.put("收入金额", dataMap.get("收入金额"));
-                    dataMap.put("支出金额", dataMap.get("支出金额"));
-                    dataMap.put("收入笔数", dataMap.get("收入笔数"));
-                    dataMap.put("支出笔数", dataMap.get("支出笔数"));
-                    dataMap.put("总笔数", dataMap.get("总笔数"));
+                    dataMap.put("交易总额", origin.get("交易总额"));
+                    dataMap.put("收入金额", origin.get("收入金额"));
+                    dataMap.put("支出金额", origin.get("支出金额"));
+                    dataMap.put("收入笔数", origin.get("收入笔数"));
+                    dataMap.put("支出笔数", origin.get("支出笔数"));
+                    dataMap.put("总笔数", origin.get("总笔数"));
                     wldList.add(dataMap);
                     if (wldList.size() >= 1000) {
                         saveLines(new ArrayList<>(wldList), mongoTemplate);

+ 10 - 3
src/main/java/ieven/server/webapp/service/datastatic/DataStaticExportExcel.java

@@ -6,6 +6,7 @@ import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.exporter.Exporter;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.domain.file.LogicalFile;
+import ieven.server.webapp.domain.model.Model;
 import ieven.server.webapp.service.Ops;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -26,16 +27,20 @@ public class DataStaticExportExcel extends Ops implements Runnable {
     MongoTemplate mongoTemplate;
     FileService fileService;
     CountDownLatch latch;
+    String path;
 
     public DataStaticExportExcel(
             String modelId,
             MongoTemplate mongoTemplate,
             FileService fileService,
-            CountDownLatch latch) {
+            CountDownLatch latch,
+            String path
+            ) {
         this.modelId = modelId;
         this.mongoTemplate = mongoTemplate;
         this.fileService = fileService;
         this.latch = latch;
+        this.path = path;
     }
 
     @SneakyThrows
@@ -45,7 +50,9 @@ public class DataStaticExportExcel extends Ops implements Runnable {
         new Thread(new Runnable() {
             @SneakyThrows
             @Override
-            public void run() {
+            public void run() {//66d70e8cab8dce69854ddb48
+
+                Model model = mongoTemplate.findOne(new Query(Criteria.where("_id").is(modelId)), Model.class);
                 String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
                 Criteria criteria = Criteria.where("fileId").in(dateFileId);
                 Query dataQuery = new Query(criteria);
@@ -58,7 +65,7 @@ public class DataStaticExportExcel extends Ops implements Runnable {
                                 .noCursorTimeout(true)
                                 .cursor();
                 Exporter exporter = new Exporter();
-                exporter.export(cursor, dateFileId, "测试", "");
+                exporter.export(cursor, dateFileId, model.getModelName(), path);
             }
         }).start();
         latch.countDown();

+ 1 - 1
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesEndAnalysis.java

@@ -91,7 +91,7 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
         String alipayUsername = origin.getString("交易对手户名");
         if (StringUtils.isNotBlank(alipayUsername)
             && !"_".equals(alipayUsername)
-            && !"-".equals(alipayUsername)) {
+            && !"-".equals(alipayUsername)&& !"null".equals(alipayUsername)) {
           if (idToNames.containsKey(alipayId)) {
             Set<String> names = idToNames.get(alipayId);
             names.add(alipayUsername);

+ 1 - 0
src/main/resources/application.properties

@@ -47,5 +47,6 @@ headers.static-user-output=\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7,\u4ea4\u6613\u4e
 headers.economic-order=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u652f\u4ed8\u673a\u6784\u5185\u90e8\u8ba2\u5355\u53f7,\u4ed8\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u6807\u5fd7,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u540d\u79f0,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u5907\u6ce8
 headers.economic-order-output=\u5e8f\u53f7,\u67e5\u8be2\u8d26\u53f7,\u652f\u4ed8\u673a\u6784\u5185\u90e8\u8ba2\u5355\u53f7,\u4ed8\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u4ed8\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u6536\u6b3e\u65b9\u652f\u4ed8\u5e10\u53f7,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u6240\u5c5e\u884c,\u6536\u6b3e\u65b9\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u6807\u5fd7,\u5e01\u79cd,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u53f7,\u6536\u6b3e\u65b9\u7684\u5546\u6237\u540d\u79f0,\u4ea4\u6613\u8bbe\u5907\u53f7,\u94f6\u884c\u5916\u90e8\u6e20\u9053\u4ea4\u6613\u6d41\u6c34\u53f7,\u5907\u6ce8
 headers.static-user-all-output=\u8bc1\u4ef6\u53f7,\u8d26\u6237\u540d\u79f0,\u8d26\u53f7
+headers.user-account-output=\u652f\u4ed8\u8ba2\u5355\u53f7,\u4ea4\u6613\u6d41\u6c34\u53f7,\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u540d\u79f0,\u4ea4\u6613\u4e3b\u4f53\u8d26\u53f7,\u4ea4\u6613\u4e3b\u4f53\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u4e3b\u4f53\u6237\u540d,\u4ea4\u6613\u7c7b\u578b,\u652f\u4ed8\u7c7b\u578b,\u501f\u8d37\u7c7b\u578b,\u4ea4\u6613\u65f6\u95f4,\u5e01\u79cd,\u4ea4\u6613\u91d1\u989d,\u4ea4\u6613\u4f59\u989d,\u4ea4\u6613\u5bf9\u624b\u8d26\u53f7,\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u5361\u53f7,\u4ea4\u6613\u5bf9\u624b\u94f6\u884c\u540d\u79f0,\u4ea4\u6613\u5bf9\u624b\u6237\u540d,\u6d88\u8d39POS\u673a\u7f16\u53f7,\u4ea4\u6613\u8bbe\u5907\u7c7b\u578b,\u4ea4\u6613\u652f\u4ed8\u8bbe\u5907IP,MAC\u5730\u5740,\u4ea4\u6613\u5730\u70b9\u7ecf\u5ea6,\u4ea4\u6613\u5730\u70b9\u7eac\u5ea6,\u6d88\u8d39\u540d\u79f0,\u4ea4\u6613\u6765\u6e90\u5730,\u4ea4\u6613\u72b6\u6001,\u5907\u6ce8,\u7c7b\u578b
 #\u8F6C\u8D26\u5206\u6790-\u603B\u91D1\u989Ddesc
 #\u8D26\u6237\u900F\u89C6-\u4EA4\u6613\u603B\u989Ddesc