| | |
| | | import cn.hutool.core.util.IdcardUtil; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.dao.business.dto.ApplyPowerDTO; |
| | | import com.doumee.dao.business.dto.CountCyclePriceDTO; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.vo.ApplyPowerVO; |
| | | import com.doumee.dao.business.vo.ChangeDealTypeVO; |
| | | import com.doumee.dao.business.vo.CountCyclePriceVO; |
| | | import io.swagger.models.auth.In; |
| | |
| | | import java.math.RoundingMode; |
| | | import java.net.URL; |
| | | import java.net.URLDecoder; |
| | | import java.time.Instant; |
| | | import java.time.LocalDate; |
| | | import java.time.Period; |
| | | import java.time.ZoneId; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.Date; |
| | |
| | | } |
| | | return Constants.countPriceVO(countCyclePriceDTO.getStartDate(),countCyclePriceDTO.getSolutions()); |
| | | } |
| | | |
| | | public static int calculateAge(String idCard,Date dateDate) { |
| | | try{ |
| | | Integer happenYear = Integer.valueOf(DateUtil.dateToString(dateDate,"yyyy")); |
| | | Integer birthYear = Integer.valueOf(idCard.substring(6,10)); |
| | | return happenYear - birthYear; |
| | | }catch (Exception e){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"年龄信息错误"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | // if (idCard == null || idCard.length() != 18) { |
| | | // throw new IllegalArgumentException("身份证号码必须是18位"); |
| | | // } |
| | | // |
| | | // // 提取出生日期 |
| | | // String birthDateStr = idCard.substring(6, 14); // 例如:19900101 |
| | | // LocalDate birthDate = LocalDate.parse(birthDateStr); |
| | | // Instant instant = dateDate.toInstant(); |
| | | // // 获取当前日期 |
| | | // LocalDate currentDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为 LocalDate |
| | | // |
| | | // // 计算年龄 |
| | | // Period period = Period.between(birthDate, currentDate); |
| | | // int age = period.getYears(); // 直接获取年份差即为年龄 |
| | | |
| | | // return age; |
| | | } |
| | | |
| | | |
| | | public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){ |
| | | CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO(); |
| | |
| | | CHANGE_FACTORY(2, "员工换厂申请","保险方案"), |
| | | DISPATCH_UNIT(3, "派遣单位申请","派遣单位"), |
| | | TAXES(4, "开票申请","开票金额"), |
| | | SETTLE_CLAIMS(5, "报案理赔","报案人"), |
| | | SETTLE_CLAIMS(5, "理赔提醒","报案信息"), |
| | | CONTRACT(6, "合同签署","合同签署"), |
| | | SOLUTIONS(7, "方案签署","方案签署"), |
| | | COMPANY_USER_APPLY(8, "集团申请","集团申请"), |
| | | SETTLE_CLAIMS_APPLY_ADMIN(9, "报案理赔","待立案"), |
| | | ; |
| | | // 成员变量 |
| | | private int key; |
| | |
| | | |
| | | public enum NoticeType { |
| | | |
| | | ZERO(0, "待审核","","","待审核","待处理","处理中","待签署","待签署"), |
| | | ONE(1, "企业待签署","","","工种待审核","","已结案","",""), |
| | | TWO(2, "待出单","待审核","待审核","","","","",""), |
| | | THREE(3, "申请退回","申请退回","申请退回","","","","",""), |
| | | FOUR(4, "已退回","已退回","已退回","","","已撤销","",""), |
| | | FIVE(5, "申请驳回","申请驳回","申请驳回","","","","",""), |
| | | ZERO(0, "待审核","","","待审核","待处理","风险案件待审核","待签署","待签署"), |
| | | //理赔通知企业(非待办) |
| | | ONE(1, "企业待签署","","","工种待审核","","风险案件立案退回","",""), |
| | | TWO(2, "待出单","待审核","待审核","","","已立案待受理","",""), |
| | | THREE(3, "申请退回","申请退回","申请退回","","","已受理,需要补充材料","",""), |
| | | //理赔通知企业(非待办) |
| | | FOUR(4, "已退回","已退回","已退回","","","已拒绝受理","",""), |
| | | FIVE(5, "申请驳回","申请驳回","申请驳回","","","商议待领导审批","",""), |
| | | //续保通知 |
| | | SIX(6, "","","","","","","",""), |
| | | //商户端 委托保 - 投保待审核 加减保 换厂 待审核 |
| | | SEVEN(7, "待审核","待审核","待审核","","","","",""), |
| | | SIX(6, "","","","","","商议审批拒绝","",""), |
| | | //商户端 委托保 - 投保待审核 加减保 换厂 待审核, 理赔通知企业(非待办) |
| | | SEVEN(7, "待审核","待审核","待审核","","","商议审批拒绝通知","",""), |
| | | //待复审 |
| | | EIGHT(8, "待审核","","","","","","",""), |
| | | NINE(9, "","","","","","","",""), |
| | | EIGHT(8, "待审核","","","","","待理算","",""), |
| | | NINE(9, "","","","","","待核赔","",""), |
| | | TEN(10, "","","","","","待核赔确认","",""), |
| | | ELEVEN(11, "","","","","","赔付金额已变更","",""), |
| | | TWELVE(12, "","","","","","待结案","",""), |
| | | //理赔通知平台(非代办) |
| | | THIRTEEN(13, "","","","","","已结案,赔付款项将在1-3个工作日内到账","",""), |
| | | //理赔通知平台(非代办) |
| | | FOURTEEN(14, "","","","","","已撤案","",""), |
| | | //理赔通知企业(非待办) |
| | | FIFTEEN(15, "","","","","","已受理待理算","",""), |
| | | //理赔通知企业(非待办) |
| | | SIXTEEN(16, "","","","","","受理审批中","",""), |
| | | //理赔通知企业(非待办) |
| | | SEVENTEEN(17, "","","","","","已理算待核赔","",""), |
| | | //理赔通知企业(非待办) |
| | | EIGHTEEN(18, "","","","","","待结案,赔付金额已变更","",""), |
| | | ; |
| | | |
| | | // 成员变量 |
| | |
| | | ACCEPTANCE(9, "已受理",3),//待理算 |
| | | WAIT_AUDIT_COMPENSATION(10, "待核赔",4), |
| | | COMPENSATION(11, "已核赔",5), |
| | | CONFIRM_FEE(12, "已确认金额",5), |
| | | CONFIRM_FEE(12, "待结案",5), |
| | | CLOSE_CASE(13, "已结案",6), |
| | | RETURN(14, "已撤案",7), |
| | | ; |
| | |
| | | UPDATE_DATA(4, "修改信息","提交意见:${param}"), |
| | | SUPPLEMENT(5, "补充说明","提交意见:${param}"), |
| | | PLATFORM_LP_DEAL(6, "平台理赔处理","已在平台完成理赔"), |
| | | PLATFORM_REMARK(7, "平台备注标签","${param}"), |
| | | PLATFORM_ADDCODE(8, "平台添加报案号","备案号:${param}"), |
| | | PLATFORM_REMARK(7, "备注标签","${param}"), |
| | | PLATFORM_ADDCODE(8, "平台修改报案号","备案号:${param}"), |
| | | PLATFORM_UN_AGREE_BACK(9, "企业下载资料",""), |
| | | PLATFORM_DOWNLOAD(10, "平台下载资料",""), |
| | | PLATFORM_CHECK_PASS(11, "平台上传资料",""), |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | // 普通方法 |
| | | public static SettleClaimsLogParentStatus getAll(int index) { |
| | |
| | | |
| | | } |
| | | |
| | | public static void initApplyStatus(InsuranceApply apply){ |
| | | apply.setStatusCollect(Constants.InsuranceApplyStatus.getCollectStatus(apply.getStatus())); |
| | | if(Constants.equalsInteger(apply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()) |
| | | || Constants.equalsInteger(apply.getStatus(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())){ |
| | | //如果已完成 |
| | | if(apply.getEndTime()==null || System.currentTimeMillis()>apply.getEndTime().getTime()){ |
| | | apply.setStatusCollect(Constants.THREE);//已过期 |
| | | } |
| | | } |
| | | Constants.setServiceDays(apply); |
| | | apply.setStatusInfo(Constants.ApplyCollectStatus.getName(apply.getStatusCollect())); |
| | | if(Constants.equalsInteger(apply.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()) |
| | | || Constants.equalsInteger(apply.getStatus(),Constants.InsuranceApplyStatus.WTB_DONE.getKey()) ){ |
| | | if(apply.getStartTime().getTime()>System.currentTimeMillis()){ |
| | | apply.setStatusInfo("待生效"); |
| | | }else if(apply.getEndTime().getTime()<System.currentTimeMillis()){ |
| | | apply.setStatusInfo("已过期"); |
| | | }else{ |
| | | apply.setStatusInfo("保障中"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void setServiceDays(InsuranceApply insuranceApply) { |
| | | //设置在保时长(天数) |
| | | insuranceApply.setServiceDays(Constants.ZERO); |
| | | if(insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()) |
| | | || insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.WTB_DONE.getKey())){ |
| | | //如果当前时间大于结束日期 则使用结束日期对比开始日期 |
| | | if(DateUtil.compareDate(new Date(),insuranceApply.getEndTime())>=Constants.ZERO){ |
| | | insuranceApply.setServiceDays( |
| | | DateUtil.daysBetweenDates(insuranceApply.getEndTime(),insuranceApply.getStartTime())+1 |
| | | ); |
| | | }else if(DateUtil.compareDate(insuranceApply.getStartTime(),new Date())>=Constants.ZERO){ |
| | | //未开始 |
| | | insuranceApply.setServiceDays(Constants.ZERO); |
| | | }else{ |
| | | insuranceApply.setServiceDays(DateUtil.daysBetweenDates(new Date(),insuranceApply.getStartTime())+1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static ApplyPowerVO getApplyPowerStatic(ApplyPowerDTO applyPowerDTO, InsuranceApply insuranceApply, Solutions solutions){ |
| | | if(Objects.isNull(applyPowerDTO) |
| | | || Objects.isNull(applyPowerDTO.getApplyId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"参数错误"); |
| | | } |
| | | if(Objects.isNull(applyPowerDTO.getBeginDate())){ |
| | | applyPowerDTO.setBeginDate(new Date()); |
| | | } |
| | | ApplyPowerVO applyPowerVO = new ApplyPowerVO(); |
| | | //获取方案 结束时间 |
| | | Date endTime = insuranceApply.getEndTime(); |
| | | //查询当前去加保的开始日期 yyyy-MM-dd HH:mm:ss 2024-10-29 00:00:00 |
| | | Date addStartDate = DateUtil.getMontageDate( |
| | | DateUtil.afterDateByType(applyPowerDTO.getBeginDate(),Constants.ZERO,solutions.getAddValidDays()), |
| | | 1 |
| | | ); |
| | | applyPowerVO.setAddStartDate(addStartDate); |
| | | //加保生效日期大于 保单结束日期 则不可以进行加保 |
| | | if(addStartDate.getTime()>=endTime.getTime()){ |
| | | applyPowerVO.setAddTrue(Constants.ONE); |
| | | }else{ |
| | | applyPowerVO.setAddTrue(Constants.ZERO); |
| | | } |
| | | //查询当前去减保的开始日期 yyyy-MM-dd HH:mm:ss 2024-10-29 00:00:00 |
| | | Date delStartDate = DateUtil.getMontageDate( |
| | | DateUtil.afterDateByType(applyPowerDTO.getBeginDate(),Constants.ZERO,solutions.getAddValidDays()), |
| | | 1 |
| | | ); |
| | | applyPowerVO.setDelStartDate(delStartDate); |
| | | //加保生效日期大于 保单结束日期 则不可以进行减保 |
| | | if(delStartDate.getTime()>=endTime.getTime()){ |
| | | applyPowerVO.setDelTrue(Constants.ONE); |
| | | }else{ |
| | | applyPowerVO.setDelTrue(Constants.ZERO); |
| | | } |
| | | return applyPowerVO; |
| | | } |
| | | |
| | | |
| | | } |