From fd7979f9109aea3922d158b13700b1f1e99b9408 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期五, 17 五月 2024 15:19:27 +0800
Subject: [PATCH] 功能调整

---
 data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java |  277 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 246 insertions(+), 31 deletions(-)

diff --git a/data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java b/data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java
index 30d1cac..0329831 100644
--- a/data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java
+++ b/data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java
@@ -1,21 +1,18 @@
 package com.yuanchu.mom.controller;
 
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.resource.ResourceUtil;
 import cn.hutool.core.text.csv.CsvData;
 import cn.hutool.core.text.csv.CsvReader;
 import cn.hutool.core.text.csv.CsvRow;
 import cn.hutool.core.text.csv.CsvUtil;
-import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.poi.excel.ExcelUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.annotation.ValueAuth;
-import com.yuanchu.mom.common.GetLook;
-import com.yuanchu.mom.dto.DataReportingCsvDto;
-import com.yuanchu.mom.dto.DataReportingPageDto;
-import com.yuanchu.mom.dto.ProductCountDto;
-import com.yuanchu.mom.dto.RegistrantCountDto;
+import com.yuanchu.mom.dto.*;
 import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.FansSubmitMapper;
 import com.yuanchu.mom.pojo.DataReporting;
 import com.yuanchu.mom.pojo.FansSubmit;
 import com.yuanchu.mom.pojo.FinanceSubmit;
@@ -26,23 +23,22 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.apache.tomcat.util.http.fileupload.FileUtils;
-import org.springframework.util.FileCopyUtils;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 @RequestMapping("/dataReporting")
 @RestController
@@ -55,6 +51,8 @@
     private FansSubmitService fansSubmitService;
 
     private FinanceSubmitService financeSubmitService;
+
+    private FansSubmitMapper fansSubmitMapper;
 
     @ApiOperation(value = "鑾峰彇鏁版嵁涓婃姤鍒楄〃")
     @PostMapping("/selectDataReportingList")
@@ -84,7 +82,7 @@
         return Result.success(dataReportingService.selectProductCountDtoPageList(page, productCountDto));
     }
 
-    @ApiOperation(value = "鑾峰彇鐧昏浜烘眹鎬诲垪琛�")
+    @ApiOperation(value = "鑾峰彇鍛樺伐鏁版嵁缁熻鍒楄〃")
     @PostMapping("/selectRegistrantCountDtoPageList")
     public Result selectRegistrantCountDtoPageList(@RequestBody Map<String, Object> data) {
         Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
@@ -97,7 +95,17 @@
     public Result selectFansSubmitList(@RequestBody Map<String, Object> data) {
         Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
         FansSubmit fansSubmit = JSON.parseObject(JSON.toJSONString(data.get("entity")), FansSubmit.class);
+        if (ObjectUtil.isNotEmpty(fansSubmit.getCreateTime())) {
+            fansSubmit.setCreateTime(fansSubmit.getCreateTime().plusDays(1));
+        }
         return Result.success(fansSubmitService.selectFansSubmitList(page, fansSubmit));
+    }
+
+    @ApiOperation(value = "鑾峰彇杩涚矇涓婃姤鎬绘暟")
+    @PostMapping("/countFansSubmitList")
+    @ValueAuth
+    public Result countFansSubmitList(@RequestBody FansSubmit fansSubmit) {
+        return Result.success(fansSubmitService.countFansSubmitList(fansSubmit));
     }
 
     @ApiOperation(value = "鍒犻櫎杩涚矇涓婃姤鍒楄〃")
@@ -123,6 +131,9 @@
     public Result selectFinanceSubmitList(@RequestBody Map<String, Object> data) {
         Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
         FinanceSubmit financeSubmit = JSON.parseObject(JSON.toJSONString(data.get("entity")), FinanceSubmit.class);
+        if (ObjectUtil.isNotEmpty(financeSubmit.getCreateTime())) {
+            financeSubmit.setCreateTime(financeSubmit.getCreateTime().plusDays(1));
+        }
         return Result.success(financeSubmitService.selectFinanceSubmitList(page, financeSubmit));
     }
 
@@ -141,7 +152,7 @@
     @ApiOperation(value = "娣诲姞璐㈠姟涓婃姤淇℃伅")
     @PostMapping("/addFinanceSubmit")
     public Result<?> addFinanceSubmit(@RequestBody FinanceSubmit financeSubmit, String date) {
-        return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit, date));
+        return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit, date, financeSubmit.getParam()));
     }
 
     @ValueAuth
