From 50fb58286ed3b718c39a97e0987ee7561a295651 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 04 七月 2025 17:56:41 +0800
Subject: [PATCH] git ch

---
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 1775 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 1,516 insertions(+), 259 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 a8a4c2b..c6f2cf7 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
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -13,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;
@@ -20,6 +22,10 @@
 import com.doumee.dao.business.vo.CompensationVO;
 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.InsuranceDataVO;
+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;
@@ -49,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;
 
@@ -62,6 +69,8 @@
 
     @Autowired
     private SettleClaimsMapper settleClaimsMapper;
+    @Autowired
+    private MemberMapper memberMapper;
     @Autowired
     private SettleClaimsExtMapper settleClaimsExtMapper;
 
@@ -94,6 +103,18 @@
     @Autowired
     private ApplyDetailMapper applyDetailMapper;
 
+    @Autowired
+    private AreasMapper areasMapper;
+
+
+    @Autowired
+    private WorktypeMapper worktypeMapper;
+
+    @Autowired
+    private InsuranceMapper insuranceMapper;
+
+    @Autowired
+    private ApplyDetailJoinMapper applyDetailJoinMapper;
     /**
      * 鍒犻櫎闄勪欢
      * @return
@@ -378,70 +399,164 @@
         return  1;
     }
 
-
     @Override
-    public Integer createSys(SettleClaims settleClaims) {
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public Integer createOrEditSys(SettleClaims settleClaims) {
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         settleClaims.setOrigin(Constants.ONE);
         if(Objects.isNull(settleClaims)
                 || Objects.isNull(settleClaims.getExtData())
+                || Objects.isNull(settleClaims.getExtData().getBxName())
                 || Objects.isNull(settleClaims.getExtData().getMemberName())
                 || Objects.isNull(settleClaims.getExtData().getMemberIdcardType())
-                || Objects.isNull(settleClaims.getExtData().getMemberIdcard())){
+                || Objects.isNull(settleClaims.getExtData().getMemberIdcard())
+                || Objects.isNull(settleClaims.getStatus())
+        ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if(!Constants.equalsObject(settleClaims.getStatus(),Constants.ZERO)
-                &&(  Objects.isNull(settleClaims.getExtData().getBxName())
-                || Objects.isNull(settleClaims.getExtData().getBxCode())
-                || Objects.isNull(settleClaims.getExtData().getBxEnddate())
-                || Objects.isNull(settleClaims.getExtData().getBxOrg())
-                || Objects.isNull(settleClaims.getInformantPhone()) )){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
-        }
+//        if(!Constants.equalsObject(settleClaims.getStatus(),Constants.ZERO)
+//                &&( Objects.isNull(settleClaims.getExtData().getReportDate())
+//                || Objects.isNull(settleClaims.getExtData().getBxCode())
+//                || Objects.isNull(settleClaims.getExtData().getBxEnddate())
+//                || Objects.isNull(settleClaims.getExtData().getBxOrg())
+//                || Objects.isNull(settleClaims.getInformantPhone()) )){
+//            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+//        }
         if(!Constants.equalsInteger(loginUserInfo.getType(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙扮鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
         }
         Date date =new Date();
-        settleClaims.setCreateDate(date);
         settleClaims.setEditDate(date);
-        settleClaims.setIsdeleted(Constants.ZERO);
-        settleClaims.setCreator(loginUserInfo.getId());
-        //
-        List<SettleClaimsMoneyVO> feeList = settleClaims.getAccountList();
-        settleClaimsMapper.insert(settleClaims);
+        settleClaims.setEditor(loginUserInfo.getId());
 
+        List<CompensationVO> feeList = settleClaims.getAccountList();
+        BigDecimal mainFee = new BigDecimal(0);
+        BigDecimal ortherFee = new BigDecimal(0);
+        if(feeList!=null && feeList.size()>0){
+            for(CompensationVO fee : feeList){
+                if(Constants.equalsObject(fee.getType(),Constants.ZERO)){
+                    mainFee = mainFee.add(Constants.formatBigdecimal(fee.getFee()));
+                }else{
+                    ortherFee = ortherFee.add(Constants.formatBigdecimal(fee.getFee()));
+                }
+            }
+            settleClaims.setHpAccountContent(JSONObject.toJSONString(feeList));
+            settleClaims.setHpAccount(mainFee);
+            settleClaims.setHpOtherAccount(ortherFee);
+        }
+        if(settleClaims.getId() ==null){
+            //濡傛灉鏄柊澧炶褰�
+            dealCreateSysBiz(settleClaims,date,loginUserInfo);
+        }else{
+            //濡傛灉鏇存柊
+            dealUpdateSysBiz(settleClaims,date,loginUserInfo);
+        }
+        return  settleClaims.getId();
+    }
 
+    private void dealUpdateSysBiz(SettleClaims settleClaims, Date date, LoginUserInfo loginUserInfo) {
+        SettleClaims model = settleClaimsMapper.selectById(settleClaims.getId());
+        if(model ==null){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        settleClaimsMapper.updateById(settleClaims);
+        //鍒犻櫎鍘熸潵鐨勬墿灞曞睘鎬т俊鎭紝淇濈暀鏈�鏂扮殑
+        settleClaimsExtMapper.delete(new UpdateWrapper<SettleClaimsExt>().lambda().eq(SettleClaimsExt::getSettileClaimsId,model.getId()));
         settleClaims.getExtData().setCreator(settleClaims.getCreator());
         settleClaims.getExtData().setCreateDate(date);
         settleClaims.getExtData().setEditor(settleClaims.getCreator());
         settleClaims.getExtData().setEditDate(date);
+        settleClaims.getExtData().setIsdeleted(Constants.ZERO);
         settleClaims.getExtData().setSettileClaimsId(settleClaims.getId());
         settleClaimsExtMapper.insert(settleClaims.getExtData());
+        //澶勭悊闄勪欢寮�濮�
+        multifileJoinMapper.update(null,new UpdateWrapper<Multifile>().lambda()
+                .set(Multifile::getIsdeleted,Constants.ONE)
+                .eq(Multifile::getObjId,model.getId())
+                .in(Multifile::getObjType
+                        ,Constants.MultiFile.LP_YGGX_FILE.getKey()
+                        ,Constants.MultiFile.LP_ZYCL_FILE.getKey()
+                        ,Constants.MultiFile.LP_MZCL_FILE.getKey()
+                        ,Constants.MultiFile.LP_OTHER_FILE.getKey()
+                        ,Constants.MultiFile.LP_SCZL_FILE.getKey()
+                        ,Constants.MultiFile.LP_SGXC_FILE.getKey()
+                        ,Constants.MultiFile.LP_DZBD_FILE.getKey()
+                )
 
-        //--------------澶勭悊闄勪欢寮�濮�----------------
-        List<Multifile> reportVideo = settleClaims.getReportFileList();
-        if(CollectionUtils.isNotEmpty(reportVideo)){
-            for (int i = 0; i < reportVideo.size(); i++) {
-                Multifile multifile = reportVideo.get(i);
-                if(Objects.isNull(multifile.getFileurl())
-                        || Objects.isNull(multifile.getType())
-                        || StringUtils.isBlank(multifile.getName())
-                ){
-                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
-                }
-                multifile.setCreator(loginUserInfo.getId());
-                multifile.setCreateDate(new Date());
-                multifile.setIsdeleted(Constants.ZERO);
-                multifile.setObjId(settleClaims.getId());
-                multifile.setObjType(Constants.ONE);
-                multifile.setSortnum(i+1);
-                multifileJoinMapper.insert(multifile);
-            }
+        );
+        dealSysFileListBiz(settleClaims);
+    }
+
+    private void dealCreateSysBiz(SettleClaims settleClaims,Date date,LoginUserInfo loginUserInfo) {
+        settleClaims.setCreateDate(date);
+        settleClaims.setIsdeleted(Constants.ZERO);
+        settleClaims.setCreator(loginUserInfo.getId());
+
+        settleClaimsMapper.insert(settleClaims);
+        settleClaims.getExtData().setCreator(settleClaims.getCreator());
+        settleClaims.getExtData().setCreateDate(date);
+        settleClaims.getExtData().setEditor(settleClaims.getCreator());
+        settleClaims.getExtData().setEditDate(date);
+        settleClaims.getExtData().setIsdeleted(Constants.ZERO);
+        settleClaims.getExtData().setSettileClaimsId(settleClaims.getId());
+        settleClaimsExtMapper.insert(settleClaims.getExtData());
+        //澶勭悊闄勪欢寮�濮�
+        dealSysFileListBiz(settleClaims);
+    }
+
+    /**
+     * 澶勭悊闄勪欢寮�濮�
+     * @param settleClaims
+     */
+
+    private void dealSysFileListBiz(SettleClaims settleClaims) {
+        List<Multifile> relationFileList = settleClaims.getRelationFileList();//鍛樺伐鍏崇郴鏉愭枡
+        List<Multifile> hospitalFileList = settleClaims.getHospitalFileList();//浣忛櫌鏉愭枡
+        List<Multifile> outpatientFileList = settleClaims.getOutpatientFileList();//闂ㄨ瘖鏉愭枡
+        List<Multifile> otherFileList = settleClaims.getOtherFileList();//鍏朵粬鏉愭枡
+        List<Multifile> disabilityFileList = settleClaims.getDisabilityFileList();//浼ゆ畫鏉愭枡
+        List<Multifile> dzbdFileList = settleClaims.getDzbdFileList();//鐢靛瓙淇濆崟
+        List<Multifile> reportFileList = settleClaims.getReportFileList();//鎶ユ瑙嗛
+        List<Multifile> insetList = new ArrayList<>();
+        insetList.addAll(getMultifileListByObjtype(relationFileList,Constants.MultiFile.LP_YGGX_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(hospitalFileList,Constants.MultiFile.LP_ZYCL_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(outpatientFileList,Constants.MultiFile.LP_MZCL_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(otherFileList,Constants.MultiFile.LP_OTHER_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(disabilityFileList,Constants.MultiFile.LP_SCZL_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(dzbdFileList,Constants.MultiFile.LP_DZBD_FILE.getKey(),settleClaims));
+        insetList.addAll(getMultifileListByObjtype(reportFileList,Constants.MultiFile.LP_SGXC_FILE.getKey(),settleClaims));
+        if(CollectionUtils.isNotEmpty(insetList)){
+                multifileJoinMapper.insert(insetList);
         }
         //--------------澶勭悊闄勪欢缁撴潫----------------
-
-        return  settleClaims.getId();
     }
+
+    private Collection<? extends Multifile> getMultifileListByObjtype(List<Multifile> list, int key,SettleClaims model) {
+        List<Multifile> insetList = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(list)){
+            int index = 0;
+            for (int i = 0; i < list.size(); i++) {
+                Multifile multifile = list.get(i);
+                if(Objects.isNull(multifile.getFileurl())
+                        || Objects.isNull(multifile.getType())
+                        || StringUtils.isBlank(multifile.getName())  ){
+                    continue;
+                }
+                multifile.setId(null);
+                multifile.setCreator(model.getEditor());
+                multifile.setCreateDate(model.getEditDate());
+                multifile.setEditor(model.getEditor());
+                multifile.setEditDate(model.getEditDate());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setObjId(model.getId());
+                multifile.setObjType(key);
+                multifile.setSortnum(index++);
+                insetList.add(multifile);
+            }
+        }
+        return insetList;
+    }
+
     @Override
     public Integer create(SettleClaims settleClaims) {
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -472,6 +587,7 @@
         )>Constants.ZERO){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鎻愭姤涓殑鎶ユ鏁版嵁!");
         }
+
         settleClaims.setCreateDate(new Date());
         settleClaims.setIsdeleted(Constants.ZERO);
         settleClaims.setCompanyId(loginUserInfo.getCompanyId());
@@ -500,9 +616,7 @@
             }
         }
         //璁板綍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null);
-
-
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null,null);
         //瀛樺偍寰呭姙淇℃伅
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
         //鍒犻櫎鍏朵粬寰呭姙
