From 3af951146aabb69d7857daf11a4bdef21c7ef77e Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期三, 22 五月 2024 09:54:29 +0800
Subject: [PATCH] 功能调整
---
data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java | 406 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 394 insertions(+), 12 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 74b4779..d45ce6e 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,12 +1,19 @@
package com.yuanchu.mom.controller;
+import cn.hutool.core.lang.Console;
+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.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.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;
@@ -17,9 +24,22 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
-import java.util.Map;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+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
@@ -32,6 +52,8 @@
private FansSubmitService fansSubmitService;
private FinanceSubmitService financeSubmitService;
+
+ private FansSubmitMapper fansSubmitMapper;
@ApiOperation(value = "鑾峰彇鏁版嵁涓婃姤鍒楄〃")
@PostMapping("/selectDataReportingList")
@@ -47,6 +69,12 @@
return Result.success(dataReportingService.updateDataReporting(dataReporting));
}
+ @ApiOperation(value = "鍒犻櫎鏁版嵁涓婃姤淇℃伅")
+ @PostMapping("/delDataReporting")
+ public Result delDataReporting(Integer id) {
+ return Result.success(dataReportingService.delDataReporting(id));
+ }
+
@ApiOperation(value = "鑾峰彇椤圭洰姹囨�诲垪琛�")
@PostMapping("/selectProductCountDtoPageList")
public Result selectProductCountDtoPageList(@RequestBody Map<String, Object> data) {
@@ -55,7 +83,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);
@@ -68,12 +96,22 @@
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 = "鍒犻櫎杩涚矇涓婃姤鍒楄〃")
@PostMapping("/delFansSubmit")
- public Result delFansSubmit(Integer id){
+ public Result delFansSubmit(Integer id) {
return Result.success(fansSubmitService.delFansSubmit(id));
}
@@ -86,7 +124,7 @@
@ApiOperation(value = "娣诲姞杩涚矇涓婃姤淇℃伅")
@PostMapping("/addFansSubmit")
public Result<?> addFansSubmit(@RequestBody FansSubmit fansSubmit) {
- return Result.success(fansSubmitService.addFansSubmit(fansSubmit));
+ return Result.success(fansSubmitService.addFansSubmit(fansSubmit, null));
}
@ApiOperation(value = "鑾峰彇璐㈠姟涓婃姤鍒楄〃")
@@ -94,12 +132,15 @@
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));
}
@ApiOperation(value = "鍒犻櫎璐㈠姟涓婃姤鍒楄〃")
@PostMapping("/delFinanceSubmit")
- public Result delFinanceSubmit(Integer id){
+ public Result delFinanceSubmit(Integer id) {
return Result.success(financeSubmitService.delFinanceSubmit(id));
}
@@ -111,15 +152,356 @@
@ApiOperation(value = "娣诲姞璐㈠姟涓婃姤淇℃伅")
@PostMapping("/addFinanceSubmit")
- public Result<?> addFinanceSubmit(@RequestBody FinanceSubmit financeSubmit) {
- return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit));
+ public Result<?> addFinanceSubmit(@RequestBody FinanceSubmit financeSubmit, String date) {
+ return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit, date, financeSubmit.getParam()));
}
+ @ValueAuth
@ApiOperation(value = "鑾峰彇棣栭〉鏁版嵁")
@GetMapping("/getDataList")
- @ValueAuth
public Result<?> getDataList() {
return Result.success(dataReportingService.getDataList());
}
+ @ApiOperation(value = "瀵煎叆鏁版嵁涓婃姤鍒楄〃")
+ @PostMapping("/inputCsv")
+ 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();
+ List<DataReporting> list = new ArrayList<>();
+ String format;
+ try {
+ format = new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyyMMdd").parse(rows.get(2).get(0).split("锛�")[1]));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ throw new ErrorException("鏂囦欢涓棩鏈熷湪杞崲鏃跺嚭鐜伴敊璇�");
+ }
+ 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(fieldIndex).size(); i1++) {
+ String str = rows.get(i).get(i1);
+ if (str == null) continue;
+ switch (rows.get(fieldIndex).get(i1)) {
+ case "璐︽埛":
+ reporting.setName(str);
+ break;
+ case "澶囨敞":
+ String[] split = str.split("-");
+ if (split.length > 3) {
+ reporting.setName2(split[0]);
+ reporting.setChannel(split[2]);
+ reporting.setAgent(split[3]);
+ reporting.setProduct(split[1]);
+ break;
+ }
+ reporting.setProduct(str);
+ break;
+ case "灞曠幇閲�":
+ try {
+ reporting.setShowNum(Integer.parseInt(str));
+ } catch (Exception e) {
+ }
+ break;
+ case "鐐瑰嚮閲�":
+ try {
+ reporting.setClick(Integer.parseInt(str));
+ } catch (Exception e) {
+ }
+ break;
+ case "娑堣垂":
+ try {
+ reporting.setAccountConsumption(new BigDecimal(str));
+ } catch (Exception e) {
+ }
+ break;
+ }
+ }
+ if (reporting.getAccountConsumption().compareTo(BigDecimal.ZERO) > 0) list.add(reporting);
+ }
+ dataReportingService.addDataReporting(list, format, param);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏂板鏁版嵁涓婃姤")
+ @PostMapping("/addDataReporting")
+ public Result<?> addDataReporting(@RequestBody DataReporting dataReporting) {
+ ArrayList<DataReporting> list = new ArrayList<>();
+ list.add(dataReporting);
+ dataReportingService.addDataReporting(list, null, dataReporting.getVxCard());
+ return Result.success();
+ }
+
+ @ApiOperation(value = "瀵煎嚭鏁版嵁涓婃姤鍒楄〃")
+ @PostMapping("/downDataReportingFile")
+ public Result downDataReportingFile(@RequestBody Map<String, Object> data) {
+ Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
+ DataReportingPageDto dataReportingPageDto = JSON.parseObject(JSON.toJSONString(data.get("entity")), DataReportingPageDto.class);
+ return Result.success("瀵煎嚭鎴愬姛", dataReportingService.downDataReportingFile(page, dataReportingPageDto));
+ }
+
+ @ApiOperation(value = "瀵煎嚭椤圭洰鏁版嵁缁熻鍒楄〃")
+ @PostMapping("/downProductCountFile")
+ public Result downProductCountFile(@RequestBody Map<String, Object> data) {
+ Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
+ ProductCountDto productCountDto = JSON.parseObject(JSON.toJSONString(data.get("entity")), ProductCountDto.class);
+ return Result.success("瀵煎嚭鎴愬姛", dataReportingService.downProductCountFile(page, productCountDto));
+ }
+
+ @ApiOperation(value = "瀵煎嚭鍛樺伐鏁版嵁缁熻鍒楄〃")
+ @PostMapping("/downRegistrantCountFile")
+ public Result downRegistrantCountFile(@RequestBody Map<String, Object> data) {
+ Page page = JSON.parseObject(JSON.toJSONString(data.get("page")), Page.class);
+ RegistrantCountDto registrantCountDto = JSON.parseObject(JSON.toJSONString(data.get("entity")), RegistrantCountDto.class);
+ return Result.success("瀵煎嚭鎴愬姛", dataReportingService.downRegistrantCountFile(page, registrantCountDto));
+ }
+
+ @ApiOperation(value = "瀵煎嚭杩涚矇涓婃姤鍒楄〃")
+ @PostMapping("/downFansSubmitFile")
+ public Result downFansSubmitFile(@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);
+ return Result.success("瀵煎嚭鎴愬姛", dataReportingService.downFansSubmitFile(page, fansSubmit));
+ }
+
+ @ApiOperation(value = "瀵煎叆杩涚矇涓婃姤鍒楄〃")
+ @PostMapping("/inputFansSubmitCsv")
+ @Transactional(rollbackFor = Exception.class)
+ public Result<?> inputFansSubmitCsv(@RequestParam("file") MultipartFile file) throws IOException {
+ 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")).plusDays(1);
+ dates.add(date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+" 00:00:00");
+ } catch (Exception e) {
+ if(!(l == 0 || l == 1 || l == 2)){
+ return;
+ }
+ }
+ 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;
+ 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++) {
+ FansSubmit fansSubmit = new FansSubmit();
+ 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 "瀹㈡埛":
+ fansSubmit.setCustom(str);
+ break;
+ case "椤圭洰":
+ fansSubmit.setProduct(str);
+ break;
+ case "寰俊鍙�":
+ fansSubmit.setVx(str);
+ break;
+ case "杩涚矇":
+ try {
+ fansSubmit.setFansAdd(Integer.parseInt(str));
+ }catch (Exception e){
+ fansSubmit.setFansAdd(0);
+ }
+ break;
+ }
+ }
+ 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);
+ 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