From e23a5de92a6a4a478aa755e45238ee009af751ec Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 21 五月 2025 10:41:52 +0800 Subject: [PATCH] 提交一把 --- server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 1008 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 997 insertions(+), 11 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 d5c68c8..312901d 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 @@ -1,6 +1,8 @@ package com.doumee.service.business.impl; +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; @@ -11,13 +13,15 @@ import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; -import com.doumee.dao.business.dto.SCSupplementDTO; -import com.doumee.dao.business.dto.SettleClaimsDTO; +import com.doumee.dao.business.dto.*; import com.doumee.dao.business.join.MultifileJoinMapper; import com.doumee.dao.business.join.SettleClaimsJoinMapper; import com.doumee.dao.business.join.SettleClaimsLogJoinMapper; 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.business.vo.SettleParentStatusVO; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.SettleClaimsLogService; import com.doumee.service.business.SettleClaimsService; @@ -37,12 +41,14 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.math.BigDecimal; import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.*; @@ -58,6 +64,8 @@ @Autowired private SettleClaimsMapper settleClaimsMapper; + @Autowired + private SettleClaimsExtMapper settleClaimsExtMapper; @Autowired private SettleClaimsLogMapper settleClaimsLogMapper; @@ -370,8 +378,152 @@ SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); settleClaimsLogMapper.insert(log); 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<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.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) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); @@ -567,6 +719,10 @@ 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())); } //鏌ヨ鎿嶄綔璁板綍 @@ -608,6 +764,12 @@ 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"))); } return settleClaims; } @@ -710,7 +872,6 @@ ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } - SettleClaims settleClaims = settleClaimsMapper.selectById(scSupplementDTO.getId()); if(!(settleClaims.getStatus().equals(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey()) || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.DEAL_ING.getKey()) @@ -960,7 +1121,9 @@ } - public void saveSettleClaims(SettleClaimsDTO settleClaimsDTO){ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSettleClaims(SettleClaimsDTO settleClaimsDTO,SystemDictDataServiceImpl systemDictDataService){ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!loginUserInfo.getType().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氬憳宸ユ棤娉曡繘琛岃鎿嶄綔"); @@ -994,9 +1157,17 @@ } SettleClaims settleClaims = new SettleClaims(); BeanUtils.copyProperties(settleClaimsDTO,settleClaims); + settleClaims.setReportNumStatus(Constants.ZERO); + settleClaims.setOrigin(Constants.ZERO); if(Objects.nonNull(settleClaims.getId())){ 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)){ + //澶勭悊椋庨櫓淇℃伅 + this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService); + } settleClaimsMapper.updateById(settleClaims); }else{ settleClaims.setCreateDate(new Date()); @@ -1004,14 +1175,18 @@ 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)){ + //澶勭悊椋庨櫓淇℃伅 + this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService); + } settleClaims.setCreator(loginUserInfo.getId()); settleClaims.setCheckUserId(loginUserInfo.getId()); settleClaimsMapper.insert(settleClaims); } this.saveFile(settleClaims,settleClaimsDTO,loginUserInfo); - //澶勭悊椋庨櫓淇℃伅 - + //璁板綍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null); } public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){ @@ -1095,7 +1270,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) ") @@ -1113,7 +1288,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) ") @@ -1133,7 +1308,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) ") @@ -1170,9 +1345,36 @@ settleClaims.setRiskSensitive(sensitiveWord); } } - //鐤戜技鏂板憳宸ュ嚭闄� + if(StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberOpen()) + && StringUtils.equals(riskConfigVO.getRiskNewMemberOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberTimeUnit()) + && StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberTime()) + ){ + Map<String,String> map = new HashMap<>(); + map.put("title","鐤戜技鏂板憳宸ュ嚭闄�"); + if(riskConfigVO.getRiskNewMemberTimeUnit().equals(Constants.ONE+"")){ + if(DateUtil.afterMinutesByDate(Integer.valueOf(riskConfigVO.getRiskNewMemberTime())*60,insuranceApply.getStartTime()).getTime() < happenTime.getTime()){ + map.put("info","淇濋櫓鐢熸晥鏃堕棿涓�"+DateUtil.getFomartDate(insuranceApply.getStartTime(),"yyyy-MM-dd")+""); + riskList.add(map); + settleClaims.setRiskNewUser(Constants.ONE); + }; + }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.TWO)){ + if(DateUtil.afterDayByDate(Integer.valueOf(riskConfigVO.getRiskNewMemberTime()),insuranceApply.getStartTime()).getTime() < happenTime.getTime()){ + map.put("info","淇濋櫓鐢熸晥鏃堕棿涓�"+DateUtil.getFomartDate(insuranceApply.getStartTime(),"yyyy-MM-dd")+""); + riskList.add(map); + settleClaims.setRiskNewUser(Constants.ONE); + } + } + } + settleClaims.setRiskContent(JSONObject.toJSONString(riskList)); + if(riskList.size()>Constants.ZERO){ + settleClaims.setIsRisk(Constants.ONE); + }else{ + settleClaims.setIsRisk(Constants.ZERO); + settleClaims.setStatus(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()); + } } public void saveFile(SettleClaims settleClaims,SettleClaimsDTO settleClaimsDTO,LoginUserInfo loginUserInfo){ @@ -1305,14 +1507,798 @@ multifile.setSortnum(i+1); multifileJoinMapper.insert(multifile); } + } + } + +// public void getRiskSettleDetail(Integer id){ +// settleClaimsJoinMapper.selectJoinOne(SettleClaims.class,new MPJLambdaWrapper<SettleClaims>() +// .selectAll(SettleClaims.class) +// .selectAs(DispatchUnit::getName,SettleClaims::getDuName) +// .selectAs(Worktype::getName,SettleClaims::getWorktypeName) +// .selectAs(Solutions::getName,SettleClaims::getSolutionName) +// .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime) +// .selectAs(InsuranceApply::getEndTime,SettleClaims::getBaoxianEndTime) +// .leftJoin(Solutions.class,Solutions::getId,SettleClaims::getSolutionId) +// .leftJoin(DispatchUnit.class,DispatchUnit::getId,SettleClaims::getDuId) +// .leftJoin(Worktype.class,Worktype::getId,SettleClaims::getWorktypeId) +// .leftJoin(InsuranceApply.class,InsuranceApply::getId,SettleClaims::getInsuranceApplyId) +// +// +// .eq(SettleClaims::getId,id) +// .last(" limit 1 ") +// ); +// } + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSupplementDescribe(SaveSupplementDescribeDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(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.ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + if(Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰呬紒涓氳ˉ鍏呮枃浠讹紝璇风瓑寰呬紒涓氳ˉ鍏呮枃浠�"); + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE,dto.getDescribe()); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getWaitSupplement,Constants.ONE)); + } + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSupplementFile(SaveSupplementDescribeDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || CollectionUtils.isEmpty(dto.getSupplementFileList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!(loginUserInfo.getType().equals(Constants.ZERO)||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(loginUserInfo.getType().equals(Constants.ZERO)){ + 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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + }else{ + //濡傛灉鏄紒涓� 鏌ヨ鏄惁鏄嚜宸变紒涓氱殑鏁版嵁 + if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔"); + } + if(!Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠涓氬姟鏃犻渶杩涜娣诲姞鏉愭枡"); + } + if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.REJECT_DEAL.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey(),settleClaims.getStatus()) + )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .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())); + List<Multifile> fileList = dto.getSupplementFileList(); + 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_OTHER_FILE.getKey()); + multifile.setSortnum(i+1); + multifileJoinMapper.insert(multifile); + } + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null); + } + + + /** + * 鎾ら攢鎶ユ + * @param dto + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void returnSettle(OptSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId())){ + 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.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.RETURN_SETTLE,null); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,Constants.SettleClaimsStatus.RETURN.getKey())); + } + + + @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())); + } + + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void register(OptSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getRegisterStatus()) + || !(Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())||Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())) + || (Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())&&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.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + 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()); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate, + DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,settleClaimsStatus.getKey())); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer addReportNum(OptSettleClaimsDTO param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getReportNum()) ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + SettleClaims model = settleClaimsMapper.selectById(param.getId()); + if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) + || Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) + ) + ){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!user.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + 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)))){ + 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())); + 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("娣诲姞澶囨鍙�"); + update.setCheckUserId(user.getId()); + update.setReportNum(param.getReportNum()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_ADDCODE; + 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)); + settleClaimsLogMapper.insert(log); + + return 1; + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer addRemark(OptSettleClaimsDTO param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getDescribe()) ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + SettleClaims model = settleClaimsMapper.selectById(param.getId()); + if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.REJECT_DEAL.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey()) + ||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.CONFIRM_FEE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey()) + )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇峰綋鍓嶄笉鏀寔璇ユ搷浣渵"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(user.getId()); + update.setCheckDate(update.getEditDate()); + update.setCheckInfo("娣诲姞澶囨敞鏍囩"); + update.setCheckUserId(user.getId()); + update.setId(model.getId()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_REMARK; + 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)); + settleClaimsLogMapper.insert(log); + return 1; } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void acceptance(AcceptanceSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getStatus()) + || StringUtils.isBlank(dto.getDescribe()) + || !(dto.getStatus()>=Constants.ZERO||dto.getStatus()<=Constants.THREE) + || ((Constants.equalsInteger(dto.getStatus(),Constants.THREE) ||Constants.equalsInteger(dto.getStatus(),Constants.TWO)) && StringUtils.isBlank(dto.getSyProblemOpts()) ) + ){ + 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.WAIT_DEAL.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + 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()) + .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()); + }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()) + .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())); + }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())); + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS, + dto.getDescribe()); + } + } + + + @Override + 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)) { + if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ZERO)&&StringUtils.isNotBlank(settleClaims.getAccountContent())){ + modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class); + }else if(Constants.equalsInteger(compensationFeeDTO.getType(),Constants.ONE)&&StringUtils.isNotBlank(settleClaims.getHpAccountContent())){ + modelList = JSONArray.parseArray(settleClaims.getHpAccountContent(),CompensationVO.class); + } + } + Constants.compensation [] compensations = Constants.compensation.values(); + List<CompensationVO> list = new ArrayList<>(); + for (Constants.compensation c:compensations) { + CompensationVO compensationVO = new CompensationVO(); + compensationVO.setType(c.getType()); + compensationVO.setName(c.getName()); + if(CollectionUtils.isNotEmpty(modelList)){ + Optional<CompensationVO> optionalModel = modelList.stream().filter(i->i.getName().equals(c.getName())).findFirst(); + if(optionalModel.isPresent()){ + CompensationVO oldModel = optionalModel.get(); + compensationVO.setFee(oldModel.getFee()); + compensationVO.setDescribe(oldModel.getDescribe()); + } + } + list.add(compensationVO); + } + return list; + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void compensation(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + 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()))||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 update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + 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()); + } + + + /** + * 鍟嗚瀹℃壒 + * @param dto + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void discussAudit(DiscussAuditDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getStatus()) + || !(Constants.equalsInteger(dto.getStatus(),Constants.ZERO)||Constants.equalsInteger(dto.getStatus(),Constants.ONE)) + || (Constants.equalsInteger(dto.getStatus(),Constants.ONE)&&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.WAIT_DISCUSS_AUDIT.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + Constants.SettleClaimsStatus settleClaimsStatus = + Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsStatus.ACCEPTANCE:Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT; + //瀛樺偍鏃ュ織 + Constants.SettleClaimsLogType settleClaimsLogType = Constants.equalsInteger(dto.getStatus(),Constants.ZERO) + ?Constants.SettleClaimsLogType.PLATFORM_DISCUSS_PASS:Constants.SettleClaimsLogType.PLATFORM_DISCUSS_REFUSE; + this.saveSettleClaimsLog(settleClaims, settleClaimsLogType + ,settleClaimsLogType.getInfo().replace("${param}",dto.getDescribe())); + 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,settleClaimsStatus.getKey())); + } + + + + + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void nuclearCompensation(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + 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.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + + List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class); + + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + update.setHpAccountContent(dto.getCompensationJson()); + update.setHpAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setHpOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + + + update.setId(settleClaims.getId()); + update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey()); + settleClaimsMapper.updateById(update); + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_HP_DEAL, + Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo()); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void updFee(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + 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.COMPENSATION.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.CONFIRM_FEE.getKey(),settleClaims.getStatus())) + ){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class); + + 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.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()); + settleClaimsMapper.updateById(update); + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_UPD_FEE, + Constants.SettleClaimsLogType.PLATFORM_UPD_FEE.getInfo()); + } + + + @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(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + 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(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + 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, + Constants.SettleClaimsLogType.CONFIRM_FEE, + Constants.SettleClaimsLogType.CONFIRM_FEE.getInfo()); + } + + + @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()); + } + + +// +// public List<SettleParentStatusVO> getParentStatus(SettleClaims settleClaims){ +// List<SettleParentStatusVO> settleParentStatusVOList = new ArrayList<>(); +// List<SettleClaimsLog> settleClaimsLogList = settleClaimsLogMapper +// .selectList(new QueryWrapper<SettleClaimsLog>().lambda().eq(SettleClaimsLog::getObjId,settleClaims.getId()).orderByDesc(SettleClaimsLog::getCreateDate)); +// //绔嬫閫�鍥炵姸鎬佹暟鎹� +// 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.TWO); +// 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()); +// +// for (int i = 1; i <= 5; i++) { +// SettleParentStatusVO s = new SettleParentStatusVO(); +// Constants.SettleClaimsLogParentStatus parentStatus = Constants.SettleClaimsLogParentStatus.getAll(i); +// s.setParentTitle(parentStatus.getName()); +// s.set(parentStatus.getInfo()); +// s.setStatus(Constants.ZERO); +// +// } +// SettleParentStatusVO settleParentStatusCHVO = new SettleParentStatusVO(); +// settleParentStatusCHVO.setParentTitle("宸叉挙妗�"); +// settleParentStatusCHVO.setChildTitle("浼佷笟涓诲姩鎾ゆ"); +// settleParentStatusCHVO.setStatus(Constants.TWO); +// Optional<SettleClaimsLog> optionalSettleClaimsSLLog = settleClaimsLogList.stream() +// .filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsLogType.RETURN_SETTLE.getKey())).findFirst(); +// if(optionalSettleClaimsSLLog.isPresent()){ +// settleParentStatusCHVO.setOptDate(optionalSettleClaimsSLLog.get().getCreateDate()); +// } +// settleParentStatusVOList.add(settleParentStatusCHVO); +// +// +// return settleParentStatusVOList; +// +// } +// +// +// return settleParentStatusVOList; +// +// +// } + + + } -- Gitblit v1.9.3