From e29d594f812c201abaa2e2d1c031a9ab61ba8200 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 03 六月 2025 09:09:27 +0800
Subject: [PATCH] git ch

---
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java |  399 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 392 insertions(+), 7 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
index aa101c3..e4d916d 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -14,6 +14,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dto.*;
+import com.doumee.dao.business.join.ApplyDetailJoinMapper;
 import com.doumee.dao.business.join.MultifileJoinMapper;
 import com.doumee.dao.business.join.SettleClaimsJoinMapper;
 import com.doumee.dao.business.join.SettleClaimsLogJoinMapper;
@@ -23,6 +24,7 @@
 import com.doumee.dao.business.vo.SettleClaimsMoneyVO;
 import com.doumee.dao.business.vo.SettleParentStatusVO;
 import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceDataVO;
 import com.doumee.dao.business.vo.dataBoard.SettleClaimsDataVO;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.SettleClaimsLogService;
@@ -53,6 +55,7 @@
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -100,6 +103,18 @@
     @Autowired
     private ApplyDetailMapper applyDetailMapper;
 
+    @Autowired
+    private AreasMapper areasMapper;
+
+
+    @Autowired
+    private WorktypeMapper worktypeMapper;
+
+    @Autowired
+    private InsuranceMapper insuranceMapper;
+
+    @Autowired
+    private ApplyDetailJoinMapper applyDetailJoinMapper;
     /**
      * 鍒犻櫎闄勪欢
      * @return
@@ -1378,6 +1393,9 @@
         settleClaims.setOrigin(Constants.ZERO);
         settleClaims.setMemberName(member.getName());
         settleClaims.setCreateDate(new Date());
+        settleClaims.setMemberAge(
+                Constants.calculateAge(member.getIdcardNo(),DateUtil.StringToDate(settleClaims.getHappenTime()))
+        );
         if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)&&StringUtils.isBlank(settleClaims.getCode())){
             Long nextCode = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda().ne(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
                     .eq(SettleClaims::getOrigin,Constants.ZERO) .like(SettleClaims::getCreateDate,DateUtil.getDate(new Date(),"yyyy-MM-dd"))
@@ -1443,6 +1461,12 @@
     }
 
     public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){
+        settleClaims.setRiskDelayUnit(Constants.ZERO);
+        settleClaims.setRiskUnTakeEffect(Constants.ZERO);
+        settleClaims.setRiskNewUser(Constants.ZERO);
+        settleClaims.setRiskTimesCx(Constants.ZERO);
+        settleClaims.setRiskTimesSp(Constants.ZERO);
+        settleClaims.setRiskRepeat(Constants.ZERO);
         //鏍规嵁淇濆崟淇℃伅 鏌ヨ鍑轰富鏂规
         InsuranceApply insuranceApply = insuranceApplyMapper.selectById(settleClaims.getInsuranceApplyId());
         if(Objects.isNull(insuranceApply)){
@@ -1491,6 +1515,7 @@
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
             }else{
                 map.put("info","浜嬫晠鍙戠敓鏃堕棿鏃╀簬淇濆崟鐢熸晥鏃堕棿"+solutionsBase.getRiskNewUserUnit()+(Constants.equalsInteger(solutionsBase.getRiskNewUserUnit(),Constants.ONE)?"灏忔椂鍐�":"澶╁唴"));
+                settleClaims.setRiskUnTakeEffect(Constants.ONE);
                 riskList.add(map);
             }
         }else{
@@ -1507,17 +1532,20 @@
             if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ZERO)){
                 if(DateUtil.getBetweenMin(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
                     map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"鍒嗛挓");
+                    settleClaims.setRiskDelayUnit(Constants.ONE);
                     riskList.add(map);
                 }
             }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ONE)){
                 if(DateUtil.getBetweenHours(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
                     map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"灏忔椂");
                     riskList.add(map);
+                    settleClaims.setRiskDelayUnit(Constants.ONE);
                 }
             }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.TWO)){
                 if(DateUtil.getBetweenDay(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
                     map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"澶�");
                     riskList.add(map);
+                    settleClaims.setRiskDelayUnit(Constants.ONE);
                 }
             }
         }
@@ -2912,7 +2940,7 @@
 
                 settleClaimsTotal.setDataFirst(monthData);
                 settleClaimsTotal.setDataSecond(
-                        settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).toString()
+                        settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size()+""
                 );
  
                 settleClaimsFee.setDataFirst(monthData);
@@ -2922,9 +2950,14 @@
                 averageSettleClaims.setDataFirst(monthData);
                 Integer sumHours = closeCaseMonthList.stream().map(j->
                         j.getTotalHours()).reduce(Constants.ZERO,Integer::sum);
-                averageSettleClaims.setDataSecond(
-                        new BigDecimal(sumHours.toString()).divide(new BigDecimal((closeCaseMonthList.size()*24)+"")).toString()
-                );
+                if(Objects.isNull(sumHours)||CollectionUtils.isEmpty(closeCaseMonthList)
+                || Constants.equalsInteger(sumHours,Constants.ZERO)){
+                    averageSettleClaims.setDataSecond("0");
+                }else{
+                    averageSettleClaims.setDataSecond(
+                            new BigDecimal(sumHours.toString()).divide(new BigDecimal((closeCaseMonthList.size()*24)+""),2,BigDecimal.ROUND_HALF_UP).toString());
+                }
+                ;
  
                 settleClaimsTotalList.add(settleClaimsTotal);
                 settleClaimsFeeList.add(settleClaimsFee);
@@ -2945,21 +2978,373 @@
             settleClaimsDataVO.setAverageSettleClaimsTime(
                     new BigDecimal(closeCaseList.stream().map(i->i.getTotalHours()).reduce(Constants.ZERO,Integer::sum).toString())
                             .divide(new BigDecimal((closeCaseList.size()*24)+"") ,2,BigDecimal.ROUND_HALF_UP)
-                            
             );
 
+            String monthDate = DateUtil.getFomartDate(new Date(),"yyyy-MM");
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.MONTH, -1);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            String lastMonth = sdf.format(calendar.getTime());
+
+            //椋庨櫓妗堜欢鍗犳瘮鏁版嵁
+            settleClaimsDataVO.setRiskTimesCxTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskTimesCx(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            Integer lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskTimesCx(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskTimesCxRata(this.jsRata(settleClaimsDataVO.getRiskTimesCxTotal(),lastMonthTotal));
+
+            settleClaimsDataVO.setRiskRepeatTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskRepeat(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskRepeat(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskRepeatRata(this.jsRata(settleClaimsDataVO.getRiskRepeatTotal(),lastMonthTotal));
+
+            settleClaimsDataVO.setRiskTimesSpTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskTimesSp(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskTimesSp(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskTimesSpRata(this.jsRata(settleClaimsDataVO.getRiskTimesSpTotal(),lastMonthTotal));
+
+            settleClaimsDataVO.setRiskNewUserTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskNewUser(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskNewUser(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskNewUserRata(this.jsRata(settleClaimsDataVO.getRiskNewUserTotal(),lastMonthTotal));
+
+            settleClaimsDataVO.setRiskSensitiveTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&StringUtils.isNotBlank(i.getRiskSensitive()))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&StringUtils.isNotBlank(i.getRiskSensitive()))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskSensitiveRata(this.jsRata(settleClaimsDataVO.getRiskSensitiveTotal(),lastMonthTotal));
+
+            settleClaimsDataVO.setRiskDelayUnitTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskDelayUnit(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskDelayUnit(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskDelayUnitRata(this.jsRata(settleClaimsDataVO.getRiskDelayUnitTotal(),lastMonthTotal));
+
+
+            settleClaimsDataVO.setRiskUnTakeEffectTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+                            &&Constants.equalsInteger(i.getRiskUnTakeEffect(),Constants.ONE))
+                    .collect(Collectors.toList()).size());
+            lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+                            &&Constants.equalsInteger(i.getRiskUnTakeEffect(),Constants.ONE))
+                    .collect(Collectors.toList()).size();
+            settleClaimsDataVO.setRiskUnTakeEffectRata(this.jsRata(settleClaimsDataVO.getRiskUnTakeEffectTotal(),lastMonthTotal));
+
+            //椋庨櫓鏁忔劅璇嶆姤琛�
+            List<String> sensitiveList = settleClaimsList.stream().filter(i->StringUtils.isNotBlank(i.getRiskSensitive())).map(i->i.getRiskSensitive()).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(sensitiveList)){
+                List<String> allSensitiveStrList = new ArrayList<>();
+                for (String string:sensitiveList) {
+                    allSensitiveStrList.addAll(Arrays.asList(string.split(",")));
+                }
+                Set<String> sensitiveSetList = new HashSet<>(allSensitiveStrList);
+                List<DataListVO> sensitiveDataList = new ArrayList<>();
+                for (String string:sensitiveSetList) {
+                    DataListVO dataListVO = new DataListVO();
+                    dataListVO.setDataFirst(string);
+                    dataListVO.setDataSecond(allSensitiveStrList.stream().filter(i->i.equals(string)).collect(Collectors.toList()).size()+"");
+                    sensitiveDataList.add(dataListVO);
+                }
+                settleClaimsDataVO.setSensitiveDataList(sensitiveDataList);
+            }
+
+            //鍖哄煙妗堜欢绫诲瀷鍒嗗竷
+            this.getAreaDistribution(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->StringUtils.isNotBlank(i.getAreaId())).collect(Collectors.toList()));
+
+            //鍚勭被鍨嬫浠跺垎甯�
+            this.getCaseType(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->Objects.nonNull(i.getCaseType())).collect(Collectors.toList()));
+
+            //鎸夋湀缁熻妗堜欢閲戦
+            this.getSettleTotalMoneyData(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList()));
+
+            //缁撴鐜�
+            this.getCloseRata(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList()));
+
+            //骞撮緞鍒嗗竷
+            this.getMemberAgeDataList(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->Objects.nonNull(i.getMemberAge())).collect(Collectors.toList()));
+
+            //宸ョ鏁版嵁鍒嗗竷
+            this.getWorkTypeDate(settleClaimsDataVO,
+                    settleClaimsList.stream().filter(i->Objects.nonNull(i.getWorktypeId())).collect(Collectors.toList()));
         }
-
-
         return settleClaimsDataVO;
+    }
 
+    public BigDecimal jsRata(Integer a,Integer b){
+        if(Objects.isNull(a)||Objects.isNull(b)||Constants.equalsInteger(a,Constants.ZERO)||Constants.equalsInteger(b,Constants.ZERO)){
+            return BigDecimal.ZERO;
+        }
+        return new BigDecimal(a.toString()).divide(new BigDecimal(b.toString()),2,BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.ONE);
     }
 
 
 
+    public void getAreaDistribution(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<Areas> areasList = areasMapper.selectList(new QueryWrapper<Areas>().lambda().isNull(Areas::getParentId).orderByAsc(Areas::getId));
+        List<DataListVO> areaDataList = new ArrayList<>();
+        for (Areas areas:areasList) {
+            DataListVO dataListVO = new DataListVO();
+            dataListVO.setDataFirst(areas.getName());
+            dataListVO.setDataSecond(
+                    settleClaimsList.stream().filter(i->i.getAreaId().indexOf(areas.getCode())>=Constants.ZERO).collect(Collectors.toList()).size()+""
+            );
+            dataListVO.setDataThird(areas.getCode());
+            areaDataList.add(dataListVO);
+        }
+        settleClaimsDataVO.setAreaDataList(areaDataList);
+    }
+
+
+    public void getCaseType(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<DataListVO> caseTypeDataList = new ArrayList<>();
+        //1=鍖荤枟锛�2=浼ゆ畫锛�3=姝讳骸
+        for (int i = 1; i <= 3; i++) {
+            int finalI = i;
+            DataListVO dataListVO = new DataListVO();
+            if(finalI==1){
+                dataListVO.setDataFirst("鍖荤枟");
+            }else{
+                dataListVO.setDataFirst(Constants.equalsInteger(finalI,Constants.TWO)?"浼ゆ畫":"姝讳骸");
+            }
+            dataListVO.setDataSecond(settleClaimsList.stream()
+                    .filter(j->Objects.nonNull(j.getCaseType())&&Constants.equalsInteger(j.getCaseType(), finalI)).collect(Collectors.toList()).size()+"");
+            caseTypeDataList.add(dataListVO);
+        }
+        settleClaimsDataVO.setCaseTypeDataList(caseTypeDataList);
+    }
+
+
+    public void getSettleTotalMoneyData(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        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);
+            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"
+            );
+            monthTotalMoneyDataList.add(dataListVO);
+        }
+        settleClaimsDataVO.setMonthTotalMoneyDataList(monthTotalMoneyDataList);
+    }
 
 
 
+    public void getCloseRata(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<DataListVO> closeRataDataList = new ArrayList<>();
+        for (int i = -5; i <= 0 ; i++) {
+            String month = DateUtil.DateToStr(
+                    DateUtil.afterDateByType(new Date(),1,i),"yyyy-MM");
+            DataListVO dataListVO = new DataListVO();
+            dataListVO.setDataFirst(month);
+            List<SettleClaims> monthList =    settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(month)).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(monthList)){
+                List<SettleClaims> closeCaseList = monthList.stream().filter(j->Constants.equalsInteger(j.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList());
+                if(CollectionUtils.isEmpty(closeCaseList)){
+                    dataListVO.setDataSecond("0");
+                }else{
+                    dataListVO.setDataSecond(new BigDecimal(closeCaseList.size()+"").divide(new BigDecimal(monthList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+                }
+            }else{
+                dataListVO.setDataSecond("0");
+            }
+            closeRataDataList.add(dataListVO);
+        }
+        settleClaimsDataVO.setCloseRataDataList(closeRataDataList);
+    }
+
+
+    public void getType(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<DataListVO> typeDataList = new ArrayList<>();
+        //0宸ヤ綔鏈熼棿鍙椾激 1涓婁笅鐝�斾腑鍙椾激 2闈炲伐浣滄椂闂村彈浼� 3鎰忓鍙椾激
+        for (int i = 0; i <= 3; i++) {
+            int finalI = i;
+            DataListVO dataListVO = new DataListVO();
+            if(finalI==0){
+                dataListVO.setDataFirst("宸ヤ綔鏈熼棿鍙椾激");
+            }else if(finalI==1){
+                dataListVO.setDataFirst("涓婁笅鐝�斾腑鍙椾激");
+            }else{
+                dataListVO.setDataFirst(Constants.equalsInteger(finalI,Constants.TWO)?"闈炲伐浣滄椂闂村彈浼�":"鎰忓鍙椾激");
+            }
+            dataListVO.setDataSecond(settleClaimsList.stream()
+                    .filter(j->Objects.nonNull(j.getType())&&Constants.equalsInteger(j.getCaseType(), finalI)).collect(Collectors.toList()).size()+"");
+            typeDataList.add(dataListVO);
+        }
+        settleClaimsDataVO.setTypeDataList(typeDataList);
+    }
+
+
+    public void getMemberAgeDataList(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<DataListVO> memberAgeDataList = new ArrayList<>();
+
+        DataListVO dataListVOa = new DataListVO();
+        dataListVOa.setDataFirst("18-25");
+        dataListVOa.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                (j.getMemberAge() >= 18 || j.getMemberAge() <= 25))
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOa);
+
+
+        DataListVO dataListVOb = new DataListVO();
+        dataListVOb.setDataFirst("26-35");
+        dataListVOb.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                (j.getMemberAge() >= 26 || j.getMemberAge() <= 35))
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOb);
+
+        DataListVO dataListVOc = new DataListVO();
+        dataListVOc.setDataFirst("36-45");
+        dataListVOc.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                (j.getMemberAge() >= 36 || j.getMemberAge() <= 45))
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOc);
+
+        DataListVO dataListVOd = new DataListVO();
+        dataListVOd.setDataFirst("46-55");
+        dataListVOd.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                (j.getMemberAge() >= 46 || j.getMemberAge() <= 55))
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOd);
+
+        DataListVO dataListVOe = new DataListVO();
+        dataListVOe.setDataFirst("56-65");
+        dataListVOe.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                (j.getMemberAge() >= 56 || j.getMemberAge() <= 65))
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOe);
+
+
+        DataListVO dataListVOf = new DataListVO();
+        dataListVOf.setDataFirst("65+");
+        dataListVOf.setDataSecond(
+                settleClaimsList.stream()
+                        .filter(j->Objects.nonNull(j.getMemberAge())&&
+                                j.getMemberAge() >= 66 )
+                        .collect(Collectors.toList()).size()+""
+        );
+        memberAgeDataList.add(dataListVOf);
+        settleClaimsDataVO.setMemberAgeDataList(memberAgeDataList);
+    }
+
+
+
+    public void getWorkTypeDate(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+        List<DataListVO> workTypeDataList = new ArrayList<>();
+        if(CollectionUtils.isEmpty(settleClaimsList)){
+            return ;
+        }
+        List<Integer> workTypeIdList = settleClaimsList.stream().map(i->i.getWorktypeId()).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(workTypeIdList)){
+            return ;
+        }
+        Set<Integer> setWorkType = new HashSet<>(workTypeIdList);
+        List<Worktype> workTypeList = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda().eq(Worktype::getIsdeleted,Constants.ZERO).in(Worktype::getId,setWorkType));
+        if(CollectionUtils.isEmpty(workTypeList)){
+            return ;
+        }
+        for (Worktype worktype:workTypeList) {
+            DataListVO dataListVO = new DataListVO();
+            dataListVO.setDataFirst(worktype.getName());
+            dataListVO.setDataSecond(
+                    settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getWorktypeId(),worktype.getId())).collect(Collectors.toList()).size()+"");
+            workTypeDataList.add(dataListVO);
+        }
+        workTypeDataList = workTypeDataList.stream().sorted(Comparator.comparing(DataListVO::getDataSecond).reversed()).collect(Collectors.toList());
+        settleClaimsDataVO.setWorkTypeDataList(workTypeDataList);
+    }
+
+
+
+    @Override
+    public InsuranceDataVO getInsuranceDataVO(){
+        InsuranceDataVO insuranceDataVO = new InsuranceDataVO();
+        insuranceDataVO.setInsuranceTotal(Constants.ZERO);
+        insuranceDataVO.setInsuranceAddTotal(Constants.ZERO);
+        insuranceDataVO.setInsuranceApplyTotal(Constants.ZERO);
+        insuranceDataVO.setInsuranceApplyAddTotal(Constants.ZERO);
+        insuranceDataVO.setInsuranceUserTotal(Constants.ZERO);
+        insuranceDataVO.setInsuranceUserAddTotal(Constants.ZERO);
+        insuranceDataVO.setTotalAddFee(BigDecimal.ZERO);
+        insuranceDataVO.setTotalFee(BigDecimal.ZERO);
+        //鏈湀鏃ユ湡
+        String monthData = DateUtil.DateToStr(new Date(),"yyyy-MM");
+        //淇濋櫓鍏徃鏁伴噺
+        List<Insurance> insuranceList = insuranceMapper.selectList(new QueryWrapper<Insurance>().lambda().eq(Insurance::getIsdeleted,Constants.ZERO).eq(Insurance::getStatus,Constants.ZERO));
+        if(CollectionUtils.isNotEmpty(insuranceList)){
+            insuranceDataVO.setInsuranceTotal(insuranceList.size());
+            insuranceDataVO.setInsuranceAddTotal(insuranceList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size());
+        }
+
+        //淇濆崟鏁伴噺
+        List<InsuranceApply> insuranceApplyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>()
+                .lambda().eq(InsuranceApply::getIsdeleted,Constants.ZERO).in(InsuranceApply::getStatus,
+                        Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+        );
+        if(CollectionUtils.isNotEmpty(insuranceApplyList)){
+            insuranceDataVO.setInsuranceApplyTotal(insuranceApplyList.size());
+            insuranceDataVO.setInsuranceApplyAddTotal(insuranceApplyList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size());
+        }
+
+        //鍦ㄤ繚浜烘暟
+        List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,new MPJLambdaWrapper<ApplyDetail>().selectAll(ApplyDetail.class)
+                .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+                .eq(InsuranceApply::getIsdeleted,Constants.ZERO).in(InsuranceApply::getStatus,
+                        Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+                .eq(ApplyDetail::getIsdeleted,Constants.ZERO)
+                .apply(" ( t.START_TIME >= now() and t.END_TIME <= now() ) ")
+        );
+        if(CollectionUtils.isNotEmpty(applyDetailList)){
+            insuranceDataVO.setInsuranceUserTotal(applyDetailList.size());
+            insuranceDataVO.setInsuranceUserAddTotal(
+                    applyDetailList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM")
+                            .equals(monthData)).collect(Collectors.toList()).size());
+
+            insuranceDataVO.setTotalFee(applyDetailList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+            insuranceDataVO.setTotalAddFee(applyDetailList.stream()
+                    .filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM")
+                            .equals(monthData)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        }
+
+        return insuranceDataVO;
+    }
 
 
 

--
Gitblit v1.9.3