|  |  |  | 
|---|
|  |  |  | import com.doumee.dao.business.dto.InsuranceApplyQueryDTO; | 
|---|
|  |  |  | import com.doumee.dao.business.join.ApplyDetailJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.ApplyLogJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.DuSolutionJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.InsuranceApplyJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.*; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.CountCyclePriceVO; | 
|---|
|  |  |  | 
|---|
|  |  |  | private MemberMapper memberMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DuSolutionMapper duSolutionMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DuSolutionJoinMapper duSolutionJoinMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DuWorktypeMapper duWorktypeMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到方案信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //查询保险方案下的所有派遣单位 | 
|---|
|  |  |  | List<DuSolution> duSolutionList = duSolutionMapper.selectList(new QueryWrapper<DuSolution>().lambda() | 
|---|
|  |  |  | 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,insuranceApply.getSolutionId())); | 
|---|
|  |  |  | 
|---|
|  |  |  | MPJLambdaWrapper wrapper=  new MPJLambdaWrapper<InsuranceApply>() | 
|---|
|  |  |  | .selectAll(InsuranceApply.class) | 
|---|
|  |  |  | .selectAs(Solutions::getName,InsuranceApply::getSolutionsName) | 
|---|
|  |  |  | .selectAs(Company::getName,ApplyLog::getCompanyName) | 
|---|
|  |  |  | .selectAs(Company::getName,InsuranceApply::getCompanyName) | 
|---|
|  |  |  | .select(" ( select count(1) from apply_detail ad  where ad.apply_id = t.id ) as insureNum") | 
|---|
|  |  |  | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) | 
|---|
|  |  |  | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) | 
|---|
|  |  |  | 
|---|
|  |  |  | if(Objects.isNull(insuranceApply)){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(insuranceApply.getStartTime().compareTo(new Date())<0  && insuranceApply.getEndTime().compareTo(new Date()) > 0 ){ | 
|---|
|  |  |  | insuranceApply.setLoseEfficacyDays(DateUtil.daysBetweenDates(insuranceApply.getEndTime(),new Date())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | initApplyStatus(insuranceApply); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = {Exception.class}) | 
|---|
|  |  |  | public void updateApplyCurrentFee(){ | 
|---|
|  |  |  | public void updateApplyCurrentFee(Integer id){ | 
|---|
|  |  |  | List<InsuranceApply> insuranceApplyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda() | 
|---|
|  |  |  | .eq(InsuranceApply::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()) | 
|---|
|  |  |  | .ge(InsuranceApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00") | 
|---|
|  |  |  | .le(InsuranceApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59") | 
|---|
|  |  |  | .eq(!Objects.isNull(id),InsuranceApply::getId,id) | 
|---|
|  |  |  | .le(InsuranceApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00") | 
|---|
|  |  |  | .ge(InsuranceApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59") | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(insuranceApplyList)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | List<ApplyDetail> applyDetailList = applyDetailMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId())); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(applyDetailList)){ | 
|---|
|  |  |  | for (ApplyDetail applyDetail: applyDetailList) { | 
|---|
|  |  |  | applyDetail.setCurrentFee(Constants.countDetailFee(solutions,new Date(),applyDetail.getStartTime())); | 
|---|
|  |  |  | applyDetailMapper.updateById(applyDetail); | 
|---|
|  |  |  | //2024-1-30 10:04:24 修改 根据实际天数进行计算 当前费用  总金额/总天数*实际天数 | 
|---|
|  |  |  | Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0) + 1 ; | 
|---|
|  |  |  | BigDecimal fee = applyDetail.getFee(); | 
|---|
|  |  |  | if(applyDetail.getStartTime().compareTo(new Date()) <= 0 && applyDetail.getEndTime().compareTo(new Date()) >= 0 ){ | 
|---|
|  |  |  | Integer days =  DateUtil.calculateBetween(applyDetail.getStartTime(),new Date(),0) + 1 ; | 
|---|
|  |  |  | applyDetail.setCurrentFee(fee.divide(BigDecimal.valueOf(maxDays),2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(days))); | 
|---|
|  |  |  | applyDetailMapper.updateById(applyDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                        DateUtil.daysBetweenDates(applyDetail.getEndTime(),applyDetail.getStartTime()); | 
|---|
|  |  |  | //                        applyDetail.setCurrentFee(Constants.countDetailFee(solutions,new Date(),applyDetail.getStartTime())); | 
|---|
|  |  |  | //                        applyDetailMapper.updateById(applyDetail); | 
|---|
|  |  |  | sumAmount = sumAmount.add(applyDetail.getCurrentFee()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|