Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/test'

y 2 rokov pred
rodič
commit
1767d2bd84
19 zmenil súbory, kde vykonal 626 pridanie a 35 odobranie
  1. 2 0
      src/main/java/com/ydtech/components/TokenInterceptor.java
  2. 5 0
      src/main/java/com/ydtech/config/SwaggerConfig.java
  3. 0 21
      src/main/java/com/ydtech/modules/admin/constants/RoleConstants.java
  4. 12 3
      src/main/java/com/ydtech/modules/admin/controller/SysRoleController.java
  5. 3 3
      src/main/java/com/ydtech/modules/ins/controller/InsFeeDetailController.java
  6. 36 2
      src/main/java/com/ydtech/modules/largescreen/controller/DataController.java
  7. 9 2
      src/main/java/com/ydtech/modules/largescreen/dao/AgreementDataMapper.java
  8. 14 0
      src/main/java/com/ydtech/modules/largescreen/dao/InvInsuranceCompanySettlementsMapper.java
  9. 53 0
      src/main/java/com/ydtech/modules/largescreen/model/ChannelSettlements.java
  10. 74 0
      src/main/java/com/ydtech/modules/largescreen/model/InsuranceCompanyBusinessSituation.java
  11. 39 0
      src/main/java/com/ydtech/modules/largescreen/model/InvInsuranceCompanySettlements.java
  12. 20 0
      src/main/java/com/ydtech/modules/largescreen/model/query/ChannelSettlementsQuery.java
  13. 24 0
      src/main/java/com/ydtech/modules/largescreen/model/query/InsuranceCompanyBusinessSituationQuery.java
  14. 23 0
      src/main/java/com/ydtech/modules/largescreen/model/query/InvInsuranceCompanySettlementsQuery.java
  15. 35 2
      src/main/java/com/ydtech/modules/largescreen/service/IAgreementDataService.java
  16. 15 0
      src/main/java/com/ydtech/modules/largescreen/service/IInvInsuranceCompanySettlementsService.java
  17. 96 2
      src/main/java/com/ydtech/modules/largescreen/service/impl/AgreementDataService.java
  18. 153 0
      src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml
  19. 13 0
      src/main/resources/mapper/modules/largescreen/InvInsuranceCompanySettlementsMapper.xml

+ 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()

+ 0 - 21
src/main/java/com/ydtech/modules/admin/constants/RoleConstants.java

