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 com.alibaba.fastjson.JSON; 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.pojo.DataReporting; import com.yuanchu.mom.pojo.FansSubmit; import com.yuanchu.mom.pojo.FinanceSubmit; import com.yuanchu.mom.service.DataReportingService; import com.yuanchu.mom.service.FansSubmitService; import com.yuanchu.mom.service.FinanceSubmitService; import com.yuanchu.mom.vo.Result; 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.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.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @RequestMapping("/dataReporting") @RestController @Api(tags = "数据上报模块") @AllArgsConstructor public class DataReportingController { private DataReportingService dataReportingService; private FansSubmitService fansSubmitService; private FinanceSubmitService financeSubmitService; @ApiOperation(value = "获取数据上报列表") @PostMapping("/selectDataReportingList") public Result selectDataReportingList(@RequestBody Map 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.selectDataReportingList(page, dataReportingPageDto)); } @ApiOperation(value = "修改数据上报") @PostMapping("/upDataReporting") public Result upDataReporting(@RequestBody DataReporting dataReporting) { 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 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.selectProductCountDtoPageList(page, productCountDto)); } @ApiOperation(value = "获取登记人汇总列表") @PostMapping("/selectRegistrantCountDtoPageList") public Result selectRegistrantCountDtoPageList(@RequestBody Map 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.selectRegistrantCountDtoPageList(page, registrantCountDto)); } @ApiOperation(value = "获取进粉上报列表") @PostMapping("/selectFansSubmitList") public Result selectFansSubmitList(@RequestBody Map 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(fansSubmitService.selectFansSubmitList(page, fansSubmit)); } @ApiOperation(value = "删除进粉上报列表") @PostMapping("/delFansSubmit") public Result delFansSubmit(Integer id) { return Result.success(fansSubmitService.delFansSubmit(id)); } @ApiOperation(value = "修改进粉上报信息") @PostMapping("/updateFansSubmit") public Result updateFansSubmit(@RequestBody FansSubmit fansSubmit) { return Result.success(fansSubmitService.updateFansSubmit(fansSubmit)); } @ApiOperation(value = "添加进粉上报信息") @PostMapping("/addFansSubmit") public Result addFansSubmit(@RequestBody FansSubmit fansSubmit) { return Result.success(fansSubmitService.addFansSubmit(fansSubmit)); } @ApiOperation(value = "获取财务上报列表") @PostMapping("/selectFinanceSubmitList") public Result selectFinanceSubmitList(@RequestBody Map 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(financeSubmitService.selectFinanceSubmitList(page, financeSubmit)); } @ApiOperation(value = "删除财务上报列表") @PostMapping("/delFinanceSubmit") public Result delFinanceSubmit(Integer id) { return Result.success(financeSubmitService.delFinanceSubmit(id)); } @ApiOperation(value = "修改财务上报信息") @PostMapping("/updateFinanceSubmit") public Result updateFinanceSubmit(@RequestBody FinanceSubmit financeSubmit) { return Result.success(financeSubmitService.updateFinanceSubmit(financeSubmit)); } @ApiOperation(value = "添加财务上报信息") @PostMapping("/addFinanceSubmit") public Result addFinanceSubmit(@RequestBody FinanceSubmit financeSubmit) { return Result.success(financeSubmitService.addFinanceSubmit(financeSubmit)); } @ValueAuth @ApiOperation(value = "获取首页数据") @GetMapping("/getDataList") public Result getDataList() { return Result.success(dataReportingService.getDataList()); } @ValueAuth @ApiOperation(value = "导入") @PostMapping("/inputCsv") public Result inputCsv(@RequestParam("file") MultipartFile file) throws IOException { CsvReader reader = CsvUtil.getReader(); CsvData data = reader.read(new InputStreamReader(file.getInputStream(), "GB2312")); List rows = data.getRows(); List list = new ArrayList<>(); for (int i = 5; 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)); list.add(reporting); } dataReportingService.addDataReporting(list); return Result.success(); } @ApiOperation(value = "新增数据上报") @PostMapping("/addDataReporting") public Result addDataReporting(@RequestBody DataReporting dataReporting) { ArrayList list = new ArrayList<>(); list.add(dataReporting); dataReportingService.addDataReporting(list); return Result.success(); } @ApiOperation(value = "导出数据上报列表") @PostMapping("/downDataReportingFile") public Result downDataReportingFile(@RequestBody Map 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)); } }