From 3d6a8e384d31432a23f5a8c1a3135a58cbe617b5 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 27 五月 2025 17:25:38 +0800
Subject: [PATCH] 提交一把

---
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java |  540 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 453 insertions(+), 87 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 b143150..58914ca 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
@@ -22,6 +22,8 @@
 import com.doumee.dao.business.vo.RiskConfigVO;
 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.SettleClaimsDataVO;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.SettleClaimsLogService;
 import com.doumee.service.business.SettleClaimsService;
@@ -593,9 +595,7 @@
             }
         }
         //璁板綍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null);
-
-
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null,null);
         //瀛樺偍寰呭姙淇℃伅
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
         //鍒犻櫎鍏朵粬寰呭姙
@@ -737,6 +737,7 @@
 
             settleClaims.setDzbdFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_DZBD_FILE.getKey())).collect(Collectors.toList()));
 
+            settleClaims.setSupplementFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_SUPPLEMENT_FILE.getKey())).collect(Collectors.toList()));
         }
 
         //鏌ヨ鎿嶄綔璁板綍
@@ -779,6 +780,80 @@
         }else if(!Objects.isNull(lastConfirm)&&Objects.isNull(multifile)){
             settleClaims.setFinishDate(lastConfirm.getCreateDate());
         }
+        List<SettleParentStatusVO> parentStatusVOList = this.getParentStatus(settleClaims);
+        settleClaims.setParentStatusVOList(parentStatusVOList);
+        settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
+
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.REJECT_DEAL.getKey())
+            || Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey())){
+            SettleClaimsLog settleClaimsLog = settleClaimsLogJoinMapper.selectJoinOne(SettleClaimsLog.class,
+                    new MPJLambdaWrapper<SettleClaimsLog>()
+                            .selectAll(SettleClaimsLog.class)
+                            .selectAs(SystemUser::getRealname,SettleClaimsLog::getCreatorName)
+                            .selectAs(SystemUser::getType,SettleClaimsLog::getCreatorType)
+                            .selectAs(Company::getName,SettleClaimsLog::getCompanyName)
+                            .leftJoin(SystemUser.class,SystemUser::getId,SettleClaimsLog::getCreator)
+                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                            .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
+                            .in(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_DISCUSS_REFUSE.getKey(),
+                            Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE.getKey())
+                    .orderByDesc(SettleClaimsLog::getCreateDate)
+                    .last(" limit 1")
+            );
+            settleClaims.setRefuseSettleClaimsLog(settleClaimsLog);
+        }else if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())){
+            SettleClaimsLog settleClaimsLog = settleClaimsLogJoinMapper.selectJoinOne(SettleClaimsLog.class,
+                    new MPJLambdaWrapper<SettleClaimsLog>()
+                            .selectAll(SettleClaimsLog.class)
+                            .selectAs(SystemUser::getRealname,SettleClaimsLog::getCreatorName)
+                            .selectAs(SystemUser::getType,SettleClaimsLog::getCreatorType)
+                            .selectAs(Company::getName,SettleClaimsLog::getCompanyName)
+                            .leftJoin(SystemUser.class,SystemUser::getId,SettleClaimsLog::getCreator)
+                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                            .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
+                            .in(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_RETURN.getKey())
+                            .orderByDesc(SettleClaimsLog::getCreateDate)
+                            .last(" limit 1")
+            );
+            settleClaims.setRefuseSettleClaimsLog(settleClaimsLog);
+        }else if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
+                &&Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)
+        ){
+            SettleClaimsLog settleClaimsLog = settleClaimsLogJoinMapper.selectJoinOne(SettleClaimsLog.class,
+                    new MPJLambdaWrapper<SettleClaimsLog>()
+                            .selectAll(SettleClaimsLog.class)
+                            .selectAs(SystemUser::getRealname,SettleClaimsLog::getCreatorName)
+                            .selectAs(SystemUser::getType,SettleClaimsLog::getCreatorType)
+                            .selectAs(Company::getName,SettleClaimsLog::getCompanyName)
+                            .leftJoin(SystemUser.class,SystemUser::getId,SettleClaimsLog::getCreator)
+                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                            .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
+                            .in(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE.getKey())
+                            .orderByDesc(SettleClaimsLog::getCreateDate)
+                            .last(" limit 1")
+            );
+            settleClaims.setRefuseSettleClaimsLog(settleClaimsLog);
+        }else if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())){
+            SettleClaimsLog settleClaimsLog = settleClaimsLogJoinMapper.selectJoinOne(SettleClaimsLog.class,
+                    new MPJLambdaWrapper<SettleClaimsLog>()
+                            .selectAll(SettleClaimsLog.class)
+                            .selectAs(SystemUser::getRealname,SettleClaimsLog::getCreatorName)
+                            .selectAs(SystemUser::getType,SettleClaimsLog::getCreatorType)
+                            .selectAs(Company::getName,SettleClaimsLog::getCompanyName)
+                            .leftJoin(SystemUser.class,SystemUser::getId,SettleClaimsLog::getCreator)
+                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                            .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
+                            .in(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_FINISH.getKey())
+                            .orderByDesc(SettleClaimsLog::getCreateDate)
+                            .last(" limit 1")
+            );
+            settleClaims.setRefuseSettleClaimsLog(settleClaimsLog);
+        }
+
+
+
+
+
         return settleClaims;
     }
 
