nidapeng
2024-03-20 c9f07c1f79e7ea9eb00925975d3ae2c9e8dcbd25
server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
@@ -1,20 +1,35 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.UnionApplyMapper;
import com.doumee.dao.business.dto.SaveUnionApplyDTO;
import com.doumee.dao.business.join.InsuranceApplyJoinMapper;
import com.doumee.dao.business.model.InsuranceApply;
import com.doumee.dao.business.model.Solutions;
import com.doumee.dao.business.model.UnionApply;
import com.doumee.service.business.UnionApplyService;
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.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 合并投保单信息表Service实现
@@ -26,6 +41,9 @@
    @Autowired
    private UnionApplyMapper unionApplyMapper;
    @Autowired
    private InsuranceApplyJoinMapper insuranceApplyJoinMapper;
    @Override
    public Integer create(UnionApply unionApply) {
@@ -166,4 +184,66 @@
        QueryWrapper<UnionApply> wrapper = new QueryWrapper<>(unionApply);
        return unionApplyMapper.selectCount(wrapper);
    }
    @Override
    public void merge(SaveUnionApplyDTO saveUnionApplyDTO){
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user.getType().equals(Constants.TWO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户用户,无法进行该操作");
        }
        if(Objects.isNull(saveUnionApplyDTO)
            || Objects.isNull(saveUnionApplyDTO.getApplyIds())
            || Objects.isNull(saveUnionApplyDTO.getStartDate())
            || Objects.isNull(saveUnionApplyDTO.getEndDate())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
                new MPJLambdaWrapper<InsuranceApply>()
                        .selectAll(InsuranceApply.class)
                        .selectAs(InsuranceApply::getSolutionBaseId,Solutions::getBaseId)
                        .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                        .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
                        .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.PLATFORM_CHECK_PASS.getKey())
                        .eq(Solutions::getBaseId,saveUnionApplyDTO.getBaseSolutionId())
                        .in(InsuranceApply::getId,saveUnionApplyDTO.getApplyIds())
                        .isNull(InsuranceApply::getUnionApplyId)
        );
        //查询数据是否存在未处于审批通过的数据
        if(insuranceApplyList.size()!=saveUnionApplyDTO.getApplyIds().size()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在数据已处理,请刷新重试");
        }
        UnionApply unionApply = new UnionApply();
        unionApply.setCreateDate(new Date());
        unionApply.setCreator(user.getId());
        unionApply.setCompanyId(user.getCompanyId());
        unionApply.setStartTime(saveUnionApplyDTO.getStartDate());
        unionApply.setEndTime(saveUnionApplyDTO.getEndDate());
        unionApply.setCheckDate(new Date());
        unionApply.setStatus(Constants.UnionApplyStatus.UPLOAD.getKey());
        unionApply.setCheckUserId(user.getId());
        unionApply.setFee(insuranceApplyList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
        unionApply.setCurrentFee(BigDecimal.ZERO);
        unionApplyMapper.insert(unionApply);
        insuranceApplyJoinMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda()
                .set(InsuranceApply::getUnionApplyId,unionApply.getId())
                .set(InsuranceApply::getCheckDate,new Date())
                .set(InsuranceApply::getCheckUserId,user.getId())
                .in(InsuranceApply::getId,saveUnionApplyDTO.getApplyIds()));
    }
    public void cancelMerge(Integer id){
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user.getType().equals(Constants.TWO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户用户,无法进行该操作");
        }
    }
}