@@ -639,6 +753,12 @@
             settleClaims.setCompensationFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_JACL_FILE.getKey())).collect(Collectors.toList()));
 
             settleClaims.setOtherFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_OTHER_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setPayFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_PAY_FILE.getKey())).collect(Collectors.toList()));
+
+            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()));
         }
 
         //鏌ヨ鎿嶄綔璁板綍
@@ -681,6 +801,225 @@
         }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);
+        }
+
+        if((Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
+                || Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.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.setSupplementSettleClaimsLog(settleClaimsLog);
+        }
+        dealNoticeOldDataBiz(settleClaims);//澶勭悊寰呭姙鑴忔暟鎹�
+        return settleClaims;
+    }
+
+    private void dealNoticeOldDataBiz(SettleClaims settleClaims) {
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())
+                ||Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN.getKey())
+                ||Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey())
+                ||Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.REJECT_DEAL.getKey())){
+            deletedNoticeBiz(null,settleClaims);
+        }
+    }
+
+
+    @Override
+    public SettleClaims getSettleClaimsDetailForSd(Integer id){
+        MPJLambdaWrapper<SettleClaims>  queryWrapper =    new MPJLambdaWrapper<SettleClaims>();
+        queryWrapper.selectAll(SettleClaims.class)
+                .selectAs(SettleClaimsExt::getBxOrg,SettleClaims::getCompanyName)
+                .selectAs(SettleClaimsExt::getBxName,SettleClaims::getSolutionName)
+                .selectAs(SettleClaimsExt::getMemberName,SettleClaims::getMemberName)
+                .selectAs(SettleClaimsExt::getMemberIdcard,SettleClaims::getMemberIdcardNo)
+                .selectAs(SettleClaimsExt::getBxStartdate,SettleClaims::getBaoxianStartTime)
+                .selectAs(SettleClaimsExt::getBxEnddate,SettleClaims::getBaoxianEndTime)
+                .selectAs(SettleClaimsExt::getBxCode,SettleClaims::getApplyCode)
+                .innerJoin(SettleClaimsExt.class,SettleClaimsExt::getSettileClaimsId,SettleClaims::getId)
+                .eq(SettleClaims::getId,id);
+        SettleClaims settleClaims = settleClaimsJoinMapper.selectJoinOne(SettleClaims.class,queryWrapper);
+        if(settleClaims == null){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(StringUtils.isNotBlank(settleClaims.getHpAccountContent())){
+            settleClaims.setAccountList(JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class ));
+        }
+        List<Multifile> multifileList = multifileJoinMapper.selectJoinList(Multifile.class,
+                new MPJLambdaWrapper<Multifile>()
+                        .selectAll(Multifile.class)
+                        .selectAs(SystemUser::getRealname,Multifile::getCreatorName)
+                        .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
+                        .eq(Multifile::getObjId,id)
+                        .eq(Multifile::getIsdeleted,Constants.ZERO)
+                        .orderByAsc(Multifile::getCreateDate)
+        );
+        String rPath = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode();
+        String path = rPath+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.SETTLE_FILE).getCode();
+        if(multifileList!=null){
+            for(Multifile f : multifileList){
+                if(f!=null&& StringUtils.isNotBlank(f.getFileurl())){
+                    f.setFileurlFull(path+f.getFileurl());
+                }
+            }
+        }
+        Multifile baoxiandanFile = multifileJoinMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda().eq(Multifile::getObjId,settleClaims.getInsuranceApplyId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .eq(Multifile::getObjType,Constants.MultiFile.BD_DONE_PDF.getKey())
+                .last("limit 1"));
+        if(baoxiandanFile!=null&& StringUtils.isNotBlank(baoxiandanFile.getFileurl())){
+            path = rPath+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
+            baoxiandanFile.setFileurlFull(path+baoxiandanFile.getFileurl());
+        }
+        settleClaims.setBaoxiandanFile(baoxiandanFile);//淇濋櫓鍗�
+        if(CollectionUtils.isNotEmpty(multifileList)){
+            settleClaims.setReportFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_SGXC_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setRelationFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_YGGX_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setOutpatientFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_MZCL_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setHospitalFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_ZYCL_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setDisabilityFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_SCZL_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setCompensationFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_JACL_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setOtherFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_OTHER_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setPayFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_PAY_FILE.getKey())).collect(Collectors.toList()));
+
+            settleClaims.setDzbdFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_DZBD_FILE.getKey())).collect(Collectors.toList()));
+
+        }
+
+        //鏌ヨ鎿嶄綔璁板綍
+        List<SettleClaimsLog> settleClaimsLogList = settleClaimsLogJoinMapper.selectJoinList(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())
+                        .orderByAsc(SettleClaimsLog::getCreateDate)
+        );
+        settleClaims.setSettleClaimsLogList(settleClaimsLogList);
+        SettleClaimsLog lastConfirm = settleClaimsLogMapper.selectOne(new QueryWrapper<SettleClaimsLog>().lambda()
+                .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId())
+                .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_CONFIRM_INFORMATION.getKey())
+                .orderByDesc(SettleClaimsLog::getCreateDate)
+                .last(" limit 1")
+        );
+
+        Multifile multifile = multifileJoinMapper.selectOne(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getObjId,settleClaims.getId())
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .in(Multifile::getObjType,
+                        Constants.MultiFile.LP_SGXC_FILE.getKey(),
+                        Constants.MultiFile.LP_YGGX_FILE.getKey(),
+                        Constants.MultiFile.LP_MZCL_FILE.getKey(),
+                        Constants.MultiFile.LP_ZYCL_FILE.getKey(),
+                        Constants.MultiFile.LP_SCZL_FILE.getKey(),
+                        Constants.MultiFile.LP_JACL_FILE.getKey())
+                .orderByDesc(Multifile::getCreateDate)
+                .last(" limit 1")
+        );
+
+        if(!Objects.isNull(lastConfirm)&&!Objects.isNull(multifile)){
+            settleClaims.setFinishDate(lastConfirm.getCreateDate().compareTo(multifile.getCreateDate())>=0?lastConfirm.getCreateDate():multifile.getCreateDate());
+        }else if(!Objects.isNull(lastConfirm)&&Objects.isNull(multifile)){
+            settleClaims.setFinishDate(lastConfirm.getCreateDate());
+        }
+        if(Constants.equalsObject(settleClaims.getOrigin(),Constants.ONE)){
+            settleClaims.setExtData(settleClaimsExtMapper.selectOne(new LambdaQueryWrapper<SettleClaimsExt>()
+                    .eq(SettleClaimsExt::getIsdeleted,Constants.ZERO)
+                    .eq(SettleClaimsExt::getSettileClaimsId,settleClaims.getId())
+                    .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;
     }
 
@@ -733,7 +1072,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();
     }
 
@@ -765,7 +1104,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);
     }
 
 
