DataController.java 16 KB

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