李林
2024-01-09 d0c3258ed4871f2b9f03357bfd39b6caeff156b0
data-server/src/main/java/com/yuanchu/mom/controller/DataReportingController.java
@@ -11,10 +11,8 @@
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.pojo.DataReporting;
import com.yuanchu.mom.pojo.FansSubmit;
import com.yuanchu.mom.pojo.FinanceSubmit;
@@ -36,10 +34,12 @@
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@RequestMapping("/dataReporting")
@RestController
@@ -112,7 +112,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 = "获取财务上报列表")
@@ -137,8 +137,8 @@
    @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));
    }
    @ValueAuth
@@ -155,21 +155,47 @@
        CsvData data = reader.read(new InputStreamReader(file.getInputStream(), "GB2312"));
        List<CsvRow> rows = data.getRows();
        List<DataReporting> list = new ArrayList<>();
        for (int i = 5; i < rows.size(); i++) {
        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("文件中日期在转换时出现错误");
        }
        for (int i = 6; i < rows.size(); i++) {
            DataReporting reporting = new DataReporting();
            reporting.setName(rows.get(i).get(0))
                    .setProduct(rows.get(i).get(1))
                    .setShowNum(Integer.valueOf(rows.get(i).get(3)))
                    .setClick(Integer.valueOf(rows.get(i).get(4)))
//                    .setAvgPrice(new BigDecimal(rows.get(i).get(5)))
                    .setAccountConsumption(new BigDecimal(rows.get(i).get(6)));
//                    .setSearchBalance(new BigDecimal(rows.get(i).get(6)))
//                    .setInfoBalance(new BigDecimal(rows.get(i).get(7)))
//                    .setVxClick(Double.valueOf(rows.get(i).get(8)))
//                    .setClickThroughRate(rows.get(i).get(9));
            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 "账户":
                        reporting.setName(str);
                        break;
                    case "备注":
                        String[] split = str.split("-");
                        if (split.length == 4) {
                            reporting.setName2(split[0]);
                            reporting.setChannel(split[1]);
                            reporting.setAgent(split[2]);
                            reporting.setProduct(split[3]);
                            break;
                        }
                        reporting.setProduct(str);
                        break;
                    case "展现量":
                        reporting.setShowNum(Integer.parseInt(str));
                        break;
                    case "点击量":
                        reporting.setClick(Integer.parseInt(str));
                        break;
                    case "消费":
                        reporting.setAccountConsumption(new BigDecimal(str));
                        break;
                }
            }
            list.add(reporting);
        }
        dataReportingService.addDataReporting(list);
        dataReportingService.addDataReporting(list, format);
        return Result.success();
    }
@@ -178,7 +204,7 @@
    public Result<?> addDataReporting(@RequestBody DataReporting dataReporting) {
        ArrayList<DataReporting> list = new ArrayList<>();
        list.add(dataReporting);
        dataReportingService.addDataReporting(list);
        dataReportingService.addDataReporting(list, null);
        return Result.success();
    }
@@ -206,4 +232,126 @@
        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")
    public Result<?> inputFansSubmitCsv(@RequestParam("file") MultipartFile file) 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++) {
            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 "进粉":
                        fansSubmit.setFansAdd(Integer.parseInt(str));
                        break;
                }
            }
            fansSubmitService.addFansSubmit(fansSubmit, format);
        }
        return Result.success();
    }
    @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) 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 "代理商":
                        financeSubmit.setCompany(str);
                        break;
                    case "账户名":
                        financeSubmit.setName(str);
                        break;
                    case "金额":
                        try {
                            financeSubmit.setConsumption(new BigDecimal(str));
                        } catch (Exception e) {
                        }
                        break;
                    case "代理返点":
                        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);
        }
        return Result.success();
    }
}