@@ -806,10 +1145,10 @@
 
 
 
-    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());
+        settleClaimsLog.setCreateDate(Objects.isNull(settleClaims.getEditDate())?new Date():settleClaims.getEditDate());
         settleClaimsLog.setCreator(loginUserInfo.getId());
         settleClaimsLog.setIsdeleted(Constants.ZERO);
         settleClaimsLog.setSettleClainmsId(settleClaims.getId());
@@ -817,12 +1156,16 @@
         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);
     }
 
     @Override
     public void deleteById(Integer id) {
-        settleClaimsMapper.deleteById(id);
+        settleClaimsMapper.update(new UpdateWrapper<SettleClaims>().lambda().set(SettleClaims::getIsdeleted,Constants.ONE).eq(SettleClaims::getId,id));
     }
 
     @Override
@@ -885,7 +1228,10 @@
                 .selectAs(Member::getIdcardNo,SettleClaims::getMemberIdcardNo)
                 .selectAs(Worktype::getName,SettleClaims::getWorktypeName)
                 .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime)
+                .selectAs(InsuranceApply::getCode,SettleClaims::getApplyCode)
                 .selectAs(DispatchUnit::getName,SettleClaims::getDuName)
+                .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime)
+                .selectAs(InsuranceApply::getEndTime,SettleClaims::getBaoxianEndTime)
                 .leftJoin(Company.class,Company::getId,SettleClaims::getCompanyId)
                 .leftJoin(Member.class,Member::getId,SettleClaims::getMemberId)
                 .leftJoin(DispatchUnit.class,DispatchUnit::getId,SettleClaims::getDuId)
@@ -901,117 +1247,31 @@
             }else {
                 queryWrapper. in(Company::getId, user.getCompanyIdList());
             }
-        } else  {
+            queryWrapper.ne(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
+        }{
             //浼佷笟鐢ㄦ埛鍙湅鑷繁鐨勬暟鎹�
             pageWrap.getModel().setCompanyId(user.getCompanyId());
         }
+        queryWrapper.eq(SettleClaims::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(SettleClaims::getOrigin,Constants.ZERO);
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()),Member::getName, pageWrap.getModel().getMemberName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getMemberIdcardNo()),Member::getIdcardNo, pageWrap.getModel().getMemberIdcardNo());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getInformantName()),SettleClaims::getInformantName, pageWrap.getModel().getInformantName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDuName()),DispatchUnit::getName, pageWrap.getModel().getDuName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCreateDateStr()),SettleClaims::getCreateDate, pageWrap.getModel().getCreateDateStr());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getHappenTime()),SettleClaims::getHappenTime, pageWrap.getModel().getHappenTime());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDuName()),DispatchUnit::getName, pageWrap.getModel().getDuName());
         queryWrapper.eq(pageWrap.getModel().getBaseSolutionId()!=null,Solutions::getBaseId, pageWrap.getModel().getBaseSolutionId());
         queryWrapper.eq(pageWrap.getModel().getBaseDuId()!=null,DispatchUnit::getBaseId, pageWrap.getModel().getBaseDuId());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getSolutionName()),Solutions::getName, pageWrap.getModel().getSolutionName());
