From 8b1dffc0ce5787d74020ac8a1c6ed00f16a7a0f4 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期六, 17 五月 2025 18:28:55 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 183 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 180 insertions(+), 3 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 74ad590..d5c68c8 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 @@ -8,16 +8,16 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; -import com.doumee.dao.business.NoticesMapper; -import com.doumee.dao.business.SettleClaimsLogMapper; -import com.doumee.dao.business.SettleClaimsMapper; +import com.doumee.dao.business.*; import com.doumee.dao.business.dto.SCSupplementDTO; import com.doumee.dao.business.dto.SettleClaimsDTO; 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.RiskConfigVO; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.SettleClaimsLogService; import com.doumee.service.business.SettleClaimsService; @@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.doumee.service.system.impl.SystemDictDataServiceImpl; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.annotations.ApiModelProperty; @@ -32,6 +33,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -73,6 +75,19 @@ @Autowired private NoticesMapper noticesMapper; + + @Autowired + private InsuranceApplyMapper insuranceApplyMapper; + + @Autowired + private SolutionsMapper solutionsMapper; + + @Autowired + private SolutionsBaseMapper solutionsBaseMapper; + + @Autowired + private ApplyDetailMapper applyDetailMapper; + /** * 鍒犻櫎闄勪欢 * @return @@ -954,6 +969,7 @@ || Objects.isNull(settleClaimsDTO.getSaveType()) || Objects.isNull(settleClaimsDTO.getMemberId()) ||StringUtils.isBlank(settleClaimsDTO.getIdcardNo()) + || Objects.isNull(settleClaimsDTO.getInsuranceApplyId()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } @@ -993,10 +1009,171 @@ settleClaimsMapper.insert(settleClaims); } this.saveFile(settleClaims,settleClaimsDTO,loginUserInfo); + //澶勭悊椋庨櫓淇℃伅 } + public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){ + //鏍规嵁淇濆崟淇℃伅 鏌ヨ鍑轰富鏂规 + InsuranceApply insuranceApply = insuranceApplyMapper.selectById(settleClaims.getInsuranceApplyId()); + if(Objects.isNull(insuranceApply)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌淇濆崟鏁版嵁"); + } + Date happenTime = DateUtil.StringToDate(settleClaims.getHappenTime()); + if(happenTime.getTime() < insuranceApply.getStartTime().getTime() || happenTime.getTime() > insuranceApply.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓浜嬩欢鏈湪淇濆崟鐢熸晥鑼冨洿鍐�"); + } + Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); + if(Objects.isNull(solutions)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌瀛愭柟妗堜俊鎭�"); + } + SolutionsBase solutionsBase = solutionsBaseMapper.selectById(solutions.getParentId()); + if(Objects.isNull(solutionsBase)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌涓绘柟妗堜俊鎭�"); + } + 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 ")); + //鏄惁寮�鍚� 鏂板憳宸ユ姤妗� 0涓嶅厑璁� 1鍏佽 + if(Constants.equalsInteger(solutionsBase.getRiskNewUserStatus(),Constants.ONE) + && Objects.nonNull(solutionsBase.getRiskNewUserUnit()) + && Objects.nonNull(solutionsBase.getRiskNewUserTime()) + ){ + if(happenTime.getTime() > applyDetail.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�"); + } + Map<String,String> map = new HashMap<>(); + map.put("title","淇濆崟宸叉姇淇濇湭鐢熸晥"); + Date startDate = applyDetail.getStartTime(); + if(Constants.equalsInteger(solutionsBase.getRiskNewUserUnit(),Constants.ONE)){ + startDate = DateUtil.afterMinutesByDate(-solutionsBase.getRiskNewUserTime()*60,startDate); + }else if(Constants.equalsInteger(solutionsBase.getRiskNewUserUnit(),Constants.TWO)){ + startDate = DateUtil.afterDayByDate(-solutionsBase.getRiskNewUserTime(),happenTime); + }else{ + if(happenTime.getTime() < applyDetail.getStartTime().getTime() || happenTime.getTime() > applyDetail.getEndTime().getTime()){ + 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)?"灏忔椂鍐�":"澶╁唴")); + riskList.add(map); + } + }else{ + if(happenTime.getTime() < applyDetail.getStartTime().getTime() || happenTime.getTime() > applyDetail.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�"); + } + } + + //鏄惁寮�鍚� 寤惰繜鎶ユ鎻愰啋鏄惁寮�鍚� 0涓嶅厑璁� 1鍏佽 + if(Constants.equalsInteger(solutionsBase.getRiskDelayStatus(),Constants.ONE)){ + Map<String,String> map = new HashMap<>(); + map.put("title","寤惰繜鎶ユ鎻愰啋"); + //鏍规嵁閰嶇疆 鏌ヨ 寤惰繜鎶ユ鎻愰啋鏃堕棿鍗曚綅 0鍒嗛挓 1灏忔椂 2澶� + if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ZERO)){ + if(DateUtil.getBetweenMin(happenTime,new Date())>solutionsBase.getRiskDelayTime()){ + map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"鍒嗛挓"); + riskList.add(map); + } + }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ONE)){ + if(DateUtil.getBetweenHours(happenTime,new Date())>solutionsBase.getRiskDelayTime()){ + map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"灏忔椂"); + riskList.add(map); + } + }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.TWO)){ + if(DateUtil.getBetweenDay(happenTime,new Date())>solutionsBase.getRiskDelayTime()){ + map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"澶�"); + riskList.add(map); + } + } + } + + //鏌ヨ瀛楀吀鍊奸厤缃俊鎭� + RiskConfigVO riskConfigVO = systemDictDataService.getRiskConfig(); + //澶氭鍑洪櫓鎻愰啋 + if(StringUtils.isNotBlank(riskConfigVO.getRiskTimesOpen()) && StringUtils.equals(riskConfigVO.getRiskTimesOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskTimesReportTimes())){ + Integer 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())){ + Map<String,String> map = new HashMap<>(); + map.put("title","鐤戜技澶氭鍑洪櫓"); + map.put("info","鍑洪櫓浜轰竴骞村唴宸插嚭闄�"+cxcs+"娆�"); + riskList.add(map); + settleClaims.setRiskTimesCx(Constants.ONE); + }; + } + //鐤戜技閲嶅鎶ユ + if(StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportOpen()) + && StringUtils.equals(riskConfigVO.getRiskRepeatReportOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTimeUnit()) + && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTime())){ + Integer 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) ") + ); + if(cxcs > Constants.TWO){ + Map<String,String> map = new HashMap<>(); + map.put("title","鐤戜技閲嶅鎶ユ"); + map.put("info","璇ュ嚭闄╀汉鍦�"+riskConfigVO.getRiskRepeatReportTime()+(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")?"灏忔椂":"澶�")+"鍐呭凡鎶ユ"+cxcs+"娆�"); + riskList.add(map); + settleClaims.setRiskRepeat(Constants.ONE); + } + } + + + //绱㈣禂娆℃暟杩囧鎻愰啋 + if(StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimesOpen()) + && StringUtils.equals(riskConfigVO.getRiskClaimTimesOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimes())){ + Integer 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) ") + ); + if(cxcs > Integer.valueOf(riskConfigVO.getRiskClaimTimes())){ + Map<String,String> map = new HashMap<>(); + map.put("title","璇ヤ繚鍗曠储璧旀鏁拌繃澶�"); + map.put("info","绱绱㈣禂娆℃暟宸插埌杈�"+cxcs+"娆�"); + riskList.add(map); + settleClaims.setRiskTimesSp(Constants.ONE); + } + } + + //璁捐鏁忔劅璇嶆眹 + if(StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWordsOpen()) + && StringUtils.equals(riskConfigVO.getRiskSensitiveWordsOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWords())){ + String [] words = riskConfigVO.getRiskSensitiveWords().split(","); + String sensitiveWord = ""; + for (String word:words) { + if(settleClaims.getContent().indexOf(word)>=Constants.ZERO){ + if(Constants.equalsInteger(sensitiveWord.length(),Constants.ZERO)){ + sensitiveWord = word; + }else{ + sensitiveWord = sensitiveWord + "銆�" + word ; + } + } + } + if(!Constants.equalsInteger(sensitiveWord.length(),Constants.ZERO)){ + Map<String,String> map = new HashMap<>(); + map.put("title","娑夊強鏁忔劅璇�"); + map.put("info","妫�娴嬪埌鏁忔劅璇嶏細"+sensitiveWord); + riskList.add(map); + settleClaims.setRiskSensitive(sensitiveWord); + } + } + + //鐤戜技鏂板憳宸ュ嚭闄� + + } public void saveFile(SettleClaims settleClaims,SettleClaimsDTO settleClaimsDTO,LoginUserInfo loginUserInfo){ multifileJoinMapper.delete(new QueryWrapper<Multifile>().lambda() -- Gitblit v1.9.3