From 54130a901757db72ae1d7c8d20cdfc2123749244 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 25 六月 2025 10:06:09 +0800
Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/yunyibao into 2.0.1

---
 server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/DataListVO.java                 |    3 
 server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java         |   14 
 server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyReportDataVO.java |   20 ++
 server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyDataVO.java       |   52 +++++
 server/service/src/main/java/com/doumee/service/business/InsuranceApplyOnService.java             |   17 +
 server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java                |   27 ++
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyOnServiceImpl.java    |  411 +++++++++++++++++++++++++++++++++++++++++
 server/platform/src/main/java/com/doumee/api/business/InsuranceApplyController.java               |   41 ++++
 server/service/src/main/java/com/doumee/dao/business/model/ApplyDetail.java                       |    6 
 9 files changed, 582 insertions(+), 9 deletions(-)

diff --git a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
index 6f4e870..69b3b74 100644
--- a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
+++ b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
@@ -12,6 +12,8 @@
 import com.doumee.dao.business.model.InsuranceApply;
 import com.doumee.dao.business.vo.ApplyPowerVO;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
+import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.service.business.InsuranceApplyOnService;
 import com.doumee.service.business.InsuranceApplyService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +39,9 @@
 
     @Autowired
     private InsuranceApplyService insuranceApplyService;
+
+    @Autowired
+    private InsuranceApplyOnService insuranceApplyOnService;
 
     @PreventRepeat
     @ApiOperation("鏂板缓")
@@ -192,4 +197,26 @@
     public ApiResponse<ApplyPowerVO> getApplyPower(@RequestBody ApplyPowerDTO applyPowerDTO) {
         return ApiResponse.success(insuranceApplyService.getApplyPower(applyPowerDTO));
     }
+
+    @ApiOperation("姣忔湀鍔犲噺淇濅汉鏁�")
+    @GetMapping("/getAddReduceData")
+    public ApiResponse<List<DataListVO>> getAddReduceData() {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        return ApiResponse.success(insuranceApplyOnService.getAddReduceData(loginUserInfo));
+    }
+
+    @ApiOperation("宸叉姇淇濆崟鍚勭姸鎬佸崰姣�")
+    @GetMapping("/getInsuranceApplyStatusData")
+    public ApiResponse<List<DataListVO>> getInsuranceApplyStatusData() {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        return ApiResponse.success(insuranceApplyOnService.getInsuranceApplyStatusData(loginUserInfo));
+    }
+
+    @ApiOperation("鍦ㄤ繚鍛樺伐")
+    @GetMapping("/getInsuranceMemberData")
+    public ApiResponse<List<DataListVO>> getInsuranceMemberData() {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        return ApiResponse.success(insuranceApplyOnService.getInsuranceMemberData(loginUserInfo));
+    }
+
 }
diff --git a/server/platform/src/main/java/com/doumee/api/business/InsuranceApplyController.java b/server/platform/src/main/java/com/doumee/api/business/InsuranceApplyController.java
index 7d2878b..fce85f8 100644
--- a/server/platform/src/main/java/com/doumee/api/business/InsuranceApplyController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/InsuranceApplyController.java
@@ -4,6 +4,7 @@
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
 import com.doumee.dao.business.dto.ApplyPowerDTO;
@@ -13,12 +14,16 @@
 import com.doumee.dao.business.model.InsuranceApply;
 import com.doumee.dao.business.vo.ApplyPowerVO;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
+import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyDataVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyReportDataVO;
 import com.doumee.service.business.InsuranceApplyOnService;
 import com.doumee.service.business.InsuranceApplyService;
 import com.doumee.service.business.impl.UnionApplyServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -187,4 +192,38 @@
         insuranceApplyService.testSendEmail();
         return ApiResponse.success(null);
     }