@@ -899,6 +974,7 @@
                     .last("limit 1")));
         }
         settleClaims.setExtData(settleClaimsExtMapper.selectOne(new QueryWrapper<SettleClaimsExt>().lambda().eq(SettleClaimsExt::getSettileClaimsId,id).last("limit 1")));
+        settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
         return settleClaims;
     }
 
@@ -951,7 +1027,7 @@
         settleClaimsMapper.updateById(oldSettleClaims);
         //璁板綍鏃ュ織
         Constants.SettleClaimsLogType settleClaimsLogType =  Constants.SettleClaimsLogType.UPDATE_DATA;
-        this.saveSettleClaimsLog(settleClaims,settleClaimsLogType,null);
+        this.saveSettleClaimsLog(settleClaims,settleClaimsLogType,null,null);
         return oldSettleClaims.getId();
     }
 
@@ -983,7 +1059,7 @@
 
         Constants.SettleClaimsLogType settleClaimsLogType =  Constants.SettleClaimsLogType.SUPPLEMENT;
         String content = settleClaimsLogType.getInfo().replace("${param}", scSupplementDTO.getSupplement());
-        this.saveSettleClaimsLog(settleClaims,settleClaimsLogType,content);
+        this.saveSettleClaimsLog(settleClaims,settleClaimsLogType,content,null);
     }
 
 
@@ -1024,7 +1100,7 @@
 
 
 
-    public void saveSettleClaimsLog(SettleClaims settleClaims, Constants.SettleClaimsLogType settleClaimsLogType, String content){
+    public void saveSettleClaimsLog(SettleClaims settleClaims, Constants.SettleClaimsLogType settleClaimsLogType, String content,Constants.SettleClaimsStatus settleClaimsStatus){
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
         SettleClaimsLog settleClaimsLog = new SettleClaimsLog();
         settleClaimsLog.setCreateDate(new Date());
@@ -1035,6 +1111,10 @@
         settleClaimsLog.setContent(content);
         settleClaimsLog.setObjType(settleClaimsLogType.getKey());
         settleClaimsLog.setObjId(settleClaims.getId());
+        if(Objects.nonNull(settleClaimsStatus)){
+            settleClaimsLog.setParentStatus(settleClaimsStatus.getParentKey());
+            settleClaimsLog.setStatus(settleClaimsStatus.getKey());
+        }
         settleClaimsLogMapper.insert(settleClaimsLog);
     }
 
@@ -1156,7 +1236,8 @@
         PageData<SettleClaims> pageData = PageData.from(settleClaimsJoinMapper.selectJoinPage(page,SettleClaims.class, queryWrapper));
         for (SettleClaims settleClaims:pageData.getRecords()) {
             settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
-            settleClaims.setPcAccount(settleClaims.getHpAccount().add(settleClaims.getHpOtherAccount()));
+
+            settleClaims.setPcAccount(Constants.getBigDecimalNoNull(settleClaims.getHpAccount()).add(Constants.getBigDecimalNoNull(settleClaims.getHpOtherAccount())));
         }
         return pageData;
     }
@@ -1209,7 +1290,7 @@
 
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void saveSettleClaims(SettleClaimsDTO settleClaimsDTO,SystemDictDataServiceImpl systemDictDataService){
+    public Integer saveSettleClaims(SettleClaimsDTO settleClaimsDTO,SystemDictDataServiceImpl systemDictDataService){
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(!loginUserInfo.getType().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氬憳宸ユ棤娉曡繘琛岃鎿嶄綔");
@@ -1217,8 +1298,9 @@
         if(Objects.isNull(settleClaimsDTO)
             || Objects.isNull(settleClaimsDTO.getSaveType())
             || Objects.isNull(settleClaimsDTO.getMemberId())
-            ||StringUtils.isBlank(settleClaimsDTO.getIdcardNo())
+            || StringUtils.isBlank(settleClaimsDTO.getIdcardNo())
             || Objects.isNull(settleClaimsDTO.getInsuranceApplyId())
+            || Objects.isNull(settleClaimsDTO.getApplyDetailId())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -1270,9 +1352,13 @@
             settleClaimsMapper.insert(settleClaims);
         }
         this.saveFile(settleClaims,settleClaimsDTO,loginUserInfo);
-
-        //璁板綍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null);
+        if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)){
+            this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null,Constants.SettleClaimsStatus.RETURN_ACCEPTANCE);
+            if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())){
+                this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.PLATFORM_REGISTER,null,Constants.SettleClaimsStatus.CONFIRM_INFORMATION);
+            }
+        }
+        return settleClaims.getId();
     }
 
     public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){
@@ -1295,7 +1381,9 @@
         }
         List<Map<String,String>> riskList = new ArrayList<>();
         //鏌ヨ淇濆崟鏄庣粏鏁版嵁
