k94314517
2024-04-01 ade22c0c65473ab6b56ca2bd0dd2c77014eb1f13
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -13,10 +13,12 @@
import com.doumee.dao.business.*;
import com.doumee.dao.business.dto.SaveUnionApplyDTO;
import com.doumee.dao.business.dto.SaveUnionChangeDTO;
import com.doumee.dao.business.dto.SmsCheckDTO;
import com.doumee.dao.business.dto.UnionChangeBXDDTO;
import com.doumee.dao.business.join.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CountCyclePriceVO;
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.UnionChangeService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,6 +30,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -82,6 +85,13 @@
    @Autowired
    private InsuranceApplyMapper insuranceApplyMapper;
    @Value("${debug_model}")
    private boolean debugModel;
    @Autowired
    private SmsEmailService smsEmailService;
    @Autowired
    private MultifileMapper multifileMapper;
    @Override
    public Integer create(UnionChange unionChange) {
        unionChangeMapper.insert(unionChange);
@@ -127,6 +137,31 @@
        return unionChangeMapper.selectById(id);
    }
    @Override
    public UnionChange getDetail(Integer id){
        UnionChange unionChange = unionChangeJoinMapper.selectJoinOne(UnionChange.class,
                new MPJLambdaWrapper<UnionChange>()
                        .selectAll(UnionChange.class)
                 .selectAs(UnionApply::getCode,UnionChange::getApplyCode)
                .selectAs(Solutions::getName,UnionChange::getSolutionsName)
                .selectAs(UnionApply::getStartTime,UnionChange::getStartTime)
                .selectAs(UnionApply::getEndTime,UnionChange::getEndTime)
                .selectAs(Company::getName,UnionChange::getShopName)
                .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 0  )",UnionChange::getAddNum)
                .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 1  )",UnionChange::getDelNum)
                .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 2  )",UnionChange::getChangeNum)
                .leftJoin(UnionApply.class,UnionApply::getId,UnionChange::getUnionApplyId)
                .leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId)
                .leftJoin(Company.class,Company::getId,UnionChange::getShopId)
                        .eq(UnionChange::getId,id)
                        .last(" limit 1 ")
        );
        return unionChange;
    }
    @Override
    public UnionChange findOne(UnionChange unionChange) {
        QueryWrapper<UnionChange> wrapper = new QueryWrapper<>(unionChange);
@@ -142,59 +177,78 @@
    @Override
    public PageData<UnionChange> findPage(PageWrap<UnionChange> pageWrap) {
        IPage<UnionChange> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<UnionChange> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<UnionChange> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(UnionChange.class);
        queryWrapper.selectAs(UnionApply::getCode,UnionChange::getApplyCode)
        .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 0  )",UnionChange::getAddNum)
        .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 1  )",UnionChange::getDelNum)
        .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 2  )",UnionChange::getChangeNum);
        queryWrapper.leftJoin(UnionApply.class,UnionApply::getId,UnionChange::getUnionApplyId);
        queryWrapper.leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId);
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user.getType().equals(Constants.TWO)){
            queryWrapper.eq(UnionChange::getShopId, pageWrap.getModel().getShopId());
        }
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(UnionChange::getId, pageWrap.getModel().getId());
            queryWrapper.eq(UnionChange::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(UnionChange::getCreator, pageWrap.getModel().getCreator());
            queryWrapper.eq(UnionChange::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getQueryStartTime() != null) {
            queryWrapper.ge(UnionChange::getCreateDate, pageWrap.getModel().getQueryStartTime() +" 00:00:00" );
        }
        if (pageWrap.getModel().getQueryEndTime() != null) {
            queryWrapper.le(UnionChange::getCreateDate, pageWrap.getModel().getQueryEndTime() +" 23:59:59");
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(UnionChange::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(UnionChange::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
            queryWrapper.ge(UnionChange::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.le(UnionChange::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(UnionChange::getEditor, pageWrap.getModel().getEditor());
            queryWrapper.eq(UnionChange::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(UnionChange::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(UnionChange::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
            queryWrapper.ge(UnionChange::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.le(UnionChange::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(UnionChange::getIsdeleted, pageWrap.getModel().getIsdeleted());
            queryWrapper.eq(UnionChange::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(UnionChange::getRemark, pageWrap.getModel().getRemark());
            queryWrapper.eq(UnionChange::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(UnionChange::getSortnum, pageWrap.getModel().getSortnum());
            queryWrapper.eq(UnionChange::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getShopId() != null) {
            queryWrapper.lambda().eq(UnionChange::getShopId, pageWrap.getModel().getShopId());
            queryWrapper.eq(UnionChange::getShopId, pageWrap.getModel().getShopId());
        }
        if (pageWrap.getModel().getCode() != null) {
            queryWrapper.lambda().eq(UnionChange::getCode, pageWrap.getModel().getCode());
            queryWrapper.eq(UnionChange::getCode, pageWrap.getModel().getCode());
        }
        if (pageWrap.getModel().getApplyStartTime() != null) {
            queryWrapper.lambda().ge(UnionChange::getApplyStartTime, Utils.Date.getStart(pageWrap.getModel().getApplyStartTime()));
            queryWrapper.lambda().le(UnionChange::getApplyStartTime, Utils.Date.getEnd(pageWrap.getModel().getApplyStartTime()));
            queryWrapper.ge(UnionChange::getApplyStartTime, Utils.Date.getStart(pageWrap.getModel().getApplyStartTime()));
            queryWrapper.le(UnionChange::getApplyStartTime, Utils.Date.getEnd(pageWrap.getModel().getApplyStartTime()));
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(UnionChange::getStatus, pageWrap.getModel().getStatus());
            queryWrapper.eq(UnionChange::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getValidTime() != null) {
            queryWrapper.lambda().ge(UnionChange::getValidTime, Utils.Date.getStart(pageWrap.getModel().getValidTime()));
            queryWrapper.lambda().le(UnionChange::getValidTime, Utils.Date.getEnd(pageWrap.getModel().getValidTime()));
            queryWrapper.ge(UnionChange::getValidTime, Utils.Date.getStart(pageWrap.getModel().getValidTime()));
            queryWrapper.le(UnionChange::getValidTime, Utils.Date.getEnd(pageWrap.getModel().getValidTime()));
        }
        if (pageWrap.getModel().getValidCode() != null) {
            queryWrapper.lambda().eq(UnionChange::getValidCode, pageWrap.getModel().getValidCode());
            queryWrapper.eq(UnionChange::getValidCode, pageWrap.getModel().getValidCode());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(UnionChange::getType, pageWrap.getModel().getType());
            queryWrapper.eq(UnionChange::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getSignApplyNo() != null) {
            queryWrapper.lambda().eq(UnionChange::getSignApplyNo, pageWrap.getModel().getSignApplyNo());
            queryWrapper.eq(UnionChange::getSignApplyNo, pageWrap.getModel().getSignApplyNo());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -203,7 +257,8 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(unionChangeMapper.selectPage(page, queryWrapper));
        PageData<UnionChange> pageData = PageData.from(unionChangeJoinMapper.selectJoinPage(page,UnionChange.class, queryWrapper));
        return pageData;
    }
    @Override
@@ -369,17 +424,24 @@
    /**
     * 合并单(加减保/换厂) - 投保申请签署
     * @param id
     * @param smsCheckDTO
     * @return
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public  String getSignLink(Integer id) {
        if(id == null ){
    public  String getSignLink(SmsCheckDTO smsCheckDTO) {
        if(Objects.isNull(smsCheckDTO)
                || Objects.isNull(smsCheckDTO.getBusinessId())
                || StringUtils.isBlank(smsCheckDTO.getCode())
        ){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //验证 验证码
        if(!debugModel){
            smsEmailService.validateCode(smsCheckDTO.getCode());
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        UnionChange unionChange = this.unionChangeDetail(id);
        UnionChange unionChange = this.unionChangeDetail(smsCheckDTO.getBusinessId());
        if(Objects.isNull(unionChange)||!Constants.equalsInteger(unionChange.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
@@ -434,8 +496,8 @@
        if(Objects.isNull(unionChangeBXDDTO)
            || Objects.isNull(unionChangeBXDDTO.getId())
                || Objects.isNull(unionChangeBXDDTO.getApplyDate())
                || StringUtils.isBlank(unionChangeBXDDTO.getFileName())
                || StringUtils.isBlank(unionChangeBXDDTO.getFileUrl())
                || StringUtils.isBlank(unionChangeBXDDTO.getName())
                || StringUtils.isBlank(unionChangeBXDDTO.getFileurl())
                || StringUtils.isBlank(unionChangeBXDDTO.getCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -465,14 +527,60 @@
                        .selectAs(InsuranceApply::getCode,ApplyChange::getApplyCode)
                        .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
                        .eq(ApplyChange::getUnionChangeId,unionChange.getId()));
        //存储合并单保险单
        Multifile multifile = new Multifile();
        multifile.setIsdeleted(Constants.ZERO);
        multifile.setCreator(user.getId());
        multifile.setCreateDate(new Date());
        multifile.setObjId(unionChangeBXDDTO.getId());
        multifile.setCreateDate(new Date());
        multifile.setObjType(Constants.MultiFile.WTB_CA_DONE_PDF.getKey());
        multifile.setType(Constants.TWO);
        multifile.setFileurl(unionChangeBXDDTO.getFileurl());
        multifile.setName(unionChangeBXDDTO.getName());
        multifileMapper.insert(multifile);
        if(CollectionUtils.isNotEmpty(unionChangeBXDDTO.getApplyChangeBXDList())){
            //查询是否不存在当前合并单的数据
            if(applyChangeJoinMapper.selectCount(new QueryWrapper<ApplyChange>()
                    .lambda().ne(ApplyChange::getUnionChangeId,unionChangeBXDDTO.getId())
                    .in(ApplyChange::getId,
                            unionChangeBXDDTO.getApplyChangeBXDList().stream().map(m->m.getObjId()).collect(Collectors.toList())
                    )
            )>Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"批单明细记录存在非本合并单数据");
            };
            for (Multifile m:unionChangeBXDDTO.getApplyChangeBXDList()) {
                if(Objects.isNull(m.getObjId())
                        ||StringUtils.isBlank(m.getFileurl())
                        ||StringUtils.isBlank(m.getName())
                ){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"加减保/换厂业务批单文件信息缺失");
                }
                multifile.setIsdeleted(Constants.ZERO);
                multifile.setCreator(user.getId());
                multifile.setCreateDate(new Date());
                multifile.setCreateDate(new Date());
                multifile.setObjType(Constants.MultiFile.CA_PD_PDF.getKey());
                multifile.setType(Constants.TWO);
                multifileMapper.insert(multifile);
            }
        }
        if(CollectionUtils.isNotEmpty(applyChangeList)){
            for (ApplyChange applyChange:applyChangeList) {
                applyChange.setApplyStartTime(unionChangeBXDDTO.getApplyDate());
                applyChange.setValidTime(unionChangeBXDDTO.getApplyDate());
                applyChange.setEditDate(new Date());
                applyChange.setEditor(user.getId());
                applyChange.setStatus(Constants.ApplyChangeStatus.APPROVE.getKey());
                List<ApplyChagneDetail> allList = applyChagneDetailJoinMapper.selectList(new QueryWrapper<ApplyChagneDetail>().lambda().eq(ApplyChagneDetail::getApplyChangeId,applyChange.getId()));
                this.dealApplyChangeDetail(applyChange,allList);
                applyChange.setCode(unionChangeBXDDTO.getCode());
                applyChange.setCheckUserId(user.getId());
                applyChangeJoinMapper.updateById(applyChange);
            }
        }
        unionChangeMapper.update(null,new UpdateWrapper<UnionChange>().lambda()