Преглед изворни кода

大屏 应收应付统计接口 保险公司列表查询 权限放开

785834757 пре 2 година
родитељ
комит
b03d255d60

+ 2 - 0
src/main/java/com/ydtech/components/TokenInterceptor.java

@@ -66,6 +66,8 @@ public class TokenInterceptor {
 
         // 数据大屏接口
         notMatchList.add("/screen/data/**");
+        // 保险公司列表
+        notMatchList.add("/esmInsCompany/gainTopList");
 
         return new SaInterceptor(handler -> {
             // 指定一条 match 规则

+ 5 - 0
src/main/java/com/ydtech/config/SwaggerConfig.java

@@ -86,6 +86,11 @@ public class SwaggerConfig {
         return buildDocket("demo","示例演示");
     }
 
+    @Bean(value = "largescreenApi")
+    @Order(value = 10)
+    public Docket largescreenApi() {
+        return buildDocket("largescreen","大屏接口");
+    }
 
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()

+ 36 - 2
src/main/java/com/ydtech/modules/largescreen/controller/DataController.java

@@ -4,10 +4,10 @@ package com.ydtech.modules.largescreen.controller;
 import com.alibaba.fastjson.JSON;
 import com.ydtech.core.page.HttpResult;
 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.model.query.*;
 import com.ydtech.modules.largescreen.service.IAgreementDataService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -397,5 +397,39 @@ public class DataController {
         return HttpResult.ok(listDatas);
     }
 
+    @ApiOperation(value = "保险公司经营情况表")
+    @PostMapping("insuranceCompanyBusinessSituation")
+    public HttpResult<Object> insuranceCompanyBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){
+        List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituations = dataService.insuranceCompanyBusinessSituation(insuranceCompanyBusinessSituationQuery);
+        return HttpResult.ok(insuranceCompanyBusinessSituations);
+    }
+
+    @ApiOperation(value = "渠道经营情况表")
+    @PostMapping("channelBusinessSituation")
+    public HttpResult<Object> channelBusinessSituation(@RequestBody InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery){
+        List<InsuranceCompanyBusinessSituation> channelBusinessSituation = dataService.channelBusinessSituation(insuranceCompanyBusinessSituationQuery);
+        return HttpResult.ok(channelBusinessSituation);
+    }
+
+    @ApiOperation(value = "渠道结算情况表")
+    @PostMapping("channelSettlement")
+    public HttpResult<Object> ChannelSettlementSituation(@RequestBody ChannelSettlementsQuery channelSettlementsQuery){
+        List<ChannelSettlements> channelSettlements = dataService.channelSettlement(channelSettlementsQuery);
+        return HttpResult.ok(channelSettlements);
+    }
+
+    @ApiOperation(value = "保险公司结算情况表")
+    @PostMapping("insuranceCompanySettlement")
+    public HttpResult<Object> insuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery){
+        List<InvInsuranceCompanySettlements> invInsuranceCompanySettlements = dataService.insuranceCompanySettlement(invInsuranceCompanySettlementsQuery);
+        return HttpResult.ok(invInsuranceCompanySettlements);
+    }
+
+    @ApiOperation(value = "更新保险公司结算情况表")
+    @PostMapping("updateInsuranceCompanySettlement")
+    public HttpResult<Object> updateInsuranceCompanySettlement(@RequestBody InvInsuranceCompanySettlements invInsuranceCompanySettlements){
+        return dataService.updateInsuranceCompanySettlement(invInsuranceCompanySettlements) ?
+                HttpResult.ok("更新成功") : HttpResult.error("更新失败");
+    }
 
 }

+ 9 - 2
src/main/java/com/ydtech/modules/largescreen/dao/AgreementDataMapper.java

@@ -2,11 +2,11 @@ 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 com.ydtech.modules.largescreen.model.query.*;
 import org.apache.ibatis.annotations.Mapper;
 
 
+import java.util.HashMap;
 import java.util.List;
 
 @Mapper
@@ -26,4 +26,11 @@ public interface AgreementDataMapper{
 
     List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery);
 