+
+    @ApiOperation("鎶曚繚鍒嗘瀽鎶ヨ〃鏁版嵁")
+    @GetMapping("/getInsuranceApplyReportDataVO")
+    public ApiResponse<InsuranceApplyReportDataVO> getInsuranceApplyReportDataVO() {
+        return ApiResponse.success(insuranceApplyOnService.getInsuranceApplyReportDataVO());
+    }
+
+
+    @ApiOperation("鎶曚繚鍒嗘瀽鏁版嵁")
+    @GetMapping("/getInsuranceApplyDataVO")
+    public ApiResponse<InsuranceApplyDataVO> getInsuranceApplyDataVO() {
+        return ApiResponse.success(insuranceApplyOnService.getInsuranceApplyDataVO());
+    }
+
+    @ApiOperation("姣忔湀鍔犲噺淇濅汉鏁�")
+    @GetMapping("/getAddReduceData")
+    public ApiResponse<List<DataListVO>> getAddReduceData() {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        return ApiResponse.success(insuranceApplyOnService.getAddReduceData(loginUserInfo));
+    }
+    @ApiOperation("宸叉姇淇濆崟鏁版嵁")
+    @GetMapping("/getInsuranceNum")
+    public ApiResponse<InsuranceApplyDataVO> getInsuranceNum() {
+        return ApiResponse.success(insuranceApplyOnService.getInsuranceNum());
+    }
+
+    @ApiOperation("姣忔湀璧斾粯閲戦")
+    @GetMapping("/getSettleClaimsMoney")
+    public ApiResponse<List<DataListVO>> getSettleClaimsMoney() {
+        return ApiResponse.success(insuranceApplyOnService.getSettleClaimsMoney());
+    }
+
+
+
 }
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/ApplyDetail.java b/server/service/src/main/java/com/doumee/dao/business/model/ApplyDetail.java
index c4e3c2e..b44a77e 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/ApplyDetail.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/ApplyDetail.java
@@ -194,4 +194,10 @@
     @TableField(exist = false)
     private Integer insuranceId;
 
+    @TableField(exist = false)
+    private String dataFirst;
+
+    @TableField(exist = false)
+    private String dataSecond;
+
 }
diff --git a/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/DataListVO.java b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/DataListVO.java
index 886e15d..50fd4e5 100644
--- a/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/DataListVO.java
+++ b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/DataListVO.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.vo.dataBoard;
 
+import com.doumee.dao.business.model.Solutions;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,4 +22,6 @@
     @ApiModelProperty(value = "绗笁涓弬鏁�", example = "1")
     private String dataThird;
 
+    @ApiModelProperty(value = "鏂规淇℃伅", example = "1")
+    private Solutions solutions;
 }