-        ApplyDetail applyDetail = applyDetailMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,settleClaims.getInsuranceApplyId()).eq(ApplyDetail::getId,settleClaimsDTO.getApplyDetailId()).last("limit 1 "));
+        ApplyDetail applyDetail = applyDetailMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda()
+                .eq(ApplyDetail::getApplyId,settleClaims.getInsuranceApplyId())
+                .eq(ApplyDetail::getId,settleClaimsDTO.getApplyDetailId()).last("limit 1 "));
         //鏄惁寮�鍚� 鏂板憳宸ユ姤妗� 0涓嶅厑璁� 1鍏佽
         if(Constants.equalsInteger(solutionsBase.getRiskNewUserStatus(),Constants.ONE)
                 && Objects.nonNull(solutionsBase.getRiskNewUserUnit())
@@ -1485,6 +1573,7 @@
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1497,14 +1586,15 @@
 
         List<Multifile> relationFileList = settleClaimsDTO.getRelationFileList();
         if(CollectionUtils.isNotEmpty(relationFileList)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
+            for (int i = 0; i < relationFileList.size(); i++) {
+                Multifile multifile = relationFileList.get(i);
                 if(Objects.isNull(multifile.getFileurl())
                         || Objects.isNull(multifile.getType())
                         || StringUtils.isBlank(multifile.getName())
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1517,14 +1607,15 @@
 
         List<Multifile> outpatientFileList = settleClaimsDTO.getOutpatientFileList();
         if(CollectionUtils.isNotEmpty(outpatientFileList)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
+            for (int i = 0; i < outpatientFileList.size(); i++) {
+                Multifile multifile = outpatientFileList.get(i);
                 if(Objects.isNull(multifile.getFileurl())
                         || Objects.isNull(multifile.getType())
                         || StringUtils.isBlank(multifile.getName())
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1537,14 +1628,15 @@
 
         List<Multifile> hospitalFileList = settleClaimsDTO.getHospitalFileList();
         if(CollectionUtils.isNotEmpty(hospitalFileList)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
+            for (int i = 0; i < hospitalFileList.size(); i++) {
+                Multifile multifile = hospitalFileList.get(i);
                 if(Objects.isNull(multifile.getFileurl())
                         || Objects.isNull(multifile.getType())
                         || StringUtils.isBlank(multifile.getName())
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1557,14 +1649,15 @@
 
         List<Multifile> disabilityFileList = settleClaimsDTO.getDisabilityFileList();
         if(CollectionUtils.isNotEmpty(disabilityFileList)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
+            for (int i = 0; i < disabilityFileList.size(); i++) {
+                Multifile multifile = disabilityFileList.get(i);
                 if(Objects.isNull(multifile.getFileurl())
                         || Objects.isNull(multifile.getType())
                         || StringUtils.isBlank(multifile.getName())
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1577,14 +1670,15 @@
 
         List<Multifile> otherFileList = settleClaimsDTO.getOtherFileList();
         if(CollectionUtils.isNotEmpty(otherFileList)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
+            for (int i = 0; i < otherFileList.size(); i++) {
+                Multifile multifile = otherFileList.get(i);
                 if(Objects.isNull(multifile.getFileurl())
                         || Objects.isNull(multifile.getType())
                         || StringUtils.isBlank(multifile.getName())
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1593,7 +1687,27 @@
                 multifile.setSortnum(i+1);
                 multifileJoinMapper.insert(multifile);
             }
-        } 
+        }
+        List<Multifile> supplementFileList = settleClaimsDTO.getSupplementFileList();
+        if(CollectionUtils.isNotEmpty(supplementFileList)){
+            for (int i = 0; i < supplementFileList.size(); i++) {
+                Multifile multifile = supplementFileList.get(i);
+                if(Objects.isNull(multifile.getFileurl())
+                        || Objects.isNull(multifile.getType())
+                        || StringUtils.isBlank(multifile.getName())
+                ){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
+                }
+                multifile.setId(null);
+                multifile.setCreator(loginUserInfo.getId());
+                multifile.setCreateDate(new Date());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setObjId(settleClaims.getId());
+                multifile.setObjType(Constants.MultiFile.LP_SUPPLEMENT_FILE.getKey());
+                multifile.setSortnum(i+1);
+                multifileJoinMapper.insert(multifile);
+            }
+        }
     }
 
 //    public void getRiskSettleDetail(Integer id){
@@ -1638,9 +1752,11 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰呬紒涓氳ˉ鍏呮枃浠讹紝璇风瓑寰呬紒涓氳ˉ鍏呮枃浠�");
         }
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE,dto.getDescribe());
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE,dto.getDescribe(),null);
         settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getWaitSupplement,Constants.ONE));
+                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime())
+                        .set(SettleClaims::getWaitSupplementInfo,dto.getDescribe())
+                .set(SettleClaims::getWaitSupplement,Constants.ONE));
     }
 
     @Override
@@ -1681,6 +1797,7 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
             }
             settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
+                            .set(SettleClaims::getWaitSupplement,Constants.ZERO)
                     .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getWaitSupplement,Constants.ZERO));
         }
         multifileJoinMapper.delete(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,dto.getId()).eq(Multifile::getObjType,Constants.MultiFile.LP_OTHER_FILE.getKey()));
@@ -1699,13 +1816,13 @@
                 multifile.setIsdeleted(Constants.ZERO);
                 multifile.setObjId(settleClaims.getId());
                 //娣诲姞鏉愭枡鏀惧叆 鍏朵粬鏉愭枡涓氬姟鍐�
-                multifile.setObjType(Constants.MultiFile.LP_OTHER_FILE.getKey());
+                multifile.setObjType(Constants.MultiFile.LP_SUPPLEMENT_FILE.getKey());
                 multifile.setSortnum(i+1);
                 multifileJoinMapper.insert(multifile);
             }
         }
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null);
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null,null);
     }
 
 
@@ -1732,11 +1849,11 @@
         if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔");
         }
-        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
-        }
+//        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){
+//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+//        }
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.RETURN_SETTLE,null);
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.RETURN_SETTLE,null,Constants.SettleClaimsStatus.RETURN);
         settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
                 .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,Constants.SettleClaimsStatus.RETURN.getKey()));
     }
