DataController.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449
  1. package com.ydtech.modules.largescreen.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.ydtech.core.page.HttpResult;
  4. import com.ydtech.modules.largescreen.model.*;
  5. import com.ydtech.modules.largescreen.model.query.*;
  6. import com.ydtech.modules.largescreen.service.IAgreementDataService;
  7. import io.swagger.annotations.Api;
  8. import io.swagger.annotations.ApiOperation;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.PostMapping;
  12. import org.springframework.web.bind.annotation.RequestBody;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RestController;
  15. import java.text.DecimalFormat;
  16. import java.time.LocalDate;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.Optional;
  21. @Api(tags = "数据大屏")
  22. @RestController
  23. @RequestMapping("screen/data")
  24. @Slf4j
  25. public class DataController {
  26. @Autowired
  27. IAgreementDataService dataService;
  28. /**
  29. * 保险公司成交数据
  30. *
  31. * @param dataQuery
  32. * @return
  33. */
  34. @PostMapping("companySumDataChart")
  35. public HttpResult companySumDataChart(@RequestBody(required = false) DataQuery dataQuery) {
  36. List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
  37. //转换格式
  38. int rows = 6;
  39. int columns = sumData.size();
  40. String[][] result = new String[rows][columns];
  41. sumData.forEach(item -> {
  42. int i = sumData.indexOf(item);
  43. result[0][i] = item.getInsuranceCompany();
  44. result[1][i] = item.getJqPremium();
  45. result[2][i] = item.getSyPremium();
  46. result[3][i] = item.getTaxPremium();
  47. result[4][i] = item.getSumPremium();
  48. result[5][i] = item.getSumOrderNum().toString();
  49. });
  50. return HttpResult.ok(result);
  51. }
  52. @PostMapping("companySumData")
  53. public HttpResult companySumData(@RequestBody(required = false) DataQuery dataQuery) {
  54. this.changeSignCreateTime(dataQuery);
  55. List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
  56. String[][] result = new String[sumData.size()][7];
  57. sumData.forEach(item -> {
  58. int i = sumData.indexOf(item);
  59. result[i][0] = item.getInsuranceCompanyId();
  60. result[i][1] = item.getInsuranceCompany();
  61. result[i][2] = item.getJqPremium();
  62. result[i][3] = item.getSyPremium();
  63. result[i][4] = item.getTaxPremium();
  64. result[i][5] = item.getSumPremium();
  65. result[i][6] = item.getSumOrderNum().toString();
  66. });
  67. return HttpResult.ok(result);
  68. }
  69. /**
  70. * 订单状态数据
  71. *
  72. * @param dataQuery
  73. * @return
  74. */
  75. @PostMapping("orderStatusData")
  76. public HttpResult orderStatusData(@RequestBody(required = false) DataQuery dataQuery) {
  77. this.changeSignCreateTime(dataQuery);
  78. List<CompanyData> sumData = dataService.getCompanyOrderStatusData(dataQuery);
  79. //转换格式
  80. int rows = 6;
  81. int columns = sumData.size();
  82. String[][] result = new String[rows][columns];
  83. sumData.forEach(item -> {
  84. int i = sumData.indexOf(item);
  85. result[0][i] = item.getCompanyName();
  86. result[1][i] = checkOrderStatus(item.getOrderStatusData(), "0");
  87. result[2][i] = checkOrderStatus(item.getOrderStatusData(), "1");
  88. result[3][i] = checkOrderStatus(item.getOrderStatusData(), "2");
  89. result[4][i] = checkOrderStatus(item.getOrderStatusData(), "3");
  90. result[5][i] = checkOrderStatus(item.getOrderStatusData(), "4");
  91. });
  92. return HttpResult.ok(result);
  93. }
  94. private String checkOrderStatus(List<OrderStatusData> orderStatusData, String status) {
  95. OrderStatusData orderStatusData1 = orderStatusData.stream()
  96. .filter(item1 -> item1.getOrderStatusCode().equals(status))
  97. .findFirst()
  98. .orElse(null);
  99. if (orderStatusData1 == null) {
  100. return "0";
  101. } else {
  102. return String.valueOf(orderStatusData1.getSumOrderNum());
  103. }
  104. }
  105. /**
  106. * 获取山西地图数据
  107. *
  108. * @param dataQuery
  109. * @return
  110. */
  111. @PostMapping("mapData")
  112. public HttpResult mapData(@RequestBody(required = false) DataQuery dataQuery) {
  113. this.changeSignCreateTime(dataQuery);
  114. List<MapData> mapData = dataService.getMapData(dataQuery);
  115. return HttpResult.ok(mapData);
  116. }
  117. /**
  118. * 获取一周内的数据
  119. *
  120. * @return
  121. */
  122. @PostMapping("weekData")
  123. public HttpResult weekData() {
  124. List<OrderStatusData> weekData = dataService.getWeekData();
  125. //转换格式
  126. int rows = 6;
  127. int columns = weekData.size();
  128. String[][] result = new String[rows][columns];
  129. weekData.forEach(item -> {
  130. int i = weekData.indexOf(item);
  131. result[0][i] = item.getDate();
  132. result[1][i] = item.getJqPremium();
  133. result[2][i] = item.getSyPremium();
  134. result[3][i] = item.getTaxPremium();
  135. result[4][i] = item.getSumPremium();
  136. result[5][i] = item.getSumOrderNum().toString();
  137. });
  138. return HttpResult.ok(result);
  139. }
  140. /**
  141. * 获取一月内的数据
  142. *
  143. * @return
  144. */
  145. @PostMapping("monthData")
  146. public HttpResult monthData() {
  147. List<OrderStatusData> monthData = dataService.getMonthData();
  148. //转换格式
  149. int rows = 6;
  150. int columns = monthData.size();
  151. String[][] result = new String[rows][columns];
  152. monthData.forEach(item -> {
  153. int i = monthData.indexOf(item);
  154. result[0][i] = item.getDate();
  155. result[1][i] = item.getJqPremium();
  156. result[2][i] = item.getSyPremium();
  157. result[3][i] = item.getTaxPremium();
  158. result[4][i] = item.getSumPremium();
  159. result[5][i] = item.getSumOrderNum().toString();
  160. });
  161. return HttpResult.ok(result);
  162. }
  163. @PostMapping("yearData")
  164. public HttpResult yearData() {
  165. List<OrderStatusData> yearData = dataService.getYearData();
  166. //转换格式
  167. int rows = 6;
  168. int columns = yearData.size();
  169. String[][] result = new String[rows][columns];
  170. yearData.forEach(item -> {
  171. int i = yearData.indexOf(item);
  172. result[0][i] = item.getDate();
  173. result[1][i] = item.getJqPremium();
  174. result[2][i] = item.getSyPremium();
  175. result[3][i] = item.getTaxPremium();
  176. result[4][i] = item.getSumPremium();
  177. result[5][i] = item.getSumOrderNum().toString();
  178. });
  179. return HttpResult.ok(result);
  180. }
  181. /**
  182. * 获取当天已承包数据
  183. */
  184. @PostMapping("todayData")
  185. public HttpResult todayData(@RequestBody DataQuery dataQuery) {
  186. dataQuery.setOrderStatus("3");
  187. this.changeSignCreateTime(dataQuery);
  188. List<OrderStatusData> orderStatusData = dataService.getOrderStatusData(dataQuery);
  189. if (orderStatusData.isEmpty()) {
  190. return HttpResult.error("当天无已承包数据");
  191. }
  192. ToDayData toDayData = JSON.parseObject(JSON.toJSONString(orderStatusData.get(0)), ToDayData.class);
  193. toDayData.setCbOrderNum(toDayData.getSumOrderNum());
  194. Integer orderNumber = dataService.getOrderNumber(dataQuery);
  195. toDayData.setSumOrderNum(orderNumber);
  196. return HttpResult.ok(toDayData);
  197. }
  198. private void changeSignCreateTime(DataQuery dataQuery) {
  199. // 1.录单时间 2.签单时间
  200. if(dataQuery.getTimeType().equals("2")){
  201. dataQuery.setSignStartDate(dataQuery.getStartDate());
  202. dataQuery.setSignEndDate(dataQuery.getEndDate());
  203. dataQuery.setStartDate(null);
  204. dataQuery.setEndDate(null);
  205. }
  206. }
  207. /**
  208. * 获取公司数据
  209. *
  210. * @return
  211. */
  212. @PostMapping("companys")
  213. public HttpResult companys() {
  214. return HttpResult.ok(dataService.getCompanys());
  215. }
  216. @PostMapping("getCompanyDataById")
  217. public HttpResult getCompanyDataById(@RequestBody CompanyQuery companyQuery) {
  218. //查询单交
  219. companyQuery.setProductId("0330");
  220. CompanyInfoData djCompanyInfoData = new CompanyInfoData();
  221. List<CompanyInfoData> companySumData = dataService.getCompanyDataById(companyQuery);
  222. companySumData.forEach(item -> {
  223. item.setInsurance("单交");
  224. Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
  225. item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%", d));
  226. // item.setRatio(String.format("%.2f%%",d));
  227. djCompanyInfoData.setJqSumPremium(
  228. String.valueOf(Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium())));
  229. djCompanyInfoData.setSySumPremium(
  230. String.valueOf(Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium())));
  231. djCompanyInfoData.setTaxSumPremium(
  232. String.valueOf(Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium())));
  233. djCompanyInfoData.setSumOrderNum(
  234. djCompanyInfoData.getSumOrderNum() + item.getSumOrderNum());
  235. });
  236. djCompanyInfoData.setRatio(
  237. String.format("%.2f%%",
  238. Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(djCompanyInfoData.getJqSumPremium()) * 100)
  239. );
  240. //小计
  241. djCompanyInfoData.setInsurance("单交");
  242. djCompanyInfoData.setJqPremium("小计");
  243. djCompanyInfoData.setTaxSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getTaxSumPremium())));
  244. djCompanyInfoData.setJqSumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getJqSumPremium())));
  245. djCompanyInfoData.setSySumPremium(String.format("%.2f", Double.parseDouble(djCompanyInfoData.getSySumPremium())));
  246. companySumData.add(djCompanyInfoData);
  247. //查询交三
  248. CompanyInfoData jsCompanyInfoData = new CompanyInfoData();
  249. companyQuery.setProductId("0330034002");
  250. List<CompanyInfoData> companyDataById = dataService.getCompanyDataById(companyQuery);
  251. companyDataById.forEach(item -> {
  252. item.setInsurance("交三");
  253. Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
  254. item.setRatio(d.equals(Double.NaN) ? "0.00%" : String.format("%.2f%%", d));
  255. jsCompanyInfoData.setJqSumPremium(
  256. String.valueOf(Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) + Double.parseDouble(item.getJqSumPremium())));
  257. jsCompanyInfoData.setSySumPremium(
  258. String.valueOf(Double.parseDouble(jsCompanyInfoData.getSySumPremium()) + Double.parseDouble(item.getSySumPremium())));
  259. jsCompanyInfoData.setTaxSumPremium(
  260. String.valueOf(Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(item.getTaxSumPremium())));
  261. jsCompanyInfoData.setSumOrderNum(
  262. jsCompanyInfoData.getSumOrderNum() + item.getSumOrderNum());
  263. });
  264. jsCompanyInfoData.setRatio(
  265. String.format("%.2f%%",
  266. Double.parseDouble(jsCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(jsCompanyInfoData.getJqSumPremium()) * 100)
  267. );
  268. companySumData.addAll(companyDataById);
  269. //小计
  270. jsCompanyInfoData.setInsurance("交三");
  271. jsCompanyInfoData.setJqPremium("小计");
  272. jsCompanyInfoData.setTaxSumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getTaxSumPremium())));
  273. jsCompanyInfoData.setJqSumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getJqSumPremium())));
  274. jsCompanyInfoData.setSySumPremium(String.format("%.2f", Double.parseDouble(jsCompanyInfoData.getSySumPremium())));
  275. companySumData.add(jsCompanyInfoData);
  276. //合计
  277. CompanyInfoData sumCompanyInfoData = new CompanyInfoData();
  278. sumCompanyInfoData.setInsurance("合计");
  279. sumCompanyInfoData.setSumOrderNum(djCompanyInfoData.getSumOrderNum() + jsCompanyInfoData.getSumOrderNum());
  280. sumCompanyInfoData.setTaxSumPremium(String.format("%.2f",
  281. Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(jsCompanyInfoData.getTaxSumPremium())));
  282. sumCompanyInfoData.setJqSumPremium(String.format("%.2f",
  283. Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(jsCompanyInfoData.getJqSumPremium())));
  284. sumCompanyInfoData.setSySumPremium(String.format("%.2f",
  285. Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(jsCompanyInfoData.getSySumPremium())));
  286. sumCompanyInfoData.setRatio(
  287. String.format("%.2f%%",
  288. Double.parseDouble(sumCompanyInfoData.getTaxSumPremium()) / Double.parseDouble(sumCompanyInfoData.getJqSumPremium()) * 100)
  289. );
  290. companySumData.add(sumCompanyInfoData);
  291. return HttpResult.ok(companySumData);
  292. }
  293. @PostMapping("listData")
  294. public HttpResult listData(@RequestBody DataQuery dataQuery) {
  295. DecimalFormat decimalFormat = new DecimalFormat("#0.00");
  296. if ((dataQuery.getStartDate() == null || "".equals(dataQuery.getStartDate())) && (dataQuery.getEndDate() == null || "".equals(dataQuery.getEndDate()))) {
  297. // 获取当前日期
  298. LocalDate currentDate = LocalDate.now();
  299. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  300. dataQuery.setStartDate(currentDate.format(formatter) + " 00:00:00");
  301. dataQuery.setEndDate(currentDate.format(formatter) + " 23:59:59");
  302. }
  303. List<CompanyData> sumData = dataService.getCompanyOrderStatusData(dataQuery);
  304. List<ListData> listDatas = new ArrayList<>();
  305. ListData sumListData = new ListData();
  306. sumListData.setQuoting("0");
  307. sumListData.setUninsured("0");
  308. sumListData.setInsured("0");
  309. sumListData.setUnderwrited("0");
  310. sumListData.setUnderwriteReturn("0");
  311. sumListData.setJqPremium("0");
  312. sumListData.setSyPremium("0");
  313. sumListData.setTaxPremium("0");
  314. sumListData.setSumPremium("0");
  315. sumData.forEach(item -> {
  316. ListData listData = new ListData();
  317. listData.setInsuranceCompany(item.getCompanyName());
  318. listData.setInsuranceCompanyId(item.getCompanyId());
  319. Optional<OrderStatusData> first =
  320. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst();
  321. if (!first.isPresent()) {
  322. listData.setJqPremium("0");
  323. listData.setSyPremium("0");
  324. listData.setTaxPremium("0");
  325. listData.setSumPremium("0");
  326. } else {
  327. listData.setJqPremium(first.get().getJqPremium());
  328. sumListData.setJqPremium(decimalFormat.format(Float.parseFloat(sumListData.getJqPremium()) + Float.parseFloat(first.get().getJqPremium())));
  329. listData.setSyPremium(first.get().getSyPremium());
  330. sumListData.setSyPremium(decimalFormat.format(Float.parseFloat(sumListData.getSyPremium()) + Float.parseFloat(first.get().getSyPremium())));
  331. listData.setTaxPremium(first.get().getTaxPremium());
  332. sumListData.setTaxPremium(decimalFormat.format(Float.parseFloat(sumListData.getTaxPremium()) + Float.parseFloat(first.get().getTaxPremium())));
  333. listData.setSumPremium(first.get().getSumPremium());
  334. sumListData.setSumPremium(decimalFormat.format(Float.parseFloat(sumListData.getSumPremium()) + Float.parseFloat(first.get().getSumPremium())));
  335. }
  336. Optional<OrderStatusData> first1 =
  337. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("0")).findFirst();
  338. if (!first1.isPresent()) {
  339. listData.setQuoting("0");
  340. } else {
  341. listData.setQuoting(first1.get().getSumOrderNum().toString());
  342. sumListData.setQuoting(String.valueOf(Integer.parseInt(sumListData.getQuoting()) + first1.get().getSumOrderNum()));
  343. }
  344. Optional<OrderStatusData> first2 =
  345. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("1")).findFirst();
  346. if (!first2.isPresent()) {
  347. listData.setUninsured("0");
  348. } else {
  349. listData.setUninsured(first2.get().getSumOrderNum().toString());
  350. sumListData.setUninsured(String.valueOf(Integer.parseInt(sumListData.getUninsured()) + first2.get().getSumOrderNum()));
  351. }
  352. Optional<OrderStatusData> first3 =
  353. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("2")).findFirst();
  354. if (!first3.isPresent()) {
  355. listData.setUnderwrited("0");
  356. } else {
  357. listData.setUnderwrited(first3.get().getSumOrderNum().toString());
  358. sumListData.setUnderwrited(String.valueOf(Integer.parseInt(sumListData.getUnderwrited()) + first3.get().getSumOrderNum()));
  359. }
  360. Optional<OrderStatusData> first4 =
  361. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("3")).findFirst();
  362. if (!first4.isPresent()) {
  363. listData.setInsured("0");
  364. } else {
  365. listData.setInsured(first4.get().getSumOrderNum().toString());
  366. sumListData.setInsured(String.valueOf(Integer.parseInt(sumListData.getInsured()) + first4.get().getSumOrderNum()));
  367. }
  368. Optional<OrderStatusData> first5 =
  369. item.getOrderStatusData().stream().filter(x -> x.getOrderStatusCode().equals("4")).findFirst();
  370. if (!first5.isPresent()) {
  371. listData.setUnderwriteReturn("0");
  372. } else {
  373. listData.setUnderwriteReturn(first5.get().getSumOrderNum().toString());
  374. sumListData.setUnderwriteReturn(String.valueOf(Integer.parseInt(sumListData.getUnderwriteReturn()) + first5.get().getSumOrderNum()));
  375. }
  376. listDatas.add(listData);
  377. });
  378. sumListData.setInsuranceCompany("合计");
  379. sumListData.setJqPremium(decimalFormat.format(Float.parseFloat(sumListData.getJqPremium())));
  380. sumListData.setSyPremium(decimalFormat.format(Float.parseFloat(sumListData.getSyPremium())));
  381. sumListData.setTaxPremium(decimalFormat.format(Float.parseFloat(sumListData.getTaxPremium())));
  382. sumListData.setSumPremium(decimalFormat.format(Float.parseFloat(sumListData.getSumPremium())));
  383. listDatas.add(sumListData);
  384. return HttpResult.ok(listDatas);
  385. }
  386. @ApiOperation(value = "保险公司经营情况表")
  387. @PostMapping("insuranceCompanyBusinessSituation")
  388. public HttpResult<Object> insuranceCompanyBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){
  389. List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituations = dataService.insuranceCompanyBusinessSituation(insuranceCompanyBusinessSituationQuery);
  390. return HttpResult.ok(insuranceCompanyBusinessSituations);
  391. }
  392. @ApiOperation(value = "渠道经营情况表")
  393. @PostMapping("channelBusinessSituation")
  394. public HttpResult<Object> channelBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){
  395. List<InsuranceCompanyBusinessSituation> channelBusinessSituation = dataService.channelBusinessSituation(insuranceCompanyBusinessSituationQuery);
  396. return HttpResult.ok(channelBusinessSituation);
  397. }
  398. @ApiOperation(value = "渠道结算情况表")
  399. @PostMapping("channelSettlement")
  400. public HttpResult<Object> ChannelSettlementSituation(@RequestBody ChannelSettlementsQuery channelSettlementsQuery){
  401. List<ChannelSettlements> channelSettlements = dataService.channelSettlement(channelSettlementsQuery);
  402. return HttpResult.ok(channelSettlements);
  403. }
  404. @ApiOperation(value = "保险公司结算情况表")
  405. @PostMapping("insuranceCompanySettlement")
  406. public HttpResult<Object> insuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery){
  407. List<InvInsuranceCompanySettlements> invInsuranceCompanySettlements = dataService.insuranceCompanySettlement(invInsuranceCompanySettlementsQuery);
  408. return HttpResult.ok(invInsuranceCompanySettlements);
  409. }
  410. @ApiOperation(value = "更新保险公司结算情况表")
  411. @PostMapping("updateInsuranceCompanySettlement")
  412. public HttpResult<Object> updateInsuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlements invInsuranceCompanySettlements){
  413. return dataService.updateInsuranceCompanySettlement(invInsuranceCompanySettlements) ?
  414. HttpResult.ok("更新成功") : HttpResult.error("更新失败");
  415. }
  416. }