+    List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery);
+
+    List<InsuranceCompanyBusinessSituation> channelBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery);
+
+    List<ChannelSettlements> channelSettlement(ChannelSettlementsQuery channelSettlementsQuery);
+
+    List<InvInsuranceCompanySettlements> getTotalReceivableAmount(InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery);
 }

+ 96 - 2
src/main/java/com/ydtech/modules/largescreen/service/impl/AgreementDataService.java

@@ -1,14 +1,18 @@
 package com.ydtech.modules.largescreen.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.dao.InvInsuranceCompanySettlementsMapper;
 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.model.query.*;
 import com.ydtech.modules.largescreen.service.IAgreementDataService;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -23,6 +27,9 @@ public class AgreementDataService implements IAgreementDataService {
     @Autowired
     AgreementDataMapper agreementDataMapper;
 
+    @Autowired
+    InvInsuranceCompanySettlementsService invInsuranceCompanySettlementsService;
+
     @Override
     public List<AgreementData> getCompanySumData(DataQuery dataQuery) {
         return agreementDataMapper.getCompanySumData(dataQuery);
@@ -244,4 +251,91 @@ public class AgreementDataService implements IAgreementDataService {
         return list;
     }
 
+
+    public List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery) {
+        LocalDateTime currentDateTime = LocalDateTime.now();
+        String dateFormat = "yyyy-dd-MM";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
+        if(insuranceCompanyBusinessSituationQuery.getSignStartTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignStartTime())){
+            insuranceCompanyBusinessSituationQuery.setSignStartTime(currentDateTime.format(formatter) + " 00:00:00");
+        }
+        if(insuranceCompanyBusinessSituationQuery.getSignEndTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignEndTime())){
+            insuranceCompanyBusinessSituationQuery.setSignEndTime(currentDateTime.format(formatter) + " 23:59:59");
+        }
+        return agreementDataMapper.insuranceCompanyBusinessSituation(insuranceCompanyBusinessSituationQuery);
+    }
+
+    @Override
+    public List<InsuranceCompanyBusinessSituation> channelBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery) {
+        LocalDateTime currentDateTime = LocalDateTime.now();
+        String dateFormat = "yyyy-dd-MM";
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
+        if(insuranceCompanyBusinessSituationQuery.getSignStartTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignStartTime())){
+            insuranceCompanyBusinessSituationQuery.setSignStartTime(currentDateTime.format(formatter) + " 00:00:00");
+        }
+        if(insuranceCompanyBusinessSituationQuery.getSignEndTime() == null || "".equals(insuranceCompanyBusinessSituationQuery.getSignEndTime())){
+            insuranceCompanyBusinessSituationQuery.setSignEndTime(currentDateTime.format(formatter) + " 23:59:59");
+        }
+        return agreementDataMapper.channelBusinessSituation(insuranceCompanyBusinessSituationQuery);
+    }
+
+    @Override
+    public List<ChannelSettlements> channelSettlement(ChannelSettlementsQuery channelSettlementsQuery) {
+        List<ChannelSettlements> channelSettlements = agreementDataMapper.channelSettlement(channelSettlementsQuery);
+        return channelSettlements;
+    }
+
+    @Override
+    @Transactional
+    public List<InvInsuranceCompanySettlements> insuranceCompanySettlement(InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery) {
+        if(invInsuranceCompanySettlementsQuery.getDate() == null || invInsuranceCompanySettlementsQuery.getDate() == ""){
+            invInsuranceCompanySettlementsQuery.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM")));
+        }
+        YearMonth yearMonth = YearMonth.parse(invInsuranceCompanySettlementsQuery.getDate());
+        LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
+        invInsuranceCompanySettlementsQuery.setStartTime(invInsuranceCompanySettlementsQuery.getDate() + "-01");
+        invInsuranceCompanySettlementsQuery.setEndTime(lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        List<InvInsuranceCompanySettlements> totalReceivableAmount = agreementDataMapper.getTotalReceivableAmount(invInsuranceCompanySettlementsQuery);
+        InvInsuranceCompanySettlements invInsuranceCompanySettlements = new InvInsuranceCompanySettlements();
+        invInsuranceCompanySettlements.setDate(invInsuranceCompanySettlementsQuery.getDate());
+        invInsuranceCompanySettlements.setInsuranceId(invInsuranceCompanySettlementsQuery.getInsuranceId());
+        invInsuranceCompanySettlements.setInsuranceDept(invInsuranceCompanySettlementsQuery.getInsuranceDept());
+
+        List<InvInsuranceCompanySettlements> exist = invInsuranceCompanySettlementsService.isExist(invInsuranceCompanySettlements);
+        //将总数放到invInsuranceCompanySettlements 表中
+        totalReceivableAmount.forEach(amount->{
+            amount.setDate(invInsuranceCompanySettlementsQuery.getDate());
+            long count = exist.stream().filter(x -> x.getInsuranceId().equals(amount.getInsuranceId()) && x.getInsuranceDept().equals(amount.getInsuranceDept()) && x.getDate().equals(amount.getDate())).count();
+            if(count > 0){
+                InvInsuranceCompanySettlements invInsuranceCompanySettlement = exist.stream().filter(x -> x.getInsuranceId().equals(amount.getInsuranceId()) && x.getInsuranceDept().equals(amount.getInsuranceDept()) && x.getDate().equals(amount.getDate())).findFirst().get();
+                invInsuranceCompanySettlement.setAmountReceivable(amount.getAmountReceivable());
+                invInsuranceCompanySettlementsService.updateById(invInsuranceCompanySettlement);
+            }else{
+                amount.setId(IdGenerate.nextId());
+                invInsuranceCompanySettlementsService.save(amount);
+            }
+        });
+
+        //从 invInsuranceCompanySettlements 中查询数据
+        LambdaQueryWrapper<InvInsuranceCompanySettlements> queryWrapper = new LambdaQueryWrapper<InvInsuranceCompanySettlements>();
+        if(invInsuranceCompanySettlementsQuery.getInsuranceId() != null && invInsuranceCompanySettlementsQuery.getInsuranceId() != ""){
+            queryWrapper.eq(InvInsuranceCompanySettlements::getInsuranceId,invInsuranceCompanySettlementsQuery.getInsuranceId());
+        }
+        if(invInsuranceCompanySettlementsQuery.getInsuranceDept() != null && invInsuranceCompanySettlementsQuery.getInsuranceDept() != ""){
+            queryWrapper.eq(InvInsuranceCompanySettlements::getInsuranceDept,invInsuranceCompanySettlementsQuery.getInsuranceDept());
+        }
+        if(invInsuranceCompanySettlementsQuery.getDate() != null && invInsuranceCompanySettlementsQuery.getDate() != ""){
+            queryWrapper.eq(InvInsuranceCompanySettlements::getDate,invInsuranceCompanySettlementsQuery.getDate());
+        }
+        List<InvInsuranceCompanySettlements> list = invInsuranceCompanySettlementsService.list(queryWrapper);
+        return list;
+    }
+
+    @Override
+    public boolean updateInsuranceCompanySettlement(InvInsuranceCompanySettlements invInsuranceCompanySettlements) {
+        invInsuranceCompanySettlements.setAmountsOutstanding(invInsuranceCompanySettlements.getReconciliationOfAmountsDue().subtract(invInsuranceCompanySettlements.getAmountReceived()));
+        return invInsuranceCompanySettlementsService.updateById(invInsuranceCompanySettlements);
+    }
+
+
 }

