server/company/src/main/java/com/doumee/api/business/ApplyDetailController.java
@@ -126,6 +126,13 @@ } @ApiOperation("查询人员可报案数据") @GetMapping("/getMemberSettleClaimsList") public ApiResponse<List<ApplyDetail>> getMemberSettleClaimsList(@RequestParam Integer memberId) { return ApiResponse.success(applyDetailService.getMemberSettleClaimsList(memberId)); } } server/service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -113,6 +113,33 @@ } } public static long getBetweenMin(Date fromDate, Date toDate) { long m_intervalday = 0;// 初始化时间间隔的值为0 // 使用的时间格式为yyyy-MM-dd try { m_intervalday = toDate.getTime() - fromDate.getTime();// 计算所得为微秒数 m_intervalday = m_intervalday / 1000 / 60 ;// 计算所得的天数 return m_intervalday + 1; } catch (Exception e) { return Integer.MIN_VALUE; } } public static long getBetweenDay(Date fromDate, Date toDate) { long m_intervalday = 0;// 初始化时间间隔的值为0 // 使用的时间格式为yyyy-MM-dd try { m_intervalday = toDate.getTime() - fromDate.getTime();// 计算所得为微秒数 m_intervalday = m_intervalday / 1000 / 60 / 60 / 24 ;// 计算所得的天数 return m_intervalday + 1; } catch (Exception e) { return Integer.MIN_VALUE; } } /** * @author Pablo Descrption:ȡ�õ�ǰ����getgetg get Date format * Example:2008.03.15 @@ -889,95 +916,95 @@ * @return 转换得到的日期 */ @SuppressWarnings("unchecked") public static Date stringToDate(String strDate, String oracleFormat) { if (strDate == null) return null; Hashtable<Integer, String> h = new Hashtable<Integer, String>(); String javaFormat = new String(); String s = oracleFormat.toLowerCase(); if (s.indexOf("yyyy") != -1) h.put(new Integer(s.indexOf("yyyy")), "yyyy"); else if (s.indexOf("yy") != -1) h.put(new Integer(s.indexOf("yy")), "yy"); if (s.indexOf("mm") != -1) h.put(new Integer(s.indexOf("mm")), "MM"); if (s.indexOf("dd") != -1) h.put(new Integer(s.indexOf("dd")), "dd"); if (s.indexOf("hh24") != -1) h.put(new Integer(s.indexOf("hh24")), "HH"); if (s.indexOf("mi") != -1) h.put(new Integer(s.indexOf("mi")), "mm"); if (s.indexOf("ss") != -1) h.put(new Integer(s.indexOf("ss")), "ss"); int intStart = 0; while (s.indexOf("-", intStart) != -1) { intStart = s.indexOf("-", intStart); h.put(new Integer(intStart), "-"); intStart++; } intStart = 0; while (s.indexOf("/", intStart) != -1) { intStart = s.indexOf("/", intStart); h.put(new Integer(intStart), "/"); intStart++; } intStart = 0; while (s.indexOf(" ", intStart) != -1) { intStart = s.indexOf(" ", intStart); h.put(new Integer(intStart), " "); intStart++; } intStart = 0; while (s.indexOf(":", intStart) != -1) { intStart = s.indexOf(":", intStart); h.put(new Integer(intStart), ":"); intStart++; } if (s.indexOf("年") != -1) h.put(new Integer(s.indexOf("年")), "年"); if (s.indexOf("月") != -1) h.put(new Integer(s.indexOf("月")), "月"); if (s.indexOf("日") != -1) h.put(new Integer(s.indexOf("日")), "日"); if (s.indexOf("时") != -1) h.put(new Integer(s.indexOf("时")), "时"); if (s.indexOf("分") != -1) h.put(new Integer(s.indexOf("分")), "分"); if (s.indexOf("秒") != -1) h.put(new Integer(s.indexOf("秒")), "秒"); int i = 0; while (h.size() != 0) { Enumeration e = h.keys(); int n = 0; while (e.hasMoreElements()) { i = ((Integer) e.nextElement()).intValue(); if (i >= n) n = i; } String temp = (String) h.get(new Integer(n)); h.remove(new Integer(n)); javaFormat = temp + javaFormat; } SimpleDateFormat df = new SimpleDateFormat(javaFormat); Date myDate = new Date(); try { myDate = df.parse(strDate); } catch (Exception e) { // e.printStackTrace(); return null; } return myDate; } // public static Date stringToDate(String strDate, String oracleFormat) { // if (strDate == null) // return null; // Hashtable<Integer, String> h = new Hashtable<Integer, String>(); // String javaFormat = new String(); // String s = oracleFormat.toLowerCase(); // if (s.indexOf("yyyy") != -1) // h.put(new Integer(s.indexOf("yyyy")), "yyyy"); // else if (s.indexOf("yy") != -1) // h.put(new Integer(s.indexOf("yy")), "yy"); // if (s.indexOf("mm") != -1) // h.put(new Integer(s.indexOf("mm")), "MM"); // // if (s.indexOf("dd") != -1) // h.put(new Integer(s.indexOf("dd")), "dd"); // if (s.indexOf("hh24") != -1) // h.put(new Integer(s.indexOf("hh24")), "HH"); // if (s.indexOf("mi") != -1) // h.put(new Integer(s.indexOf("mi")), "mm"); // if (s.indexOf("ss") != -1) // h.put(new Integer(s.indexOf("ss")), "ss"); // // int intStart = 0; // while (s.indexOf("-", intStart) != -1) { // intStart = s.indexOf("-", intStart); // h.put(new Integer(intStart), "-"); // intStart++; // } // // intStart = 0; // while (s.indexOf("/", intStart) != -1) { // intStart = s.indexOf("/", intStart); // h.put(new Integer(intStart), "/"); // intStart++; // } // // intStart = 0; // while (s.indexOf(" ", intStart) != -1) { // intStart = s.indexOf(" ", intStart); // h.put(new Integer(intStart), " "); // intStart++; // } // // intStart = 0; // while (s.indexOf(":", intStart) != -1) { // intStart = s.indexOf(":", intStart); // h.put(new Integer(intStart), ":"); // intStart++; // } // // if (s.indexOf("年") != -1) // h.put(new Integer(s.indexOf("年")), "年"); // if (s.indexOf("月") != -1) // h.put(new Integer(s.indexOf("月")), "月"); // if (s.indexOf("日") != -1) // h.put(new Integer(s.indexOf("日")), "日"); // if (s.indexOf("时") != -1) // h.put(new Integer(s.indexOf("时")), "时"); // if (s.indexOf("分") != -1) // h.put(new Integer(s.indexOf("分")), "分"); // if (s.indexOf("秒") != -1) // h.put(new Integer(s.indexOf("秒")), "秒"); // // int i = 0; // while (h.size() != 0) { // Enumeration e = h.keys(); // int n = 0; // while (e.hasMoreElements()) { // i = ((Integer) e.nextElement()).intValue(); // if (i >= n) // n = i; // } // String temp = (String) h.get(new Integer(n)); // h.remove(new Integer(n)); // // javaFormat = temp + javaFormat; // } // SimpleDateFormat df = new SimpleDateFormat(javaFormat); // // Date myDate = new Date(); // try { // myDate = df.parse(strDate); // } catch (Exception e) { // // e.printStackTrace(); // return null; // } // // return myDate; // } public static Date StringToDate(String DATE1) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); @@ -3084,7 +3111,25 @@ return cal.getTime(); } /** * 获取某个时间X分钟后的时间 * @param minutes * @param date * @return */ public static Date afterMinutesByDate(Integer minutes,Date date){ Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE,minutes); return cal.getTime(); } public static Date afterDayByDate(Integer days,Date date){ Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE,days); return cal.getTime(); } /** * 计算多少自然年/月/日后的日期 * @param startDate 开始日期 @@ -3157,7 +3202,8 @@ public static void main(String[] args) throws Exception{ System.out.println(DateUtil.getLongDateTime(new Date()));; System.out.println(DateUtil.StringToDate("2025-05-16 13:49:40").getTime()); // System.out.println(DateUtil.getLongDateTime(new Date()));; } /** server/service/src/main/java/com/doumee/dao/business/dto/SettleClaimsDTO.java
@@ -23,6 +23,12 @@ @ApiModelProperty(value = "出险人") private Integer memberId; @ApiModelProperty(value = "投保申请编码", example = "1") private Integer insuranceApplyId; @ApiModelProperty(value = "投保申请明细编码", example = "1") private Integer applyDetailId; @ApiModelProperty(value = "出险人") private String idcardNo; server/service/src/main/java/com/doumee/dao/business/model/SettleClaims.java
@@ -182,19 +182,19 @@ private String syProblemOpts; @ApiModelProperty(value = "是否风险案件 0否 1是") @ExcelColumn(name="是否风险案件 0否 1是") private String isRisk; private Integer isRisk; @ApiModelProperty(value = "是否多次出险风险 0否1是 ") @ExcelColumn(name="是否多次出险风险 0否1是 ") private String riskTimesCx; private Integer riskTimesCx; @ApiModelProperty(value = "是否疑似重复报案风险 0否1是 ") @ExcelColumn(name="是否疑似重复报案风险 0否1是 ") private String riskRepeat; private Integer riskRepeat; @ApiModelProperty(value = "是否索赔多次过多风险 0否1是") @ExcelColumn(name="是否索赔多次过多风险 0否1是") private String riskTimesSp; private Integer riskTimesSp; @ApiModelProperty(value = "是否新员工出险风险 0否1是") @ExcelColumn(name="是否新员工出险风险 0否1是") private String riskNewUser ; private Integer riskNewUser ; @ApiModelProperty(value = "设计敏感词,多个英文逗号隔开") @ExcelColumn(name="设计敏感词,多个英文逗号隔开") private String riskSensitive; server/service/src/main/java/com/doumee/dao/business/model/SolutionsBase.java
@@ -158,8 +158,8 @@ @ApiModelProperty(value = "风险设置-允许对新员工已投保未生效保险进行保障 0不允许 1允许") @ExcelColumn(name="风险设置-允许对新员工已投保未生效保险进行保障 0不允许 1允许") private Integer riskNewUserStatus; @ApiModelProperty(value = "风险设置-允许新员工出险时间提前时间单位 0分钟 1小时 2天") @ExcelColumn(name="风险设置-允许新员工出险时间提前时间单位 0分钟 1小时 2天") @ApiModelProperty(value = "风险设置-允许新员工出险时间提前时间单位 1小时 2天") @ExcelColumn(name="风险设置-允许新员工出险时间提前时间单位 1小时 2天") private Integer riskNewUserUnit; @ApiModelProperty(value = "风险设置-允许新员工出险时间提前时间") @ExcelColumn(name="风险设置-允许新员工出险时间提前时间") server/service/src/main/java/com/doumee/dao/business/vo/RiskConfigVO.java
@@ -19,7 +19,7 @@ private String riskTimesReportTimes; @ApiModelProperty(value = "风险提醒设置-重复报案是否开启:0=否;1=是", example = "1") private String riskRepeatReportOpen; @ApiModelProperty(value = "风险提醒设置-重复报案时间单位:0分钟 1小时 2天", example = "1") @ApiModelProperty(value = "风险提醒设置-重复报案时间单位:1小时 2天", example = "1") private String riskRepeatReportTimeUnit; @ApiModelProperty(value = "风险提醒设置-重复报案时间", example = "1") private String riskRepeatReportTime; server/service/src/main/java/com/doumee/service/business/ApplyDetailService.java
@@ -107,4 +107,6 @@ * @return */ List<ApplyDetail> getMemberApplyList(Integer memberId); List<ApplyDetail> getMemberSettleClaimsList(Integer memberId); } server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java
@@ -2,6 +2,7 @@ import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; @@ -18,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -366,6 +368,37 @@ } /** * 查询人员可报案数据 * @param memberId * @return */ @Override public List<ApplyDetail> getMemberSettleClaimsList(Integer memberId){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class, new MPJLambdaWrapper<ApplyDetail>() .selectAll(ApplyDetail.class) .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode) .selectAs(InsuranceApply::getStartTime,ApplyDetail::getParentStartTime) .selectAs(InsuranceApply::getEndTime,ApplyDetail::getParentEndTime) .selectAs(Company::getName,ApplyDetail::getCompanyName) .selectAs(Solutions::getName,ApplyDetail::getSolutionName) .selectAs(Worktype::getName,ApplyDetail::getWorkTypeName) .selectAs(DispatchUnit::getName,ApplyDetail::getDuName) .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId) .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) .leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId) .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId) .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(), Constants.InsuranceApplyStatus.WTB_DONE.getKey()) .eq(ApplyDetail::getIsdeleted,Constants.ZERO) .eq(InsuranceApply::getCompanyId,user.getCompanyId()) .eq(ApplyDetail::getMemberId,memberId) ); return applyDetailList; } } server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -3776,6 +3776,11 @@ return applyPowerVO; } } 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()