package com.ydtech.modules.largescreen.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.beust.ah.A; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.largescreen.model.*; import com.ydtech.modules.largescreen.model.query.CompanyQuery; import com.ydtech.modules.largescreen.model.query.DataQuery; import com.ydtech.modules.largescreen.service.IAgreementDataService; import io.swagger.annotations.Api; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; 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) { 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) { 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){ 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"); 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); } /** * 获取公司数据 * @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){ List sumData = dataService.getCompanyOrderStatusData(dataQuery); List listDatas = new ArrayList<>(); 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.isEmpty()) { listData.setJqPremium("0"); listData.setSyPremium("0"); listData.setTaxPremium("0"); listData.setSumPremium("0"); }else{ listData.setJqPremium(first.get().getJqPremium()); listData.setSyPremium(first.get().getSyPremium()); listData.setTaxPremium(first.get().getTaxPremium()); listData.setSumPremium(first.get().getSumPremium()); } Optional first1 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("0")).findFirst(); if(first1.isEmpty()){ listData.setQuoting("0"); }else{ listData.setQuoting(first1.get().getSumOrderNum().toString()); } Optional first2 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("1")).findFirst(); if(first2.isEmpty()){ listData.setUninsured("0"); }else{ listData.setUninsured(first2.get().getSumOrderNum().toString()); } Optional first3 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("2")).findFirst(); if(first3.isEmpty()){ listData.setUnderwrited("0"); }else{ listData.setUnderwrited(first3.get().getSumOrderNum().toString()); } Optional first4 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst(); if(first4.isEmpty()){ listData.setInsured("0"); }else{ listData.setInsured(first4.get().getSumOrderNum().toString()); } Optional first5 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("4")).findFirst(); if(first5.isEmpty()){ listData.setUnderwriteReturn("0"); }else{ listData.setUnderwriteReturn(first5.get().getSumOrderNum().toString()); } listDatas.add(listData); }); return HttpResult.ok(listDatas); } }