+ 153 - 0
src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml

@@ -144,4 +144,157 @@
             jqpremium desc
     </select>
 
+    <select id="insuranceCompanyBusinessSituation" resultType="com.ydtech.modules.largescreen.model.InsuranceCompanyBusinessSituation">
+        SELECT
+            ivs.insurance_id,
+            ivs.insurance_name,
+            ivs.insurance_dept,
+            SUM(ivs.jq_premium) AS jq_premium,
+            SUM(ivs.sy_premium) AS sy_premium,
+            SUM(ivs.non_car_premium) AS non_car_premium,
+            SUM(ivs.jq_premium * ivs.jq_premium_ratio) AS jq_commission,
+            SUM(ivs.sy_premium * ivs.sy_premium_ratio) AS sy_commission,
+            SUM(ivs.non_car_premium * ivs.non_car_premium_ratio) AS non_car_commission,
+            SUM(ivs.jq_premium * ivs.jq_receivable_ratio) AS jq_receivable_commission,
+            SUM(ivs.sy_premium * ivs.sy_receivable_ratio) AS sy_receivable_commission,
+            SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio) AS non_car_receivable_commission,
+            SUM(COALESCE(iss.subsidy_amount, 0)) as subsidy_amount,
+            SUM(ivs.jq_premium * iss.compulsory_export_ratio) AS jq_compulsory_premium,
+            SUM(ivs.sy_premium * iss.commercial_export_ratio) AS sy_compulsory_premium,
+            SUM(ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_compulsory_premium,
+            SUM(ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) AS jq_profit,
+            SUM(ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) AS sy_profit,
+            SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_profit,
+            SUM(
+                        (ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) +
+                        (ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) +
+                        (ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) +
+                        iss.subsidy_amount
+            ) AS profit
+        FROM
+            inv_source ivs
+                LEFT JOIN
+            inv_settlement_source iss ON iss.licenseno = ivs.licenseno
+        WHERE
+            1=1
+            <if test="insuranceDept != null and insuranceDept != ''">
+                AND ivs.insurance_dept like ('%${insuranceDept}%')
+            </if>
+            <if test="signStartTime != null and signEndTime != ''">
+                and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
+            </if>
+            <if test="insuranceId != null and insuranceId != ''">
+                AND ivs.insurance_id = #{insuranceId}
+            </if>
+        GROUP BY
+            ivs.insurance_id,
+            ivs.insurance_name,
+            ivs.insurance_dept
+    </select>
+
+    <select id="channelBusinessSituation" resultType="com.ydtech.modules.largescreen.model.InsuranceCompanyBusinessSituation">
+        SELECT
+        ivs.insurance_id,
+        ivs.insurance_name,
+        ivs.insurance_dept,
+        iss.channel,
+        SUM(ivs.jq_premium) AS jq_premium,
+        SUM(ivs.sy_premium) AS sy_premium,
+        SUM(ivs.non_car_premium) AS non_car_premium,
+        SUM(ivs.jq_premium * ivs.jq_premium_ratio) AS jq_commission,
+        SUM(ivs.sy_premium * ivs.sy_premium_ratio) AS sy_commission,
+        SUM(ivs.non_car_premium * ivs.non_car_premium_ratio) AS non_car_commission,
+        SUM(ivs.jq_premium * ivs.jq_receivable_ratio) AS jq_receivable_commission,
+        SUM(ivs.sy_premium * ivs.sy_receivable_ratio) AS sy_receivable_commission,
+        SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio) AS non_car_receivable_commission,
+        SUM(COALESCE(iss.subsidy_amount, 0)) as subsidy_amount,
+        SUM(ivs.jq_premium * iss.compulsory_export_ratio) AS jq_compulsory_premium,
+        SUM(ivs.sy_premium * iss.commercial_export_ratio) AS sy_compulsory_premium,
+        SUM(ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_compulsory_premium,
+        SUM(ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) AS jq_profit,
+        SUM(ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) AS sy_profit,
+        SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_profit,
+        SUM(
+        (ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) +
+        (ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) +
+        (ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) +
+        iss.subsidy_amount
+        ) AS profit
+        FROM
+        inv_source ivs
+        LEFT JOIN
+        inv_settlement_source iss ON iss.licenseno = ivs.licenseno
+        WHERE
+        1=1
+        <if test="insuranceDept != null and insuranceDept != ''">
+            AND ivs.insurance_dept like ('%${insuranceDept}%')
+        </if>
+        <if test="signStartTime != null and signEndTime != ''">
+            and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
+        </if>
+        <if test="insuranceId != null and insuranceId != ''">
+            AND ivs.insurance_id = #{insuranceId}
+        </if>
+        <if test="channel != null and channel != ''">
+            AND iss.channel like ('%${channel}%')
+        </if>
+        GROUP BY
+        ivs.insurance_id,
+        ivs.insurance_name,
+        ivs.insurance_dept,
+        iss.channel
+    </select>
+
+
+    <select id="channelSettlement" resultType="com.ydtech.modules.largescreen.model.ChannelSettlements">
+        SELECT
+            ivs.insurance_id,
+            insurance_name,
+            insurance_dept,
+            SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN jq_premium * max_jq_receivable_ratio ELSE 0 END ) AS jq_receivable_commission,
+            SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN sy_premium * max_sy_receivable_ratio ELSE 0 END ) AS sy_receivable_commission,
+            SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN non_car_premium * max_non_car_receivable_ratio ELSE 0 END ) AS non_car_receivable_commission,
+            SUM( CASE WHEN clearing_state_over = 1 THEN ivs.jq_premium * iss.compulsory_export_ratio ELSE 0 END ) AS jq_compulsory_premium,
+            SUM( CASE WHEN clearing_state_over = 1 THEN ivs.sy_premium * iss.commercial_export_ratio ELSE 0 END ) AS sy_compulsory_premium,
+            SUM( CASE WHEN clearing_state_over = 1 THEN ivs.non_car_premium * iss.non_vehicle_export_ratio ELSE 0 END ) AS non_car_compulsory_premium,
+            SUM( CASE WHEN clearing_state_over = 0 THEN ivs.jq_premium * ivs.max_jq_receivable_ratio ELSE 0 END ) AS jq_profit,
+            SUM( CASE WHEN clearing_state_over = 0 THEN ivs.sy_premium * ivs.max_sy_receivable_ratio ELSE 0 END ) AS sy_profit,
+            SUM( CASE WHEN clearing_state_over = 0 THEN ivs.non_car_premium * ivs.max_non_car_receivable_ratio ELSE 0 END ) AS non_car_profit,
+            SUM( CASE WHEN clearing_state_over = 2 THEN ivs.jq_premium * ivs.max_jq_receivable_ratio ELSE 0 END ) AS jq_orphan_profit,
+            SUM( CASE WHEN clearing_state_over = 2 THEN ivs.sy_premium * ivs.max_sy_receivable_ratio ELSE 0 END ) AS sy_orphan_profit,
+            SUM( CASE WHEN clearing_state_over = 2 THEN ivs.non_car_premium * ivs.max_non_car_receivable_ratio ELSE 0 END ) AS non_car_orphan_profit
+        FROM
+            ( SELECT *, CASE WHEN DATEDIFF( NOW(), signing_time ) > 90 THEN 2 ELSE inv_source.clearing_state END AS clearing_state_over FROM inv_source ) ivs
+                LEFT JOIN inv_settlement_source iss ON ivs.licenseno = iss.licenseno
+        WHERE
+            1=1
+            <if test="insuranceDept != null and insuranceDept != ''">
+                AND ivs.insurance_dept like ('%${insuranceDept}%')
+            </if>
+            <if test="signStartTime != null and signEndTime != ''">
+                and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
+            </if>
+            <if test="insuranceId != null and insuranceId != ''">
+                AND ivs.insurance_id = #{insuranceId}
+            </if>
+        group by ivs.insurance_id,insurance_name,insurance_dept
+    </select>
+
+    <select id="getTotalReceivableAmount" resultType="com.ydtech.modules.largescreen.model.InvInsuranceCompanySettlements">
+        SELECT
+            insurance_id,
+            insurance_name,
+            insurance_dept,
+            sum( total_receivable_amount ) AS amount_receivable
+        FROM
+            inv_source
+        WHERE
+            signing_time BETWEEN #{startTime}
+                AND #{endTime}
+        GROUP BY
+            insurance_id,
+            insurance_name,
+            insurance_dept
+    </select>
+
 </mapper>