jiangping
2024-01-31 1c7343125d71a707bb9ed6c6c37bb5823b72eb04
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -17,6 +17,7 @@
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;
@@ -86,6 +87,8 @@
    private MemberMapper memberMapper;
    @Autowired
    private DuSolutionMapper duSolutionMapper;
    @Autowired
    private DuSolutionJoinMapper duSolutionJoinMapper;
    @Autowired
    private DuWorktypeMapper duWorktypeMapper;
@@ -704,7 +707,12 @@
            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()));
@@ -1044,7 +1052,7 @@
        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)
@@ -1055,6 +1063,11 @@
        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);
@@ -1231,12 +1244,13 @@
     */
    @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)){
@@ -1249,8 +1263,17 @@
                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());
                    }
                }