@@ -8,27 +8,6 @@ import lombok.Getter;
 @Getter
 public enum RoleConstants {
 
-//    R01("1", "超级管理员",""),
-//    R02("2", "初始用户权限",""),
-//    R17("17", "部长","42,22,19,17"),
-//    R18("18","门店长",""),
-//    R19("19","出单员",""),
-//    R20("20","代理人",""),
-//    R21("21","团队长",""),
-//    R22("22","后线人员",""),
-//    R23("23","运营总监",""),
-//    R24("24","系统管理员",""),
-//    R25("25","人员管理",""),
-//    R28("28","财务专员",""),
-//    R29("29","总公司最高管理权限",""),
-//    R30("30","核保部门",""),
-//    R31("31","总公司人事行政部",""),
-//    R32("32","财务部门",""),
-//    R38("38","运营管理权限",""),
-//    R39("39","测试角色",""),
-//    R40("40","cc",""),
-//    R42("42","机构管理员","42,22,19");
-
 
     R01("1","admin","15,16,17,18,22,23,24,25,28,29,30,31,32,38"),
     R02("2","初始用户","22"),

+ 12 - 3
src/main/java/com/ydtech/modules/admin/controller/SysRoleController.java

@@ -13,8 +13,11 @@ import com.ydtech.modules.admin.service.SysRoleService;
 import com.ydtech.modules.base.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.lang.reflect.Array;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -85,8 +88,14 @@ public class SysRoleController extends BaseController {
         LambdaQueryWrapper<SysRole> lqw = new LambdaQueryWrapper<>();
         //获取角色的配置信息
         RoleConstants roleConstants = RoleConstants.getRoleConstants(user.getRoleId());
-        if (!"".equals(roleConstants.getRoleIds())) {
-            lqw.in(SysRole::getId, roleConstants.getRoleIds().split(","));
+
+        if (!user.getId().equals("admin")) {
+            if(ObjectUtils.isEmpty(roleConstants)){
+                lqw.eq(SysRole::getId, RoleConstants.R22.getCode());
+            }else if (!"".equals(roleConstants.getRoleIds())) {
+                String[] split = roleConstants.getRoleIds().split(",");
+                lqw.in(SysRole::getId, Arrays.asList(split));
+            }
         }
 
         lqw.eq(SysRole::getDelFlag, "0");
@@ -105,7 +114,7 @@ public class SysRoleController extends BaseController {
     @PostMapping(value = "/saveRoleMenus")
     public HttpResult saveRoleMenus(@RequestBody List<SysRoleMenu> records) {
 
-        if (null == records || records.size() < 1) {
+        if (null == records || records.isEmpty()) {
             return HttpResult.error("参数空");
         }
         SysRole sysRole = sysRoleService.getById(records.get(0).getRoleId());

+ 3 - 3
src/main/java/com/ydtech/modules/ins/controller/InsFeeDetailController.java

@@ -335,7 +335,7 @@ public class InsFeeDetailController extends BaseController {
             array.add(riskCode);
         }
         if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
-            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between DATE_FORMAT(?, '%Y-%m-%d') and DATE_FORMAT(?, '%Y-%m-%d')");
             array.add(startdate);
             array.add(enddate);
         }
@@ -455,7 +455,7 @@ public class InsFeeDetailController extends BaseController {
             array.add(riskCode);
         }
         if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
-            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between DATE_FORMAT(?, '%Y-%m-%d') and DATE_FORMAT(?, '%Y-%m-%d')");
             array.add(startdate);
             array.add(enddate);
         }
@@ -537,7 +537,7 @@ public class InsFeeDetailController extends BaseController {
         }
 
         if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
-            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between DATE_FORMAT(?, '%Y-%m-%d') and DATE_FORMAT(?, '%Y-%m-%d')");
             array.add(startdate);
             array.add(enddate);
         }

+ 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);
 }

+ 14 - 0
src/main/java/com/ydtech/modules/largescreen/dao/InvInsuranceCompanySettlementsMapper.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.largescreen.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.largescreen.model.InvInsuranceCompanySettlements;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface InvInsuranceCompanySettlementsMapper extends BaseMapper<InvInsuranceCompanySettlements> {
+
+    List<InvInsuranceCompanySettlements> isExist(InvInsuranceCompanySettlements invInsuranceCompanySettlements);
+
+}

+ 53 - 0
src/main/java/com/ydtech/modules/largescreen/model/ChannelSettlements.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.largescreen.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ChannelSettlements {
+
+    @ApiModelProperty("保险id")
+    private String insuranceId;
+
+    @ApiModelProperty("保险公司名称")
+    private String insuranceName;
+
+    @ApiModelProperty("机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("交强应结算")
+    private String jqReceivableCommission;
+
+    @ApiModelProperty("商业应结算")
+    private String syReceivableCommission;
+
+    @ApiModelProperty("非车应结算")
+    private String nonCarReceivableCommission;
+
+    @ApiModelProperty("交强已结算")
+    private String jqCompulsoryPremium;
+
+    @ApiModelProperty("商业已结算")
+    private String syCompulsoryPremium;
+
+    @ApiModelProperty("非车已结算")
+    private String nonCarCompulsoryPremium;
+
+    @ApiModelProperty("交强未结算")
+    private String jqProfit;
+
+    @ApiModelProperty("商业未结算")
+    private String syProfit;
+
+    @ApiModelProperty("非车未结算")
+    private String nonCarProfit;
+
+    @ApiModelProperty("孤儿单交强未结算")
+    private String jqOrphanProfit;
+
+    @ApiModelProperty("孤儿单商业未结算")
+    private String syOrphanProfit;
+
+    @ApiModelProperty("孤儿单非车未结算")
+    private String nonCarOrphanProfit;
+}

+ 74 - 0
src/main/java/com/ydtech/modules/largescreen/model/InsuranceCompanyBusinessSituation.java

@@ -0,0 +1,74 @@
+package com.ydtech.modules.largescreen.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class InsuranceCompanyBusinessSituation {
+
+    @ApiModelProperty("保险id")
+    private String insuranceId;
+
+    @ApiModelProperty("渠道")
+    private String channel;
+
+    @ApiModelProperty("保险公司名称")
+    private String insuranceName;
+
+    @ApiModelProperty("机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("交强保费")
+    private BigDecimal jqPremium;
+
+    @ApiModelProperty("商业保费")
+    private BigDecimal syPremium;
+
+    @ApiModelProperty("非车保费")
+    private BigDecimal nonCarPremium;
+
+    @ApiModelProperty("交强手续费")
+    private BigDecimal jqCommission;
+
+    @ApiModelProperty("商业手续费")
+    private BigDecimal syCommission;
+
+    @ApiModelProperty("非车手续费")
+    private BigDecimal nonCarCommission;
+
+    @ApiModelProperty("交强入口手续费")
+    private BigDecimal jqReceivableCommission;
+
+    @ApiModelProperty("商业入口手续费")
+    private BigDecimal syReceivableCommission;
+
+    @ApiModelProperty("非车入口手续费")
+    private BigDecimal nonCarReceivableCommission;
+
+    @ApiModelProperty("补贴金额")
+    private BigDecimal subsidyAmount;
+
+    @ApiModelProperty("交强出口手续费")
+    private BigDecimal jqCompulsoryPremium;
+
+    @ApiModelProperty("商业出口手续费")
+    private BigDecimal syCompulsoryPremium;
+
+    @ApiModelProperty("非车出口手续费")
+    private BigDecimal nonCarCompulsoryPremium;
+
+    @ApiModelProperty("交强利润")
+    private BigDecimal jqProfit;
+
+    @ApiModelProperty("商业利润")
+    private BigDecimal syProfit;
+
+    @ApiModelProperty("非车利润")
+    private BigDecimal nonCarProfit;
+
+    @ApiModelProperty("总利润")
+    private BigDecimal profit;
+
+}

+ 39 - 0
src/main/java/com/ydtech/modules/largescreen/model/InvInsuranceCompanySettlements.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.largescreen.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@TableName("inv_insurance_company_settlements")
+public class InvInsuranceCompanySettlements {
+
+    @ApiModelProperty("")
+    private String id;
+
+    @ApiModelProperty("保险公司id")
+    private String insuranceId;
+
+    @ApiModelProperty("保险公司名称")
+    private String insuranceName;
+
+    @ApiModelProperty("保险公司机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("年-月 日期")
+    private String date;
+
+    @ApiModelProperty("应收金额")
+    private BigDecimal amountReceivable;
+
+    @ApiModelProperty("对账应收金额")
+    private BigDecimal reconciliationOfAmountsDue;
+
+    @ApiModelProperty("已收金额")
+    private BigDecimal amountReceived;
+
+    @ApiModelProperty("未收金额")
+    private BigDecimal amountsOutstanding;
+}

+ 20 - 0
src/main/java/com/ydtech/modules/largescreen/model/query/ChannelSettlementsQuery.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.largescreen.model.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ChannelSettlementsQuery {
+
+    @ApiModelProperty("保险id")
+    private String insuranceId;
+
+    @ApiModelProperty("机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("签单开始时间")
+    private String signStartTime;
+
+    @ApiModelProperty("签到结束时间")
+    private String signEndTime;
+}

+ 24 - 0
src/main/java/com/ydtech/modules/largescreen/model/query/InsuranceCompanyBusinessSituationQuery.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.largescreen.model.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class InsuranceCompanyBusinessSituationQuery {
+
+    @ApiModelProperty("保险id")
+    private String insuranceId;
+
+    @ApiModelProperty("机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("签单开始时间")
+    private String signStartTime;
+
+    @ApiModelProperty("签到结束时间")
+    private String signEndTime;
+
+    @ApiModelProperty("渠道")
+    private String channel;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/largescreen/model/query/InvInsuranceCompanySettlementsQuery.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.largescreen.model.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class InvInsuranceCompanySettlementsQuery {
+
+    @ApiModelProperty("保险公司id")
+    private String insuranceId;
+
+    @ApiModelProperty("保险公司名称")
+    private String insuranceName;
+
+    @ApiModelProperty("保险公司机构")
+    private String insuranceDept;
+
+    @ApiModelProperty("年-月 日期")
+    private String date;
+
+    private String startTime;
+    private String endTime;
+}

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

@@ -1,8 +1,7 @@
 package com.ydtech.modules.largescreen.service;
 
 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 java.util.List;
 
@@ -54,4 +53,38 @@ public interface IAgreementDataService {
 
     List<CompanyInfoData> getCompanyDataById(CompanyQuery companyQuery);
 
+    /**
+     * 获取保险公司业务情况
+     * @param insuranceCompanyBusinessSituationQuery
+     * @return
+     */
+    List<InsuranceCompanyBusinessSituation> insuranceCompanyBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery);
+
+    /**
+     * 获取渠道业务情况
+     * @param insuranceCompanyBusinessSituationQuery
+     * @return
+     */
+    List<InsuranceCompanyBusinessSituation> channelBusinessSituation(InsuranceCompanyBusinessSituationQuery insuranceCompanyBusinessSituationQuery);
+
+    /**
+     * 获取渠道结算情况
+     * @param channelSettlementsQuery
+     * @return
+     */
+    List<ChannelSettlements> channelSettlement(ChannelSettlementsQuery channelSettlementsQuery);
+
+    /**
+     * 获取保险公司结算情况
+     * @param invInsuranceCompanySettlementsQuery
+     * @return
+     */
+    List<InvInsuranceCompanySettlements> insuranceCompanySettlement(InvInsuranceCompanySettlementsQuery invInsuranceCompanySettlementsQuery);
+
+    /**
+     * 更新渠道结算
+     * @param invInsuranceCompanySettlements
+     * @return
+     */
+    boolean updateInsuranceCompanySettlement(InvInsuranceCompanySettlements invInsuranceCompanySettlements);
 }

+ 15 - 0
src/main/java/com/ydtech/modules/largescreen/service/IInvInsuranceCompanySettlementsService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.largescreen.service;
+
+import com.ydtech.modules.largescreen.model.*;
+import com.ydtech.modules.largescreen.model.query.ChannelSettlementsQuery;
+import com.ydtech.modules.largescreen.model.query.CompanyQuery;
+import com.ydtech.modules.largescreen.model.query.DataQuery;
+import com.ydtech.modules.largescreen.model.query.InsuranceCompanyBusinessSituationQuery;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface IInvInsuranceCompanySettlementsService{
+    List<InvInsuranceCompanySettlements> isExist(InvInsuranceCompanySettlements invInsuranceCompanySettlements);
+}

+ 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>

+ 13 - 0
src/main/resources/mapper/modules/largescreen/InvInsuranceCompanySettlementsMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.largescreen.dao.InvInsuranceCompanySettlementsMapper">
+
+    <select id="isExist" resultType="com.ydtech.modules.largescreen.model.InvInsuranceCompanySettlements">
+        SELECT
+            *
+        FROM
+            inv_insurance_company_settlements
+        WHERE
+            date = #{date}
+    </select>
+</mapper>