@@ -1760,13 +1877,16 @@
         if(Objects.isNull(settleClaims)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())){
+        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())
+        || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus()))
+        ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims, Constants.SettleClaimsLogType.UPD_CASE_TYPE,Constants.SettleClaimsLogType.UPD_CASE_TYPE.getInfo());
+        this.saveSettleClaimsLog(settleClaims, Constants.SettleClaimsLogType.UPD_CASE_TYPE,Constants.SettleClaimsLogType.UPD_CASE_TYPE.getInfo(),null);
         settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime())
+                .eq(SettleClaims::getId,dto.getId())
+                .set(SettleClaims::getEditDate,DateUtil.getCurrDateTime())
                 .set(SettleClaims::getEditor,loginUserInfo.getId())
                 .set(SettleClaims::getCaseType,dto.getCaseType()));
     }
@@ -1798,10 +1918,12 @@
         Constants.SettleClaimsStatus settleClaimsStatus =
                 Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())?Constants.SettleClaimsStatus.CONFIRM_INFORMATION:Constants.SettleClaimsStatus.FINISH_ACCEPTANCE;
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims, Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())?Constants.SettleClaimsLogType.PLATFORM_REGISTER:Constants.SettleClaimsLogType.PLATFORM_RETURN,dto.getDescribe());
+        this.saveSettleClaimsLog(settleClaims, Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())?Constants.SettleClaimsLogType.PLATFORM_REGISTER:Constants.SettleClaimsLogType.PLATFORM_RETURN,dto.getDescribe(),settleClaimsStatus);
         settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,
-                        DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,settleClaimsStatus.getKey()));
+                .eq(SettleClaims::getId,dto.getId())
+                .set(SettleClaims::getEditDate, DateUtil.getCurrDateTime())
+                .set(SettleClaims::getEditor,loginUserInfo.getId())
+                .set(SettleClaims::getStatus,settleClaimsStatus.getKey()));
     }
 
 
@@ -1829,8 +1951,14 @@
         if(Constants.equalsInteger(model.getReportNumStatus(),Constants.TWO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
         }
-        if(!((Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())&&Constants.equalsInteger(model.getReportNumStatus(),Constants.ONE))
-                ||(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DEAL.getKey())&&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO)))){
+        if(!(
+                (Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())&&Constants.equalsInteger(model.getReportNumStatus(),Constants.ONE))
+                ||(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())
+                        &&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO))
+//                        ||(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DEAL.getKey())
+//                        &&Constants.equalsInteger(model.getReportNumStatus(),Constants.ZERO))
+        )
+        ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
         }
 
@@ -1937,7 +2065,7 @@
         if(Objects.isNull(settleClaims)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DEAL.getKey(),settleClaims.getStatus())){
+        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey(),settleClaims.getStatus())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
         if(Constants.equalsInteger(dto.getStatus(),Constants.ZERO) || Constants.equalsInteger(dto.getStatus(),Constants.THREE)){
@@ -1948,7 +2076,7 @@
             //瀛樺偍鏃ュ織
             this.saveSettleClaimsLog(settleClaims,
                     Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsLogType.PLATFORM_ACCEPTANCE:Constants.SettleClaimsLogType.PLATFORM_DISCUSS,
-                    dto.getDescribe());
+                    dto.getDescribe(),Constants.SettleClaimsStatus.ACCEPTANCE);
         }else if(Constants.equalsInteger(dto.getStatus(),Constants.ONE)){
             //鎷掔粷鍙楃悊
             settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
@@ -1957,7 +2085,7 @@
             //瀛樺偍鏃ュ織
             this.saveSettleClaimsLog(settleClaims,
                     Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE,
-                    Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE.getInfo().replace("{param}",dto.getDescribe()));
+                    Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE.getInfo().replace("{param}",dto.getDescribe()),Constants.SettleClaimsStatus.REJECT_DEAL);
         }else if(Constants.equalsInteger(dto.getStatus(),Constants.TWO)){
             //鍙楃悊鍟嗚瀹℃壒
             settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
@@ -1966,7 +2094,7 @@
             //瀛樺偍鏃ュ織
             this.saveSettleClaimsLog(settleClaims,
                     Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS,
-                    dto.getDescribe());
+                    dto.getDescribe(),Constants.SettleClaimsStatus.REJECT_DEAL);
         }
     }
 
@@ -1984,9 +2112,9 @@
         }
         List<CompensationVO> modelList = new ArrayList<>();
         if (Objects.nonNull(settleClaims)) {
-            if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ZERO)&&StringUtils.isNotBlank(settleClaims.getAccountContent())){
+            if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ONE)&&StringUtils.isNotBlank(settleClaims.getAccountContent())){
                 modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
-            }else if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ONE)&&StringUtils.isNotBlank(settleClaims.getHpAccountContent())){
+            }else if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.TWO)&&StringUtils.isNotBlank(settleClaims.getHpAccountContent())){
                 modelList = JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
             }
         }
@@ -2027,7 +2155,8 @@
         if(Objects.isNull(settleClaims)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus()))||Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus())){
+        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())
+                ||Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus()))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
 
@@ -2050,7 +2179,7 @@
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_LP_DEAL,
-                Constants.SettleClaimsLogType.PLATFORM_LP_DEAL.getInfo());
+                Constants.SettleClaimsLogType.PLATFORM_LP_DEAL.getInfo(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION);
     }
 
 
