| | |
| | | |
| | | import cn.hutool.core.util.IdcardUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | |
| | | import com.baomidou.mybatisplus.extension.api.R; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | 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.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.annotation.excel.ExcelExporter; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.dto.*; |
| | | import com.doumee.dao.business.dto.ApplyChangeCyclePriceDTO; |
| | | import com.doumee.dao.business.dto.ApplyChangeOptDTO; |
| | | import com.doumee.dao.business.dto.SaveUnionChangeDTO; |
| | | import com.doumee.dao.business.dto.SmsCheckDTO; |
| | | import com.doumee.dao.business.join.*; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.vo.ChangeDealTypeVO; |
| | | import com.doumee.dao.business.vo.CountCyclePriceVO; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.ApplyChangeService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | 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.business.InsuranceApplyService; |
| | | import com.doumee.service.business.SmsEmailService; |
| | | import com.doumee.service.business.third.SignService; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | pidanFile.setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | pidanFile.setType(Constants.TWO); |
| | | } |
| | | multifileMapper.insertBatchSomeColumn(pidanFileList); |
| | | multifileMapper.insert(pidanFileList); |
| | | update.setApplyId(model.getApplyId()); |
| | | |
| | | |
| | |
| | | pidanFile.setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | pidanFile.setType(Constants.TWO); |
| | | } |
| | | multifileMapper.insertBatchSomeColumn(param.getPidanFileList()); |
| | | multifileMapper.insert(param.getPidanFileList()); |
| | | |
| | | // param.getPidanFile().setIsdeleted(Constants.ZERO); |
| | | // param.getPidanFile().setObjId(update.getId()); |
| | |
| | | } |
| | | //查询人员信息是否存在相同的方案下是否存在 冲突数据 |
| | | InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(), |
| | | member.getIdcardNo(),member.getName(),detail.getStartTime(),detail.getEndTime(), |
| | | member.getId(),member.getIdcardNo(),member.getName(),detail.getStartTime(),detail.getEndTime(), |
| | | applyDetailJoinMapper); |
| | | |
| | | //查询加保人员是否存在 冲突的 保单明细数据 |
| | |
| | | } |
| | | |
| | | if (memberInsuranceList != null && memberInsuranceList.size() > 0) { |
| | | memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList); |
| | | memberInsuranceJoinMapper.insert(memberInsuranceList); |
| | | } |
| | | |
| | | if (totalFee.compareTo(new BigDecimal(0)) != 0) { |
| | |
| | | } |
| | | } |
| | | |
| | | private static Logger logger = LoggerFactory.getLogger(ApplyChangeServiceImpl.class); |
| | | |
| | | public BigDecimal dealApplyChangeData(ApplyChange applyChange,InsuranceApply insuranceApply |
| | | ,CompanySolution companySolution,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal fee){ |
| | | Long start = System.currentTimeMillis(); |
| | | logger.error("处理加减保保单数据开始时间:=========================>"+start); |
| | | if(Constants.equalsInteger(applyChange.getType(),Constants.ZERO)){ |
| | | if(Objects.nonNull(solutions.getDelOnlyReplace())&& solutions.getDelOnlyReplace().equals(Constants.ONE)){ |
| | | if(applyChange.getDelDetailList().size() > applyChange.getAddDetailList().size()){ |
| | |
| | | List<ApplyChagneDetail> delDetailList = applyChange.getDelDetailList(); |
| | | //加保数据 |
| | | List<ApplyChagneDetail> addDetailList = applyChange.getAddDetailList(); |
| | | //换厂业务 |
| | | List<ApplyChagneDetail> changeDetailList = applyChange.getChangeDetailList(); |
| | | |
| | | if(CollectionUtils.isEmpty(delDetailList) |
| | | && CollectionUtils.isEmpty(addDetailList) |
| | | && CollectionUtils.isEmpty(changeDetailList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,未添加人员数据无法进行提交"); |
| | | } |
| | | |
| | | if (CollectionUtils.isNotEmpty(addDetailList)) { |
| | | if(Objects.isNull(solutions.getCanAdd()) || solutions.getCanAdd().equals(Constants.ZERO)){ |
| | |
| | | fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); |
| | | } |
| | | |
| | | |
| | | |
| | | //换厂业务 |
| | | List<ApplyChagneDetail> changeDetailList = applyChange.getChangeDetailList(); |
| | | if (CollectionUtils.isNotEmpty(changeDetailList)) { |
| | | if(Objects.isNull(solutions.getCanChangeUnit()) || solutions.getCanChangeUnit().equals(Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "该保险方案无法进行换厂操作"); |
| | |
| | | |
| | | this.changeDetail(applyChange,changeDetailList,duSolutionList,loginUserInfo,solutions,worktypeIdList); |
| | | } |
| | | Long end = System.currentTimeMillis(); |
| | | logger.error("处理加减保保单数据结束时间:=========================>"+end +";单条耗时:====》"+(end-start)); |
| | | return fee; |
| | | } |
| | | |
| | |
| | | } |
| | | //查询员工是在主单下 是否存在生效中的数据 |
| | | List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda() |
| | | .eq(ApplyDetail::getIsdeleted,Constants.ZERO) |
| | | .eq(ApplyDetail::getApplyId, applyChange.getApplyId()) |
| | | .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId()) |
| | | // .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1)) |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 加保数据处理 |
| | | * @param applyChange 加减保保单数据 |
| | |
| | | * @param loginUserInfo 操作人 |
| | | */ |
| | | public void addChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList, |
| | | List<DuSolution> duSolutionList, |
| | | InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize, |
| | | List<Integer> worktypeIdList){ |
| | | if(applyChange.getApplyStartTime().getTime()>insuranceApply.getEndTime().getTime()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保生效期不能大于保单结束日期"); |
| | | } |
| | | //查询本次加保所有人员信息 |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .in(Member::getIdcardNo,addDetailList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList())) |
| | | ); |
| | | ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda() |
| | | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) |
| | | .isNotNull(ApplyDetail::getPrice) |
| | | .last("limit 1 ") |
| | | ); |
| | | if(Objects.isNull(applyDetail)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "保单下无明细数据"); |
| | | } |
| | | List<Member> updMemberList = new ArrayList<>(); |
| | | //查询本次加保所有人员的历史保单记录 |
| | | List<ApplyDetail> applyDetailAllList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class, |
| | | new MPJLambdaWrapper<ApplyDetail>() |
| | | .selectAll(ApplyDetail.class) |
| | | .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode) |
| | | .selectAs(InsuranceApply::getStatus,ApplyDetail::getApplyStatus) |
| | | .selectAs(Company::getName,ApplyDetail::getCompanyName) |
| | | .selectAs(Solutions::getBaseId,ApplyDetail::getSolutionBaseId) |
| | | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId) |
| | | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) |
| | | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) |
| | | .in(CollectionUtils.isNotEmpty(memberList),ApplyDetail::getMemberId,memberList.stream().map(i->i.getId()).collect(Collectors.toList())) |
| | | .apply(CollectionUtils.isEmpty(memberList),"1 = 2 ") |
| | | .eq(ApplyDetail::getIsdeleted,Constants.ZERO)); |
| | | |
| | | List<ApplyChagneDetail> applyChangeDetailAllList = applyChagneDetailJoinMapper.selectJoinList(ApplyChagneDetail.class, |
| | | new MPJLambdaWrapper<ApplyChagneDetail>() |
| | | .selectAll(ApplyChagneDetail.class) |
| | | .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) |
| | | .leftJoin(Member.class,Member::getId,ApplyChagneDetail::getMemberId) |
| | | .eq(ApplyChange::getApplyId,applyChange.getApplyId()) |
| | | .in(CollectionUtils.isNotEmpty(memberList),Member::getIdcardNo,memberList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList())) |
| | | .apply(CollectionUtils.isEmpty(memberList),"1 = 2 ") |
| | | .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE)); |
| | | |
| | | List<ApplyChagneDetail> applyChagneDetailList = new ArrayList<>(); |
| | | for (int i = 0; i < addDetailList.size(); i++) { |
| | | ApplyChagneDetail applyChagneDetail = addDetailList.get(i); |
| | | if ( |
| | | Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getDuId()) |
| | | || Objects.isNull(applyChagneDetail.getWorktypeId()) |
| | | || StringUtils.isBlank(applyChagneDetail.getIdcardNo()) |
| | | ) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); |
| | | } |
| | | |
| | | //根据员工身份证进行判断年龄 |
| | | long age = Constants.getAgeByIdCard(applyChagneDetail.getIdcardNo()); |
| | | if(Objects.isNull(age) |
| | | || age > solutions.getMaxAge() |
| | | || age < solutions.getMinAge()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+applyChagneDetail.getMemberName()+"】员工年龄超出方案配置 方案配置【"+solutions.getMinAge()+" - "+solutions.getMaxAge()+"】存在异常数据!"); |
| | | } |
| | | |
| | | //查询当前处理的人员信息 |
| | | List<Member> optMembers = memberList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList()); |
| | | Member member = new Member(); |
| | | if(CollectionUtils.isEmpty(optMembers)){ |
| | | member = new Member(); |
| | | member.setCreateDate(new Date()); |
| | | member.setCreator(loginUserInfo.getId()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setName(applyChagneDetail.getMemberName()); |
| | | member.setCompanyId(insuranceApply.getCompanyId()); |
| | | member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo())); |
| | | if(!IdcardUtil.isValidCard(applyChagneDetail.getIdcardNo())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"加保员工信息身份证信息错误["+member.getName()+"]"); |
| | | } |
| | | member.setIdcardNo(applyChagneDetail.getIdcardNo()); |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyChagneDetail.getDuId()); |
| | | member.setWorktypeId(applyChagneDetail.getWorktypeId()); |
| | | memberMapper.insert(member); |
| | | applyChagneDetail.setMemberId(member.getId()); |
| | | }else{ |
| | | member = optMembers.get(Constants.ZERO); |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyChagneDetail.getDuId()); |
| | | member.setWorktypeId(applyChagneDetail.getWorktypeId()); |
| | | member.setStartTime(applyChagneDetail.getStartTime()); |
| | | member.setEndTime(applyChagneDetail.getEndTime()); |
| | | // memberMapper.updateById(member); |
| | | updMemberList.add(member); |
| | | applyChagneDetail.setMemberId(member.getId()); |
| | | if(CollectionUtils.isNotEmpty(applyChangeDetailAllList)&&applyChangeDetailAllList.stream().filter( |
| | | j->Constants.equalsInteger(j.getMemberId(),applyChagneDetail.getMemberId()) |
| | | ).collect(Collectors.toList()).size()>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】存在申请中的加减保/换厂单据"); |
| | | } |
| | | |
| | | } |
| | | List<ApplyDetail> memberApplyDetailList = new ArrayList<>(); |
| | | if(CollectionUtils.isNotEmpty(applyDetailAllList)){ |
| | | memberApplyDetailList = applyDetailAllList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList()); |
| | | |
| | | if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())&&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId()) |
| | | && j.getStartTime().getTime() <= DateUtil.getMontageDate(applyChange.getApplyStartTime(),1).getTime() |
| | | && j.getEndTime().getTime() >= DateUtil.getMontageDate(insuranceApply.getEndTime(),2).getTime() |
| | | ).collect(Collectors.toList()).size()>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,加保人员【" + applyChagneDetail.getMemberName() + "】存在日期冲突的数据"); |
| | | }; |
| | | |
| | | if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo()) |
| | | &&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId()) |
| | | && j.getStartTime().getTime() <= System.currentTimeMillis() |
| | | && j.getEndTime().getTime() >= System.currentTimeMillis() |
| | | ).collect(Collectors.toList()).size()>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】存在保障中的保单信息,无法进行加保"); |
| | | }; |
| | | |
| | | } |
| | | |
| | | applyChagneDetail.setPrice(applyDetail.getPrice()); |
| | | applyChagneDetail.setCreateDate(new Date()); |
| | | applyChagneDetail.setCreator(loginUserInfo.getId()); |
| | | applyChagneDetail.setIsdeleted(Constants.ZERO); |
| | | applyChagneDetail.setApplyChangeId(applyChange.getId()); |
| | | applyChagneDetail.setStartTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)); |
| | | applyChagneDetail.setEndTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2)); |
| | | applyChagneDetail.setType(Constants.ZERO); |
| | | |
| | | |
| | | List<ApplyDetail> checkStaticMemberSolutionList = memberApplyDetailList.stream() |
| | | .filter(j->Constants.equalsInteger(j.getSolutionBaseId(),solutions.getBaseId()) |
| | | && !( j.getApplyStatus() == Constants.InsuranceApplyStatus.CLOSE.getKey() || j.getApplyStatus() == Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) |
| | | && ( |
| | | ( applyChange.getApplyStartTime().getTime()<= j.getStartTime().getTime() && j.getStartTime().getTime() < insuranceApply.getEndTime().getTime() ) |
| | | || |
| | | ( applyChange.getApplyStartTime().getTime()< j.getEndTime().getTime() && j.getEndTime().getTime() < insuranceApply.getEndTime().getTime() ) |
| | | || |
| | | ( applyChange.getApplyStartTime().getTime()> j.getStartTime().getTime() && insuranceApply.getEndTime().getTime() < j.getEndTime().getTime() ) |
| | | ) |
| | | ).collect(Collectors.toList()); |
| | | |
| | | if(checkStaticMemberSolutionList.size() >Constants.ZERO){ |
| | | String companyName = checkStaticMemberSolutionList.get(Constants.ZERO).getCompanyName(); |
| | | String idCode = checkStaticMemberSolutionList.get(Constants.ZERO).getIdcardNo(); |
| | | if(StringUtils.isNotBlank(companyName)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该员工【"+applyChagneDetail.getMemberName()+" "+idCode+"】已在【"+companyName+"】存在保险,请联系客服确认"); |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该员工【"+applyChagneDetail.getMemberName()+" "+idCode+"】在该保险方案下已存在投保记录,无法进行该操作"); |
| | | } |
| | | }; |
| | | |
| | | //验证派遣单位信息 与工种信息 是否存在 |
| | | if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){ |
| | | if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) { |
| | | throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "【" + applyChagneDetail.getMemberName() + "】员工派遣单位未查询到!"); |
| | | } |
| | | } |
| | | if (worktypeIdList.stream().filter(d -> Constants.equalsInteger(d,applyChagneDetail.getWorktypeId())) |
| | | .collect(Collectors.toList()).size() <= Constants.ZERO) { |
| | | throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "【" + applyChagneDetail.getMemberName() + "】员工工种信息未查询到!"); |
| | | } |
| | | applyChagneDetail.setMemberId(member.getId()); |
| | | //如果是减保业务为仅替换 且 方案的扣费周期和总周期相等 则处理减保费用 |
| | | if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) |
| | | && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && delSize> i){ |
| | | applyChagneDetail.setFee(BigDecimal.ZERO); |
| | | }else{ |
| | | applyChagneDetail.setFee(detailFee); |
| | | } |
| | | applyChagneDetail.setId(null); |
| | | applyChagneDetailList.add(applyChagneDetail); |
| | | } |
| | | if(CollectionUtils.isNotEmpty(applyChagneDetailList)){ |
| | | applyChagneDetailJoinMapper.insert(applyChagneDetailList); |
| | | } |
| | | if(CollectionUtils.isNotEmpty(updMemberList)){ |
| | | Thread t1=new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | memberMapper.insertOrUpdate(updMemberList); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | t1.start(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 加保数据处理 |
| | | * @param applyChange 加减保保单数据 |
| | | * @param addDetailList 加保人员 |
| | | * @param duSolutionList 派遣单位方案数据 |
| | | * @param loginUserInfo 操作人 |
| | | */ |
| | | public void addChangeDetailOld(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList, |
| | | List<DuSolution> duSolutionList, |
| | | InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize, |
| | | List<Integer> worktypeIdList){ |
| | |
| | | ) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); |
| | | } |
| | | //查询人员信息是否存在相同的方案下是否存在 冲突数据 |
| | | InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(), |
| | | applyChagneDetail.getIdcardNo(),applyChagneDetail.getMemberName(),applyChange.getApplyStartTime(),insuranceApply.getEndTime(), |
| | | applyDetailJoinMapper); |
| | | |
| | | //查询加保人员是否存在 冲突的 保单明细数据 |
| | | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() |
| | |
| | | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) |
| | | .eq(ApplyDetail::getIdcardNo,applyChagneDetail.getIdcardNo()) |
| | | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)) |
| | | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(insuranceApply.getEndTime(),2)) |
| | | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(insuranceApply.getEndTime(),2)) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,加保人员【" + applyChagneDetail.getMemberName() + "】存在日期冲突的数据"); |
| | | } |
| | |
| | | ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>() |
| | | .lambda() |
| | | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()).last("limit 1")); |
| | | |
| | | if(Objects.isNull(applyDetail)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "保单中未存在明细记录"); |
| | | } |
| | |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyChagneDetail.getDuId()); |
| | | member.setWorktypeId(applyChagneDetail.getWorktypeId()); |
| | | // member.setStartTime(applyChagneDetail.getStartTime()); |
| | | // member.setEndTime(applyChagneDetail.getEndTime()); |
| | | memberMapper.insert(member); |
| | | }else{ |
| | | member.setApplyId(insuranceApply.getId()); |
| | | member.setDuId(applyChagneDetail.getDuId()); |
| | | member.setWorktypeId(applyChagneDetail.getWorktypeId()); |
| | | // member.setStartTime(applyChagneDetail.getStartTime()); |
| | | // member.setEndTime(applyChagneDetail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | applyChagneDetail.setMemberId(member.getId()); |
| | | }else{ |
| | | member = memberMapper.selectById(applyChagneDetail.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | |
| | | member.setEndTime(applyChagneDetail.getEndTime()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | | //查询人员信息是否存在相同的方案下是否存在 冲突数据 |
| | | InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(), |
| | | applyChagneDetail.getMemberId(),applyChagneDetail.getIdcardNo(),applyChagneDetail.getMemberName(),applyChange.getApplyStartTime(),insuranceApply.getEndTime(), |
| | | applyDetailJoinMapper); |
| | | |
| | | //根据员工身份证进行判断年龄 |
| | | long age = Constants.getAgeByIdCard(member.getIdcardNo()); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "加保人员【" + applyChagneDetail.getMemberName() + "】存在保障中的保单信息,无法进行加保"); |
| | | } |
| | | } |
| | | |
| | | //验证派遣单位信息 与工种信息 是否存在 |
| | | if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){ |
| | | if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) { |
| | |
| | | } |
| | | //查询员工是在主单下 是否存在生效中的数据 |
| | | List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda() |
| | | .eq(ApplyDetail::getIsdeleted,Constants.ZERO) |
| | | .eq(ApplyDetail::getApplyId, applyChange.getApplyId()) |
| | | .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId()) |
| | | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)) |
| | |
| | | applyChagneDetail.setType(Constants.TWO); |
| | | applyChagneDetail.setStartTime(applyDetail.getStartTime()); |
| | | applyChagneDetail.setEndTime(applyDetail.getEndTime()); |
| | | |
| | | applyChagneDetail.setId(null); |
| | | applyChagneDetailJoinMapper.insert(applyChagneDetail); |
| | | |
| | | member.setApplyId(applyChange.getApplyId()); |