diff --git a/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyDataVO.java b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyDataVO.java
new file mode 100644
index 0000000..e482ca1
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyDataVO.java
@@ -0,0 +1,52 @@
+package com.doumee.dao.business.vo.dataBoard;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class InsuranceApplyDataVO {
+
+    @ApiModelProperty(value = "绱鎶曚繚浼佷笟鏁伴噺", example = "1")
+    private Integer  insuranceCompanyNum;
+
+    @ApiModelProperty(value = "鏈湀鏂板鎶曚繚浼佷笟鏁伴噺", example = "1")
+    private Integer  monthAddInsuranceCompanyNum;
+
+    @ApiModelProperty(value = "绱鏈夋晥淇濆崟鏁伴噺", example = "1")
+    private Integer  insuranceNum;
+
+    @ApiModelProperty(value = "鏈湀鏂板鏈夋晥淇濆崟鏁伴噺", example = "1")
+    private Integer  monthAddInsuranceNum;
+
+    @ApiModelProperty(value = "绱淇濋殰浜哄憳鏁伴噺", example = "1")
+    private Integer  memberNum;
+
+    @ApiModelProperty(value = "鏈湀鏂板淇濋殰浜哄憳鏁伴噺", example = "1")
+    private Integer  monthAddMemberNum;
+
+    @ApiModelProperty(value = "鍚堣鎬昏垂鐢�", example = "1")
+    private BigDecimal  totalFee;
+
+    @ApiModelProperty(value = "鏈湀鏂板璐圭敤", example = "1")
+    private BigDecimal  monthAddTotalFee;
+
+    @ApiModelProperty(value = "鍦ㄤ繚浼佷笟鏁伴噺", example = "1")
+    private Integer  useCompanyNum;
+
+    @ApiModelProperty(value = "鍦ㄤ繚淇濆崟鏁伴噺", example = "1")
+    private Integer  useInsuranceNum;
+
+    @ApiModelProperty(value = "鍦ㄤ繚浜烘暟", example = "1")
+    private Integer  useMemberNum;
+
+    @ApiModelProperty(value = "濮旀墭淇濅繚鍗曟暟閲�", example = "1")
+    private Integer  wtbInsuranceNum;
+
+    @ApiModelProperty(value = "鐩翠繚淇濆崟鏁伴噺", example = "1")
+    private Integer  zbInsuranceNum;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyReportDataVO.java b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyReportDataVO.java
new file mode 100644
index 0000000..5ab3bda
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/vo/dataBoard/InsuranceApplyReportDataVO.java
@@ -0,0 +1,20 @@
+package com.doumee.dao.business.vo.dataBoard;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class InsuranceApplyReportDataVO {
+
+    @ApiModelProperty(value = "绱浼佷笟鎶曚繚閲戦top10")
+    private List<DataListVO> companyTopFeeList;
+
+    @ApiModelProperty(value = "鐑棬淇濋櫓鏂规", example = "1")
+    private List<DataListVO>  hotSolutionList;
+
+    @ApiModelProperty(value = "姣忔湀鍔犲噺淇濅汉鏁�", example = "1")
+    private List<DataListVO>  monthAddReduceList;
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/InsuranceApplyOnService.java b/server/service/src/main/java/com/doumee/service/business/InsuranceApplyOnService.java
index c12fff2..251120e 100644
--- a/server/service/src/main/java/com/doumee/service/business/InsuranceApplyOnService.java
+++ b/server/service/src/main/java/com/doumee/service/business/InsuranceApplyOnService.java
@@ -1,11 +1,15 @@
 package com.doumee.service.business;
 
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.dto.*;
 import com.doumee.dao.business.model.InsuranceApply;
 import com.doumee.dao.business.vo.ApplyPowerVO;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
+import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyDataVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyReportDataVO;
 import com.doumee.service.business.impl.UnionApplyServiceImpl;
 import com.jzq.common.bean.sign.NotifyDataReq;
 
@@ -29,5 +33,18 @@
 
     Integer   dealBackApply(InsuranceApply insuranceApply);
 
+    InsuranceApplyReportDataVO getInsuranceApplyReportDataVO();
+
+    InsuranceApplyDataVO getInsuranceApplyDataVO();
+
+    List<DataListVO> getAddReduceData(LoginUserInfo loginUserInfo);
+
+    InsuranceApplyDataVO getInsuranceNum();
+
+    List<DataListVO> getSettleClaimsMoney();
+
+    List<DataListVO> getInsuranceApplyStatusData(LoginUserInfo loginUserInfo);
+
+    List<DataListVO> getInsuranceMemberData(LoginUserInfo loginUserInfo);
 }
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
index da7f082..c0f256c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
@@ -322,15 +322,15 @@
         queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId);
         queryWrapper.leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId);
         queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getApplyId()),ApplyDetail::getApplyId,applyDetailPageDTO.getApplyId());
