package com.ydtech.modules.largescreen.controller; import com.alibaba.fastjson.JSON; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.largescreen.model.*; import com.ydtech.modules.largescreen.model.query.*; import com.ydtech.modules.largescreen.service.IAgreementDataService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.DecimalFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Optional; @Api(tags = "数据大屏") @RestController @RequestMapping("screen/data") @Slf4j public class DataController { @Autowired IAgreementDataService dataService; /** * 保险公司成交数据 * * @param dataQuery * @return */ @PostMapping("companySumDataChart") public HttpResult companySumDataChart(@RequestBody(required = false) DataQuery dataQuery) { List sumData = dataService.getCompanySumData(dataQuery); //转换格式 int rows = 6; int columns = sumData.size(); String[][] result = new String[rows][columns]; sumData.forEach(item -> { int i = sumData.indexOf(item); result[0][i] = item.getInsuranceCompany(); result[1][i] = item.getJqPremium(); result[2][i] = item.getSyPremium(); result[3][i] = item.getTaxPremium(); result[4][i] = item.getSumPremium(); result[5][i] = item.getSumOrderNum().toString(); }); return HttpResult.ok(result); } @PostMapping("companySumData") public HttpResult companySumData(@RequestBody(required = false) DataQuery dataQuery) { this.changeSignCreateTime(dataQuery); List sumData = dataService.getCompanySumData(dataQuery); String[][] result = new String[sumData.size()][7]; sumData.forEach(item -> { int i = sumData.indexOf(item); result[i][0] = item.getInsuranceCompanyId(); result[i][1] = item.getInsuranceCompany(); result[i][2] = item.getJqPremium(); result[i][3] = item.getSyPremium(); result[i][4] = item.getTaxPremium(); result[i][5] = item.getSumPremium(); result[i][6] = item.getSumOrderNum().toString(); }); return HttpResult.ok(result); } /** * 订单状态数据 * * @param dataQuery * @return */ @PostMapping("orderStatusData") public HttpResult orderStatusData(@RequestBody(required = false) DataQuery dataQuery) { this.changeSignCreateTime(dataQuery); List sumData = dataService.getCompanyOrderStatusData(dataQuery); //转换格式 int rows = 6; int columns = sumData.size(); String[][] result = new String[rows][columns]; sumData.forEach(item -> { int i = sumData.indexOf(item); result[0][i] = item.getCompanyName(); result[1][i] = checkOrderStatus(item.getOrderStatusData(), "0"); result[2][i] = checkOrderStatus(item.getOrderStatusData(), "1"); result[3][i] = checkOrderStatus(item.getOrderStatusData(), "2"); result[4][i] = checkOrderStatus(item.getOrderStatusData(), "3"); result[5][i] = checkOrderStatus(item.getOrderStatusData(), "4"); }); return HttpResult.ok(result); } private String checkOrderStatus(List orderStatusData, String status) { OrderStatusData orderStatusData1 = orderStatusData.stream() .filter(item1 -> item1.getOrderStatusCode().equals(status)) .findFirst() .orElse(null); if (orderStatusData1 == null) { return "0"; } else { return String.valueOf(orderStatusData1.getSumOrderNum()); } } /** * 获取山西地图数据 * * @param dataQuery * @return */ @PostMapping("mapData") public HttpResult mapData(@RequestBody(required = false) DataQuery dataQuery) { this.changeSignCreateTime(dataQuery); List mapData = dataService.getMapData(dataQuery); return HttpResult.ok(mapData); } /** * 获取一周内的数据 * * @return */ @PostMapping("weekData") public HttpResult weekData() { List weekData = dataService.getWeekData(); //转换格式 int rows = 6; int columns = weekData.size(); String[][] result = new String[rows][columns]; weekData.forEach(item -> { int i = weekData.indexOf(item); result[0][i] = item.getDate(); result[1][i] = item.getJqPremium(); result[2][i] = item.getSyPremium(); result[3][i] = item.getTaxPremium(); result[4][i] = item.getSumPremium(); result[5][i] = item.getSumOrderNum().toString(); }); return HttpResult.ok(result); } /** * 获取一月内的数据 * * @return */ @PostMapping("monthData") public HttpResult monthData() { List monthData = dataService.getMonthData(); //转换格式 int rows = 6; int columns = monthData.size(); String[][] result = new String[rows][columns]; monthData.forEach(item -> { int i = monthData.indexOf(item); result[0][i] = item.getDate(); result[1][i] = item.getJqPremium(); result[2][i] = item.getSyPremium(); result[3][i] = item.getTaxPremium(); result[4][i] = item.getSumPremium(); result[5][i] = item.getSumOrderNum().toString(); }); return HttpResult.ok(result); } @PostMapping("yearData") public HttpResult yearData() { List yearData = dataService.getYearData(); //转换格式 int rows = 6; int columns = yearData.size(); String[][] result = new String[rows][columns]; yearData.forEach(item -> { int i = yearData.indexOf(item); result[0][i] = item.getDate(); result[1][i] = item.getJqPremium(); result[2][i] = item.getSyPremium(); result[3][i] = item.getTaxPremium(); result[4][i] = item.getSumPremium(); result[5][i] = item.getSumOrderNum().toString(); }); return HttpResult.ok(result); } /** * 获取当天已承包数据 */ @PostMapping("todayData") public HttpResult todayData(@RequestBody DataQuery dataQuery) { dataQuery.setOrderStatus("3"); this.changeSignCreateTime(dataQuery); List orderStatusData = dataService.getOrderStatusData(dataQuery); if (orderStatusData.isEmpty()) { return HttpResult.error("当天无已承包数据"); } ToDayData toDayData = JSON.parseObject(JSON.toJSONString(orderStatusData.get(0)), ToDayData.class); toDayData.setCbOrderNum(toDayData.getSumOrderNum()); Integer orderNumber = dataService.getOrderNumber(dataQuery); toDayData.setSumOrderNum(orderNumber); return HttpResult.ok(toDayData); } private void changeSignCreateTime(DataQuery dataQuery) { // 1.录单时间 2.签单时间 if(dataQuery.getTimeType().equals("2")){ dataQuery.setSignStartDate(dataQuery.getStartDate()); dataQuery.setSignEndDate(dataQuery.getEndDate()); dataQuery.setStartDate(null); dataQuery.setEndDate(null); } } /** * 获取公司数据 * * @return */ @PostMapping("companys") public HttpResult companys() { return HttpResult.ok(dataService.getCompanys()); } @PostMapping("getCompanyDataById") public HttpResult getCompanyDataById(@RequestBody CompanyQuery companyQuery) { //查询单交 companyQuery.setProductId("0330"); CompanyInfoData djCompanyInfoData = new CompanyInfoData(); List companySumData = dataService.getCompanyDataById(companyQuery); companySumData.forEach(item -> { item.setInsurance("单交"); Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100; item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%", d)); // item.setRatio(String.format("%.2f%%",d)); djCompanyInfoData.setJqSumPremium( String.valueOf(Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium()))); djCompanyInfoData.setSySumPremium( String.valueOf(Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium()))); djCompanyInfoData.setTaxSumPremium( String.valueOf(Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium()))); djCompanyInfoData.setSumOrderNum( djCompanyInfoData.getSumOrderNum() + item.getSumOrderNum()); }); djCompanyInfoData.setRatio( String.format("%.2f%%", Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(djCompanyInfoData.getJqSumPremium()) * 100) ); //小计 djCompanyInfoData.setInsurance("单交"); djCompanyInfoData.setJqPremium("小计"); djCompanyInfoData.setTaxSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getTaxSumPremium()))); djCompanyInfoData.setJqSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getJqSumPremium()))); djCompanyInfoData.setSySumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getSySumPremium()))); companySumData.add(djCompanyInfoData); //查询交三 CompanyInfoData jsCompanyInfoData = new CompanyInfoData(); companyQuery.setProductId("0330034002"); List companyDataById = dataService.getCompanyDataById(companyQuery); companyDataById.forEach(item -> { item.setInsurance("交三"); Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100; item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%", d)); jsCompanyInfoData.setJqSumPremium( String.valueOf(Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium()))); jsCompanyInfoData.setSySumPremium( String.valueOf(Double.parseDouble(jsCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium()))); jsCompanyInfoData.setTaxSumPremium( String.valueOf(Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium()))); jsCompanyInfoData.setSumOrderNum( jsCompanyInfoData.getSumOrderNum() + item.getSumOrderNum()); }); jsCompanyInfoData.setRatio( String.format("%.2f%%", Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) * 100) ); companySumData.addAll(companyDataById); //小计 jsCompanyInfoData.setInsurance("交三"); jsCompanyInfoData.setJqPremium("小计"); jsCompanyInfoData.setTaxSumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()))); jsCompanyInfoData.setJqSumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getJqSumPremium()))); jsCompanyInfoData.setSySumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getSySumPremium()))); companySumData.add(jsCompanyInfoData); //合计 CompanyInfoData sumCompanyInfoData = new CompanyInfoData(); sumCompanyInfoData.setInsurance("合计"); sumCompanyInfoData.setSumOrderNum(djCompanyInfoData.getSumOrderNum() + jsCompanyInfoData.getSumOrderNum()); sumCompanyInfoData.setTaxSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()))); sumCompanyInfoData.setJqSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(jsCompanyInfoData.getJqSumPremium()))); sumCompanyInfoData.setSySumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(jsCompanyInfoData.getSySumPremium()))); sumCompanyInfoData.setRatio( String.format("%.2f%%", Double.parseDouble(sumCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(sumCompanyInfoData.getJqSumPremium()) * 100) ); companySumData.add(sumCompanyInfoData); return HttpResult.ok(companySumData); } @PostMapping("listData") public HttpResult listData(@RequestBody DataQuery dataQuery) { DecimalFormat decimalFormat = new DecimalFormat("#0.00"); if ((dataQuery.getStartDate() == null || "".equals(dataQuery.getStartDate())) && (dataQuery.getEndDate() == null || "".equals(dataQuery.getEndDate()))) { // 获取当前日期 LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); dataQuery.setStartDate(currentDate.format(formatter) + " 00:00:00"); dataQuery.setEndDate(currentDate.format(formatter) + " 23:59:59"); } List sumData = dataService.getCompanyOrderStatusData(dataQuery); List listDatas = new ArrayList<>(); ListData sumListData = new ListData(); sumListData.setQuoting("0"); sumListData.setUninsured("0"); sumListData.setInsured("0"); sumListData.setUnderwrited("0"); sumListData.setUnderwriteReturn("0"); sumListData.setJqPremium("0"); sumListData.setSyPremium("0"); sumListData.setTaxPremium("0"); sumListData.setSumPremium("0"); sumData.forEach(item -> { ListData listData = new ListData(); listData.setInsuranceCompany(item.getCompanyName()); listData.setInsuranceCompanyId(item.getCompanyId()); Optional first = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst(); if (!first.isPresent()) { listData.setJqPremium("0"); listData.setSyPremium("0"); listData.setTaxPremium("0"); listData.setSumPremium("0"); } else { listData.setJqPremium(first.get().getJqPremium()); sumListData.setJqPremium(decimalFormat.format(Float.parseFloat(sumListData.getJqPremium()) + Float.parseFloat(first.get().getJqPremium()))); listData.setSyPremium(first.get().getSyPremium()); sumListData.setSyPremium(decimalFormat.format(Float.parseFloat(sumListData.getSyPremium()) + Float.parseFloat(first.get().getSyPremium()))); listData.setTaxPremium(first.get().getTaxPremium()); sumListData.setTaxPremium(decimalFormat.format(Float.parseFloat(sumListData.getTaxPremium()) + Float.parseFloat(first.get().getTaxPremium()))); listData.setSumPremium(first.get().getSumPremium()); sumListData.setSumPremium(decimalFormat.format(Float.parseFloat(sumListData.getSumPremium()) + Float.parseFloat(first.get().getSumPremium()))); } Optional first1 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("0")).findFirst(); if (!first1.isPresent()) { listData.setQuoting("0"); } else { listData.setQuoting(first1.get().getSumOrderNum().toString()); sumListData.setQuoting(String.valueOf(Integer.parseInt(sumListData.getQuoting()) + first1.get().getSumOrderNum())); } Optional first2 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("1")).findFirst(); if (!first2.isPresent()) { listData.setUninsured("0"); } else { listData.setUninsured(first2.get().getSumOrderNum().toString()); sumListData.setUninsured(String.valueOf(Integer.parseInt(sumListData.getUninsured()) + first2.get().getSumOrderNum())); } Optional first3 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("2")).findFirst(); if (!first3.isPresent()) { listData.setUnderwrited("0"); } else { listData.setUnderwrited(first3.get().getSumOrderNum().toString()); sumListData.setUnderwrited(String.valueOf(Integer.parseInt(sumListData.getUnderwrited()) + first3.get().getSumOrderNum())); } Optional first4 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst(); if (!first4.isPresent()) { listData.setInsured("0"); } else { listData.setInsured(first4.get().getSumOrderNum().toString()); sumListData.setInsured(String.valueOf(Integer.parseInt(sumListData.getInsured()) + first4.get().getSumOrderNum())); } Optional first5 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("4")).findFirst(); if (!first5.isPresent()) { listData.setUnderwriteReturn("0"); } else { listData.setUnderwriteReturn(first5.get().getSumOrderNum().toString()); sumListData.setUnderwriteReturn(String.valueOf(Integer.parseInt(sumListData.getUnderwriteReturn()) + first5.get().getSumOrderNum())); } listDatas.add(listData); }); sumListData.setInsuranceCompany("合计"); sumListData.setJqPremium(decimalFormat.format(Float.parseFloat(sumListData.getJqPremium()))); sumListData.setSyPremium(decimalFormat.format(Float.parseFloat(sumListData.getSyPremium()))); sumListData.setTaxPremium(decimalFormat.format(Float.parseFloat(sumListData.getTaxPremium()))); sumListData.setSumPremium(decimalFormat.format(Float.parseFloat(sumListData.getSumPremium()))); listDatas.add(sumListData); return HttpResult.ok(listDatas); } @ApiOperation(value = "保险公司经营情况表") @PostMapping("insuranceCompanyBusinessSituation") public HttpResult insuranceCompanyBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){ List insuranceCompanyBusinessSituations = dataService.insuranceCompanyBusinessSituation(insuranceCompanyBusinessSituationQuery); return HttpResult.ok(insuranceCompanyBusinessSituations); } @ApiOperation(value = "渠道经营情况表") @PostMapping("channelBusinessSituation") public HttpResult channelBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){ List channelBusinessSituation = dataService.channelBusinessSituation(insuranceCompanyBusinessSituationQuery); return HttpResult.ok(channelBusinessSituation); } @ApiOperation(value = "渠道结算情况表") @PostMapping("channelSettlement") public HttpResult ChannelSettlementSituation(@RequestBody ChannelSettlementsQuery channelSettlementsQuery){ List channelSettlements = dataService.channelSettlement(channelSettlementsQuery); return HttpResult.ok(channelSettlements); } @ApiOperation(value = "保险公司结算情况表") @PostMapping("insuranceCompanySettlement") public HttpResult insuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery){ List invInsuranceCompanySettlements = dataService.insuranceCompanySettlement(invInsuranceCompanySettlementsQuery); return HttpResult.ok(invInsuranceCompanySettlements); } @ApiOperation(value = "更新保险公司结算情况表") @PostMapping("updateInsuranceCompanySettlement") public HttpResult updateInsuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlements invInsuranceCompanySettlements){ return dataService.updateInsuranceCompanySettlement(invInsuranceCompanySettlements) ? HttpResult.ok("更新成功") : HttpResult.error("更新失败"); } }