@@ -2086,7 +2215,7 @@
         Constants.SettleClaimsLogType settleClaimsLogType = Constants.equalsInteger(dto.getStatus(),Constants.ZERO)
                 ?Constants.SettleClaimsLogType.PLATFORM_DISCUSS_PASS:Constants.SettleClaimsLogType.PLATFORM_DISCUSS_REFUSE;
         this.saveSettleClaimsLog(settleClaims, settleClaimsLogType
-                ,settleClaimsLogType.getInfo().replace("${param}",dto.getDescribe()));
+                ,settleClaimsLogType.getInfo().replace("${param}",dto.getDescribe()),settleClaimsStatus);
         settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
                 .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate, DateUtil.getCurrDateTime())
                         .set(SettleClaims::getEditor,loginUserInfo.getId())
@@ -2128,8 +2257,6 @@
         update.setHpAccountContent(dto.getCompensationJson());
         update.setHpAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
         update.setHpOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
-
-
         update.setId(settleClaims.getId());
         update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey());
         settleClaimsMapper.updateById(update);
@@ -2137,7 +2264,7 @@
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_HP_DEAL,
-                Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo());
+                Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo(),Constants.SettleClaimsStatus.COMPENSATION);
     }
 
 
@@ -2176,30 +2303,33 @@
         update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.WG_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
         update.setScClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SC_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
         update.setSwClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SW_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
-        update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
-        //澶勭悊鍘嗗彶鏁版嵁
-        List<CompensationVO> oldList =  JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
-        for (CompensationVO compensationVO:oldList) {
-            if(compensationVO.getName().equals(Constants.compensation.YL_COMPENSATION.getName())){
-                compensationVO.setFee(update.getYlClaimAccount());
-            }else if(compensationVO.getName().equals(Constants.compensation.WG_COMPENSATION.getName())){
-                compensationVO.setFee(update.getWgClaimAccount());
-            }else if(compensationVO.getName().equals(Constants.compensation.SC_COMPENSATION.getName())){
-                compensationVO.setFee(update.getScClaimAccount());
-            }else if(compensationVO.getName().equals(Constants.compensation.SW_COMPENSATION.getName())){
-                compensationVO.setFee(update.getSwClaimAccount());
-            }else{
-              continue;  
-            }
-        }
-        update.setAccountContent(JSONArray.toJSONString(oldList));
-        update.setId(settleClaims.getId()); 
+//        update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+//        //澶勭悊鍘嗗彶鏁版嵁
+//        List<CompensationVO> oldList =  JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
+//        for (CompensationVO compensationVO:oldList) {
+//            if(compensationVO.getName().equals(Constants.compensation.YL_COMPENSATION.getName())){
+//                compensationVO.setFee(update.getYlClaimAccount());
+//            }else if(compensationVO.getName().equals(Constants.compensation.WG_COMPENSATION.getName())){
+//                compensationVO.setFee(update.getWgClaimAccount());
+//            }else if(compensationVO.getName().equals(Constants.compensation.SC_COMPENSATION.getName())){
+//                compensationVO.setFee(update.getScClaimAccount());
+//            }else if(compensationVO.getName().equals(Constants.compensation.SW_COMPENSATION.getName())){
+//                compensationVO.setFee(update.getSwClaimAccount());
+//            }else{
+//              continue;
+//            }
+//        }
+        update.setHpAccountContent(dto.getCompensationJson());
+        update.setHpAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setHpOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setId(settleClaims.getId());
+        update.setFeeUpdate(Constants.ONE);
         settleClaimsMapper.updateById(update);
 
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_UPD_FEE,
-                Constants.SettleClaimsLogType.PLATFORM_UPD_FEE.getInfo());
+                dto.getDescribe(),null);
     }
 
 
@@ -2207,27 +2337,28 @@
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     public void confirmFee(Integer id){
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        if(!loginUserInfo.getType().equals(Constants.ZERO)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
+        if(!loginUserInfo.getType().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氫汉鍛樻棤娉曡繘琛岃鎿嶄綔");
         }
         SettleClaims settleClaims  = settleClaimsJoinMapper.selectById(id);
         if(Objects.isNull(settleClaims)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+        //濡傛灉鏄紒涓� 鏌ヨ鏄惁鏄嚜宸变紒涓氱殑鏁版嵁
+        if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔");
         }
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
         update.setEditor(loginUserInfo.getId());
-        update.setStatus(Constants.SettleClaimsStatus.WAIT_DEAL.getKey());
+        update.setStatus(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey());
         update.setId(settleClaims.getId());
         settleClaimsMapper.updateById(update);
 
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.CONFIRM_FEE,
-                Constants.SettleClaimsLogType.CONFIRM_FEE.getInfo());
+                Constants.SettleClaimsLogType.CONFIRM_FEE.getInfo(),Constants.SettleClaimsStatus.CONFIRM_FEE);
     }
 
 
@@ -2255,6 +2386,9 @@
         update.setEditDate(new Date());
         update.setEditor(loginUserInfo.getId());
         update.setStatus(Constants.SettleClaimsStatus.CLOSE_CASE.getKey());
+        update.setCheckDate(new Date());
+        update.setCheckUserId(loginUserInfo.getId());
+        update.setCheckInfo(Constants.SettleClaimsStatus.CLOSE_CASE.name());
         update.setId(settleClaims.getId());
         settleClaimsMapper.updateById(update);
 
