k94314517
2025-05-17 8b1dffc0ce5787d74020ac8a1c6ed00f16a7a0f4
git ch
已修改10个文件
478 ■■■■ 文件已修改
server/company/src/main/java/com/doumee/api/business/ApplyDetailController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/DateUtil.java 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/dto/SettleClaimsDTO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/SettleClaims.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/SolutionsBase.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/vo/RiskConfigVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/ApplyDetailService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ApplyDetailServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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()