Jelajahi Sumber

数据大屏接口完善

785834757 2 tahun lalu
induk
melakukan
53e100de11

+ 103 - 10
src/main/java/com/ydtech/modules/largescreen/controller/DataController.java

@@ -4,10 +4,8 @@ package com.ydtech.modules.largescreen.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.largescreen.model.AgreementData;
-import com.ydtech.modules.largescreen.model.MapData;
-import com.ydtech.modules.largescreen.model.OrderStatusData;
-import com.ydtech.modules.largescreen.model.ToDayData;
+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;
@@ -32,8 +30,8 @@ public class DataController {
      * @param dataQuery
      * @return
      */
-    @PostMapping("companySumData")
-    public HttpResult sumData(@RequestBody(required=false) DataQuery dataQuery) {
+    @PostMapping("companySumDataChart")
+    public HttpResult companySumDataChart(@RequestBody(required=false) DataQuery dataQuery) {
         List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
         //转换格式
         int rows = 6;
@@ -51,6 +49,34 @@ public class DataController {
         return HttpResult.ok(result);
     }
 
+    @PostMapping("companySumData")
+    public HttpResult companySumData(@RequestBody(required=false) DataQuery dataQuery) {
+        List<AgreementData> sumData = dataService.getCompanySumData(dataQuery);
+        String[][] result = new String[sumData.size()][7];
+//        int index = (int)Math.ceil(sumData.size()/6);
+//        int rows = 6;
+//        AgreementData[][] result = new AgreementData[index][rows];
+//        for(int i=0;i<index;i++){
+//
+//            int len = i==0 ? 6 : sumData.size() - ((i) * 6);
+//            for(int k=0;k<len;k++){
+//                result[i][k] = sumData.get(i*6+k);
+//            }
+//        }
+        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
@@ -100,12 +126,13 @@ public class DataController {
      * 获取当天已承包数据
      */
     @PostMapping("todayData")
-    public HttpResult todayData(){
-        DataQuery dataQuery = new DataQuery();
-        dataQuery.startDate = LocalDate.now().toString() + " 00:00:00";
-        dataQuery.endDate = LocalDate.now().toString() + " 23:59:59";
+    public HttpResult todayData(@RequestBody DataQuery dataQuery){
         dataQuery.orderStatus = "3";
         List<OrderStatusData> orderStatusData = dataService.getOrderStatusData(dataQuery);
+        if(orderStatusData.size() == 0)
+        {
+            return HttpResult.error("当天无已承包数据");
+        }
         ToDayData toDayData = JSON.parseObject(JSON.toJSONString(orderStatusData.get(0)), ToDayData.class);
         toDayData.setCbOrderNum(toDayData.getSumOrderNum());
         Integer orderNumber = dataService.getOrderNumber(dataQuery);
@@ -122,4 +149,70 @@ public class DataController {
     public HttpResult companys(){
         return HttpResult.ok(dataService.getCompanys());
     }
+
+    @PostMapping("getCompanyDataById")
+    public HttpResult getCompanyDataById(@RequestBody CompanyQuery companyQuery){
+        //查询单交
+        companyQuery.setProductId("0330");
+        CompanyInfoData djCompanyInfoData = new CompanyInfoData();
+        List<CompanyInfoData> companySumData = dataService.getCompanyDataById(companyQuery);
+        companySumData.forEach(item->{
+            item.setInsurance("单交");
+            Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
+            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("小计");
+        companySumData.add(djCompanyInfoData);
+        //查询交三
+        CompanyInfoData jsCompanyInfoData = new CompanyInfoData();
+        companyQuery.setProductId("0330034002");
+        List<CompanyInfoData> companyDataById = dataService.getCompanyDataById(companyQuery);
+        companyDataById.forEach(item->{
+            item.setInsurance("交三");
+            Double d = Double.parseDouble(item.getTaxSumPremium()) / Double.parseDouble(item.getJqSumPremium()) * 100;
+            item.setRatio(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("小计");
+        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())));
+        companySumData.add(sumCompanyInfoData);
+        return HttpResult.ok(companySumData);
+    }
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/largescreen/dao/AgreementDataMapper.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.largescreen.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.largescreen.model.*;
+import com.ydtech.modules.largescreen.model.query.CompanyQuery;
 import com.ydtech.modules.largescreen.model.query.DataQuery;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -23,4 +24,6 @@ public interface AgreementDataMapper{
 
     List<Agreement> getAgreements();
 
+    List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery);
+
 }

+ 46 - 0
src/main/java/com/ydtech/modules/largescreen/model/CompanyInfoData.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.largescreen.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 已有协议的保险公司
+ */
+@Data
+public class CompanyInfoData {
+
+    @ApiModelProperty(value = "保险类型")
+    private String insurance;
+
+    @ApiModelProperty(value = "总订单数")
+    public Integer sumOrderNum;
+
+    @ApiModelProperty(value = "交强保费")
+    public String jqPremium;
+
+    @ApiModelProperty(value = "交强总保费")
+    public String jqSumPremium;
+
+    @ApiModelProperty(value = "商业总保费")
+    public String sySumPremium;
+
+    @ApiModelProperty(value = "车船税总费用")
+    public String taxSumPremium;
+
+    @ApiModelProperty(value = "占比")
+    public String ratio;
+
+    public CompanyInfoData(){
+        this.insurance = "";
+        this.sumOrderNum = 0;
+        this.jqPremium = "0";
+        this.jqSumPremium = "0";
+        this.sySumPremium = "0";
+        this.taxSumPremium = "0";
+        this.ratio = "0";
+    }
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/largescreen/model/query/CompanyQuery.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.largescreen.model.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "大屏 统计数据查询条件")
+public class CompanyQuery {
+
+    @ApiModelProperty(value = "公司Id")
+    public String companyId;
+
+    @ApiModelProperty(value = "产品id")
+    public String productId;
+
+    @ApiModelProperty(value = "起始日期")
+    public String startDate;
+
+    @ApiModelProperty(value = "结束日期")
+    public String endDate;
+}

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

@@ -1,9 +1,7 @@
 package com.ydtech.modules.largescreen.service;
 
-import com.ydtech.modules.largescreen.model.AgreementData;
-import com.ydtech.modules.largescreen.model.CompanyData;
-import com.ydtech.modules.largescreen.model.MapData;
-import com.ydtech.modules.largescreen.model.OrderStatusData;
+import com.ydtech.modules.largescreen.model.*;
+import com.ydtech.modules.largescreen.model.query.CompanyQuery;
 import com.ydtech.modules.largescreen.model.query.DataQuery;
 
 import java.util.List;
@@ -49,4 +47,6 @@ public interface IAgreementDataService {
      */
     List<CompanyData> getCompanys();
 
+    List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery);
+
 }

+ 16 - 10
src/main/java/com/ydtech/modules/largescreen/service/impl/AgreementDataService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.modules.largescreen.dao.AgreementDataMapper;
 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 org.springframework.beans.factory.annotation.Autowired;
@@ -81,19 +82,24 @@ public class AgreementDataService implements IAgreementDataService {
     @Override
     public List<CompanyData> getCompanys() {
         List<CompanyData> companys = agreementDataMapper.getCompanys();
-        List<Agreement> agreements = agreementDataMapper.getAgreements();
-        companys.forEach(companyData -> {
-            List<Agreement> agreements1 = new ArrayList<>();
-            agreements.forEach(agreement -> {
-                if(agreement.getCompanyId().equals(companyData.getCompanyId())){
-                    agreements1.add(agreement);
-                }
-            });
-            companyData.setAgreementList(agreements1);
-        });
+//        List<Agreement> agreements = agreementDataMapper.getAgreements();
+//        companys.forEach(companyData -> {
+//            List<Agreement> agreements1 = new ArrayList<>();
+//            agreements.forEach(agreement -> {
+//                if(agreement.getCompanyId().equals(companyData.getCompanyId())){
+//                    agreements1.add(agreement);
+//                }
+//            });
+//            companyData.setAgreementList(agreements1);
+//        });
         return companys;
     }
 
+    @Override
+    public List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery) {
+        return agreementDataMapper.getCompanyDataById(companyQuery);
+    }
+
 
     //获取一周内的日期
     public static List<String> getWeekDate(){

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

@@ -15,9 +15,10 @@
             ptl_agreement pa
                 LEFT JOIN
             ins_area_company iac on iac.agreement_id = pa.id
-            <if test="orderStatus != null and orderStatus != ''">
-                and iac.orderstatus = #{orderStatus}
-            </if>
+<!--            <if test="orderStatus != null and orderStatus != ''">-->
+<!--                and iac.orderstatus = #{orderStatus}-->
+<!--            </if>-->
+            and iac.orderstatus = 3
             <if test="startDate != null and startDate != ''">
                 and iac.createtime BETWEEN #{startDate} and #{endDate}
             </if>
@@ -115,4 +116,29 @@
             ptl_agreement
     </select>
 
+    <select id="getCompanyDataById" resultType="com.ydtech.modules.largescreen.model.CompanyInfoData">
+        SELECT
+            jqpremium,
+            COALESCE ( COUNT( iac.id ), 0 ) AS sumOrderNum ,
+            COALESCE ( SUM( jqpremium ), 0 ) AS jqSumPremium,
+            COALESCE ( SUM( sypremium ), 0 ) AS sySumPremium,
+            COALESCE ( SUM( taxamount ), 0 ) AS taxSumPremium
+
+        FROM
+            ins_orders io
+                left join
+            ins_area_company iac on iac.orderno = io.orderno and iac.orderstatus = 3
+            <if test="startDate != null and startDate != ''">
+                and iac.createtime BETWEEN #{startDate} and #{endDate}
+            </if>
+        WHERE
+            io.company_id = #{companyId}
+          AND
+            productid= #{productId}
+        GROUP BY
+            jqpremium
+        ORDER BY
+            jqpremium desc
+    </select>
+
 </mapper>