| | |
| | | private ApplyDetailJoinMapper applyDetailJoinMapper; |
| | | |
| | | @Autowired |
| | | private SettleClaimsMapper settleClaimsMapper; |
| | | |
| | | @Autowired |
| | | private MemberInsuranceJoinMapper memberInsuranceJoinMapper; |
| | | |
| | | @Autowired |
| | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private SolutionWorktypeJoinMapper solutionWorktypeJoinMapper; |
| | | @Autowired |
| | | private MultifileMapper multifileMapper; |
| | | @Autowired |
| | |
| | | if(param.getId() == null |
| | | || param.getValidCode() == null |
| | | || param.getApplyStartTime() == null |
| | | || param.getPidanFile() == null |
| | | ||StringUtils.isBlank( param.getPidanFile().getFileurl()) |
| | | ||StringUtils.isBlank( param.getPidanFile() .getName())){ |
| | | || CollectionUtils.isEmpty(param.getPidanFileList()) |
| | | // || param.getPidanFile() == null |
| | | // ||StringUtils.isBlank( param.getPidanFile().getFileurl()) |
| | | // ||StringUtils.isBlank( param.getPidanFile() .getName()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | |
| | |
| | | update.setApplyStartTime(param.getApplyStartTime()); |
| | | update.setDelValidTime(param.getDelValidTime()); |
| | | update.setCode(model.getCode()); |
| | | |
| | | param.getPidanFile().setIsdeleted(Constants.ZERO); |
| | | param.getPidanFile().setCreator(user.getId()); |
| | | param.getPidanFile().setObjId(update.getId()); |
| | | param.getPidanFile().setCreateDate(update.getEditDate()); |
| | | param.getPidanFile().setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | param.getPidanFile().setType(Constants.TWO); |
| | | multifileMapper.insert(param.getPidanFile()); |
| | | List<Multifile> pidanFileList = param.getPidanFileList(); |
| | | for (Multifile pidanFile:pidanFileList) { |
| | | if(StringUtils.isBlank( pidanFile.getFileurl()) |
| | | ||StringUtils.isBlank( pidanFile .getName())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"批单文件参数错误"); |
| | | } |
| | | pidanFile.setIsdeleted(Constants.ZERO); |
| | | pidanFile.setCreator(user.getId()); |
| | | pidanFile.setObjId(update.getId()); |
| | | pidanFile.setCreateDate(update.getEditDate()); |
| | | pidanFile.setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | pidanFile.setType(Constants.TWO); |
| | | } |
| | | multifileMapper.insertBatchSomeColumn(pidanFileList); |
| | | update.setApplyId(model.getApplyId()); |
| | | |
| | | |
| | |
| | | public Integer editPidan(ApplyChange param) { |
| | | if(param.getId() == null |
| | | || param.getValidCode() == null |
| | | || param.getPidanFile() == null |
| | | || param.getCheckInfo() == null |
| | | ||StringUtils.isBlank( param.getPidanFile().getFileurl()) |
| | | ||StringUtils.isBlank( param.getPidanFile() .getName())){ |
| | | || CollectionUtils.isEmpty(param.getPidanFileList()) |
| | | // || param.getPidanFile() == null |
| | | // ||StringUtils.isBlank( param.getPidanFile().getFileurl()) |
| | | // ||StringUtils.isBlank( param.getPidanFile() .getName()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | |
| | |
| | | .eq(Multifile::getObjId,update.getId()) |
| | | .eq(Multifile::getObjType,Constants.MultiFile.CA_PD_PDF.getKey()) |
| | | ); |
| | | param.getPidanFile().setIsdeleted(Constants.ZERO); |
| | | param.getPidanFile().setObjId(update.getId()); |
| | | param.getPidanFile().setCreator(user.getId()); |
| | | param.getPidanFile().setCreateDate(update.getEditDate()); |
| | | param.getPidanFile().setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | param.getPidanFile().setType(Constants.TWO); |
| | | multifileMapper.insert(param.getPidanFile()); |
| | | |
| | | List<Multifile> pidanFileList = param.getPidanFileList(); |
| | | for (Multifile pidanFile:pidanFileList) { |
| | | if(StringUtils.isBlank( pidanFile.getFileurl()) |
| | | ||StringUtils.isBlank( pidanFile .getName())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"批单文件参数错误"); |
| | | } |
| | | pidanFile.setIsdeleted(Constants.ZERO); |
| | | pidanFile.setCreator(user.getId()); |
| | | pidanFile.setObjId(update.getId()); |
| | | pidanFile.setCreateDate(update.getEditDate()); |
| | | pidanFile.setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | pidanFile.setType(Constants.TWO); |
| | | } |
| | | multifileMapper.insertBatchSomeColumn(param.getPidanFileList()); |
| | | |
| | | // param.getPidanFile().setIsdeleted(Constants.ZERO); |
| | | // param.getPidanFile().setObjId(update.getId()); |
| | | // param.getPidanFile().setCreator(user.getId()); |
| | | // param.getPidanFile().setCreateDate(update.getEditDate()); |
| | | // param.getPidanFile().setObjType(Constants.MultiFile.CA_PD_PDF.getKey()); |
| | | // param.getPidanFile().setType(Constants.TWO); |
| | | // multifileMapper.insert(param.getPidanFile()); |
| | | |
| | | Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PALTFORM_EDIT_PIDAN; |
| | | String info = applyLogType.getInfo(); |
| | |
| | | .eq(ApplyDetail::getMemberId, detail.getMemberId()) |
| | | .orderByDesc(ApplyDetail::getCreateDate) |
| | | .last("limit 1")); |
| | | if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) { |
| | | // if (oldModel == null || oldModel.getStartTime() == null || oldModel.getStartTime().getTime() > update.getApplyStartTime().getTime()) { |
| | | // throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!"); |
| | | // } |
| | | // if(!(oldModel.getStartTime().getTime()<=update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){ |
| | | // throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!"); |
| | | // } |
| | | if (oldModel == null || oldModel.getEndTime() == null || oldModel.getEndTime().getTime() < update.getDelValidTime().getTime()) { |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】原保单信息有误,当前申请不支持减保处理!"); |
| | | } |
| | | if(!(oldModel.getStartTime().getTime()<=update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!"); |
| | | } |
| | | BigDecimal sumFee = Objects.isNull(insuranceApply.getServerCost())? |
| | | solutions.getPrice(): |
| | |
| | | sumFee |
| | | ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime |
| | | ) ; |
| | | }else{ |
| | | delValidTime = oldModel.getStartTime(); |
| | | updateFee = BigDecimal.ZERO; |
| | | } |
| | | if (oldModel.getStartTime().getTime() < System.currentTimeMillis()) { |
| | | //// 2024年5月8日17:37:23 修改 计算产生费用 |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if (!loginUserInfo.getType().equals(Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户类型错误:非企业用户无法进行该操作"); |
| | | } |
| | | // if (!loginUserInfo.getType().equals(Constants.ONE)) { |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户类型错误:非企业用户无法进行该操作"); |
| | | // } |
| | | |
| | | InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId()); |
| | | if (Objects.isNull(insuranceApply)) { |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到保险方案"); |
| | | } |
| | | CompanySolution companySolution = companySolutionMapper.selectOne(new QueryWrapper<CompanySolution>().lambda() |
| | | .eq(CompanySolution::getCompanyId,loginUserInfo.getCompanyId()) |
| | | .eq(CompanySolution::getCompanyId,insuranceApply.getCompanyId()) |
| | | .eq(CompanySolution::getSolutionBaseId,solutions.getBaseId()) |
| | | .eq(CompanySolution::getIsdeleted,Constants.ZERO) |
| | | .last(" limit 1 ") |
| | |
| | | if(applyChangeMapper.selectCount(new QueryWrapper<ApplyChange>().lambda() |
| | | .eq(ApplyChange::getApplyId,insuranceApply.getId()) |
| | | .notIn(ApplyChange::getStatus,Constants.ApplyChangeStatus.APPROVE.getKey(),Constants.ApplyChangeStatus.CLOSE.getKey()) |
| | | |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "存在进行中的加减保/换厂申请"); |
| | | }; |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if (!loginUserInfo.getType().equals(Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户类型错误:非企业用户无法进行该操作"); |
| | | } |
| | | // /*if (!loginUserInfo.getType().equals(Constants.ONE)) { |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户类型错误:非企业用户无法进行该操作"); |
| | | // }*/ |
| | | ApplyChange dbApplyChange = applyChangeMapper.selectById(applyChange.getId()); |
| | | if(Objects.isNull(dbApplyChange)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到保险方案"); |
| | | } |
| | | if(solutions.getDataType().equals(Constants.ONE)){ |
| | | solutions = solutionsMapper.selectOne(new QueryWrapper<Solutions>().lambda().eq(Solutions::getBaseId,solutions.getBaseId()).eq(Solutions::getDataType,Constants.TWO).last("limit 1")); |
| | | solutions = solutionsMapper.selectOne(new QueryWrapper<Solutions>().lambda() |
| | | .eq(Solutions::getBaseId,solutions.getBaseId()).eq(Solutions::getDataType,Constants.TWO).last("limit 1")); |
| | | if(Objects.isNull(solutions)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到方案最新版本信息"); |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | //查询保险方案下的所有派遣单位 |
| | | List<DuSolution> duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>() |
| | | .selectAll(DuSolution.class) |
| | | .innerJoin(DispatchUnit.class,DispatchUnit::getId,DuSolution::getDispatchUnitId) |
| | | .eq(DispatchUnit::getCompanyId,insuranceApply.getCompanyId()) |
| | | .eq(DispatchUnit::getIsdeleted,Constants.ZERO) |
| | | .eq(DispatchUnit::getUnitStatus,Constants.ONE) |
| | | .eq(DuSolution::getIsdeleted,Constants.ZERO) |
| | | .eq(DuSolution::getStatus,Constants.ONE) |
| | | .eq(DuSolution::getSolutionId,companySolution.getSolutionId())); |
| | | if(!CollectionUtils.isNotEmpty(duSolutionList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"数据异常:保险方案下未查询到派遣单位"); |
| | | } |
| | | //查询所有派遣单位下的工种 |
| | | List<Integer> duSolutionIdList = duSolutionList.stream().map(i->i.getId()).collect(Collectors.toList()); |
| | | List<DuWorktype> duWorktypeList = duWorktypeMapper.selectList(new QueryWrapper<DuWorktype>().lambda() |
| | | .eq(DuWorktype::getIsdeleted,Constants.ZERO) |
| | | .eq(DuWorktype::getStatus,Constants.ONE) |
| | | .in(DuWorktype::getDuSolutionId,duSolutionIdList)); |
| | | if (!CollectionUtils.isNotEmpty(duWorktypeList)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "数据异常:保险方案下未查询到工种信息"); |
| | | List<DuSolution> duSolutionList = new ArrayList<>(); |
| | | List<DuWorktype> duWorktypeList = new ArrayList<>(); |
| | | List<Integer> worktypeIdList = new ArrayList<>(); |
| | | if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){ |
| | | //查询保险方案下的所有派遣单位 |
| | | duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>() |
| | | .selectAll(DuSolution.class) |
| | | .innerJoin(DispatchUnit.class,DispatchUnit::getId,DuSolution::getDispatchUnitId) |
| | | .eq(DispatchUnit::getCompanyId,insuranceApply.getCompanyId()) |
| | | .eq(DispatchUnit::getIsdeleted,Constants.ZERO) |
| | | .eq(DispatchUnit::getUnitStatus,Constants.ONE) |
| | | .eq(DuSolution::getIsdeleted,Constants.ZERO) |
| | | .eq(DuSolution::getStatus,Constants.ONE) |
| | | .eq(DuSolution::getSolutionId,companySolution.getSolutionId())); |
| | | if(!CollectionUtils.isNotEmpty(duSolutionList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"数据异常:保险方案下未查询到派遣单位"); |
| | | } |
| | | //查询所有派遣单位下的工种 |
| | | List<Integer> duSolutionIdList = duSolutionList.stream().map(i->i.getId()).collect(Collectors.toList()); |
| | | duWorktypeList = duWorktypeMapper.selectList(new QueryWrapper<DuWorktype>().lambda() |
| | | .eq(DuWorktype::getIsdeleted,Constants.ZERO) |
| | | .eq(DuWorktype::getStatus,Constants.ONE) |
| | | .in(DuWorktype::getDuSolutionId,duSolutionIdList)); |
| | | if (!CollectionUtils.isNotEmpty(duWorktypeList)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "数据异常:保险方案下未查询到工种信息"); |
| | | } |
| | | worktypeIdList = duWorktypeList.stream().map(i->i.getWorkTypeId()).collect(Collectors.toList()); |
| | | }else{ |
| | | //查询方案下所有工种数据 |
| | | List<SolutionWorktype> solutionWorktypeList = solutionWorktypeJoinMapper.selectList(new QueryWrapper<SolutionWorktype>().lambda().eq(SolutionWorktype::getSolutionId,solutions.getId())); |
| | | if(CollectionUtils.isEmpty(solutionWorktypeList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,保险方案下未查询到工种信息"); |
| | | } |
| | | worktypeIdList = solutionWorktypeList.stream().map(i->i.getWorktypeId()).collect(Collectors.toList()); |
| | | } |
| | | |
| | | ApplyChangeCyclePriceDTO applyChangeCyclePriceDTO = new ApplyChangeCyclePriceDTO(); |
| | |
| | | ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(), |
| | | applyChange.getApplyStartTime(),insuranceApply.getEndTime()); |
| | | |
| | | this.addChangeDetail(applyChange,addDetailList,duWorktypeList,duSolutionList,insuranceApply,solutions,loginUserInfo,detailFee,delDetailList.size()); |
| | | this.addChangeDetail(applyChange,addDetailList,duSolutionList,insuranceApply,solutions,loginUserInfo,detailFee,delDetailList.size(),worktypeIdList); |
| | | fee = addDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | } |
| | | |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"对不起,人员录入数据存在相同数据!"); |
| | | } |
| | | |
| | | this.changeDetail(applyChange,changeDetailList,duWorktypeList,duSolutionList,loginUserInfo); |
| | | this.changeDetail(applyChange,changeDetailList,duSolutionList,loginUserInfo,solutions,worktypeIdList); |
| | | } |
| | | return fee; |
| | | } |
| | |
| | | */ |
| | | public void delChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> delDetailList,InsuranceApply insuranceApply,Solutions solutions, |
| | | LoginUserInfo loginUserInfo,BigDecimal detailFee,Date endTime){ |
| | | if(DateUtil.getMontageDate(applyChange.getDelValidTime(),3).getTime()>insuranceApply.getEndTime().getTime()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保生效期不能晚于保单结束日期"); |
| | | } |
| | | for (ApplyChagneDetail applyChagneDetail : delDetailList) { |
| | | if (Objects.isNull(applyChagneDetail.getMemberId())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); |
| | | } |
| | | //2024-10-29 15:17:54 查询是否已出险 已出险无法进行投保 |
| | | if(settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() |
| | | .eq(SettleClaims::getInsuranceApplyId,applyChange.getApplyId()) |
| | | .eq(SettleClaims::getMemberId,applyChagneDetail.getMemberId()) |
| | | .in(SettleClaims::getStatus,Constants.SettleClaimsStatus.DEAL_ING.getKey() |
| | | ,Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey() |
| | | ,Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey()) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】已出险无法进行减保"); |
| | | }; |
| | | //2024-10-29 15:17:54 查询人员是否已减保 已减保后无法再次减保 |
| | | if(applyChangeDetailJoinMapper.selectJoinCount(new MPJLambdaWrapper<ApplyChagneDetail>() |
| | | .leftJoin(ApplyChange.class,ApplyChange::getId,ApplyChagneDetail::getApplyChangeId) |
| | | .eq(ApplyChagneDetail::getType,Constants.ONE) |
| | | .eq(ApplyChange::getApplyId,applyChange.getApplyId()) |
| | | .eq(ApplyChagneDetail::getMemberId,applyChagneDetail.getMemberId()) |
| | | .notIn(ApplyChange::getStatus,Constants.ApplyChangeStatus.CLOSE.getKey() |
| | | ,Constants.ApplyChangeStatus.PALTFORM_CHECK_PASS_NO.getKey() |
| | | ) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】已减保无法再次进行减保"); |
| | | }; |
| | | |
| | | //查询减保人员是否存在 冲突的 保单明细数据 |
| | | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() |
| | | .lambda() |
| | |
| | | |
| | | /** |
| | | * 加保数据处理 |
| | | * @param applyChange |
| | | * @param addDetailList |
| | | * @param duWorktypeList |
| | | * @param duSolutionList |
| | | * @param loginUserInfo |
| | | * @param applyChange 加减保保单数据 |
| | | * @param addDetailList 加保人员 |
| | | * @param duSolutionList 派遣单位方案数据 |
| | | * @param loginUserInfo 操作人 |
| | | */ |
| | | public void addChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList, |
| | | List<DuWorktype> duWorktypeList,List<DuSolution> duSolutionList, |
| | | InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize){ |
| | | 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(), "加保生效期不能大于保单结束日期"); |
| | | } |
| | | for (int i = 0; i < addDetailList.size(); i++) { |
| | | ApplyChagneDetail applyChagneDetail = addDetailList.get(i); |
| | | if ( Objects.isNull(applyChagneDetail.getDuId()) |
| | | if ( |
| | | Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getDuId()) |
| | | || Objects.isNull(applyChagneDetail.getWorktypeId()) |
| | | || StringUtils.isBlank(applyChagneDetail.getIdcardNo()) |
| | | ) { |
| | |
| | | .lambda() |
| | | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) |
| | | .eq(ApplyDetail::getIdcardNo,applyChagneDetail.getIdcardNo()) |
| | | // .apply(" ( " + |
| | | // " '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1))+"' <= t.start_time AND t.start_time < '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2))+"' " + |
| | | // " or " + |
| | | // " ( '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1))+"' < t.end_time AND t.end_time < '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2))+"' ) " + |
| | | // " or " + |
| | | // " ( '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1))+"' > t.start_time AND '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2))+"' < t.end_time )" + |
| | | // " ) " ) |
| | | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(),1)) |
| | | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(insuranceApply.getEndTime(),2)) |
| | | )>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(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 (duWorktypeList.stream().filter(d -> d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId())) |
| | | 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() + "】员工工种信息未查询到!"); |
| | | } |
| | |
| | | /** |
| | | * 换厂业务 |
| | | * @param applyChange |
| | | * @param duWorktypeList |
| | | * @param duSolutionList |
| | | * @param changeDetailList |
| | | * @param loginUserInfo |
| | | */ |
| | | public void changeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> changeDetailList,List<DuWorktype> duWorktypeList,List<DuSolution> duSolutionList,LoginUserInfo loginUserInfo){ |
| | | public void changeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> changeDetailList |
| | | ,List<DuSolution> duSolutionList,LoginUserInfo loginUserInfo,Solutions solutions ,List<Integer> worktypeIdList){ |
| | | for (ApplyChagneDetail applyChagneDetail : changeDetailList) { |
| | | if (Objects.isNull(applyChagneDetail.getMemberId()) |
| | | || Objects.isNull(applyChagneDetail.getOldDuId()) |
| | | || (Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getOldDuId())) |
| | | || Objects.isNull(applyChagneDetail.getOldWorktypeId()) |
| | | || Objects.isNull(applyChagneDetail.getDuId()) |
| | | || (Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getDuId())) |
| | | || Objects.isNull(applyChagneDetail.getWorktypeId()) |
| | | ) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "换厂人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); |
| | |
| | | if(applyChange.getValidTime().compareTo( applyDetail.getEndTime())>0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "换厂人员【" + applyChagneDetail.getMemberName() + "】保单保障日期至:【"+DateUtil.getDate(applyDetail.getEndTime(),"yyyy-MM-dd HH:mm:ss")+"】无法通过本次申请"); |
| | | } |
| | | //验证派遣单位信息 与工种信息 是否存在 |
| | | 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(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 (duWorktypeList.stream().filter(d -> d.getWorkTypeId().equals(applyChagneDetail.getWorktypeId())) |
| | | 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() + "】员工工种信息未查询到!"); |
| | | } |
| | | if(applyChagneDetail.getOldDuId().equals(applyChagneDetail.getDuId()) |
| | | |
| | | if((Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && applyChagneDetail.getOldDuId().equals(applyChagneDetail.getDuId())) |
| | | && applyChagneDetail.getOldWorktypeId().equals(applyChagneDetail.getWorktypeId())){ |
| | | throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "换厂人员【" + applyChagneDetail.getMemberName() + "】换厂数据相同!"); |
| | | } |
| | |
| | | QueryWrapper<ApplyChange> wrapper = new QueryWrapper<>(applyChange); |
| | | return applyChangeMapper.selectList(wrapper); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<ApplyChange> findListByApplyId(Integer applyId,Integer type) { |
| | | List<ApplyChange> applyChangeList = applyChangeMapper.selectList(new QueryWrapper<ApplyChange>() |
| | | .lambda().eq(ApplyChange::getApplyId,applyId) |
| | | .eq(Objects.nonNull(type),ApplyChange::getType,type) |
| | | .in(ApplyChange::getStatus,Constants.ApplyChangeStatus.APPROVE.getKey()) |
| | | ); |
| | | return applyChangeList; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<ApplyChange> findPage(PageWrap<ApplyChange> pageWrap) { |
| | | |
| | |
| | | queryWrapper.orderByDesc(ApplyDetail::getCreateDate); |
| | | |
| | | PageData<ApplyChange> pageData = PageData.from(applyChangeJoinMapper.selectJoinPage(page,ApplyChange.class, queryWrapper)); |
| | | for (ApplyChange applyChange:pageData.getRecords()) { |
| | | |
| | | applyChange.setChangeMoney(Constants.getTwoPoint(applyChange.getChangeMoney())); |
| | | applyChange.setFee(Constants.getTwoPoint(applyChange.getFee())); |
| | | } |
| | | |
| | | return pageData; |
| | | } |
| | | |
| | |
| | | }*/ |
| | | |
| | | List<ApplyChange> list =applyChangeJoinMapper.selectJoinList(ApplyChange.class,queryWrapper); |
| | | for (ApplyChange applyChange:list) { |
| | | applyChange.setFee(Constants.getTwoPoint(applyChange.getFee())); |
| | | } |
| | | List<ApplyChange> result = new ArrayList<>(); |
| | | for (int i = 1; i <= 12; i++) { |
| | | if(i<10){ |
| | |
| | | .selectAs(InsuranceApply::getEndTime,ApplyChange::getEndTime) |
| | | .selectAs(Solutions::getName,ApplyChange::getSolutionsName) |
| | | .selectAs(Solutions::getType,ApplyChange::getSolutionType) |
| | | .selectAs(Solutions::getHasDispatchUnit,ApplyChange::getHasDispatchUnit) |
| | | .selectAs(Company::getName,ApplyChange::getCompanyName) |
| | | .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 0 )",ApplyChange::getAddNum) |
| | | .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 1 )",ApplyChange::getDelNum) |
| | |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode(); |
| | | for(ApplyChange model : list){ |
| | | for(Multifile f : multifiles) { |
| | | if (StringUtils.isBlank(f.getFileurl())) { |
| | | continue; |
| | | List<Multifile> multifileList = multifiles.stream().filter(m->Constants.equalsInteger(m.getObjId(), model.getId())&& |
| | | Constants.equalsInteger(m.getObjType(), Constants.MultiFile.CA_PD_PDF.getKey())).collect(Collectors.toList()); |
| | | if(CollectionUtils.isNotEmpty(multifileList)){ |
| | | for (Multifile multifile:multifileList) { |
| | | multifile.setFileurlFull(path + multifile.getFileurl()); |
| | | } |
| | | f.setFileurlFull(path+f.getFileurl()); |
| | | if(Constants.equalsInteger(f.getObjId(), model.getId()) ){ |
| | | if (Constants.equalsInteger(f.getObjType(), Constants.MultiFile.CA_PD_PDF.getKey())) { |
| | | //签署前的投保单 |
| | | model.setPidanFile(f); |
| | | } |
| | | } |
| | | model.setPidanFileList(multifileList); |
| | | } |
| | | } |
| | | } |
| | |
| | | ); |
| | | applyChange.setApplyLogList(applyLogList); |
| | | |
| | | |
| | | applyChange.setFee(Constants.getTwoPoint(applyChange.getFee())); |
| | | List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getObjId, applyChange.getId() ) |
| | | // .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey() |
| | |
| | | }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey())){ |
| | | //签署后申请单 |
| | | applyChange.setApplyUnitFile(f); |
| | | }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_PD_PDF.getKey())){ |
| | | //签署后的投保单 |
| | | applyChange.setPidanFile(f); |
| | | } |
| | | // else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_PD_PDF.getKey())){ |
| | | // //签署后的投保单 |
| | | // applyChange.setPidanFile(f); |
| | | // } |
| | | } |
| | | List<Multifile> multifileList = multifiles.stream().filter(m->Constants.equalsInteger(m.getObjId(), applyChange.getId())&& |
| | | Constants.equalsInteger(m.getObjType(), Constants.MultiFile.CA_PD_PDF.getKey())).collect(Collectors.toList()); |
| | | if(CollectionUtils.isNotEmpty(multifileList)){ |
| | | for (Multifile multifile:multifileList) { |
| | | multifile.setFileurlFull(path + multifile.getFileurl()); |
| | | } |
| | | applyChange.setPidanFileList(multifileList); |
| | | } |
| | | } |
| | | |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该申请状态已流转,当前不支持签章操作!"); |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Company company = user.getCompany(); |
| | | |
| | | InsuranceApply insuranceApply = insuranceApplyMapper.selectById(model.getApplyId()); |
| | | if(Objects.isNull(insuranceApply)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询保单信息"); |
| | | } |
| | | Company company = companyMapper.selectById(insuranceApply.getCompanyId()); |
| | | if(Objects.isNull(company)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到企业信息"); |
| | | } |
| | | String companyName = company.getName(); |
| | | String creditCode = company.getCode(); |
| | | String email = company.getEmail(); |
| | | |
| | | |
| | | /*if(debugModel){ |
| | | company = companyMapper.selectById(model.getCompanyId()); |
| | | }*/ |
| | | if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.THREE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,企业尚未具备在线签章条件,请联系平台管理员确认~"); |
| | | } |
| | | InsuranceApply insuranceApply = insuranceApplyMapper.selectById(model.getApplyId()); |
| | | if(Objects.isNull(insuranceApply)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询保单信息"); |
| | | } |
| | | |
| | | Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); |
| | | if(Objects.isNull(solutions)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询方案信息"); |
| | | } |
| | | String fileUrl = null; |
| | | if(Constants.equalsObject(model.getType(), Constants.ONE)){ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"换厂申请表","投保企业"); |
| | | }else{ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcelToPdf(model,"加减保申请表","投保企业"); |
| | | } |
| | | // if(Constants.equalsObject(model.getType(), Constants.ONE)){ |
| | | // fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"换厂申请表","投保企业"); |
| | | // }else{ |
| | | // fileUrl = ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcelToPdf(model,"加减保申请表","投保企业"); |
| | | // } |
| | | String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode(); |
| | | notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString()); |
| | | String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保企业签章",company.getSignId(),notifyUrl); |
| | | // notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString()); |
| | | // String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保企业签章",company.getSignId(),notifyUrl); |
| | | //临时使用 |
| | | fileUrl = |
| | | "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241120/1c80f0d7-ab35-4355-b9fe-944464643115.pdf"; |
| | | String applyNo = signService.applySign(companyName,fileUrl,companyName,creditCode,email,"人员名单签章",null,notifyUrl); |
| | | if(StringUtils.isBlank(applyNo) ){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!"); |
| | | } |
| | |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | //验证 验证码 |
| | | // if(!debugModel){ |
| | | // smsEmailService.validateCode(smsCheckDTO.getCode()); |
| | | // } |
| | | ApplyChange model = this.queryApplyChangeData(smsCheckDTO.getBusinessId()); |
| | | if(Objects.isNull(model)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询加减保/换厂信息"); |
| | |
| | | if(!Constants.equalsInteger(Constants.ZERO,model.getStatus())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该申请状态已流转,当前不支持签章操作!"); |
| | | } |
| | | if(Constants.equalsObject(model.getType(), Constants.ONE)){ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"换厂申请表","被保险人"); |
| | | }else{ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcelToPdf(model,"加减保申请表","被保险人"); |
| | | } |
| | | // if(Constants.equalsObject(model.getType(), Constants.ONE)){ |
| | | // fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"换厂申请表","被保险人"); |
| | | // }else{ |
| | | // fileUrl = ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcelToPdf(model,"加减保申请表","被保险人"); |
| | | // } |
| | | String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode(); |
| | | notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString()); |
| | | String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl); |
| | | |
| | | //临时使用 |
| | | fileUrl = "https://yybred.oss-cn-hangzhou.aliyuncs.com/apply/20241120/1c80f0d7-ab35-4355-b9fe-944464643115.pdf"; |
| | | String applyNo = signService.applySign(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl); |
| | | |
| | | // String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"人员名单签章",company.getSignId(),notifyUrl); |
| | | if(StringUtils.isBlank(applyNo) ){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!"); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public Integer check(ApplyChange applyChange) { |
| | | public Integer check(ApplyChange applyChange,UnionChangeServiceImpl unionChangeService) { |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(!user.getType().equals(Constants.TWO)){ |
| | | if(!(Constants.equalsInteger(user.getType(),Constants.ZERO) || Constants.equalsInteger(user.getType(),Constants.TWO))){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户端无法进行该操作"); |
| | | } |
| | | if(applyChange.getId() == null){ |
| | |
| | | if(Constants.equalsInteger(model.getType(),Constants.ONE)){ |
| | | noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY; |
| | | } |
| | | //删除全部待办 |
| | | //删除全部待办 |
| | | noticesMapper.delete(new QueryWrapper<Notices>().lambda() |
| | | .eq(Notices::getObjType, noticeObjectType.getKey()) |
| | | .eq(Notices::getObjId, model.getId())); |
| | | if(Constants.equalsInteger(applyChange.getDealBackApply(),Constants.ZERO)){ |
| | | InsuranceApply insuranceApply = insuranceApplyMapper.selectById(model.getApplyId()); |
| | | if(Objects.isNull(insuranceApply)||Objects.isNull(insuranceApply.getUnionApplyId())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到保单数据"); |
| | | } |
| | | SaveUnionChangeDTO saveUnionChangeDTO = new SaveUnionChangeDTO(); |
| | | saveUnionChangeDTO.setApplyDate(update.getApplyStartTime()); |
| | | List<Integer> applyIds = new ArrayList<>(); |
| | | applyIds.add(model.getId()); |
| | | saveUnionChangeDTO.setApplyIds(applyIds); |
| | | saveUnionChangeDTO.setApplyChange(model); |
| | | saveUnionChangeDTO.setUnionApplyId(insuranceApply.getUnionApplyId()); |
| | | saveUnionChangeDTO.setBusinessType(model.getType()); |
| | | if(Constants.equalsInteger(model.getType(),Constants.ONE)){ |
| | | saveUnionChangeDTO.setApplyDate(model.getApplyStartTime()); |
| | | } |
| | | if(Constants.equalsInteger(user.getType(),Constants.TWO)){ |
| | | saveUnionChangeDTO.setShopId(user.getCompanyId()); |
| | | }else{ |
| | | CompanySolution companySolution = companySolutionMapper.selectOne(new QueryWrapper<CompanySolution>().lambda().eq(CompanySolution::getSolutionId,solutions.getId()).eq(CompanySolution::getCompanyId,insuranceApply.getCompanyId()).last(" limit 1 ")); |
| | | if(Objects.isNull(companySolution)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到企业方案信息"); |
| | | } |
| | | saveUnionChangeDTO.setShopId(companySolution.getShopId()); |
| | | |
| | | } |
| | | unionChangeService.merge(saveUnionChangeDTO); |
| | | } |
| | | return 1; |
| | | |
| | | } |