|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private NoticesMapper noticesMapper; | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 平台退回投保 | 
|---|
|  |  |  | * 平台退回申请 | 
|---|
|  |  |  | * @param param | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | if(param.getDelValidTime() == null){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!(param.getApplyStartTime().getTime()>insuranceApply.getStartTime().getTime()&¶m.getApplyStartTime().getTime()<=insuranceApply.getEndTime().getTime())){ | 
|---|
|  |  |  | if(!(param.getApplyStartTime().getTime()>=insuranceApply.getStartTime().getTime()&¶m.getApplyStartTime().getTime()<=insuranceApply.getEndTime().getTime())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"批增日期必须处于保单申请日期内"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(!(param.getDelValidTime().getTime()>insuranceApply.getStartTime().getTime()&¶m.getDelValidTime().getTime()<=insuranceApply.getEndTime().getTime())){ | 
|---|
|  |  |  | if(!(param.getDelValidTime().getTime()>=insuranceApply.getStartTime().getTime()&¶m.getDelValidTime().getTime()<=insuranceApply.getEndTime().getTime())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"批减日期必须处于保单申请日期内"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | applyChangeMapper.updateById(update); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        if(1==1){ | 
|---|
|  |  |  | //            throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE; | 
|---|
|  |  |  | 
|---|
|  |  |  | memberInsurance.setRelationType(Constants.ONE); | 
|---|
|  |  |  | memberInsurance.setStartTime(DateUtil.getMontageDate(update.getApplyStartTime(),1)); | 
|---|
|  |  |  | memberInsurance.setRelationId(oldModel.getId()); | 
|---|
|  |  |  | memberInsurance.setIsValid(Constants.ZERO); | 
|---|
|  |  |  | memberInsuranceJoinMapper.insert(memberInsurance); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() | 
|---|
|  |  |  | 
|---|
|  |  |  | if(Objects.isNull(solutions)){ | 
|---|
|  |  |  | 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")); | 
|---|
|  |  |  | //            if(Objects.isNull(solutions)){ | 
|---|
|  |  |  | //                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到方案最新版本信息"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | List<ApplyChagneDetail> addList = detailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | List<ApplyChagneDetail> reduceList = detailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ONE)).collect(Collectors.toList()); | 
|---|
|  |  |  | //减保业务 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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())){ | 
|---|
|  |  |  | if(!(oldModel.getStartTime().getTime()<=update.getDelValidTime().getTime()&& oldModel.getEndTime().getTime()>=update.getDelValidTime().getTime())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,用户【" + detail.getMemberName() + "】减保日期未在保单记录日期中!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date delValidTime = oldModel.getStartTime().compareTo(update.getDelValidTime())!=0? | 
|---|
|  |  |  | DateUtil.getMontageDate(update.getDelValidTime(), 3): | 
|---|
|  |  |  | DateUtil.getMontageDate(update.getDelValidTime(), 2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal sumFee = Objects.isNull(insuranceApply.getServerCost())? | 
|---|
|  |  |  | solutions.getPrice(): | 
|---|
|  |  |  | solutions.getPrice().add(insuranceApply.getServerCost()); | 
|---|
|  |  |  | // 减保后 总费用 | 
|---|
|  |  |  | BigDecimal updateFee =  Constants.reduceFee( | 
|---|
|  |  |  | solutions, | 
|---|
|  |  |  | sumFee | 
|---|
|  |  |  | ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime | 
|---|
|  |  |  | ) ; | 
|---|
|  |  |  | // 减保后 总费用 默认为减保后为 0 | 
|---|
|  |  |  | BigDecimal updateFee = BigDecimal.ZERO; | 
|---|
|  |  |  | // 减保后 批单日期  默认为 批单减保日期  00:00:00 | 
|---|
|  |  |  | Date delValidTime = update.getDelValidTime(); | 
|---|
|  |  |  | //当审批时间 大于 申请的时间时 计算实际减少金额 因为已扣金额会大于 应扣金额 | 
|---|
|  |  |  | BigDecimal updateCurrentFee = BigDecimal.ZERO; | 
|---|
|  |  |  | if (DateUtil.daysBetweenDates(DateUtil.getMontageDate(new Date(), 2),oldModel.getStartTime()) > 0) { | 
|---|
|  |  |  | //如果批单日期 大于 员工保单的开始日期 | 
|---|
|  |  |  | if(update.getDelValidTime().getTime() > oldModel.getStartTime().getTime()){ | 
|---|
|  |  |  | //批单日期 大于 保单开日期  获取实际的批单结束日期 计算实际减保后总费用 | 
|---|
|  |  |  | delValidTime = DateUtil.getMontageDate(update.getDelValidTime(), 3); | 
|---|
|  |  |  | updateFee =  Constants.reduceFee( | 
|---|
|  |  |  | solutions, | 
|---|
|  |  |  | sumFee | 
|---|
|  |  |  | ,insuranceApply.getStartTime(),insuranceApply.getFinalEndTime(),oldModel.getStartTime(),delValidTime | 
|---|
|  |  |  | ) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (oldModel.getStartTime().getTime() < System.currentTimeMillis()) { | 
|---|
|  |  |  | //// 2024年5月8日17:37:23 修改 计算产生费用 | 
|---|
|  |  |  | updateCurrentFee = Constants.produceFee(solutions,sumFee,insuranceApply.getStartTime(),insuranceApply.getEndTime(), | 
|---|
|  |  |  | oldModel.getStartTime() | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | UpdateWrapper<ApplyDetail> updateWrapper = new UpdateWrapper<ApplyDetail>(); | 
|---|
|  |  |  | updateWrapper.lambda() | 
|---|
|  |  |  | .setSql(" fee = " + updateFee) | 
|---|
|  |  |  | .setSql(" current_fee = " + updateCurrentFee) | 
|---|
|  |  |  | .set(ApplyDetail::getEndTime, delValidTime) | 
|---|
|  |  |  | .set(update.getDelValidTime().getTime() <= oldModel.getStartTime().getTime(),ApplyDetail::getChangeStatus,Constants.TWO) | 
|---|
|  |  |  | .set(ApplyDetail::getEditor, update.getEditor()) | 
|---|
|  |  |  | .set(ApplyDetail::getEditDate, update.getEditDate()) | 
|---|
|  |  |  | .eq(ApplyDetail::getId, oldModel.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | totalFee = totalFee.add(updateFee).subtract(oldModel.getFee()).add(reduceMoney); | 
|---|
|  |  |  | currentFee = currentFee.add(updateCurrentFee); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MemberInsurance> oldMemberInsurance =   memberInsuranceJoinMapper.selectList( | 
|---|
|  |  |  | new QueryWrapper<MemberInsurance>().lambda() | 
|---|
|  |  |  | .eq(MemberInsurance::getIsValid,Constants.ZERO) | 
|---|
|  |  |  | .eq(MemberInsurance::getRelationId,oldModel.getId())); | 
|---|
|  |  |  | for (MemberInsurance memberInsurance:oldMemberInsurance) { | 
|---|
|  |  |  | //记录数据早于批单日期 | 
|---|
|  |  |  | if(memberInsurance.getStartTime().getTime()>delValidTime.getTime()){ | 
|---|
|  |  |  | memberInsurance.setIsValid(Constants.ONE); | 
|---|
|  |  |  | }else if(memberInsurance.getEndTime().getTime()>=delValidTime.getTime() | 
|---|
|  |  |  | && memberInsurance.getStartTime().getTime()<=delValidTime.getTime()){ | 
|---|
|  |  |  | memberInsurance.setFee(updateFee); | 
|---|
|  |  |  | memberInsurance.setEndTime(delValidTime); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | memberInsuranceJoinMapper.updateById(memberInsurance); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //修改 员工投保明细记录 历史数据 | 
|---|
|  |  |  | memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() | 
|---|
|  |  |  | .setSql(" fee = " + updateFee) | 
|---|
|  |  |  | .set(MemberInsurance::getEndTime, delValidTime) | 
|---|
|  |  |  | .eq(MemberInsurance::getRelationId, oldModel.getId()) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | //            memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda() | 
|---|
|  |  |  | //                    .setSql(" fee = " + updateFee) | 
|---|
|  |  |  | //                    .set(MemberInsurance::getEndTime, delValidTime) | 
|---|
|  |  |  | //                    .eq(MemberInsurance::getRelationId, oldModel.getId()) | 
|---|
|  |  |  | //            ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //修改业务明细行数据实际批单日期 | 
|---|
|  |  |  | applyChangeDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda() | 
|---|
|  |  |  | 
|---|
|  |  |  | .lambda() | 
|---|
|  |  |  | .eq(ApplyDetail::getApplyId,update.getApplyId()) | 
|---|
|  |  |  | .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo()) | 
|---|
|  |  |  | //                    .apply(" ( " + | 
|---|
|  |  |  | //                            " '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(update.getApplyStartTime(),1))+"'  <= t.start_time AND t.start_time < '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(detail.getEndTime(),2))+"' " + | 
|---|
|  |  |  | //                            " or " + | 
|---|
|  |  |  | //                            "  ( '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(update.getApplyStartTime(),1))+"' < t.end_time AND t.end_time < '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(detail.getEndTime(),2))+"' )  " + | 
|---|
|  |  |  | //                            " or " + | 
|---|
|  |  |  | //                            " ( '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(update.getApplyStartTime(),1))+"' > t.start_time AND '"+DateUtil.getLongDateTime(DateUtil.getMontageDate(detail.getEndTime(),2))+"' < t.end_time )" + | 
|---|
|  |  |  | //                            " ) " ) | 
|---|
|  |  |  | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(update.getApplyStartTime(),1)) | 
|---|
|  |  |  | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(detail.getEndTime(),2)) | 
|---|
|  |  |  | )>Constants.ZERO){ | 
|---|
|  |  |  | 
|---|
|  |  |  | .set(InsuranceApply::getEditDate, update.getEditDate()) | 
|---|
|  |  |  | .eq(InsuranceApply::getId, update.getApplyId()) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | update.setFee(totalFee); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | update.setFee(totalFee); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 平台退回投保 | 
|---|
|  |  |  | * 平台退回申请 | 
|---|
|  |  |  | * @param param | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | if (DateUtil.compareDate(insuranceApply.getEndTime(),new Date()) >= Constants.ZERO ) { | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "保单已过保,无法进行该操作"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if (DateUtil.compareDate(applyChange.getValidTime(),insuranceApply.getStartTime()) >= Constants.ZERO) { | 
|---|
|  |  |  | //            //如果保单尚未生效,设置期望生效日期为保单生效开始时间 | 
|---|
|  |  |  | //            applyChange.setValidTime(insuranceApply.getStartTime()); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); | 
|---|
|  |  |  | if(Objects.isNull(solutions)){ | 
|---|
|  |  |  | 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")); | 
|---|
|  |  |  | //            if(Objects.isNull(solutions)){ | 
|---|
|  |  |  | //                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到方案最新版本信息"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | CompanySolution companySolution = companySolutionMapper.selectOne(new QueryWrapper<CompanySolution>().lambda() | 
|---|
|  |  |  | .eq(CompanySolution::getCompanyId,loginUserInfo.getCompanyId()) | 
|---|
|  |  |  | .eq(CompanySolution::getSolutionBaseId,solutions.getBaseId()) | 
|---|
|  |  |  | 
|---|
|  |  |  | if(Objects.isNull(companySolution)){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到企业分配保险方案信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //申请时间必须处于保单的时间范围内 | 
|---|
|  |  |  | //        if (!(DateUtil.compareDate( insuranceApply.getStartTime(),applyChange.getValidTime()) >= Constants.ZERO | 
|---|
|  |  |  | //                && DateUtil.compareDate( applyChange.getValidTime(),insuranceApply.getEndTime()) >= Constants.ZERO)) { | 
|---|
|  |  |  | //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "申请日期未处于保单日期内,无法进行该操作"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //查询保单下是否存在进行中的加减保/换厂单据 | 
|---|
|  |  |  | if(applyChangeMapper.selectCount(new QueryWrapper<ApplyChange>().lambda() | 
|---|
|  |  |  | .eq(ApplyChange::getApplyId,insuranceApply.getId()) | 
|---|
|  |  |  | 
|---|
|  |  |  | applyChange.getDelValidTime() | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo, BigDecimal.ZERO, | 
|---|
|  |  |  | DateUtil.getMontageDate(applyChange.getDelValidTime(),3)); | 
|---|
|  |  |  | fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add)); | 
|---|
|  |  |  | //            fee = fee.add(delDetailList.stream().map(ApplyChagneDetail::getReduceMoney).reduce(BigDecimal.ZERO,BigDecimal::add)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Objects.isNull(applyChagneDetail.getMemberId())) { | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "减保人员【" + applyChagneDetail.getMemberName() + "】必填项缺失"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //查询减保人员是否存在 冲突的 保单明细数据 | 
|---|
|  |  |  | if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>() | 
|---|
|  |  |  | .lambda() | 
|---|
|  |  |  | .eq(ApplyDetail::getApplyId,applyChange.getApplyId()) | 
|---|
|  |  |  | .eq(ApplyDetail::getIdcardNo,applyChagneDetail.getIdcardNo()) | 
|---|
|  |  |  | .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1)) | 
|---|
|  |  |  | //                    .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),1)) | 
|---|
|  |  |  | .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(applyChange.getDelValidTime(),3)) | 
|---|
|  |  |  | )<=Constants.ZERO){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前保单下,减保人员【" + applyChagneDetail.getMemberName() + "】未查询到符合批单日期的数据"); | 
|---|
|  |  |  | 
|---|
|  |  |  | applyChagneDetail.setType(Constants.ONE); | 
|---|
|  |  |  | applyChagneDetail.setApplyDetailId(applyDetail.getId()); | 
|---|
|  |  |  | applyChagneDetail.setStartTime(applyDetail.getStartTime()); | 
|---|
|  |  |  | applyChagneDetail.setEndTime(endTime); | 
|---|
|  |  |  | if(endTime.getTime()<applyChagneDetail.getStartTime().getTime()){ | 
|---|
|  |  |  | applyChagneDetail.setEndTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | applyChagneDetail.setFee(applyDetail.getFee().multiply(BigDecimal.valueOf(-1))); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | applyChagneDetail.setEndTime(endTime); | 
|---|
|  |  |  | applyChagneDetail.setFee( | 
|---|
|  |  |  | Constants.reduceFee(solutions, | 
|---|
|  |  |  | Objects.isNull(insuranceApply.getServerCost())? | 
|---|
|  |  |  | solutions.getPrice():solutions.getPrice().add(insuranceApply.getServerCost()), | 
|---|
|  |  |  | insuranceApply.getStartTime(), | 
|---|
|  |  |  | insuranceApply.getFinalEndTime(), | 
|---|
|  |  |  | applyDetail.getStartTime(),endTime) | 
|---|
|  |  |  | .subtract(applyDetail.getFee() | 
|---|
|  |  |  | )); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | applyChagneDetail.setReduceMoney(BigDecimal.ZERO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | member.setApplyId(insuranceApply.getId()); | 
|---|
|  |  |  | member.setDuId(applyChagneDetail.getDuId()); | 
|---|
|  |  |  | member.setWorktypeId(applyChagneDetail.getWorktypeId()); | 
|---|
|  |  |  | member.setStartTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | member.setEndTime(applyDetail.getEndTime()); | 
|---|
|  |  |  | memberMapper.updateById(member); | 
|---|
|  |  |  | //查询减保日期 | 
|---|
|  |  |  | //            Integer delDays = DateUtil.daysBetweenDates(applyDetail.getEndTime(),endTime); | 
|---|
|  |  |  | //            ; | 
|---|
|  |  |  | //减保金额 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //查询周期数量 | 
|---|
|  |  |  | applyChagneDetail.setFee( | 
|---|
|  |  |  | Constants.reduceFee(solutions, | 
|---|
|  |  |  | Objects.isNull(insuranceApply.getServerCost())? | 
|---|
|  |  |  | solutions.getPrice():solutions.getPrice().add(insuranceApply.getServerCost()), | 
|---|
|  |  |  | insuranceApply.getStartTime(), | 
|---|
|  |  |  | insuranceApply.getFinalEndTime(), | 
|---|
|  |  |  | applyDetail.getStartTime(),endTime) | 
|---|
|  |  |  | .subtract(applyDetail.getFee() | 
|---|
|  |  |  | )); | 
|---|
|  |  |  | //如果是减保业务为仅替换 且 方案的扣费周期和总周期相等 则处理减保费用 | 
|---|
|  |  |  | if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE) | 
|---|
|  |  |  | && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){ | 
|---|
|  |  |  | applyChagneDetail.setReduceMoney(solutions.getPrice().multiply(new BigDecimal(-1))); | 
|---|
|  |  |  | applyChagneDetail.setFee(BigDecimal.ZERO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | applyChagneDetailJoinMapper.insert(applyChagneDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | member.setApplyId(insuranceApply.getId()); | 
|---|
|  |  |  | member.setDuId(applyChagneDetail.getDuId()); | 
|---|
|  |  |  | member.setWorktypeId(applyChagneDetail.getWorktypeId()); | 
|---|
|  |  |  | member.setStartTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | member.setEndTime(applyChagneDetail.getEndTime()); | 
|---|
|  |  |  | //                    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()); | 
|---|
|  |  |  | //                    member.setStartTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | //                    member.setEndTime(applyChagneDetail.getEndTime()); | 
|---|
|  |  |  | memberMapper.updateById(member); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | 
|---|
|  |  |  | member.setApplyId(applyChange.getApplyId()); | 
|---|
|  |  |  | member.setDuId(applyChagneDetail.getDuId()); | 
|---|
|  |  |  | member.setWorktypeId(applyChagneDetail.getWorktypeId()); | 
|---|
|  |  |  | member.setStartTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | member.setEndTime(applyChagneDetail.getEndTime()); | 
|---|
|  |  |  | //            member.setStartTime(applyChagneDetail.getStartTime()); | 
|---|
|  |  |  | //            member.setEndTime(applyChagneDetail.getEndTime()); | 
|---|
|  |  |  | memberMapper.updateById(member); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) | 
|---|
|  |  |  | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getType()),ApplyChange::getType,model.getType()) | 
|---|
|  |  |  | .eq(ApplyChange::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getStatus())&&!model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus,model.getStatus()) | 
|---|
|  |  |  | .in(!Objects.isNull(model.getStatus())&&model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus, | 
|---|
|  |  |  | Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey(), | 
|---|
|  |  |  | 
|---|
|  |  |  | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getType()),ApplyChange::getType,model.getType()) | 
|---|
|  |  |  | .eq(ApplyChange::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getStatus())&&!model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus,model.getStatus()) | 
|---|
|  |  |  | .in(!Objects.isNull(model.getStatus())&&model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus, | 
|---|
|  |  |  | Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey(), | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public  List<ApplyChange> monthTotalList(ApplyChange model){ | 
|---|
|  |  |  | if(model.getApplyId() ==null || model.getYear() == null){ | 
|---|
|  |  |  | return  new ArrayList<>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<ApplyChange> queryWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | queryWrapper | 
|---|
|  |  |  | .select("count(t.id)",ApplyChange::getCountNum) | 
|---|
|  |  |  | .select("sum(t.fee)",ApplyChange::getFee) | 
|---|
|  |  |  | .select("DATE_FORMAT(t.create_date, '%Y-%m')",ApplyChange::getMonth) | 
|---|
|  |  |  | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) | 
|---|
|  |  |  | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getType()),ApplyChange::getType,model.getType()) | 
|---|
|  |  |  | .eq(ApplyChange::getApplyId,model.getApplyId()) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getStatus())&&!model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus,model.getStatus()) | 
|---|
|  |  |  | .in(!Objects.isNull(model.getStatus())&&model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()), | 
|---|
|  |  |  | ApplyChange::getStatus, | 
|---|
|  |  |  | Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey(), | 
|---|
|  |  |  | Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey()) | 
|---|
|  |  |  | .eq(ApplyChange::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getSolutionType()),Solutions::getType,model.getSolutionType()) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getBaseSolutionsId()),Solutions::getBaseId,model.getBaseSolutionsId()) | 
|---|
|  |  |  | .like(StringUtils.isNotBlank(model.getSolutionsName()),Solutions::getName,model.getSolutionsName()) | 
|---|
|  |  |  | .ge( ApplyChange::getCreateDate, model.getYear()+"-01-01 00:00:00" ) | 
|---|
|  |  |  | .lt(ApplyChange::getCreateDate, (model.getYear()+1)+"-01-01 00:00:00") | 
|---|
|  |  |  | .groupBy("month"  ); | 
|---|
|  |  |  | /*     LoginUserInfo loginUserInfo =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|---|
|  |  |  | //企业人员查看本企业数据 | 
|---|
|  |  |  | if(loginUserInfo.getType().equals(Constants.ONE)){ | 
|---|
|  |  |  | queryWrapper.eq(InsuranceApply::getCompanyId, loginUserInfo.getCompanyId()); | 
|---|
|  |  |  | }else if(loginUserInfo.getType().equals(Constants.TWO)){ | 
|---|
|  |  |  | //如果是商户查看 | 
|---|
|  |  |  | if(model.getSolutionType()!=null && model.getSolutionType() ==0){ | 
|---|
|  |  |  | queryWrapper.exists("select cs.id from company_solution cs where cs.isdeleted=0 and cs.company_id=t1.company_id and cs.shop_id="+loginUserInfo.getCompanyId()); | 
|---|
|  |  |  | }else if(model.getSolutionType()!=null && model.getSolutionType() ==1){ | 
|---|
|  |  |  | queryWrapper.eq(Solutions::getShopId,loginUserInfo.getCompanyId()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | queryWrapper.apply("((t2.type=0 and exists(select cs.id from company_solution cs where cs.isdeleted=0 and cs.company_id=t1.company_id and cs.shop_id="+loginUserInfo.getCompanyId()+")) or (" + | 
|---|
|  |  |  | "t2.type=1 and t2.shop_id="+loginUserInfo.getCompanyId()+"))") ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(loginUserInfo.getCompanyIdList()!=null && loginUserInfo.getCompanyIdList().size()>0){ | 
|---|
|  |  |  | queryWrapper.in(InsuranceApply::getCompanyId, loginUserInfo.getCompanyIdList()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | queryWrapper.eq(InsuranceApply::getCompanyId, -1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | queryWrapper.eq(model.getCompanyId()!=null,InsuranceApply::getCompanyId, model.getCompanyId()); | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ApplyChange> list =applyChangeJoinMapper.selectJoinList(ApplyChange.class,queryWrapper); | 
|---|
|  |  |  | List<ApplyChange> result = new ArrayList<>(); | 
|---|
|  |  |  | for (int i = 1; i <= 12; i++) { | 
|---|
|  |  |  | if(i<10){ | 
|---|
|  |  |  | result.add(getMonthDayFromList(model.getYear() +"-0"+i,list)); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | result.add(getMonthDayFromList(model.getYear() +"-"+i,list)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private ApplyChange getMonthDayFromList(String s, List<ApplyChange> list) { | 
|---|
|  |  |  | for(ApplyChange d : list){ | 
|---|
|  |  |  | if(StringUtils.equals(s,d.getMonth())){ | 
|---|
|  |  |  | return d; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ApplyChange d =  new ApplyChange(); | 
|---|
|  |  |  | d.setMonth(s); | 
|---|
|  |  |  | d.setFee(new BigDecimal(0)); | 
|---|
|  |  |  | d.setCountNum(0); | 
|---|
|  |  |  | return d; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<ApplyChange> findListForCompany(ApplyChange model) { | 
|---|
|  |  |  | MPJLambdaWrapper<ApplyChange> queryWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | queryWrapper | 
|---|
|  |  |  | 
|---|
|  |  |  | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getType()),ApplyChange::getType,model.getType()) | 
|---|
|  |  |  | .eq(ApplyChange::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(!Objects.isNull(model.getStatus())&&!model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()),ApplyChange::getStatus,model.getStatus()) | 
|---|
|  |  |  | .in(!Objects.isNull(model.getStatus())&&model.getStatus().equals(Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()), | 
|---|
|  |  |  | ApplyChange::getStatus, | 
|---|