From 25baa25ea30432ba8651b5cc9dc0c2bdfed4fc2d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 20 五月 2025 16:14:54 +0800
Subject: [PATCH] 提交一把

---
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java |  325 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 294 insertions(+), 31 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 f3ea9df..d412f7a 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
@@ -19,6 +19,7 @@
 import com.doumee.dao.business.model.*;
 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.system.model.SystemUser;
 import com.doumee.service.business.SettleClaimsLogService;
 import com.doumee.service.business.SettleClaimsService;
@@ -61,6 +62,8 @@
 
     @Autowired
     private SettleClaimsMapper settleClaimsMapper;
+    @Autowired
+    private SettleClaimsExtMapper settleClaimsExtMapper;
 
     @Autowired
     private SettleClaimsLogMapper settleClaimsLogMapper;
@@ -375,6 +378,149 @@
         return  1;
     }
 
+    @Override
+    @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().getMemberName())
+                || Objects.isNull(settleClaims.getExtData().getMemberIdcardType())
+                || Objects.isNull(settleClaims.getExtData().getMemberIdcard())){
+            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.equalsInteger(loginUserInfo.getType(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙扮鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
+        }
+        Date date =new Date();
+        settleClaims.setEditDate(date);
+        settleClaims.setEditor(loginUserInfo.getId());
+
+        List<SettleClaimsMoneyVO> feeList = settleClaims.getAccountList();
+        BigDecimal mainFee = new BigDecimal(0);
+        BigDecimal ortherFee = new BigDecimal(0);
+        if(feeList!=null && feeList.size()>0){
+            for(SettleClaimsMoneyVO fee : feeList){
+                if(Constants.equalsObject(fee.getType(),Constants.ZERO)){
+                    mainFee = mainFee.add(Constants.formatBigdecimal(fee.getMoney()));
+                }else{
+                    ortherFee = ortherFee.add(Constants.formatBigdecimal(fee.getMoney()));
+                }
+            }
+            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.ZERO)
+                .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()));
+        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> 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));
+        if(CollectionUtils.isNotEmpty(insetList)){
+                multifileJoinMapper.insert(insetList);
+        }
+        //--------------澶勭悊闄勪欢缁撴潫----------------
+    }
+
+    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.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) {
@@ -1001,6 +1147,7 @@
         }
         SettleClaims settleClaims = new SettleClaims();
         BeanUtils.copyProperties(settleClaimsDTO,settleClaims);
+        settleClaims.setReportNumStatus(Constants.ZERO);
         if(Objects.nonNull(settleClaims.getId())){
             settleClaims.setEditDate(new Date());
             settleClaims.setEditor(loginUserInfo.getId());
@@ -1113,7 +1260,7 @@
         //澶氭鍑洪櫓鎻愰啋
         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)  ")
@@ -1131,7 +1278,7 @@
                 && 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)  ")
@@ -1151,7 +1298,7 @@
         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())
                     .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
                     .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY)  ")
@@ -1499,7 +1646,34 @@
     }
 
 
-
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void updCaseType(CaseTypeDTO dto){
+        if(Objects.isNull(dto)
+                || Objects.isNull(dto.getId())
+                || Objects.isNull(dto.getCaseType())
+                || !(dto.getCaseType()>=Constants.ONE&&dto.getCaseType()<=Constants.THREE)
+        ){
+            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.ACCEPTANCE.getKey(),settleClaims.getStatus())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+        }
+        //瀛樺偍鏃ュ織
+        this.saveSettleClaimsLog(settleClaims, Constants.SettleClaimsLogType.UPD_CASE_TYPE,Constants.SettleClaimsLogType.UPD_CASE_TYPE.getInfo());
+        settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
+                .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime())
+                .set(SettleClaims::getEditor,loginUserInfo.getId())
+                .set(SettleClaims::getCaseType,dto.getCaseType()));
+    }
 
 
 
@@ -1556,16 +1730,25 @@
         if(!user.getType().equals(Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
         }
-        //鏌ヨ鏄惁鏈夋姤妗堝彿鏇存敼璁板綍
-        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
-        && settleClaimsLogMapper.selectCount(new QueryWrapper<SettleClaimsLog>().lambda()
-                        .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_ADDCODE.getKey())
-                .eq(SettleClaimsLog::getSettleClainmsId,param.getId()))>=Constants.ONE){
+        if(Constants.equalsInteger(model.getReportNumStatus(),Constants.TWO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
         }
-        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())&&StringUtils.isNotBlank(model.getReportNum())){
-            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)))){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
         }
+
+
+//        //鏌ヨ鏄惁鏈夋姤妗堝彿鏇存敼璁板綍
+//        if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey())
+//        && settleClaimsLogMapper.selectCount(new QueryWrapper<SettleClaimsLog>().lambda()
+//                        .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_ADDCODE.getKey())
+//                .eq(SettleClaimsLog::getSettleClainmsId,param.getId()))>=Constants.ONE){
+//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿");
+//        }
+//        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()));
@@ -1573,6 +1756,7 @@
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
         update.setEditor(user.getId());