+        queryWrapper.eq(pageWrap.getModel().getInHospital()!=null,SettleClaims::getInHospital, pageWrap.getModel().getInHospital());
+        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,SettleClaims::getStatus, pageWrap.getModel().getStatus());
+        queryWrapper.eq(pageWrap.getModel().getCompanyId()!=null,SettleClaims::getCompanyId, pageWrap.getModel().getCompanyId());
+        queryWrapper.eq(pageWrap.getModel().getOrigin()!=null,SettleClaims::getOrigin, pageWrap.getModel().getOrigin());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()),SettleClaims::getCode, pageWrap.getModel().getCode());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getReportNum()),SettleClaims::getReportNum, pageWrap.getModel().getReportNum());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getApplyCode()),InsuranceApply::getCode, pageWrap.getModel().getApplyCode());
 
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.eq(SettleClaims::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.eq(SettleClaims::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.ge(SettleClaims::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.le(SettleClaims::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.eq(SettleClaims::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.ge(SettleClaims::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.le(SettleClaims::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.eq(SettleClaims::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.eq(SettleClaims::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getSortnum() != null) {
-            queryWrapper.eq(SettleClaims::getSortnum, pageWrap.getModel().getSortnum());
-        }
-        if (pageWrap.getModel().getSolutionId() != null) {
-            queryWrapper.eq(SettleClaims::getSolutionId, pageWrap.getModel().getSolutionId());
-        }
-        if (pageWrap.getModel().getCompanyId() != null) {
-            queryWrapper.eq(SettleClaims::getCompanyId, pageWrap.getModel().getCompanyId());
-        }
-        if (pageWrap.getModel().getMemberId() != null) {
-            queryWrapper.eq(SettleClaims::getMemberId, pageWrap.getModel().getMemberId());
-        }
-        if (pageWrap.getModel().getHappenTime() != null) {
-            queryWrapper.eq(SettleClaims::getHappenTime, pageWrap.getModel().getHappenTime());
-        }
-        if (pageWrap.getModel().getIdcardNo() != null) {
-            queryWrapper.eq(SettleClaims::getIdcardNo, pageWrap.getModel().getIdcardNo());
-
-        }
-        if (pageWrap.getModel().getDuId() != null) {
-            queryWrapper.eq(SettleClaims::getDuId, pageWrap.getModel().getDuId());
-        }
-        if (pageWrap.getModel().getWorktypeId() != null) {
-            queryWrapper.eq(SettleClaims::getWorktypeId, pageWrap.getModel().getWorktypeId());
-        }
-        if (pageWrap.getModel().getFee() != null) {
-            queryWrapper.eq(SettleClaims::getFee, pageWrap.getModel().getFee());
-        }
-        if (pageWrap.getModel().getCheckInfo() != null) {
-            queryWrapper.eq(SettleClaims::getCheckInfo, pageWrap.getModel().getCheckInfo());
-        }
-        if (pageWrap.getModel().getCheckUserId() != null) {
-            queryWrapper.eq(SettleClaims::getCheckUserId, pageWrap.getModel().getCheckUserId());
-        }
-        if (pageWrap.getModel().getCode() != null) {
-            queryWrapper.eq(SettleClaims::getCode, pageWrap.getModel().getCode());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            if(pageWrap.getModel().getStatus().equals(Constants.ZERO)){
-                queryWrapper.in(SettleClaims::getStatus, Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey()
-                        ,Constants.SettleClaimsStatus.DEAL_ING.getKey()
-                        ,Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey());
-            }else{
-                queryWrapper.eq(SettleClaims::getStatus, pageWrap.getModel().getStatus());
-            }
-
-
-        }
-        if (pageWrap.getModel().getType() != null) {
-            queryWrapper.eq(SettleClaims::getType, pageWrap.getModel().getType());
-        }
-        if (pageWrap.getModel().getInHospital() != null) {
-            queryWrapper.eq(SettleClaims::getInHospital, pageWrap.getModel().getInHospital());
-        }
-        if (pageWrap.getModel().getMedicalInsurance() != null) {
-            queryWrapper.eq(SettleClaims::getMedicalInsurance, pageWrap.getModel().getMedicalInsurance());
-        }
-        if (pageWrap.getModel().getContent() != null) {
-            queryWrapper.eq(SettleClaims::getContent, pageWrap.getModel().getContent());
-        }
-        if (pageWrap.getModel().getInformantName() != null) {
-            queryWrapper.eq(SettleClaims::getInformantName, pageWrap.getModel().getInformantName());
-        }
-        if (pageWrap.getModel().getInformantPhone() != null) {
-            queryWrapper.eq(SettleClaims::getInformantPhone, pageWrap.getModel().getInformantPhone());
-        }
-        if (pageWrap.getModel().getAreaId() != null) {
-            queryWrapper.eq(SettleClaims::getAreaId, pageWrap.getModel().getAreaId());
-        }
-        if (pageWrap.getModel().getAreaInfo() != null) {
-            queryWrapper.eq(SettleClaims::getAreaInfo, pageWrap.getModel().getAreaInfo());
-        }
-        if (pageWrap.getModel().getReportNum() != null) {
-            queryWrapper.eq(SettleClaims::getReportNum, pageWrap.getModel().getReportNum());
-        }
-        if (pageWrap.getModel().getInsuranceApplyId() != null) {
-            queryWrapper.eq(SettleClaims::getInsuranceApplyId, pageWrap.getModel().getInsuranceApplyId());
-        }
         queryWrapper.orderByDesc(SettleClaims::getCreateDate);
         /*for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -1021,8 +1281,55 @@
             }
         }*/
         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(Constants.getBigDecimalNoNull(settleClaims.getHpAccount()).add(Constants.getBigDecimalNoNull(settleClaims.getHpOtherAccount())));
+        }
         return pageData;
     }
+
+
+    @Override
+    public PageData<SettleClaims> findPageForSd(PageWrap<SettleClaims> pageWrap) {
+        IPage<SettleClaims> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        MPJLambdaWrapper<SettleClaims>  queryWrapper = new MPJLambdaWrapper<SettleClaims>();
+        queryWrapper.selectAll(SettleClaims.class)
+                .selectAs(SettleClaimsExt::getBxOrg,SettleClaims::getCompanyName)
+                .selectAs(SettleClaimsExt::getBxName,SettleClaims::getSolutionName)
+                .selectAs(SettleClaimsExt::getMemberName,SettleClaims::getMemberName)
+                .selectAs(SettleClaimsExt::getMemberIdcard,SettleClaims::getMemberIdcardNo)
+                .selectAs(SettleClaimsExt::getBxStartdate,SettleClaims::getBaoxianStartTime)
+                .selectAs(SettleClaimsExt::getBxEnddate,SettleClaims::getBaoxianEndTime)
+                .selectAs(SettleClaimsExt::getBxCode,SettleClaims::getApplyCode)
+                .selectAs(SettleClaimsExt::getReportDate,SettleClaims::getReportDate)
+                .innerJoin(SettleClaimsExt.class,SettleClaimsExt::getSettileClaimsId,SettleClaims::getId);
+        queryWrapper.eq(SettleClaims::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(SettleClaims::getOrigin,Constants.ONE);
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getReportNum()),SettleClaims::getReportNum, pageWrap.getModel().getReportNum());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),SettleClaimsExt::getBxOrg, pageWrap.getModel().getCompanyName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getInformantName()),SettleClaims::getInformantName, pageWrap.getModel().getInformantName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getHappenTime()),SettleClaims::getHappenTime, pageWrap.getModel().getHappenTime());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCreateDateStr()),SettleClaims::getCreateDate, pageWrap.getModel().getCreateDateStr());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getExtData().getMemberName()),SettleClaimsExt::getMemberName, pageWrap.getModel().getExtData().getMemberName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getSolutionName()),SettleClaimsExt::getBxName, pageWrap.getModel().getSolutionName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getApplyCode()),SettleClaimsExt::getBxCode, pageWrap.getModel().getApplyCode());
+        queryWrapper.eq(pageWrap.getModel().getInHospital()!=null,SettleClaims::getInHospital, pageWrap.getModel().getInHospital());
+        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,SettleClaims::getStatus, pageWrap.getModel().getStatus());
+        queryWrapper.orderByDesc(SettleClaims::getCreateDate);
+        PageData<SettleClaims> pageData = PageData.from(settleClaimsJoinMapper.selectJoinPage(page,SettleClaims.class, queryWrapper));
+        for (SettleClaims settleClaims:pageData.getRecords()) {
+            if(Objects.nonNull(settleClaims.getStatus())){
+                settleClaims.setStatusName(Constants.SettleClaimsStatus.getName(settleClaims.getStatus()));
+            }
+            settleClaims.setPcAccount(settleClaims.getHpAccount().add(settleClaims.getHpOtherAccount()));
+        }
+        return pageData;
+    }
+
+
 
     @Override
     public long count(SettleClaims settleClaims) {
@@ -1033,7 +1340,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(),"闈炰紒涓氬憳宸ユ棤娉曡繘琛岃鎿嶄綔");
@@ -1041,8 +1348,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);
         }