-        queryWrapper.ge(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
-                        &&!applyDetailPageDTO.getApplyStatus().equals(Constants.ZERO),
-                ApplyDetail::getStartTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 00:00:00");
+//        queryWrapper.ge(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
+//                        &&!applyDetailPageDTO.getApplyStatus().equals(Constants.ZERO),
+//                ApplyDetail::getStartTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 00:00:00");
         //鍦ㄤ繚
-        queryWrapper.le(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
-                        &&applyDetailPageDTO.getApplyStatus().equals(Constants.ONE),
-                ApplyDetail::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 23:59:59");
-        //涓嶅湪淇�
         queryWrapper.ge(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
+                        &&applyDetailPageDTO.getApplyStatus().equals(Constants.ONE),
+                ApplyDetail::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss"));
+        //涓嶅湪淇�
+        queryWrapper.le(!Objects.isNull(applyDetailPageDTO.getApplyStatus())
                         &&applyDetailPageDTO.getApplyStatus().equals(Constants.TWO),
                 ApplyDetail::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 23:59:59");
         queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getDuId()),ApplyDetail::getDuId,applyDetailPageDTO.getDuId());
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyOnServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyOnServiceImpl.java
index b38bc6c..fc37177 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyOnServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyOnServiceImpl.java
@@ -23,6 +23,9 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.vo.ApplyPowerVO;
 import com.doumee.dao.business.vo.CountCyclePriceVO;
+import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyDataVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceApplyReportDataVO;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.InsuranceApplyOnService;
@@ -83,7 +86,7 @@
     @Autowired
     private ApplyLogJoinMapper applyLogJoinMapper;
     @Autowired
-    private SolutionsMapper solutionsMapper;
+    private SolutionsJoinMapper solutionsMapper;
     @Autowired
     private MemberMapper memberMapper;
     @Autowired
@@ -108,6 +111,10 @@
     private SystemUserMapper systemUserMapper;
     @Autowired
     private CompanyDepartmentMapper companyDepartmentMapper;
+    @Autowired
+    private ApplyChangeDetailJoinMapper applyChangeDetailJoinMapper;
+    @Autowired
+    private SettleClaimsMapper settleClaimsMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -613,6 +620,408 @@
         }
         return list;
     }
