DataController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. package com.ydtech.modules.largescreen.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.beust.ah.A;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.modules.largescreen.model.*;
  7. import com.ydtech.modules.largescreen.model.query.CompanyQuery;
  8. import com.ydtech.modules.largescreen.model.query.DataQuery;
  9. import com.ydtech.modules.largescreen.service.IAgreementDataService;
  10. import io.swagger.annotations.Api;
  11. import lombok.Data;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.time.LocalDate;
  16. import java.time.format.DateTimeFormatter;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Optional;
  20. @Api(tags = "数据大屏")
  21. @RestController
  22. @RequestMapping("screen/data")
  23. @Slf4j
  24. public class DataController {
  25. @Autowired
  26. IAgreementDataService dataService;
  27. /**
  28. * 保险公司成交数据
  29. * @param dataQuery
  30. * @return
  31. */
  32. @PostMapping("companySumDataChart")
  33. public HttpResult companySumDataChart(@RequestBody(required=false) DataQuery dataQuery) {
  34. List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
  35. //转换格式
  36. int rows = 6;
  37. int columns = sumData.size();
  38. String[][] result = new String[rows][columns];
  39. sumData.forEach(item->{
  40. int i = sumData.indexOf(item);
  41. result[0][i] = item.getInsuranceCompany();
  42. result[1][i] = item.getJqPremium();
  43. result[2][i] = item.getSyPremium();
  44. result[3][i] = item.getTaxPremium();
  45. result[4][i] = item.getSumPremium();
  46. result[5][i] = item.getSumOrderNum().toString();
  47. });
  48. return HttpResult.ok(result);
  49. }
  50. @PostMapping("companySumData")
  51. public HttpResult companySumData(@RequestBody(required=false) DataQuery dataQuery) {
  52. List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
  53. String[][] result = new String[sumData.size()][7];
  54. sumData.forEach(item->{
  55. int i = sumData.indexOf(item);
  56. result[i][0] = item.getInsuranceCompanyId();
  57. result[i][1] = item.getInsuranceCompany();
  58. result[i][2] = item.getJqPremium();
  59. result[i][3] = item.getSyPremium();
  60. result[i][4] = item.getTaxPremium();
  61. result[i][5] = item.getSumPremium();
  62. result[i][6] = item.getSumOrderNum().toString();
  63. });
  64. return HttpResult.ok(result);
  65. }
  66. /**
  67. * 订单状态数据
  68. * @param dataQuery
  69. * @return
  70. */
  71. @PostMapping("orderStatusData")
  72. public HttpResult orderStatusData(@RequestBody(required=false) DataQuery dataQuery) {
  73. List<CompanyData> sumData = dataService.getCompanyOrderStatusData(dataQuery);
  74. //转换格式
  75. int rows = 6;
  76. int columns = sumData.size();
  77. String[][] result = new String[rows][columns];
  78. sumData.forEach(item->{
  79. int i = sumData.indexOf(item);
  80. result[0][i] = item.getCompanyName();
  81. result[1][i] = checkOrderStatus(item.getOrderStatusData(),"0");
  82. result[2][i] = checkOrderStatus(item.getOrderStatusData(),"1");
  83. result[3][i] = checkOrderStatus(item.getOrderStatusData(),"2");
  84. result[4][i] = checkOrderStatus(item.getOrderStatusData(),"3");
  85. result[5][i] = checkOrderStatus(item.getOrderStatusData(),"4");
  86. });
  87. return HttpResult.ok(result);
  88. }
  89. private String checkOrderStatus(List<OrderStatusData> orderStatusData,String status){
  90. OrderStatusData orderStatusData1 = orderStatusData.stream()
  91. .filter(item1 -> item1.getOrderStatusCode().equals(status))
  92. .findFirst()
  93. .orElse(null);
  94. if(orderStatusData1 == null){
  95. return "0";
  96. }else{
  97. return String.valueOf(orderStatusData1.getSumOrderNum());
  98. }
  99. }
  100. /**
  101. * 获取山西地图数据
  102. * @param dataQuery
  103. * @return
  104. */
  105. @PostMapping("mapData")
  106. public HttpResult mapData(@RequestBody(required=false) DataQuery dataQuery){
  107. List<MapData> mapData = dataService.getMapData(dataQuery);
  108. return HttpResult.ok(mapData);
  109. }
  110. /**
  111. * 获取一周内的数据
  112. * @return
  113. */
  114. @PostMapping("weekData")
  115. public HttpResult weekData(){
  116. List<OrderStatusData> weekData = dataService.getWeekData();
  117. //转换格式
  118. int rows = 6;
  119. int columns = weekData.size();
  120. String[][] result = new String[rows][columns];
  121. weekData.forEach(item->{
  122. int i = weekData.indexOf(item);
  123. result[0][i] = item.getDate();
  124. result[1][i] = item.getJqPremium();
  125. result[2][i] = item.getSyPremium();
  126. result[3][i] = item.getTaxPremium();
  127. result[4][i] = item.getSumPremium();
  128. result[5][i] = item.getSumOrderNum().toString();
  129. });
  130. return HttpResult.ok(result);
  131. }
  132. /**
  133. * 获取一月内的数据
  134. * @return
  135. */
  136. @PostMapping("monthData")
  137. public HttpResult monthData(){
  138. List<OrderStatusData> monthData = dataService.getMonthData();
  139. //转换格式
  140. int rows = 6;
  141. int columns = monthData.size();
  142. String[][] result = new String[rows][columns];
  143. monthData.forEach(item->{
  144. int i = monthData.indexOf(item);
  145. result[0][i] = item.getDate();
  146. result[1][i] = item.getJqPremium();
  147. result[2][i] = item.getSyPremium();
  148. result[3][i] = item.getTaxPremium();
  149. result[4][i] = item.getSumPremium();
  150. result[5][i] = item.getSumOrderNum().toString();
  151. });
  152. return HttpResult.ok(result);
  153. }
  154. @PostMapping("yearData")
  155. public HttpResult yearData(){
  156. List<OrderStatusData> yearData = dataService.getYearData();
  157. //转换格式
  158. int rows = 6;
  159. int columns = yearData.size();
  160. String[][] result = new String[rows][columns];
  161. yearData.forEach(item->{
  162. int i = yearData.indexOf(item);
  163. result[0][i] = item.getDate();
  164. result[1][i] = item.getJqPremium();
  165. result[2][i] = item.getSyPremium();
  166. result[3][i] = item.getTaxPremium();
  167. result[4][i] = item.getSumPremium();
  168. result[5][i] = item.getSumOrderNum().toString();
  169. });
  170. return HttpResult.ok(result);
  171. }
  172. /**
  173. * 获取当天已承包数据
  174. */
  175. @PostMapping("todayData")
  176. public HttpResult todayData(@RequestBody DataQuery dataQuery){
  177. dataQuery.setOrderStatus("3");
  178. List<OrderStatusData> orderStatusData = dataService.getOrderStatusData(dataQuery);
  179. if(orderStatusData.isEmpty())
  180. {
  181. return HttpResult.error("当天无已承包数据");
  182. }
  183. ToDayData toDayData = JSON.parseObject(JSON.toJSONString(orderStatusData.get(0)), ToDayData.class);
  184. toDayData.setCbOrderNum(toDayData.getSumOrderNum());
  185. Integer orderNumber = dataService.getOrderNumber(dataQuery);
  186. toDayData.setSumOrderNum(orderNumber);
  187. return HttpResult.ok(toDayData);
  188. }
  189. /**
  190. * 获取公司数据
  191. * @return
  192. */
  193. @PostMapping("companys")
  194. public HttpResult companys(){
  195. return HttpResult.ok(dataService.getCompanys());
  196. }
  197. @PostMapping("getCompanyDataById")
  198. public HttpResult getCompanyDataById(@RequestBody CompanyQuery companyQuery){
  199. //查询单交
  200. companyQuery.setProductId("0330");
  201. CompanyInfoData djCompanyInfoData = new CompanyInfoData();
  202. List<CompanyInfoData> companySumData = dataService.getCompanyDataById(companyQuery);
  203. companySumData.forEach(item->{
  204. item.setInsurance("单交");
  205. Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
  206. item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%",d));
  207. // item.setRatio(String.format("%.2f%%",d));
  208. djCompanyInfoData.setJqSumPremium(
  209. String.valueOf(Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium())));
  210. djCompanyInfoData.setSySumPremium(
  211. String.valueOf(Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium())));
  212. djCompanyInfoData.setTaxSumPremium(
  213. String.valueOf(Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium())));
  214. djCompanyInfoData.setSumOrderNum(
  215. djCompanyInfoData.getSumOrderNum() + item.getSumOrderNum());
  216. });
  217. djCompanyInfoData.setRatio(
  218. String.format("%.2f%%",
  219. Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(djCompanyInfoData.getJqSumPremium()) * 100)
  220. );
  221. //小计
  222. djCompanyInfoData.setInsurance("单交");
  223. djCompanyInfoData.setJqPremium("小计");
  224. djCompanyInfoData.setTaxSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getTaxSumPremium())));
  225. djCompanyInfoData.setJqSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getJqSumPremium())));
  226. djCompanyInfoData.setSySumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getSySumPremium())));
  227. companySumData.add(djCompanyInfoData);
  228. //查询交三
  229. CompanyInfoData jsCompanyInfoData = new CompanyInfoData();
  230. companyQuery.setProductId("0330034002");
  231. List<CompanyInfoData> companyDataById = dataService.getCompanyDataById(companyQuery);
  232. companyDataById.forEach(item->{
  233. item.setInsurance("交三");
  234. Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
  235. item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%",d));
  236. jsCompanyInfoData.setJqSumPremium(
  237. String.valueOf(Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium())));
  238. jsCompanyInfoData.setSySumPremium(
  239. String.valueOf(Double.parseDouble(jsCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium())));
  240. jsCompanyInfoData.setTaxSumPremium(
  241. String.valueOf(Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium())));
  242. jsCompanyInfoData.setSumOrderNum(
  243. jsCompanyInfoData.getSumOrderNum() + item.getSumOrderNum());
  244. });
  245. jsCompanyInfoData.setRatio(
  246. String.format("%.2f%%",
  247. Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) * 100)
  248. );
  249. companySumData.addAll(companyDataById);
  250. //小计
  251. jsCompanyInfoData.setInsurance("交三");
  252. jsCompanyInfoData.setJqPremium("小计");
  253. jsCompanyInfoData.setTaxSumPremium(String.format("%.2f",Double.parseDouble(jsCompanyInfoData.getTaxSumPremium())));
  254. jsCompanyInfoData.setJqSumPremium(String.format("%.2f",Double.parseDouble(jsCompanyInfoData.getJqSumPremium())));
  255. jsCompanyInfoData.setSySumPremium(String.format("%.2f",Double.parseDouble(jsCompanyInfoData.getSySumPremium())));
  256. companySumData.add(jsCompanyInfoData);
  257. //合计
  258. CompanyInfoData sumCompanyInfoData = new CompanyInfoData();
  259. sumCompanyInfoData.setInsurance("合计");
  260. sumCompanyInfoData.setSumOrderNum(djCompanyInfoData.getSumOrderNum() + jsCompanyInfoData.getSumOrderNum());
  261. sumCompanyInfoData.setTaxSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(jsCompanyInfoData.getTaxSumPremium())));
  262. sumCompanyInfoData.setJqSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(jsCompanyInfoData.getJqSumPremium())));
  263. sumCompanyInfoData.setSySumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(jsCompanyInfoData.getSySumPremium())));
  264. sumCompanyInfoData.setRatio(
  265. String.format("%.2f%%",
  266. Double.parseDouble(sumCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(sumCompanyInfoData.getJqSumPremium()) * 100)
  267. );
  268. companySumData.add(sumCompanyInfoData);
  269. return HttpResult.ok(companySumData);
  270. }
  271. @PostMapping("listData")
  272. public HttpResult listData(@RequestBody DataQuery dataQuery){
  273. List<CompanyData> sumData = dataService.getCompanyOrderStatusData(dataQuery);
  274. List<ListData> listDatas = new ArrayList<>();
  275. sumData.forEach(item->{
  276. ListData listData = new ListData();
  277. listData.setInsuranceCompany(item.getCompanyName());
  278. listData.setInsuranceCompanyId(item.getCompanyId());
  279. Optional<OrderStatusData> first = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst();
  280. if(first.isEmpty()) {
  281. listData.setJqPremium("0");
  282. listData.setSyPremium("0");
  283. listData.setTaxPremium("0");
  284. listData.setSumPremium("0");
  285. }else{
  286. listData.setJqPremium(first.get().getJqPremium());
  287. listData.setSyPremium(first.get().getSyPremium());
  288. listData.setTaxPremium(first.get().getTaxPremium());
  289. listData.setSumPremium(first.get().getSumPremium());
  290. }
  291. Optional<OrderStatusData> first1 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("0")).findFirst();
  292. if(first1.isEmpty()){
  293. listData.setQuoting("0");
  294. }else{
  295. listData.setQuoting(first1.get().getSumOrderNum().toString());
  296. }
  297. Optional<OrderStatusData> first2 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("1")).findFirst();
  298. if(first2.isEmpty()){
  299. listData.setUninsured("0");
  300. }else{
  301. listData.setUninsured(first2.get().getSumOrderNum().toString());
  302. }
  303. Optional<OrderStatusData> first3 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("2")).findFirst();
  304. if(first3.isEmpty()){
  305. listData.setUnderwrited("0");
  306. }else{
  307. listData.setUnderwrited(first3.get().getSumOrderNum().toString());
  308. }
  309. Optional<OrderStatusData> first4 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst();
  310. if(first4.isEmpty()){
  311. listData.setInsured("0");
  312. }else{
  313. listData.setInsured(first4.get().getSumOrderNum().toString());
  314. }
  315. Optional<OrderStatusData> first5 = item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("4")).findFirst();
  316. if(first5.isEmpty()){
  317. listData.setUnderwriteReturn("0");
  318. }else{
  319. listData.setUnderwriteReturn(first5.get().getSumOrderNum().toString());
  320. }
  321. listDatas.add(listData);
  322. });
  323. return HttpResult.ok(listDatas);
  324. }
  325. }