@@ -1058,31 +1366,69 @@
                     ||Objects.isNull(settleClaimsDTO.getMedicalInsurance())
                     ||StringUtils.isBlank(settleClaimsDTO.getInformantName())
                     ||StringUtils.isBlank(settleClaimsDTO.getInformantPhone())
-                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveUserName())
-                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveBank())
-                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveAccount())
+//                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveUserName())
+//                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveBank())
+//                    ||StringUtils.isBlank(settleClaimsDTO.getReceiveAccount())
             ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
         }
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(settleClaimsDTO.getInsuranceApplyId());
+        if(Objects.isNull(insuranceApply)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        ApplyDetail applyDetail = applyDetailMapper.selectById(settleClaimsDTO.getApplyDetailId());
+        if(Objects.isNull(applyDetail)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        Member member =memberMapper.selectById(settleClaimsDTO.getMemberId());
+        if(member == null){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鍑洪櫓浜轰俊鎭笉姝g‘锛�");
+        }
+        if(!(Constants.equalsInteger(insuranceApply.getId(),applyDetail.getApplyId())||Constants.equalsInteger(applyDetail.getMemberId(),member.getId()))){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"淇℃伅鍖归厤閿欒");
+        }
         SettleClaims settleClaims = new SettleClaims();
         BeanUtils.copyProperties(settleClaimsDTO,settleClaims);
+        settleClaims.setEditDate(new Date());
         settleClaims.setReportNumStatus(Constants.ZERO);
+        settleClaims.setCompanyId(loginUserInfo.getCompanyId());
+        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"))
+            )+1;
+            settleClaims.setCode("YYBLP-"+DateUtil.getDate(new Date(),"yyyyMMdd")+
+                    (StringUtils.leftPad(nextCode.toString(),2,"0"))
+            );
+        }
         if(Objects.nonNull(settleClaims.getId())){
+            SettleClaims model = settleClaimsMapper.selectById(settleClaims.getId());
+            if(Objects.isNull(model)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY);
+            }
+            if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
+                    ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey())
+                    ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey()))){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�佸凡娴佽浆锛屾棤娉曡繘琛屼慨鏀�");
+            }
             settleClaims.setEditDate(new Date());
             settleClaims.setEditor(loginUserInfo.getId());
             settleClaims.setStatus(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)?
                     Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey():Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
-            if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)){
+            if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)&&
+                    Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())){
                 //澶勭悊椋庨櫓淇℃伅
                 this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService);
             }
-
             settleClaimsMapper.updateById(settleClaims);
         }else{
-            settleClaims.setCreateDate(new Date());
             settleClaims.setIsdeleted(Constants.ZERO);
-            settleClaims.setCompanyId(loginUserInfo.getCompanyId());
             settleClaims.setStatus(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)?
                     Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey():Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
             if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)){
@@ -1094,12 +1440,38 @@
             settleClaimsMapper.insert(settleClaims);
         }
         this.saveFile(settleClaims,settleClaimsDTO,loginUserInfo);
+        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);
+            }
+        }
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        if( Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey()) ||
+                Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())){
+            //-濡傛灉鏄緟绔嬫鎴栬�呭凡绔嬫寰呭鏍革紝缁欏钩鍙扮鍙戝緟鍔為�氱煡-------------
+            sendNoticeBiz(Constants.ZERO,settleClaims,Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey())?Constants.NoticeType.ZERO:Constants.NoticeType.TWO);
+        }
+        return settleClaims.getId();
+    }
 
-        //璁板綍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null);
+    private String getNoticeConttent(SettleClaims settleClaims) {
+        if(StringUtils.isBlank(settleClaims.getMemberName()) && settleClaims.getMemberId()!=null){
+            Member member = memberMapper.selectById(settleClaims.getMemberId());
+            if(member!=null){
+                settleClaims.setMemberName(member.getName());
+            }
+        }
+        return  "鎶ユ鍙凤細"+StringUtils.defaultString(settleClaims.getCode(),"")+"  鍑洪櫓浜猴細"+StringUtils.defaultString(settleClaims.getMemberName(),"");
     }
 
     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)){
@@ -1107,7 +1479,7 @@
         }
         Date happenTime = DateUtil.StringToDate(settleClaims.getHappenTime());
         if(happenTime.getTime() < insuranceApply.getStartTime().getTime() || happenTime.getTime() > insuranceApply.getEndTime().getTime()){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓浜嬩欢鏈湪淇濆崟鐢熸晥鑼冨洿鍐�");
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪淇濆崟鐢熸晥鑼冨洿鍐�");
         }
         Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
         if(Objects.isNull(solutions)){
@@ -1119,11 +1491,14 @@
         }
         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())
                 && Objects.nonNull(solutionsBase.getRiskNewUserTime())
+                && happenTime.getTime() < applyDetail.getStartTime().getTime()
         ){
             if(happenTime.getTime() > applyDetail.getEndTime().getTime()){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
@@ -1140,10 +1515,12 @@
                     throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
                 }
             }
+
             if(happenTime.getTime() < startDate.getTime() ){
                 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{
@@ -1159,18 +1536,21 @@
             //鏍规嵁閰嶇疆 鏌ヨ 寤惰繜鎶ユ鎻愰啋鏃堕棿鍗曚綅 0鍒嗛挓 1灏忔椂 2澶�
             if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ZERO)){
                 if(DateUtil.getBetweenMin(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
-                    map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"鍒嗛挓");
+                    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.getRiskDelayUnit()+"灏忔椂");
+                    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.getRiskDelayUnit()+"澶�");
+                    map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"澶�");
                     riskList.add(map);
+                    settleClaims.setRiskDelayUnit(Constants.ONE);
                 }
             }
         }
@@ -1180,12 +1560,12 @@
         //澶氭鍑洪櫓鎻愰啋
         if(StringUtils.isNotBlank(riskConfigVO.getRiskTimesOpen()) && StringUtils.equals(riskConfigVO.getRiskTimesOpen(),Constants.ONE+"")
             && StringUtils.isNotBlank(riskConfigVO.getRiskTimesReportTimes())){
-            Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
+            Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
                     .eq(SettleClaims::getMemberId,settleClaimsDTO.getMemberId())
                     .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
                     .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY)  ")
             );
-            if(cxcs>Integer.valueOf(riskConfigVO.getRiskTimesReportTimes())){
+            if(cxcs>=Integer.valueOf(riskConfigVO.getRiskTimesReportTimes())){
                 Map<String,String> map = new HashMap<>();
                 map.put("title","鐤戜技澶氭鍑洪櫓");
                 map.put("info","鍑洪櫓浜轰竴骞村唴宸插嚭闄�"+cxcs+"娆�");
@@ -1198,13 +1578,13 @@
                 && StringUtils.equals(riskConfigVO.getRiskRepeatReportOpen(),Constants.ONE+"")
                 && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTimeUnit())
                 && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTime())){
-            Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
+            Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
                     .eq(SettleClaims::getMemberId,settleClaimsDTO.getMemberId())
                     .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
-                    .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")," HAPPEN_TIME > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" HOUR)  ")
-                    .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("2")," HAPPEN_TIME > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" DAY)  ")
+                    .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")," CREATE_DATE > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" HOUR)  ")
+                    .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("2")," CREATE_DATE > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" DAY)  ")
             );