@@ -2285,7 +2419,7 @@
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_FINISH,
-                dto.getDescribe());
+                dto.getDescribe(),Constants.SettleClaimsStatus.CLOSE_CASE);
     }
 
 
@@ -2293,7 +2427,9 @@
     public List<SettleParentStatusVO> getParentStatus(SettleClaims settleClaims){
         List<SettleParentStatusVO> settleParentStatusVOList = new ArrayList<>();
         List<SettleClaimsLog> settleClaimsLogList = settleClaimsLogMapper
-                .selectList(new QueryWrapper<SettleClaimsLog>().lambda().eq(SettleClaimsLog::getObjId,settleClaims.getId()).orderByDesc(SettleClaimsLog::getCreateDate));
+                .selectList(new QueryWrapper<SettleClaimsLog>().lambda().eq(SettleClaimsLog::getObjId,settleClaims.getId())
+                        .isNotNull(SettleClaimsLog::getParentStatus)
+                        .orderByDesc(SettleClaimsLog::getId));
         //绔嬫閫�鍥炵姸鎬佹暟鎹�
         if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())){
             SettleParentStatusVO settleParentStatusVO = new SettleParentStatusVO();
@@ -2357,21 +2493,22 @@
             //鑾峰彇褰撳墠鏃ュ織鏈�澶х殑鐖剁姸鎬�
             Optional<Integer> optionalInteger = settleClaimsLogs.stream().map(i->i.getParentStatus()).max(Comparator.comparingInt(o -> o));
             if(optionalInteger.isPresent()){
-                for (int i = 1; i <= 5; i++) {
+
+                for (int i = 1; i <= (optionalInteger.get()<5?optionalInteger.get():5); i++) {
                     SettleParentStatusVO s = new SettleParentStatusVO();
                     Constants.SettleClaimsLogParentStatus  parentStatus = Constants.SettleClaimsLogParentStatus.getAll(i);
                     s.setParentTitle(parentStatus.getName());
                     s.setChildTitle(parentStatus.getInfo());
                     s.setStatus(Constants.ZERO);
                     //濡傛灉鏄瓑浜庣埗鐘舵�� 鍒欏幓鏌ヨ瀹為檯鐨勪笟鍔$姸鎬�
-                    if(Constants.equalsInteger(i,optionalInteger.get())){
-                        Optional<SettleClaimsLog> settleClaimsLogOptional = settleClaimsLogList.stream()
-                                .filter(j->Constants.equalsInteger(j.getParentStatus(),optionalInteger.get())).findFirst();
-                        if(settleClaimsLogOptional.isPresent()){
-                            s.setChildTitle(Constants.SettleClaimsLogType.getName(settleClaimsLogOptional.get().getObjType()));
-                        }
+                    Optional<SettleClaimsLog> settleClaimsLogOptional = settleClaimsLogList.stream()
+                            .filter(j->Constants.equalsInteger(j.getParentStatus(),optionalInteger.get())).findFirst();
+                    if(settleClaimsLogOptional.isPresent()){
+                        s.setChildTitle(Constants.SettleClaimsLogType.getName(settleClaimsLogOptional.get().getObjType()));
+                        s.setOptDate(settleClaimsLogOptional.get().getCreateDate());
                     }
                     settleParentStatusVOList.add(s);
+
                 }
             }
             //娣诲姞鎾ゆ鏁版嵁
@@ -2380,7 +2517,7 @@
             settleParentStatusCHVO.setChildTitle("浼佷笟涓诲姩鎾ゆ");
             settleParentStatusCHVO.setStatus(Constants.THREE);
             Optional<SettleClaimsLog> optionalSettleClaimsSLLog = settleClaimsLogList.stream()
-                    .filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsLogType.RETURN_SETTLE.getKey())).findFirst();
+                    .filter(i->Constants.equalsInteger(i.getObjType(),Constants.SettleClaimsLogType.RETURN_SETTLE.getKey())).findFirst();
             if(optionalSettleClaimsSLLog.isPresent()){
                 settleParentStatusCHVO.setOptDate(optionalSettleClaimsSLLog.get().getCreateDate());
             }
@@ -2401,9 +2538,28 @@
                     //濡傛灉鏈�澶х殑鐖朵笟鍔$姸鎬� 澶т簬 榛樿鐨�6绫绘暟鎹� 鍒欑洿鎺ユ樉绀洪粯璁ら厤缃�
                     s.setChildTitle(parentStatus.getInfo());
                     s.setStatus(Constants.ZERO);
+                    int finalI = i;
+                    Optional<SettleClaimsLog> optionalSettleClaimsLog = settleClaimsLogList.stream()
+                            .filter(j->Constants.equalsInteger(j.getParentStatus(), finalI)).findFirst();
+                    if(optionalSettleClaimsLog.isPresent()){
+                        s.setOptDate(optionalSettleClaimsLog.get().getCreateDate());
+                    }
                 }else if(optionalInteger.get()<i){
                     //濡傛灉鏈�澶х殑鐖朵笟鍔$姸鎬� 灏忎簬 榛樿鐨�6绫绘暟鎹� 鍒欑洿鎺ユ樉绀洪粯璁ゆ湭澶勭悊閰嶇疆
                     s.setChildTitle(parentStatus.getWaitInfo());
+                    if(Constants.equalsInteger(i,Constants.SettleClaimsLogParentStatus.LS.getKey())){
+//                        //鎶ユ瀹℃壒閫氳繃鍚庤鏄剧ず
+                        Optional<SettleClaimsLog> settleClaimsLogOptional = settleClaimsLogList.stream()
+                                .filter(j->
+                                        Constants.equalsInteger(j.getObjType(),Constants.SettleClaimsLogType.PLATFORM_ACCEPTANCE.getKey())
+                                        || Constants.equalsInteger(j.getObjType(),Constants.SettleClaimsLogType.PLATFORM_DISCUSS_PASS.getKey())
+                                ).findFirst();
+                        if(settleClaimsLogOptional.isPresent()){
+                            s.setStatus(Constants.ONE);
+                            settleParentStatusVOList.add(s);
+                            continue;
+                        }
+                    }
                     s.setStatus(Constants.TWO);
                 }else{
                     //濡傛灉鏄瓑浜庣埗鐘舵�� 鍒欏幓鏌ヨ瀹為檯鐨勪笟鍔$姸鎬�
@@ -2412,6 +2568,7 @@
                                 .filter(j->Constants.equalsInteger(j.getParentStatus(),optionalInteger.get())).findFirst();
                         if(settleClaimsLogOptional.isPresent()){
                             s.setChildTitle(Constants.SettleClaimsLogType.getName(settleClaimsLogOptional.get().getObjType()));
+                            s.setOptDate(settleClaimsLogOptional.get().getCreateDate());
                         }
                     }
                     s.setStatus(Constants.ONE);