@@ -153,7 +164,7 @@
 
     @ApiOperation(value = "瀵煎叆鏁版嵁涓婃姤鍒楄〃")
     @PostMapping("/inputCsv")
-    public Result<?> inputCsv(@RequestParam("file") MultipartFile file) throws IOException {
+    public Result<?> inputCsv(@RequestParam("file") MultipartFile file, String param) throws IOException {
         CsvReader reader = CsvUtil.getReader();
         CsvData data = reader.read(new InputStreamReader(file.getInputStream(), "GB2312"));
         List<CsvRow> rows = data.getRows();
@@ -165,40 +176,56 @@
             e.printStackTrace();
             throw new ErrorException("鏂囦欢涓棩鏈熷湪杞崲鏃跺嚭鐜伴敊璇�");
         }
-        for (int i = 6; i < rows.size(); i++) {
+        int fieldIndex = 5;
+        for (int i = 0; i < rows.size(); i++) {
+            if (JSON.toJSONString(rows.get(i)).contains("璐︽埛ID")) {
+                fieldIndex = i;
+                break;
+            }
+        }
+        for (int i = fieldIndex + 1; i < rows.size(); i++) {
             DataReporting reporting = new DataReporting();
-            for (int i1 = 0; i1 < rows.get(5).size(); i1++) {
+            for (int i1 = 0; i1 < rows.get(fieldIndex).size(); i1++) {
                 String str = rows.get(i).get(i1);
                 if (str == null) continue;
-                switch (rows.get(5).get(i1)) {
+                switch (rows.get(fieldIndex).get(i1)) {
                     case "璐︽埛":
                         reporting.setName(str);
                         break;
                     case "澶囨敞":
                         String[] split = str.split("-");
-                        if (split.length == 4) {
+                        if (split.length > 3) {
                             reporting.setName2(split[0]);
-                            reporting.setChannel(split[1]);
-                            reporting.setAgent(split[2]);
-                            reporting.setProduct(split[3]);
+                            reporting.setChannel(split[2]);
+                            reporting.setAgent(split[3]);
+                            reporting.setProduct(split[1]);
                             break;
                         }
                         reporting.setProduct(str);
                         break;
                     case "灞曠幇閲�":
-                        reporting.setShowNum(Integer.parseInt(str));
+                        try {
+                            reporting.setShowNum(Integer.parseInt(str));
+                        } catch (Exception e) {
+                        }
                         break;
                     case "鐐瑰嚮閲�":
-                        reporting.setClick(Integer.parseInt(str));
+                        try {
+                            reporting.setClick(Integer.parseInt(str));
+                        } catch (Exception e) {
+                        }
                         break;
                     case "娑堣垂":
-                        reporting.setAccountConsumption(new BigDecimal(str));
+                        try {
+                            reporting.setAccountConsumption(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
                         break;
                 }
             }
-            list.add(reporting);
+            if (reporting.getAccountConsumption().compareTo(BigDecimal.ZERO) > 0) list.add(reporting);
         }
-        dataReportingService.addDataReporting(list, format);
+        dataReportingService.addDataReporting(list, format, param);
         return Result.success();
     }
 
@@ -207,7 +234,7 @@
     public Result<?> addDataReporting(@RequestBody DataReporting dataReporting) {
         ArrayList<DataReporting> list = new ArrayList<>();
         list.add(dataReporting);
-        dataReportingService.addDataReporting(list, null);
+        dataReportingService.addDataReporting(list, null, dataReporting.getVxCard());
         return Result.success();
     }
 
@@ -246,7 +273,37 @@
     @ApiOperation(value = "瀵煎叆杩涚矇涓婃姤鍒楄〃")
     @PostMapping("/inputFansSubmitCsv")
     public Result<?> inputFansSubmitCsv(@RequestParam("file") MultipartFile file) throws IOException {
-        CsvReader reader = CsvUtil.getReader();
+        List<FansSubmit> fansSubmitLists = new ArrayList<>();
+        List<FansSubmit> fansSubmitList = new ArrayList<>();
+        List<String> dates = new ArrayList<>();
+        AtomicReference<String> product = new AtomicReference<>();
+        ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> {
+            LocalDateTime date = null;
+            try {
+                date = LocalDateTime.parse((list.get(0) + "").replace(" ", "T"));
+                dates.add(date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+" 00:00:00");
+            } catch (Exception e) {}
+            if (l == 0 || l == 1 || l == 2
+                    || date.compareTo(LocalDateTime.now()) < 1) {
+                for (int i1 = 1; i1 < list.size(); i1++) {
+                    try {
+                        FansSubmit fansSubmit = fansSubmitList.get(i1 - 1);
+                        fansSubmit.setId(null);
+                        product.set(getFansSubmit(l, list.get(i1), date, fansSubmit, product.get()));
+                    } catch (IndexOutOfBoundsException e) {
+                        FansSubmit fansSubmit = new FansSubmit();
+                        product.set(getFansSubmit(l, list.get(i1), date, fansSubmit, product.get()));
+                        fansSubmitList.add(fansSubmit);
+                    }
+                }
+                if(l>2){
+                    fansSubmitLists.addAll(JSON.parseArray(JSON.toJSONString(fansSubmitList.stream().filter(a -> !Objects.equals(a.getCustom(), "鍚堣")).collect(Collectors.toList())), FansSubmit.class));
+                }
+            }
+        });
+        fansSubmitMapper.delete(Wrappers.<FansSubmit>lambdaUpdate().in(FansSubmit::getCreateTime, dates));
+        fansSubmitService.saveBatch(fansSubmitLists);
+        /*CsvReader reader = CsvUtil.getReader();
         CsvData data = reader.read(new InputStreamReader(file.getInputStream(), "GB2312"));
         List<CsvRow> rows = data.getRows();
         String format;
@@ -276,7 +333,165 @@
                 }
             }
             fansSubmitService.addFansSubmit(fansSubmit, format);
+        }*/
+        return Result.success();
+    }
+
+    public String getFansSubmit(long l, Object thing, LocalDateTime date, FansSubmit fansSubmit, String product) {
+        String str = (thing == null ? null : thing + "");
+        if(l==0){
+            if (str != null) product = str;
+            fansSubmit.setProduct(product);
+        }else if(l==1){
+            Pattern pattern = Pattern.compile("[\u4E00-\u9FA5]");
+            Matcher matcher = pattern.matcher(str == null ? "" : str);
+            if (matcher.find()) {
+                fansSubmit.setCustom(str);
+            } else {
+                fansSubmit.setVx(str);
+            }
+        }else if(l==2){
+            if (fansSubmit.getVx() == null) {
+                fansSubmit.setVx(str);
+            }
+        }else{
+            fansSubmit.setCreateTime(date.plusDays(1));
+            fansSubmit.setFansAdd((str == null || str.equals("")) ? 0 : Integer.parseInt(str));
+        }
+        return product;
+    }
+
+    @ApiOperation(value = "鑾峰彇鏁版嵁瀵规瘮鍒楄〃")
+    @PostMapping("/selectDataComparisonDtoPageList")
+    public Result selectDataComparisonDtoPageList(@RequestBody Map<String, Object> data) {
+        Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
+        DataComparisonDto dataComparisonDto = JSON.parseObject(JSON.toJSONString(data.get("entity")), DataComparisonDto.class);
+        Map<String, Object> stringObjectMap = dataReportingService.selectDataComparisonDtoPageList(page, dataComparisonDto);
+        return Result.success(stringObjectMap);
+    }
+
+    @ApiOperation(value = "瀵煎嚭璐㈠姟涓婃姤鍒楄〃")
+    @PostMapping("/downFinanceSubmitFile")
+    public Result downFinanceSubmitFile(@RequestBody Map<String, Object> data) {
+        Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
+        FinanceSubmit financeSubmit = JSON.parseObject(JSON.toJSONString(data.get("entity")), FinanceSubmit.class);
+        return Result.success("瀵煎嚭鎴愬姛", dataReportingService.downFinanceSubmitFile(page, financeSubmit));
+    }
+
+    @ApiOperation(value = "瀵煎叆璐㈠姟涓婃姤鍒楄〃")
+    @PostMapping("/inputFinanceSubmitCsv")
+    public Result<?> inputFinanceSubmitCsv(@RequestParam("file") MultipartFile file, String param) throws IOException {
+        CsvReader reader = CsvUtil.getReader();
+        CsvData data = reader.read(new InputStreamReader(file.getInputStream(), "GB2312"));
+        List<CsvRow> rows = data.getRows();
+        String format;
+        try {
+            format = new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyyMMdd").parse(rows.get(2).get(0).split("锛�")[1]));
+        } catch (ParseException e) {
+            throw new ErrorException("鏂囦欢涓棩鏈熷湪杞崲鏃跺嚭鐜伴敊璇�");
+        }
+        for (int i = 6; i < rows.size(); i++) {
+            FinanceSubmit financeSubmit = new FinanceSubmit();
+            for (int i1 = 0; i1 < rows.get(5).size(); i1++) {
+                String str = rows.get(i).get(i1);
+                if (str == null) continue;
+                switch (rows.get(5).get(i1)) {
+                    case "浠g悊鍟�":
+                        financeSubmit.setCompany(str);
+                        break;
+                    case "璐︽埛鍚�":
+                        financeSubmit.setName(str);
+                        break;
+                    case "閲戦":
+                        try {
+                            financeSubmit.setConsumption(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
+                        break;
+                    case "浠g悊杩旂偣":
+                        try {
+                            financeSubmit.setAgentRebate(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
+                        break;
+                    case "鎵撴浜烘皯甯�":
+                        try {
+                            financeSubmit.setMoney(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
+                        break;
+                    case "鍛樺伐杩旂偣":
+                        try {
+                            financeSubmit.setEmployeeRebate(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
+                        break;
+                    case "鍛樺伐杩旂偣浜烘皯甯�":
+                        try {
+                            financeSubmit.setEmployeeRebateMoney(new BigDecimal(str));
+                        } catch (Exception e) {
+                        }
+                        break;
+                }
+            }
+            financeSubmitService.addFinanceSubmit(financeSubmit, format, param);
         }
         return Result.success();
     }
+
+    @ApiOperation(value = "涓�閿垹闄ゆ墍鏈夋暟鎹笂鎶ョ殑鏁版嵁")
+    @PostMapping("/deleteAllData")
+    public Result deleteAllData(String date) {
+        dataReportingService.deleteAllData(date);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鑾峰彇鏁版嵁涓婃姤鐨勭櫥璁颁汉绛涢�夐」")
+    @PostMapping("/selectDataReportingForCreateUserNames")
+    @ValueAuth
+    public Result selectDataReportingForCreateUserNames(String time) {
+        return Result.success(dataReportingService.selectDataReportingForCreateUserNames(time));
+    }
+
+    @ApiOperation(value = "鑾峰彇椤圭洰鏁版嵁缁熻鐨勯」鐩瓫閫夐」")
+    @PostMapping("/selectDataReportingForProduct")
+    @ValueAuth
+    public Result selectDataReportingForProduct(String time) {
+        return Result.success(dataReportingService.selectDataReportingForProduct(time));
+    }
+
+    @ApiOperation(value = "鑾峰彇寰俊鍙峰垪琛�")
+    @GetMapping("/selectVxs")
+    @ValueAuth
+    public Result selectVxs(String time) {
+        return Result.success(fansSubmitService.vxs(time));
+    }
+
+    @ApiOperation(value = "鎵归噺淇敼寰俊鍙�")
+    @PostMapping("/updateVxCards")
+    public Result updateVxCards(String str) {
+        List<DataReporting> list = JSON.parseArray(str, DataReporting.class);
+        return Result.success(dataReportingService.updateVxCards(list));
+    }
+
+    @ApiOperation(value = "涓�閿垹闄ゆ墍鏈夎繘绮変笂鎶ョ殑鏁版嵁")
+    @PostMapping("/deleteAllFans")
+    public Result deleteAllFans(String date) {
+        fansSubmitService.deleteAllFans(date);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "涓�閿垹闄ゆ墍鏈夎储鍔′笂鎶ョ殑鏁版嵁")
+    @PostMapping("/deleteAllFinance")
+    public Result deleteAllFinance(String date) {
+        financeSubmitService.deleteAllFinance(date);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏁版嵁涓婃姤涓荤鏉冮檺")
+    @GetMapping("/dataReportingPower")
+    public Result dataReportingPower() {
+        return Result.success();
+    }
+
 }

--
Gitblit v1.9.3