-            if(cxcs > Constants.TWO){
+            if(cxcs >= Constants.ONE){
                 Map<String,String> map = new HashMap<>();
                 map.put("title","鐤戜技閲嶅鎶ユ");
                 map.put("info","璇ュ嚭闄╀汉鍦�"+riskConfigVO.getRiskRepeatReportTime()+(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")?"灏忔椂":"澶�")+"鍐呭凡鎶ユ"+cxcs+"娆�");
@@ -1218,10 +1598,11 @@
         if(StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimesOpen())
                 && StringUtils.equals(riskConfigVO.getRiskClaimTimesOpen(),Constants.ONE+"")
                 && StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimes())){
-            Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
+            Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
                     .eq(SettleClaims::getInsuranceApplyId,settleClaimsDTO.getInsuranceApplyId())
+                            .eq(SettleClaims::getIsdeleted,Constants.ZERO)
                     .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
-                    .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY)  ")
+                    .apply(" CREATE_DATE > DATE_SUB(now(), INTERVAL 365 DAY)  ")
             );
             if(cxcs > Integer.valueOf(riskConfigVO.getRiskClaimTimes())){
                 Map<String,String> map = new HashMap<>();
@@ -1236,7 +1617,7 @@
         if(StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWordsOpen())
                 && StringUtils.equals(riskConfigVO.getRiskSensitiveWordsOpen(),Constants.ONE+"")
                 && StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWords())){
-            String [] words = riskConfigVO.getRiskSensitiveWords().split(",");
+            String [] words = riskConfigVO.getRiskSensitiveWords().split(";");
             String sensitiveWord = ""; 
             for (String word:words) {
                 if(settleClaims.getContent().indexOf(word)>=Constants.ZERO){
@@ -1309,6 +1690,7 @@
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父");
                 }
+                multifile.setId(null);
                 multifile.setCreator(loginUserInfo.getId());
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
@@ -1321,14 +1703,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);
@@ -1341,14 +1724,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);
@@ -1361,14 +1745,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);
@@ -1381,14 +1766,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);
@@ -1401,14 +1787,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);
@@ -1417,7 +1804,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){
@@ -1461,10 +1868,17 @@
         if(Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰呬紒涓氳ˉ鍏呮枃浠讹紝璇风瓑寰呬紒涓氳ˉ鍏呮枃浠�");
         }
+        settleClaims.setEditDate(new Date());
         //瀛樺偍鏃ュ織
-        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));
+
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //濡傛灉鍙戣捣浠e姙,閫氱煡浼佷笟
+        sendNoticeBiz(Constants.ONE,settleClaims,Constants.NoticeType.THREE);
     }
 
     @Override
@@ -1505,6 +1919,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()));
@@ -1523,13 +1938,18 @@
                 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);
             }
         }
+        settleClaims.setEditDate(new Date());
         //瀛樺偍鏃ュ織
-        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null);
+        this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null,null);
+        //鍒犻櫎浼佷笟鐨勪唬鍔為�氱煡------
+        deletedNoticeBiz(null,settleClaims );
+        sendNoticeBiz(Constants.ZERO,settleClaims,Constants.NoticeType.TWO);
+
     }
 
 
@@ -1556,13 +1976,15 @@
         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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
-        }
+        settleClaims.setEditDate(new Date());
         //瀛樺偍鏃ュ織
-        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()));
+                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,settleClaims.getEditDate())
+                .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.RETURN.getKey()));
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欎紒涓氬彂閫氱煡锛屽凡缁撴-------------
+        sendNoticeBiz(Constants.ZERO,settleClaims ,Constants.NoticeType.FOURTEEN);
     }
 
 
@@ -1584,13 +2006,17 @@
         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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
+        settleClaims.setEditDate(new Date());
         //瀛樺偍鏃ュ織
-        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,settleClaims.getEditDate())
                 .set(SettleClaims::getEditor,loginUserInfo.getId())
                 .set(SettleClaims::getCaseType,dto.getCaseType()));
     }
@@ -1622,10 +2048,22 @@
         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());
+        settleClaims.setEditDate(new Date());
+        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, settleClaims.getEditDate())
+                .set(SettleClaims::getEditor,loginUserInfo.getId())
+                .set(SettleClaims::getStatus,settleClaimsStatus.getKey()));
+
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        if( Constants.equalsInteger(settleClaimsStatus.getKey(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) ){
+            //濡傛灉鏄鏍搁�氳繃宸茬珛妗堝緟瀹℃牳锛岀粰骞冲彴鍙戝緟鍙楃悊寰呭姙閫氱煡-------------
+            sendNoticeBiz(Constants.ZERO,settleClaims ,Constants.NoticeType.TWO);
+        }else{
+            //濡傛灉鏄鏍镐笉閫氳繃锛岄��鍥炵珛妗� 锛岀粰浼佷笟鍙戦�氱煡-------------
+            sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.ONE);
+        }
     }
 
 
@@ -1653,8 +2091,17 @@
         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.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
+                        || Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.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(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
         }
 
@@ -1669,12 +2116,14 @@
 //        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())&&StringUtils.isNotBlank(model.getReportNum())){
 //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸蹭慨鏀规姤妗堝彿锛屾棤娉曞啀娆′慨鏀�");
 //        }
-        settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                .eq(SettleClaims::getId,param.getId()).set(SettleClaims::getEditDate,
-                        DateUtil.getCurrDateTime()).set(SettleClaims::getReportNum,param.getReportNum()));
 
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
+
+        settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
+                .eq(SettleClaims::getId,param.getId()).set(SettleClaims::getEditDate,
+                        update.getEditDate()).set(SettleClaims::getReportNum,param.getReportNum()));
+
         update.setEditor(user.getId());
         update.setReportNumStatus(model.getReportNumStatus()+Constants.ONE);
         update.setId(model.getId());
@@ -1688,6 +2137,7 @@
         String info =applyLogType.getInfo();
         info = info.replace("${param}", update.getReportNum());
         SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update));
+        log.setCreateDate(update.getEditDate());
         settleClaimsLogMapper.insert(log);
 
         return  1;
@@ -1731,6 +2181,7 @@
         String info =applyLogType.getInfo();
         info = info.replace("${param}", param.getDescribe());
         SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update));
+        log.setCreateDate(update.getEditDate());
         settleClaimsLogMapper.insert(log);
         return  1;
 
@@ -1761,39 +2212,81 @@
         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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
+        settleClaims.setEditDate(new Date());
         if(Constants.equalsInteger(dto.getStatus(),Constants.ZERO) || Constants.equalsInteger(dto.getStatus(),Constants.THREE)){
             //鍙楃悊
             settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId())
+                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,settleClaims.getEditDate()).set(SettleClaims::getEditor,loginUserInfo.getId())
                     .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.ACCEPTANCE.getKey()));
             //瀛樺偍鏃ュ織
             this.saveSettleClaimsLog(settleClaims,
                     Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsLogType.PLATFORM_ACCEPTANCE:Constants.SettleClaimsLogType.PLATFORM_DISCUSS,
-                    dto.getDescribe());
+                    Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?dto.getDescribe():(dto.getDescribe() + " 闂绫诲瀷锛�"+dto.getSyProblemOpts())
+                    ,Constants.SettleClaimsStatus.ACCEPTANCE);
         }else if(Constants.equalsInteger(dto.getStatus(),Constants.ONE)){
             //鎷掔粷鍙楃悊
             settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
-                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId())
+                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,settleClaims.getEditDate()).set(SettleClaims::getEditor,loginUserInfo.getId())
                     .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.REJECT_DEAL.getKey()));
             //瀛樺偍鏃ュ織
             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()