+        update.setReportNumStatus(model.getReportNumStatus()+Constants.ONE);
         update.setId(model.getId());
         update.setCheckDate(update.getEditDate());
         update.setCheckInfo("娣诲姞澶囨鍙�");
@@ -1608,7 +1792,7 @@
                 ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey())
                 ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey())
                 ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.COMPENSATION.getKey())
-                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_CLOSE_CASE.getKey())
+                ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_FEE.getKey())
                 ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())
         )){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇峰綋鍓嶄笉鏀寔璇ユ搷浣渵");
@@ -1692,11 +1876,23 @@
 
 
     @Override
-    public List<CompensationVO> getCompensation(Integer id){
-        SettleClaims settleClaims = settleClaimsMapper.selectById(id);
+    public List<CompensationVO> getCompensation(CompensationFeeDTO compensationFeeDTO){
+        if(Objects.isNull(compensationFeeDTO)
+                || Objects.isNull(compensationFeeDTO.getType())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        SettleClaims settleClaims = null;
+        if(Objects.nonNull(compensationFeeDTO.getId())){
+            settleClaims = settleClaimsMapper.selectById(compensationFeeDTO.getId());
+        }
         List<CompensationVO> modelList = new ArrayList<>();
-        if (Objects.nonNull(settleClaims)&&StringUtils.isNotBlank(settleClaims.getAccountContent())) {
-            modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
+        if (Objects.nonNull(settleClaims)) {
+            if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ONE)&&StringUtils.isNotBlank(settleClaims.getAccountContent())){
+                modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
+            }else if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.TWO)&&StringUtils.isNotBlank(settleClaims.getHpAccountContent())){
+                modelList = JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class);
+            }
         }
         Constants.compensation [] compensations = Constants.compensation.values();
         List<CompensationVO> list = new ArrayList<>();
@@ -1739,7 +1935,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
 
-        List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
+        List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
 
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
@@ -1827,18 +2023,17 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
 
-        List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
+
+        List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class);
 
         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.setAccountContent(dto.getCompensationJson());
+        update.setHpAccountContent(dto.getCompensationJson());
+        update.setHpAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+        update.setHpOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+
+
         update.setId(settleClaims.getId());
         update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey());
         settleClaimsMapper.updateById(update);
@@ -1867,7 +2062,9 @@
         if(Objects.isNull(settleClaims)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
+        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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
 
@@ -1876,14 +2073,16 @@
         SettleClaims update = new SettleClaims();
         update.setEditDate(new Date());
         update.setEditor(loginUserInfo.getId());
+        if(Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus())){
+            update.setFeeUpdate(Constants.ONE);
+        }
         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));
-
         //澶勭悊鍘嗗彶鏁版嵁
-        List<CompensationVO> oldList =  JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class);
+        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());
@@ -1897,7 +2096,6 @@
               continue;  
             }
         }
-        update.setAccountContent(dto.getCompensationJson());
         update.setAccountContent(JSONArray.toJSONString(oldList));
         update.setId(settleClaims.getId()); 
         settleClaimsMapper.updateById(update);
@@ -1912,7 +2110,6 @@
     @Override
     @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(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�");
@@ -1924,7 +2121,12 @@
         if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
         }
-
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setStatus(Constants.SettleClaimsStatus.WAIT_DEAL.getKey());
+        update.setId(settleClaims.getId());
+        settleClaimsMapper.updateById(update);
 
         //瀛樺偍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,
@@ -1933,5 +2135,66 @@
     }
 
 
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void payCash(PayCashDTO dto){
+        if(Objects.isNull(dto)
+                || Objects.isNull(dto.getId())
+                || StringUtils.isBlank(dto.getDescribe())
+        ){
+            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_FEE.getKey(),settleClaims.getStatus())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~");
+        }
+        SettleClaims update = new SettleClaims();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setStatus(Constants.SettleClaimsStatus.CLOSE_CASE.getKey());
+        update.setId(settleClaims.getId());
+        settleClaimsMapper.updateById(update);
+
+        if(CollectionUtils.isNotEmpty(dto.getMultifileList())){
+            List<Multifile> fileList = dto.getMultifileList();
+            if(CollectionUtils.isNotEmpty(fileList)){
+                for (int i = 0; i < fileList.size(); i++) {
+                    Multifile multifile = fileList.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.MultiFile.LP_PAY_FILE.getKey());
+                    multifile.setSortnum(i+1);
+                    multifileJoinMapper.insert(multifile);
+                }
+            }
+        }
+
+
+        //瀛樺偍鏃ュ織
+        this.saveSettleClaimsLog(settleClaims,
+                Constants.SettleClaimsLogType.PLATFORM_FINISH,
+                dto.getDescribe());
+    }
+
+
+
+
+
 
 }

--
Gitblit v1.9.3