@@ -2420,10 +2577,219 @@
             }
         }
         return settleParentStatusVOList;
+    }
 
+
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void updHurtType(UpdHurtTypeDTO dto){
+        if(Objects.isNull(dto)
+                || Objects.isNull(dto.getId())
+                || Objects.isNull(dto.getHurtType())
+                || !(Constants.equalsInteger(dto.getHurtType(),Constants.ZERO) || Constants.equalsInteger(dto.getHurtType(),Constants.ONE))
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!loginUserInfo.getType().equals(Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
+        }
+        SettleClaims settleClaims  = settleClaimsJoinMapper.selectById(dto.getId());
+        if(Objects.isNull(settleClaims)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey(),settleClaims.getStatus())
+        || Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())
+        //        || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DEAL.getKey(),settleClaims.getStatus())
+        )){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+        }
+        if(!Constants.equalsInteger(settleClaims.getHurtType(),Constants.TWO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸蹭慨鏀硅繃锛屾棤娉曞啀娆′慨鏀�");
+        }
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setHurtType(dto.getHurtType());
+        update.setId(settleClaims.getId());
+        settleClaimsMapper.updateById(update);
+
+        //瀛樺偍鏃ュ織
+        this.saveSettleClaimsLog(settleClaims,
+                Constants.SettleClaimsLogType.UPD_HURT_TYPE,
+                Constants.SettleClaimsLogType.UPD_HURT_TYPE.getInfo(),null);
+    }
+
+
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void updReceiveInfo(UpdReceiveInfoDTO dto){
+        if(Objects.isNull(dto)
+                || Objects.isNull(dto.getId())
+                || StringUtils.isBlank(dto.getReceiveBank())
+                || StringUtils.isBlank(dto.getReceiveAccount())
+                || StringUtils.isBlank(dto.getReceiveUserName())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!loginUserInfo.getType().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氫汉鍛樻棤娉曡繘琛岃鎿嶄綔");
+        }
+        SettleClaims settleClaims  = settleClaimsJoinMapper.selectById(dto.getId());
+        if(Objects.isNull(settleClaims)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        //濡傛灉鏄紒涓� 鏌ヨ鏄惁鏄嚜宸变紒涓氱殑鏁版嵁
+        if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus()) || Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus()) )
+        ){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+        }
+
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setReceiveBank(dto.getReceiveBank());
+        update.setReceiveAccount(dto.getReceiveAccount());
+        update.setReceiveUserName(dto.getReceiveUserName());
+        update.setId(settleClaims.getId());
+        settleClaimsMapper.updateById(update);
+
+        //瀛樺偍鏃ュ織
+        this.saveSettleClaimsLog(settleClaims,
+                Constants.SettleClaimsLogType.UPD_RECEIVE_INFO,
+                Constants.SettleClaimsLogType.UPD_RECEIVE_INFO.getInfo(),null);
+    }
+
+
+
+    @Override
+    public List<String> getDiscussProblemType(){
+       String types = systemDictDataBiz.queryByCode(Constants.PROTOCOL,Constants.DISCUSS_PROBLEM_TYPE).getCode();
+       if(StringUtils.isNotBlank(types)){
+           return Arrays.asList(types.split(","));
+       }
+       return null;
+    }
+
+
+    @Override
+    public SettleClaimsDataVO getSettleClaimsDataVO(){
+        SettleClaimsDataVO settleClaimsDataVO = new SettleClaimsDataVO();
+        settleClaimsDataVO.setSettleClaimsTotal(Constants.ZERO);
+        settleClaimsDataVO.setAverageSettleClaimsTime(BigDecimal.ZERO);
+        settleClaimsDataVO.setSettleClaimsTotalFee(BigDecimal.ZERO);
+        settleClaimsDataVO.setRefuseRata(BigDecimal.ZERO);
+        settleClaimsDataVO.setAcceptanceRata(BigDecimal.ZERO);
+        settleClaimsDataVO.setCloseCaseRata(BigDecimal.ZERO);
+
+
+        List<SettleClaims> settleClaimsList = settleClaimsMapper.selectList(new QueryWrapper<SettleClaims>().lambda().eq(SettleClaims::getIsdeleted,Constants.ZERO));
+        if(CollectionUtils.isNotEmpty(settleClaimsList)){
+            Integer totalSettleClaimsNum = settleClaimsList.size();
+            List<SettleClaims> closeCaseList = settleClaimsList.stream().filter(i->Objects.nonNull(i.getStatus())
+                    &&Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList());
+            for (SettleClaims settleClaims:closeCaseList) {
+                if(Objects.nonNull(settleClaims.getCheckDate())&&Objects.nonNull(settleClaims.getCreateDate())){
+                    settleClaims.setTotalHours(
+                            (int)DateUtil.getBetweenHours(settleClaims.getCreateDate(),settleClaims.getCheckDate())
+                    );
+                }else{
+                    settleClaims.setTotalHours(Constants.ZERO);
+                }
+            }
+            Integer closeCaseNum = closeCaseList.size();
+            //鏈寘鍚� 绔嬫閫�鍥� 绔嬫閫�鍥炲彲浠ュ啀娆℃彁浜ょ殑
+            Integer refuseNum = settleClaimsList.stream().filter(i->Objects.nonNull(i.getStatus())&&
+                    (Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.REJECT_DEAL.getKey())
+                            ||Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey()))
+                    ).collect(Collectors.toList()).size();
+            Integer acceptanceNum = settleClaimsList.stream().filter(i->Objects.nonNull(i.getStatus())&&
+                    (Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
+                            ||Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey())
+                            ||Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.COMPENSATION.getKey())
+                            ||Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CONFIRM_FEE.getKey())
+                            ||Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())
+                    )
+            ).collect(Collectors.toList()).size();
+            if(Objects.nonNull(closeCaseNum)&&!Constants.equalsInteger(closeCaseNum,Constants.ZERO)){
+                settleClaimsDataVO.setCloseCaseRata(new BigDecimal(closeCaseNum.toString()).divide(new BigDecimal(totalSettleClaimsNum.toString()),4,BigDecimal.ROUND_HALF_UP));
+            }
+            if(Objects.nonNull(refuseNum)&&!Constants.equalsInteger(refuseNum,Constants.ZERO)){
+                settleClaimsDataVO.setRefuseRata(new BigDecimal(refuseNum.toString()).divide(new BigDecimal(totalSettleClaimsNum.toString()),4,BigDecimal.ROUND_HALF_UP));
+            }
+            if(Objects.nonNull(acceptanceNum)&&!Constants.equalsInteger(acceptanceNum,Constants.ZERO)){
+                settleClaimsDataVO.setAcceptanceRata(new BigDecimal(acceptanceNum.toString()).divide(new BigDecimal(totalSettleClaimsNum.toString()),4,BigDecimal.ROUND_HALF_UP));
+            }
+
+            List<DataListVO> settleClaimsTotalList = new ArrayList<>();
+            List<DataListVO> settleClaimsFeeList = new ArrayList<>();
+            List<DataListVO> averageSettleClaimsList = new ArrayList<>();
+
+            for (int i = 5; i >=0 ; i--) {
+                //姣忎釜鏈堢殑鏁版嵁
+                String monthData = DateUtil.DateToStr(DateUtil.afterDateByType(new Date(),1,i*-1),"yyyy-MM");
+                DataListVO settleClaimsTotal = new DataListVO();
+                DataListVO settleClaimsFee = new DataListVO();
+                DataListVO averageSettleClaims = new DataListVO();
+
+                settleClaimsTotal.setDataFirst(monthData);
+                settleClaimsTotal.setDataSecond(
+                        settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).toString()
+                );
+ 
+                settleClaimsFee.setDataFirst(monthData);
+                List<SettleClaims> closeCaseMonthList = closeCaseList.stream().filter(j->Objects.nonNull(j.getCheckDate())&&DateUtil.DateToStr(j.getCheckDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList());
+                settleClaimsFee.setDataSecond(closeCaseMonthList.stream().map(j->j.getHpAccount().add(j.getHpOtherAccount())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+
+                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()
+                );
+ 
+                settleClaimsTotalList.add(settleClaimsTotal);
+                settleClaimsFeeList.add(settleClaimsFee);
+                averageSettleClaimsList.add(averageSettleClaims);
+
+            }
+            settleClaimsDataVO.setSettleClaimsFeeList(settleClaimsFeeList);
+            settleClaimsDataVO.setAverageSettleClaimsList(averageSettleClaimsList);
+            settleClaimsDataVO.setSettleClaimsTotalList(settleClaimsTotalList);
+
+            //鎬荤悊璧旈噾棰�
+            settleClaimsDataVO.setSettleClaimsTotalFee(closeCaseList.stream().map(i->i.getHpAccount().add(i.getHpOtherAccount())).reduce(BigDecimal.ZERO,BigDecimal::add));
+
+            //鎬荤悊璧旀浠舵暟
+            settleClaimsDataVO.setSettleClaimsTotal(settleClaimsList.size());
+            
+            //骞冲潎鐞嗚禂澶勭悊鏃堕暱澶╂暟 鎬昏澶勭悊鏃堕暱锛堝崟浣嶅皬鏃讹級闄や互 璁板綍鏁�  鎹㈢畻鍒板ぉ
+            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)
+                            
+            );
+
+        }
+
+
+        return settleClaimsDataVO;
 
     }
 
 
 
+
+
+
+
+
+
+
 }

--
Gitblit v1.9.3