-                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId())
-                    .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.REJECT_DEAL.getKey()));
+                    .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,settleClaims.getEditDate()).set(SettleClaims::getEditor,loginUserInfo.getId())
+                    .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey()));
             //瀛樺偍鏃ュ織
             this.saveSettleClaimsLog(settleClaims,
                     Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS,
-                    dto.getDescribe());
+                    dto.getDescribe() + " 闂绫诲瀷锛�"+dto.getSyProblemOpts(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT);
+        }
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        if(Constants.equalsInteger(dto.getStatus(),Constants.ZERO) || Constants.equalsInteger(dto.getStatus(),Constants.THREE)){
+            //-濡傛灉鏄鎵归�氳繃锛屾垚涓哄凡鍙楃悊锛岀粰骞冲彴绔彂浠g悊绠楀緟鍔為�氱煡-------------
+            sendNoticeBiz(Constants.ZERO,settleClaims , Constants.NoticeType.EIGHT );
+            sendNoticeBiz(Constants.ONE,settleClaims,Constants.NoticeType.FIFTEEN);
+        }else  if(Constants.equalsInteger(dto.getStatus(),Constants.TWO)){
+            //濡傛灉鍙戣捣鍟嗚瀹℃壒锛岄�氱煡骞冲彴
+            sendNoticeBiz(Constants.ZERO, settleClaims , Constants.NoticeType.FIVE );
+            sendNoticeBiz(Constants.ONE,settleClaims,Constants.NoticeType.SIXTEEN);
+        }else{
+            //濡傛灉鏄彈鐞嗘嫆缁�,閫氱煡浼佷笟
+            sendNoticeBiz(Constants.ONE,  settleClaims,Constants.NoticeType.SEVEN);
         }
     }
 
+    private void sendNoticeBiz(int plat, SettleClaims settleClaims, Constants.NoticeType noticeType) {
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        Notices notices = new Notices(noticeObjectType
+                ,plat
+                ,settleClaims.getId()
+                ,getNoticeConttent(settleClaims)
+                ,settleClaims.getCompanyId()
+                ,noticeType);
+        noticesMapper.insert(notices);
+    }
+    private void deletedNoticeBiz(Integer  plat, SettleClaims settleClaim ) {
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda()
+                .eq(plat!=null,Notices::getPalt,plat)
+                .eq(Notices::getObjType,noticeObjectType.getKey())
+                .eq(Notices::getObjId,settleClaim.getId())
+                .notIn(Notices::getType,Constants.NoticeType.ONE.getStatus(),
+                        Constants.NoticeType.FOUR.getStatus(),
+                        Constants.NoticeType.SEVEN.getStatus(),
+                        Constants.NoticeType.FOURTEEN.getStatus(),
+                        Constants.NoticeType.FIFTEEN.getStatus(),
+                        Constants.NoticeType.SIXTEEN.getStatus(),
+                        Constants.NoticeType.SEVENTEEN.getStatus(),
+                        Constants.NoticeType.THIRTEEN.getStatus(),
+                        Constants.NoticeType.EIGHTEEN.getStatus()))//1, 3, 4, 7,13, 14, 15, 16, 17, 18
+        ;
+    }
 
     @Override
     public List<CompensationVO> getCompensation(CompensationFeeDTO compensationFeeDTO){
@@ -1851,31 +2344,36 @@
         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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
 
         List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
-
+        settleClaims.setEditDate(new Date());
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
         update.setEditor(loginUserInfo.getId());
-        update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
-        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));
-        update.setOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)&&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.ZERO)&&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.ZERO)&&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.ZERO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
         update.setAccountContent(dto.getCompensationJson());
         update.setId(settleClaims.getId());
         update.setStatus(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey());
         settleClaimsMapper.updateById(update);