+    
+
+    @Override
+    public InsuranceApplyDataVO getInsuranceApplyDataVO() {
+        InsuranceApplyDataVO insuranceApplyDataVO = new InsuranceApplyDataVO();
+        insuranceApplyDataVO.setInsuranceNum(Constants.ZERO);
+        insuranceApplyDataVO.setMonthAddInsuranceNum(Constants.ZERO);
+        insuranceApplyDataVO.setInsuranceCompanyNum(Constants.ZERO);
+        insuranceApplyDataVO.setMonthAddInsuranceCompanyNum(Constants.ZERO);
+        insuranceApplyDataVO.setMemberNum(Constants.ZERO);
+        insuranceApplyDataVO.setMonthAddMemberNum(Constants.ZERO);
+        insuranceApplyDataVO.setTotalFee(BigDecimal.ZERO);
+        insuranceApplyDataVO.setMonthAddTotalFee(BigDecimal.ZERO);
+        insuranceApplyDataVO.setUseCompanyNum(Constants.ZERO);
+        insuranceApplyDataVO.setUseInsuranceNum(Constants.ZERO);
+        insuranceApplyDataVO.setUseMemberNum(Constants.ZERO);
+
+        List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
+                new MPJLambdaWrapper<InsuranceApply>()
+                        .selectAll(InsuranceApply.class)
+                        .selectAs(Solutions::getType, InsuranceApply::getSolutionType)
+                        .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId)
+                        .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                        .notIn(InsuranceApply::getStatus,
+                                Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                        )
+        );
+
+        String monthDate = DateUtil.getFomartDate(new Date(), "yyyy-MM");
+
+        if (CollectionUtils.isNotEmpty(insuranceApplyList)) {
+            //绱鏈夋晥淇濆崟
+            insuranceApplyDataVO.setInsuranceNum(
+                    insuranceApplyList.stream().filter(i -> Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+                            || Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                    ).collect(Collectors.toList()).size()
+            );
+            //鏈湀鏂板鏈夋晥淇濆崟
+            insuranceApplyDataVO.setMonthAddInsuranceNum(
+                    insuranceApplyList.stream().filter(i -> (Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+                            || Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.WTB_DONE.getKey()))
+                            && DateUtil.formatDate(i.getCreateDate(), "yyyy-MM").equals(monthDate)
+                    ).collect(Collectors.toList()).size()
+            );
+            //鍦ㄤ繚浼佷笟鏁伴噺
+            List<Integer> useCompanyNum = insuranceApplyList.stream().filter(i -> (Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+                    || Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.WTB_DONE.getKey()))
+                    && i.getStartTime().getTime() <= System.currentTimeMillis() && i.getEndTime().getTime() >= System.currentTimeMillis()
+            ).map(i -> i.getCompanyId()).collect(Collectors.toList());
+            insuranceApplyDataVO.setUseCompanyNum(new HashSet<>(useCompanyNum).size());
+
+            //鍦ㄤ繚淇濆崟鏁伴噺
+            insuranceApplyDataVO.setUseInsuranceNum(
+                    insuranceApplyList.stream().filter(i -> (Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
+                            || Constants.equalsInteger(i.getStatus(), Constants.InsuranceApplyStatus.WTB_DONE.getKey()))
+                            && i.getStartTime().getTime() <= System.currentTimeMillis() && i.getEndTime().getTime() >= System.currentTimeMillis()
+                    ).collect(Collectors.toList()).size()
+            );
+            List<Integer> companyIds = insuranceApplyList.stream().map(i -> i.getCompanyId()).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(companyIds)) {
+                //绱鎶曚繚浼佷笟鏁伴噺
+                insuranceApplyDataVO.setInsuranceCompanyNum(new HashSet<>(companyIds).size());
+            }
+            Integer monthAddInsuranceCompanyNum = insuranceApplyJoinMapper.selectJoinCount(
+                    new MPJLambdaWrapper<InsuranceApply>()
+                            .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                            .notIn(InsuranceApply::getStatus,
+                                    Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                    Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                            )
+                            .apply(" company_id in ( select c.id from company c where c.ISDELETED = 0 and   DATE_FORMAT(c.CREATE_DATE, '%Y-%m')  = DATE_FORMAT(now(), '%Y-%m') )   ")
+                            .groupBy(InsuranceApply::getCompanyId)
+            );
+            //鏈湀鏂板鎶曚繚浼佷笟
+            insuranceApplyDataVO.setMonthAddInsuranceCompanyNum(Objects.nonNull(monthAddInsuranceCompanyNum)?monthAddInsuranceCompanyNum:Constants.ZERO);
+            //鐩翠繚淇濆崟鏁伴噺
+            insuranceApplyDataVO.setZbInsuranceNum(insuranceApplyList.stream().filter(i -> Constants.equalsInteger(i.getSolutionType(), Constants.ZERO)).collect(Collectors.toList()).size());
+            //濮旀墭淇濅繚鍗曟暟閲�
+            insuranceApplyDataVO.setWtbInsuranceNum(insuranceApplyList.stream().filter(i -> Constants.equalsInteger(i.getSolutionType(), Constants.ONE)).collect(Collectors.toList()).size());
+        }
+
+            //鍚堣鎬昏垂鐢�
+            insuranceApplyDataVO.setTotalFee(new BigDecimal(applyDetailJoinMapper.selectJoinMap( new MPJLambdaWrapper<ApplyDetail>()
+                    .select("ifnull(sum(t.fee),0) as fee")
+                    .selectAs(InsuranceApply::getStatus, ApplyDetail::getApplyStatus)
+                    .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                    .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                    .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                    .notIn(InsuranceApply::getStatus,
+                            Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                            Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                            Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                            Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                    )
+            ).get("fee").toString()));
+            //鏈湀鏂板璐圭敤
+            insuranceApplyDataVO.setMonthAddTotalFee(
+                    new BigDecimal(applyDetailJoinMapper.selectJoinMap( new MPJLambdaWrapper<ApplyDetail>()
+                            .select("ifnull(sum(t.fee),0) as fee")
+                            .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                            .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                            .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                            .notIn(InsuranceApply::getStatus,
+                                    Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                    Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                            )
+                            .apply(" DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(now(), '%Y-%m')   ")
+                    ).get("fee").toString())
+
+            );
+
+            //绱鎶曚繚浜烘
+            insuranceApplyDataVO.setMemberNum(
+                    Integer.valueOf(applyDetailJoinMapper.selectJoinMap( new MPJLambdaWrapper<ApplyDetail>()
+                            .select("count(distinct t.MEMBER_ID) as memberTimes")
+                            .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                            .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                            .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                            .notIn(InsuranceApply::getStatus,
+                                    Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                    Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                            )
+                    ).get("memberTimes").toString())
+        );
+            //鏈湀鏂板鎶曚繚浜烘
+            insuranceApplyDataVO.setMonthAddMemberNum(
+                    Integer.valueOf(applyDetailJoinMapper.selectJoinMap( new MPJLambdaWrapper<ApplyDetail>()
+                            .select("count(distinct t.MEMBER_ID) as memberTimes")
+                            .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                            .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                            .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                            .notIn(InsuranceApply::getStatus,
+                                    Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                    Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                            )
+                            .apply(" DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(now(), '%Y-%m') ")
+                    ).get("memberTimes").toString())
+
+        );
+
+
+            //褰撳墠淇濋殰浜哄憳
+            insuranceApplyDataVO.setUseMemberNum(
+
+
+                    Integer.valueOf(applyDetailJoinMapper.selectJoinMap( new MPJLambdaWrapper<ApplyDetail>()
+                            .select("count(distinct t.MEMBER_ID) as memberTimes")
+                            .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                            .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                            .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                            .notIn(InsuranceApply::getStatus,
+                                    Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                    Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                    Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                            )
+                            .apply(" t.start_time <= now() and t.end_time >= now() ")
+                    ).get("memberTimes").toString())
+
+                     );
+        return insuranceApplyDataVO;
+
+    }
+
+
+    @Override
+    public InsuranceApplyReportDataVO getInsuranceApplyReportDataVO(){
+        InsuranceApplyReportDataVO insuranceApplyReportDataVO = new InsuranceApplyReportDataVO();
+        List<DataListVO> companyTopFeeList = applyDetailJoinMapper.selectJoinList(DataListVO.class, new MPJLambdaWrapper<ApplyDetail>() 
+                .select(" t2.name as dataFirst, ROUND(ifnull(sum(t.fee),0),2) as dataSecond ")
+                .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                        .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+                .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                .notIn(InsuranceApply::getStatus,
+                        Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                        Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                        Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                        Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                )
+                        .groupBy(" t1.company_id,t2.name")
+                .orderByDesc(" sum(t.fee) ")
+                .last(" limit 10")
+        );
+        insuranceApplyReportDataVO.setCompanyTopFeeList(companyTopFeeList);
+
+
+        List<DataListVO> hotSolutionList = insuranceApplyJoinMapper.selectJoinList(DataListVO.class, new MPJLambdaWrapper<InsuranceApply>()
+                .select(" solution_id as dataFirst, count(1) as dataSecond ")
+                .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                .notIn(InsuranceApply::getStatus,
+                        Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                        Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                        Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                        Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                )
+                .groupBy(" t.solution_id")
+                .orderByDesc(" count(1) ")
+                .last(" limit 10")
+        );
+
+        if(CollectionUtils.isNotEmpty(hotSolutionList)){
+            List<Solutions>  solutionsList = solutionsMapper.selectJoinList(Solutions.class,new MPJLambdaWrapper<Solutions>()
+                            .select("t.id, t.NAME , t1.name as solutionBaseName ,t.PRICE,t.TIME_UNIT  ")
+                            .leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId)
+                    .in(Solutions::getId,hotSolutionList.stream().map(i->i.getDataFirst()).collect(Collectors.toList())));
+            if(CollectionUtils.isNotEmpty(solutionsList)){
+                for (DataListVO dataListVO:hotSolutionList) {
+                    List<Solutions> solutions = solutionsList.stream().filter(i->Constants.equalsInteger(i.getId(),Integer.valueOf(dataListVO.getDataFirst()))).collect(Collectors.toList());
+                    if(CollectionUtils.isNotEmpty(solutions)){
+                        dataListVO.setSolutions(solutions.get(Constants.ZERO));
+                    }
+                }
+            }
+            insuranceApplyReportDataVO.setHotSolutionList(hotSolutionList);
+        }
+
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        insuranceApplyReportDataVO.setMonthAddReduceList(this.getAddReduceData(loginUserInfo));
+        return insuranceApplyReportDataVO;
+    }
+
+
+
+    @Override
+    public List<DataListVO> getAddReduceData(LoginUserInfo loginUserInfo){
+        List<DataListVO> monthAddReduceList = new ArrayList<>();
+        for (int i = -11; i <= 0 ; i++) {
+            String month = DateUtil.DateToStr(
+                    DateUtil.afterDateByType(new Date(),1,i),"yyyy-MM");
+            DataListVO dataListVO = new DataListVO();
+            dataListVO.setDataFirst(month);
+            dataListVO.setDataSecond(
+                    applyChangeDetailJoinMapper.selectJoinCount(new MPJLambdaWrapper<ApplyChagneDetail>()
+                            .leftJoin(ApplyChange.class,ApplyChange::getId,ApplyChagneDetail::getApplyChangeId)
+                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+                            .eq(ApplyChagneDetail::getType,Constants.ZERO)
+                                    .eq(Objects.nonNull(loginUserInfo)&&Constants.equalsInteger(loginUserInfo.getType(),Constants.ONE),InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                            .apply(" DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = '"+month+"'")
+                    ) +""
+            );
+            dataListVO.setDataThird("-"+
+                    applyChangeDetailJoinMapper.selectJoinCount(new MPJLambdaWrapper<ApplyChagneDetail>()
+                            .leftJoin(ApplyChange.class,ApplyChange::getId,ApplyChagneDetail::getApplyChangeId)
+                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+                            .eq(ApplyChagneDetail::getType,Constants.ONE)
+                            .eq(Objects.nonNull(loginUserInfo)&&Constants.equalsInteger(loginUserInfo.getType(),Constants.ONE)
+                                    ,InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                            .apply(" DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = '"+month+"'")
+                    )
+            );
+            monthAddReduceList.add(dataListVO);
+        }
+        return monthAddReduceList;
+    }
+
+
+
+    @Override
+    public InsuranceApplyDataVO getInsuranceNum(){
+        List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
+                new MPJLambdaWrapper<InsuranceApply>()
+                        .selectAll(InsuranceApply.class)
+                        .selectAs(Solutions::getType, InsuranceApply::getSolutionType)
+                        .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId)
+                        .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                        .notIn(InsuranceApply::getStatus,
+                                Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_PASS.getKey(),
+                                Constants.InsuranceApplyStatus.CLOSE.getKey(),
+                                Constants.InsuranceApplyStatus.WTB_RETURN.getKey(),
+                                Constants.InsuranceApplyStatus.WTB_CLOSED.getKey()
+                        )
+        );
+        InsuranceApplyDataVO insuranceApplyDataVO = new InsuranceApplyDataVO();
+        //鐩翠繚淇濆崟鏁伴噺
+        insuranceApplyDataVO.setZbInsuranceNum(insuranceApplyList.stream().filter(i -> Constants.equalsInteger(i.getSolutionType(), Constants.ZERO)).collect(Collectors.toList()).size());
+        //濮旀墭淇濅繚鍗曟暟閲�
+        insuranceApplyDataVO.setWtbInsuranceNum(insuranceApplyList.stream().filter(i -> Constants.equalsInteger(i.getSolutionType(), Constants.ONE)).collect(Collectors.toList()).size());
+        return insuranceApplyDataVO;
+        
+    }
+
+
+    @Override
+    public List<DataListVO> getSettleClaimsMoney(){
+        List<SettleClaims> settleClaimsList = settleClaimsMapper.selectList(new QueryWrapper<SettleClaims>().lambda()
+                        .eq(SettleClaims::getStatus,Constants.SettleClaimsStatus.CLOSE_CASE.getKey())
+                .eq(SettleClaims::getIsdeleted,Constants.ZERO));
+        List<DataListVO> monthTotalMoneyDataList = new ArrayList<>();
+        for (int i = -11; i <= 0 ; i++) {
+            String month = DateUtil.DateToStr(
+                    DateUtil.afterDateByType(new Date(),1,i),"yyyy-MM");
+            DataListVO dataListVO = new DataListVO();
+            dataListVO.setDataFirst(month);
+            if (CollectionUtils.isNotEmpty(settleClaimsList)) {
+                BigDecimal hpAccount = settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(month))
+                        .map(j->j.getHpAccount().add(j.getHpOtherAccount())).reduce(BigDecimal.ZERO,BigDecimal::add);
+                dataListVO.setDataSecond(hpAccount.compareTo(BigDecimal.ZERO)>Constants.ZERO?
+                        hpAccount.divide(new BigDecimal("10000"),2,BigDecimal.ROUND_HALF_UP).toString():"0"
+                );
+            }else{
+                dataListVO.setDataSecond("0");
+            }
+
+            monthTotalMoneyDataList.add(dataListVO);
+        }
+        return monthTotalMoneyDataList;
+    }
+
+    @Override
+    public List<DataListVO> getInsuranceApplyStatusData(LoginUserInfo loginUserInfo){
+        List<DataListVO> dataListVOList = new ArrayList<>();
+        //寰呯敓鏁�
+        DataListVO dataListVOA = new DataListVO();
+        dataListVOA.setDataFirst("寰呯敓鏁�");
+        dataListVOA.setDataSecond(
+                insuranceApplyMapper.selectCount(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getIsdeleted,Constants.ZERO)
+                        .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                                .eq(InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                        .apply("  start_time > now() ")
+                ).toString()
+        );
+        dataListVOList.add(dataListVOA);
+
+        //淇濋殰涓�
+        DataListVO dataListVOB = new DataListVO();
+        dataListVOB.setDataFirst("淇濋殰涓�");
+        dataListVOB.setDataSecond(
+                insuranceApplyMapper.selectCount(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getIsdeleted,Constants.ZERO)
+                        .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                        .eq(InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                        .apply("  start_time <= now()  and  end_time >= now()")
+                ).toString()
+        );
+
+        dataListVOList.add(dataListVOB);
+
+        //宸茶繃鏈�
+        DataListVO dataListVOC = new DataListVO();
+        dataListVOC.setDataFirst("宸茶繃鏈�");
+
+        dataListVOC.setDataSecond(
+                insuranceApplyMapper.selectCount(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getIsdeleted,Constants.ZERO)
+                        .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                        .eq(InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                        .apply("   end_time < now()")
+                ).toString()
+        );
+        dataListVOList.add(dataListVOC);
+        return dataListVOList;
+    }
+
+
+
+
+    @Override
+    public List<DataListVO> getInsuranceMemberData(LoginUserInfo loginUserInfo){
+        List<DataListVO> dataListVOList = new ArrayList<>();
+        //寰呯敓鏁�
+        DataListVO dataListVOA = new DataListVO();
+        dataListVOA.setDataFirst("涓嶅湪淇�");
+        dataListVOA.setDataSecond(
+                applyDetailJoinMapper.selectJoinCount( new MPJLambdaWrapper<ApplyDetail>()
+                                .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                                .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                                .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                                .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                                .eq(InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                                .apply("  t.END_TIME < now() ")).toString()
+
+        );
+        dataListVOList.add(dataListVOA);
+
+        //淇濋殰涓�
+        DataListVO dataListVOB = new DataListVO();
+        dataListVOB.setDataFirst("淇濋殰涓�");
+        dataListVOB.setDataSecond(
+                applyDetailJoinMapper.selectJoinCount( new MPJLambdaWrapper<ApplyDetail>()
+                        .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyDetail::getApplyId)
+                        .eq(ApplyDetail::getIsdeleted, Constants.ZERO)
+                        .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
+                        .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                        .eq(InsuranceApply::getCompanyId,loginUserInfo.getCompanyId())
+                        .apply("  t.END_TIME >= now() ")).toString()
+        );
+
+        dataListVOList.add(dataListVOB);
+        return dataListVOList;
+    }
+    
+    
 }
 
 

--
Gitblit v1.9.3