Răsfoiți Sursa

数据大屏接口完善

785834757 2 ani în urmă
părinte
comite
0d7e743e30

+ 92 - 8
src/main/java/com/ydtech/modules/largescreen/controller/DataController.java

@@ -9,11 +9,13 @@ 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.List;
 
 @Api(tags = "数据大屏")
@@ -84,8 +86,39 @@ public class DataController {
      */
     @PostMapping("orderStatusData")
     public HttpResult orderStatusData(@RequestBody(required=false) DataQuery dataQuery) {
-        List<OrderStatusData> sumData = dataService.getOrderStatusData(dataQuery);
-        return HttpResult.ok(sumData);
+        LocalDate currentDate = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String formattedDate = currentDate.format(formatter);
+        dataQuery.setStartDate(formattedDate + " 00:00:00");
+        dataQuery.setEndDate(formattedDate+ " 23:59:59");
+        List<CompanyData> 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> 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());
+        }
     }
 
     /**
@@ -122,12 +155,54 @@ public class DataController {
         return HttpResult.ok(result);
     }
 
+    /**
+     * 获取一月内的数据
+     * @return
+     */
+    @PostMapping("monthData")
+    public HttpResult monthData(){
+        List<OrderStatusData> 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<OrderStatusData> 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.orderStatus = "3";
+        dataQuery.setOrderStatus("3");
         List<OrderStatusData> orderStatusData = dataService.getOrderStatusData(dataQuery);
         if(orderStatusData.size() == 0)
         {
@@ -141,6 +216,8 @@ public class DataController {
     }
 
 
+
+
     /**
      * 获取公司数据
      * @return
@@ -159,7 +236,8 @@ public class DataController {
         companySumData.forEach(item->{
             item.setInsurance("单交");
             Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
-            item.setRatio(String.format("%.2f%%",d));
+            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(
@@ -176,6 +254,9 @@ public class DataController {
         //小计
         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();
@@ -184,7 +265,7 @@ public class DataController {
         companyDataById.forEach(item->{
             item.setInsurance("交三");
             Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
-            item.setRatio(String.format("%.2f%%",d));
+            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(
@@ -202,15 +283,18 @@ public class DataController {
         //小计
         jsCompanyInfoData.setInsurance("交三");
         jsCompanyInfoData.setJqPremium("小计");
+        jsCompanyInfoData.setTaxSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getTaxSumPremium())));
+        jsCompanyInfoData.setJqSumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getJqSumPremium())));
+        jsCompanyInfoData.setSySumPremium(String.format("%.2f",Double.parseDouble(djCompanyInfoData.getSySumPremium())));
         companySumData.add(jsCompanyInfoData);
 
         //合计
         CompanyInfoData sumCompanyInfoData = new CompanyInfoData();
         sumCompanyInfoData.setInsurance("合计");
         sumCompanyInfoData.setSumOrderNum(djCompanyInfoData.getSumOrderNum() + jsCompanyInfoData.getSumOrderNum());
-        sumCompanyInfoData.setTaxSumPremium(String.valueOf(Double.parseDouble(djCompanyInfoData.getTaxSumPremium()) + Double.parseDouble(jsCompanyInfoData.getTaxSumPremium())));
-        sumCompanyInfoData.setJqSumPremium(String.valueOf(Double.parseDouble(djCompanyInfoData.getJqSumPremium()) + Double.parseDouble(jsCompanyInfoData.getJqSumPremium())));
-        sumCompanyInfoData.setSySumPremium(String.valueOf(Double.parseDouble(djCompanyInfoData.getSySumPremium()) + Double.parseDouble(jsCompanyInfoData.getSySumPremium())));
+        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())));
         companySumData.add(sumCompanyInfoData);
         return HttpResult.ok(companySumData);
     }

+ 5 - 3
src/main/java/com/ydtech/modules/largescreen/model/CompanyData.java

@@ -11,14 +11,16 @@ import java.util.List;
 @Data
 public class CompanyData {
     @ApiModelProperty(value = "保险公司id")
-    public String companyId;
+    private String companyId;
 
     @ApiModelProperty(value = "保险公司名称")
-    public String companyName;
+    private String companyName;
 
 
     @ApiModelProperty(value = "协议列表")
-    public List<Agreement> agreementList;
+    private List<Agreement> agreementList;
 
+    @ApiModelProperty(value = "状态数据")
+    private List<OrderStatusData> orderStatusData;
 
 }

+ 9 - 0
src/main/java/com/ydtech/modules/largescreen/model/OrderStatusData.java

@@ -31,4 +31,13 @@ public class OrderStatusData {
 
     @ApiModelProperty(value = "日期")
     public String date;
+
+    public OrderStatusData() {
+        this.sumOrderNum = 0;
+        this.sumPremium = "0";
+        this.jqPremium = "0";
+        this.syPremium = "0";
+        this.taxPremium = "0";
+
+    }
 }

+ 6 - 3
src/main/java/com/ydtech/modules/largescreen/model/query/DataQuery.java

@@ -9,11 +9,14 @@ import lombok.Data;
 public class DataQuery {
 
     @ApiModelProperty(value = "起始日期")
-    public String startDate;
+    private String startDate;
 
     @ApiModelProperty(value = "结束日期")
-    public String endDate;
+    private String endDate;
 
     @ApiModelProperty(value = "订单状态")
-    public String orderStatus;
+    private String orderStatus;
+
+    @ApiModelProperty(value = "保险公司")
+    private String companyId;
 }

+ 5 - 0
src/main/java/com/ydtech/modules/largescreen/service/IAgreementDataService.java

@@ -21,6 +21,7 @@ public interface IAgreementDataService {
      */
     List<OrderStatusData> getOrderStatusData(DataQuery dataQuery);
 
+    List<CompanyData> getCompanyOrderStatusData(DataQuery dataQuery);
     /**
      * 获取地图数据
      * @param dataQuery
@@ -41,6 +42,10 @@ public interface IAgreementDataService {
      */
     List<OrderStatusData> getWeekData();
 
+
+    List<OrderStatusData> getMonthData();
+
+    List<OrderStatusData> getYearData();
     /**
      * 获取保险公司
      * @return

+ 125 - 3
src/main/java/com/ydtech/modules/largescreen/service/impl/AgreementDataService.java

@@ -12,7 +12,9 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,6 +42,28 @@ public class AgreementDataService implements IAgreementDataService {
         return newOrderStatusData;
     }
 
+
+    @Override
+    public List<CompanyData> getCompanyOrderStatusData(DataQuery dataQuery) {
+        //获取有协议的保险公司
+        List<CompanyData> companys = agreementDataMapper.getCompanys();
+        companys.forEach(item->{
+            dataQuery.setCompanyId(item.getCompanyId());
+            List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
+            List<OrderStatusData> newOrderStatusData = new ArrayList<>();
+            orderStatusData.forEach(item1 -> {
+                InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.matchKey(item1.getOrderStatusCode());
+                if (insOrderStatusEnum != null) {
+                    item1.setOrderStatusName(insOrderStatusEnum.getDesc());
+                    newOrderStatusData.add(item1);
+                }
+            });
+            item.setOrderStatusData(newOrderStatusData);
+        });
+
+        return companys;
+    }
+
     @Override
     public List<MapData> getMapData(DataQuery dataQuery) {
         return agreementDataMapper.getMapData(dataQuery);
@@ -61,9 +85,58 @@ public class AgreementDataService implements IAgreementDataService {
         List<OrderStatusData> resultList = new ArrayList<>();
         weekDate.forEach(date -> {
             DataQuery dataQuery = new DataQuery();
-            dataQuery.startDate = date + " 00:00:00";
-            dataQuery.endDate = date + " 23:59:59";
-            dataQuery.orderStatus = "3";
+            dataQuery.setStartDate(date + " 00:00:00");
+            dataQuery.setEndDate(date + " 23:59:59");
+            dataQuery.setOrderStatus("3");
+            List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
+            if(orderStatusData.isEmpty()){
+                OrderStatusData orderStatusData1 = new OrderStatusData();
+                orderStatusData1.setOrderStatusName("已完成");
+                orderStatusData1.setOrderStatusCode("3");
+                orderStatusData1.setDate(date);
+                orderStatusData.add(orderStatusData1);
+            }else{
+                orderStatusData.get(0).setDate(date);
+            }
+            resultList.addAll(orderStatusData);
+        });
+        return resultList;
+    }
+
+    @Override
+    public List<OrderStatusData> getMonthData() {
+        List<String> monthDate = this.getMonthDate();
+        List<OrderStatusData> resultList = new ArrayList<>();
+        monthDate.forEach(date -> {
+            DataQuery dataQuery = new DataQuery();
+            dataQuery.setStartDate(date + " 00:00:00");
+            dataQuery.setEndDate(date + " 23:59:59");
+            dataQuery.setOrderStatus("3");
+            List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
+            if(orderStatusData.isEmpty()){
+                OrderStatusData orderStatusData1 = new OrderStatusData();
+                orderStatusData1.setOrderStatusName("已完成");
+                orderStatusData1.setOrderStatusCode("3");
+                orderStatusData1.setDate(date);
+                orderStatusData.add(orderStatusData1);
+            }else{
+                orderStatusData.get(0).setDate(date);
+            }
+            resultList.addAll(orderStatusData);
+        });
+        return resultList;
+    }
+
+    @Override
+    public List<OrderStatusData> getYearData() {
+        List<String> yearDate = this.getYearDate();
+        List<OrderStatusData> resultList = new ArrayList<>();
+        yearDate.forEach(date -> {
+            DataQuery dataQuery = new DataQuery();
+            dataQuery.setStartDate(date + "-01 00:00:00");
+            YearMonth yearMonth = YearMonth.parse(date, DateTimeFormatter.ofPattern("yyyy-MM"));
+            dataQuery.setEndDate(date + "-" + yearMonth.lengthOfMonth() +" 23:59:59");
+            dataQuery.setOrderStatus("3");
             List<OrderStatusData> orderStatusData = agreementDataMapper.getOrderStatusData(dataQuery);
             if(orderStatusData.isEmpty()){
                 OrderStatusData orderStatusData1 = new OrderStatusData();
@@ -73,6 +146,7 @@ public class AgreementDataService implements IAgreementDataService {
                 orderStatusData.add(orderStatusData1);
             }else{
                 orderStatusData.get(0).setDate(date);
+                orderStatusData.get(0).setOrderStatusName(date);
             }
             resultList.addAll(orderStatusData);
         });
@@ -122,4 +196,52 @@ public class AgreementDataService implements IAgreementDataService {
         list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         return list;
     }
+
+    //获取一个月内的日期
+    public static List<String> getMonthDate(){
+        List<String> list = new ArrayList<>();
+        //获取一周内的起始日期
+        //获取当前日期
+        LocalDate currentDate = LocalDate.now();
+
+        // 获取前一周的起始日期
+        LocalDate oneWeekAgo = currentDate.minusMonths(1);
+        // 包括今天 去除1天
+        oneWeekAgo = oneWeekAgo.plusDays(1);
+        // 输出前一周每天的起始日期
+        int len = Integer.parseInt(String.valueOf(ChronoUnit.DAYS.between(oneWeekAgo, currentDate)));
+        for (int i = 0; i < len; i++) {
+            // 获取每天的起始日期时间
+            LocalDateTime startOfDay = oneWeekAgo.atStartOfDay();
+            list.add(startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            oneWeekAgo = oneWeekAgo.plusDays(1);
+        }
+        list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        return list;
+    }
+
+    //获取一年内的日期
+    public static List<String> getYearDate(){
+        List<String> list = new ArrayList<>();
+        //获取一周内的起始日期
+        //获取当前日期
+        LocalDate currentDate = LocalDate.now();
+
+        // 获取前一周的起始日期
+        LocalDate oneWeekAgo = currentDate.minusYears(1);
+        // 包括今天 去除1天
+        oneWeekAgo = oneWeekAgo.plusDays(1);
+        // 输出前一周每天的起始日期
+        int len = Integer.parseInt(String.valueOf(ChronoUnit.MONTHS.between(oneWeekAgo, currentDate)));
+        for (int i = 0; i < len; i++) {
+            // 获取每天的起始日期时间
+            oneWeekAgo = oneWeekAgo.plusMonths(1);
+            LocalDateTime startOfDay = oneWeekAgo.atStartOfDay();
+            list.add(startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM")));
+
+        }
+        list.add(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM")));
+        return list;
+    }
+
 }

+ 6 - 3
src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml

@@ -9,7 +9,7 @@
             COALESCE(SUM(jqpremium), 0) AS jqPremium,
             COALESCE(SUM(sypremium), 0) AS syPremium,
             COALESCE(SUM(taxamount), 0) AS taxPremium,
-            COALESCE(SUM(sumpremium), 0) AS sumPremium,
+            COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
             COALESCE(COUNT(iac.id), 0) as sumOrderNum
         FROM
             ptl_agreement pa
@@ -34,7 +34,7 @@
             COALESCE(SUM(jqpremium), 0) AS jqPremium,
             COALESCE(SUM(sypremium), 0) AS syPremium,
             COALESCE(SUM(taxamount), 0) AS taxPremium,
-            COALESCE(SUM(sumpremium), 0) AS sumPremium,
+            COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
             COALESCE(COUNT(iac.id), 0) as sumOrderNum
         FROM
             ins_area_company iac
@@ -46,6 +46,9 @@
         <if test="startDate != null and startDate != ''">
             and iac.createtime BETWEEN #{startDate} and #{endDate}
         </if>
+        <if test="companyId != null and companyId != ''">
+            and iac.company_id = #{companyId}
+        </if>
         GROUP BY
             iac.orderstatus
         order by
@@ -60,7 +63,7 @@
             COALESCE(SUM(jqpremium), 0) AS jqPremium,
             COALESCE(SUM(sypremium), 0) AS syPremium,
             COALESCE(SUM(taxamount), 0) AS taxPremium,
-            COALESCE(SUM(sumpremium), 0) AS sumPremium,
+            COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
             COALESCE(COUNT(iac.id), 0) as sumOrderNum
         FROM
             sys_dept sd