-
         //瀛樺偍鏃ュ織
         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);
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欏钩鍙板彂寰呮牳璧斿緟鍔為�氱煡-------------
+        sendNoticeBiz(Constants.ZERO,settleClaims ,Constants.NoticeType.NINE);
+        //缁欎紒涓氬彂閫氬凡鐞嗙畻-------------
+        sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.SEVENTEEN);
+}
 
 
     /**
@@ -1909,12 +2407,21 @@
         //瀛樺偍鏃ュ織
         Constants.SettleClaimsLogType settleClaimsLogType = Constants.equalsInteger(dto.getStatus(),Constants.ZERO)
                 ?Constants.SettleClaimsLogType.PLATFORM_DISCUSS_PASS:Constants.SettleClaimsLogType.PLATFORM_DISCUSS_REFUSE;
+        settleClaims.setEditDate(new Date());
         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())
+                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate, settleClaims.getEditDate())
                         .set(SettleClaims::getEditor,loginUserInfo.getId())
                 .set(SettleClaims::getStatus,settleClaimsStatus.getKey()));
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        if( Constants.equalsInteger(settleClaimsStatus.getKey(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) ){
+            //濡傛灉鏄鏍搁�氳繃宸茬珛妗堝緟瀹℃牳锛岀粰骞冲彴鍙戝緟鍙楃悊寰呭姙閫氱煡-------------
+            sendNoticeBiz(Constants.ZERO,settleClaims ,Constants.NoticeType.TWO);
+        }else{
+            //濡傛灉鏄鏍镐笉閫氳繃锛岄��鍥炵珛妗� 锛岀粰浼佷笟鍙戦�氱煡-------------
+            sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.ONE);
+        }
     }
 
 
@@ -1945,12 +2452,13 @@
 
 
         List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
-
+        settleClaims.setEditDate(new Date());
         SettleClaims update = new SettleClaims();
-        update.setEditDate(new Date());
+        update.setEditDate(settleClaims.getEditDate());
         update.setEditor(loginUserInfo.getId());
         update.setHpAccountContent(dto.getCompensationJson());
-        update.setHpAccount(modelList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        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);
@@ -1958,7 +2466,10 @@
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_HP_DEAL,
-                Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo());
+                Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo(),Constants.SettleClaimsStatus.COMPENSATION);
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欎紒涓氬彂閫氬凡鏍歌禂寰呯‘璁ら噾棰濓紝鍙戜唬鍔�-------------
+        sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.TEN);
     }
 
 
@@ -1986,9 +2497,9 @@
         }
 
         List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
-
+        settleClaims.setEditDate(new Date());
         SettleClaims update = new SettleClaims();
-        update.setEditDate(new Date());
+        update.setEditDate(settleClaims.getEditDate());
         update.setEditor(loginUserInfo.getId());
         if(Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus())){
             update.setFeeUpdate(Constants.ONE);
@@ -1997,30 +2508,36 @@
         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);
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欎紒涓氬彂閫氶噾棰濆彉鏇撮�氱煡-------------
+        sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.EIGHTEEN);
     }
 
 
@@ -2028,27 +2545,32 @@
     @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.setEditDate(new Date());
         SettleClaims update = new SettleClaims();
-        update.setEditDate(new Date());
+        update.setEditDate(settleClaims.getEditDate());
         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);
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欏钩鍙板彂寰呭姙锛屽凡纭閲戦锛屽彂寰呯粨妗堜唬鍔�-------------
+        sendNoticeBiz(Constants.ZERO,settleClaims ,Constants.NoticeType.TWELVE);
     }
 
 
@@ -2072,10 +2594,14 @@
         if(!Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
+        settleClaims.setEditDate(new Date());
         SettleClaims update = new SettleClaims();
-        update.setEditDate(new Date());
+        update.setEditDate(settleClaims.getEditDate());
         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);
 
@@ -2106,11 +2632,742 @@
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
                 Constants.SettleClaimsLogType.PLATFORM_FINISH,
-                dto.getDescribe());
+                dto.getDescribe(),Constants.SettleClaimsStatus.CLOSE_CASE);
+        deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
+        //缁欎紒涓氬彂閫氱煡锛屽凡缁撴-------------
+        sendNoticeBiz(Constants.ONE,settleClaims ,Constants.NoticeType.THIRTEEN);
     }
 
 
 
+    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())
+                        .isNotNull(SettleClaimsLog::getParentStatus)
+                        .orderByDesc(SettleClaimsLog::getId));
+        //绔嬫閫�鍥炵姸鎬佹暟鎹�
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())){
+            SettleParentStatusVO settleParentStatusVO = new SettleParentStatusVO();
+            settleParentStatusVO.setParentTitle("鎶ユ");
+            settleParentStatusVO.setStatus(Constants.ONE);
+            settleParentStatusVO.setChildTitle(Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getName());
+            Optional<SettleClaimsLog> optionalSettleClaimsLog = settleClaimsLogList.stream()
+                    .filter(i->Constants.equalsInteger(i.getObjType(),Constants.SettleClaimsLogType.PLATFORM_RETURN.getKey())).findFirst();
+            if(optionalSettleClaimsLog.isPresent()){
+                settleParentStatusVO.setOptDate(optionalSettleClaimsLog.get().getCreateDate());
+            }
+            settleParentStatusVOList.add(settleParentStatusVO);
+            return settleParentStatusVOList;
+        }
+        //鏆傚瓨鐘舵�� 鏃犱富娴佺▼鏁版嵁
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())){
+            return settleParentStatusVOList;
+        }
+        //鍟嗚瀹℃壒涓嶉�氳繃
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey())){
+            SettleParentStatusVO settleParentStatusBAVO = new SettleParentStatusVO();
+            settleParentStatusBAVO.setParentTitle("鎶ユ");
+            settleParentStatusBAVO.setChildTitle("宸叉姤妗�");
+            settleParentStatusBAVO.setStatus(Constants.ZERO);
+            Optional<SettleClaimsLog> optionalSettleClaimsBALog = settleClaimsLogList.stream()
+                    .filter(i->Constants.equalsInteger(i.getParentStatus(),Constants.ONE)).findFirst();
+            if(optionalSettleClaimsBALog.isPresent()){
+                settleParentStatusBAVO.setOptDate(optionalSettleClaimsBALog.get().getCreateDate());
+            }
+            settleParentStatusVOList.add(settleParentStatusBAVO);
+
+            SettleParentStatusVO settleParentStatusLAVO = new SettleParentStatusVO();
+            settleParentStatusLAVO.setParentTitle("绔嬫");
+            settleParentStatusLAVO.setChildTitle("宸茬珛妗�");
+            settleParentStatusLAVO.setStatus(Constants.ZERO);
+            Optional<SettleClaimsLog> optionalSettleClaimsLALog = settleClaimsLogList.stream()
+                    .filter(i->Constants.equalsInteger(i.getParentStatus(),Constants.TWO)).findFirst();
+            if(optionalSettleClaimsLALog.isPresent()){
+                settleParentStatusLAVO.setOptDate(optionalSettleClaimsBALog.get().getCreateDate());
+            }
+            settleParentStatusVOList.add(settleParentStatusBAVO);
+
+            SettleParentStatusVO settleParentStatusSLVO = new SettleParentStatusVO();
+            settleParentStatusSLVO.setParentTitle("鍙楃悊");
+            settleParentStatusSLVO.setChildTitle("鍟嗚鎷掔粷");
+            settleParentStatusSLVO.setStatus(Constants.THREE);
+            Optional<SettleClaimsLog> optionalSettleClaimsSLLog = settleClaimsLogList.stream()
+                    .filter(i->Constants.equalsInteger(i.getParentStatus(),Constants.THREE)).findFirst();
+            if(optionalSettleClaimsSLLog.isPresent()){
+                settleParentStatusSLVO.setOptDate(optionalSettleClaimsSLLog.get().getCreateDate());
+            }
+            settleParentStatusVOList.add(settleParentStatusSLVO);
+
+            return settleParentStatusVOList;
+        }
+
+        //涓诲姩鎾ら攢
+        if(Constants.equalsInteger(settleClaims.getStatus(),Constants.SettleClaimsStatus.RETURN.getKey())){
+            List<SettleClaimsLog> settleClaimsLogs = settleClaimsLogList.stream()
+                    .filter(i->i.getParentStatus()<Constants.SettleClaimsStatus.RETURN.getParentKey()).collect(Collectors.toList());
+            //鑾峰彇褰撳墠鏃ュ織鏈�澶х殑鐖剁姸鎬�
+            Optional<Integer> optionalInteger = settleClaimsLogs.stream().map(i->i.getParentStatus()).max(Comparator.comparingInt(o -> o));
+            if(optionalInteger.isPresent()){
+
+                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);
+                    //濡傛灉鏄瓑浜庣埗鐘舵�� 鍒欏幓鏌ヨ瀹為檯鐨勪笟鍔$姸鎬�
+                    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);
+
+                }
+            }
+            //娣诲姞鎾ゆ鏁版嵁
+            SettleParentStatusVO settleParentStatusCHVO = new SettleParentStatusVO();
+            settleParentStatusCHVO.setParentTitle("宸叉挙妗�");
+            settleParentStatusCHVO.setChildTitle("浼佷笟涓诲姩鎾ゆ");
+            settleParentStatusCHVO.setStatus(Constants.THREE);
+            Optional<SettleClaimsLog> optionalSettleClaimsSLLog = settleClaimsLogList.stream()
+                    .filter(i->Constants.equalsInteger(i.getObjType(),Constants.SettleClaimsLogType.RETURN_SETTLE.getKey())).findFirst();
+            if(optionalSettleClaimsSLLog.isPresent()){
+                settleParentStatusCHVO.setOptDate(optionalSettleClaimsSLLog.get().getCreateDate());
+            }
+            settleParentStatusVOList.add(settleParentStatusCHVO);
+            return settleParentStatusVOList;
+        }
+
+
+        List<SettleClaimsLog> settleClaimsLogs = settleClaimsLogList.stream()
+                .filter(i->i.getParentStatus()<Constants.SettleClaimsStatus.RETURN.getParentKey()).collect(Collectors.toList());
+        Optional<Integer> optionalInteger = settleClaimsLogs.stream().map(i->i.getParentStatus()).max(Comparator.comparingInt(o -> o));
+        if(optionalInteger.isPresent()){
+            for (int i = 1; i <= 6; i++) {
+                SettleParentStatusVO s = new SettleParentStatusVO();
+                Constants.SettleClaimsLogParentStatus  parentStatus = Constants.SettleClaimsLogParentStatus.getAll(i);
+                s.setParentTitle(parentStatus.getName());
+                if(optionalInteger.get()>i){
+                    //濡傛灉鏈�澶х殑鐖朵笟鍔$姸鎬� 澶т簬 榛樿鐨�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{
+                    //濡傛灉鏄瓑浜庣埗鐘舵�� 鍒欏幓鏌ヨ瀹為檯鐨勪笟鍔$姸鎬�
+                    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()));
+                            s.setOptDate(settleClaimsLogOptional.get().getCreateDate());
+                        }
+                    }
+                    s.setStatus(Constants.ONE);
+                }
+                settleParentStatusVOList.add(s);
+            }
+        }
+        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.CONFIRM_FEE.getKey(),settleClaims.getStatus())
+                || Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())
+                || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.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.setEditDate(new Date());
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(settleClaims.getEditDate());
+        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.setEditDate(new Date());
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(settleClaims.getEditDate());
+        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()).size()+""
+                );
+ 
+                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);
+                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);
+                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());
+            
+            //骞冲潎鐞嗚禂澶勭悊鏃堕暱澶╂暟 鎬昏澶勭悊鏃堕暱锛堝崟浣嶅皬鏃讹級闄や互 璁板綍鏁�  鎹㈢畻鍒板ぉ
+            if(CollectionUtils.isNotEmpty(closeCaseList)){
+                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