nidapeng
2024-04-02 fe3fd82f31b4fb43f6b207715a443e96d0442b26
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.ResponseStatus;
@@ -11,12 +12,12 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
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.UnionChangeBXDDTO;
import com.doumee.dao.business.dto.*;
import com.doumee.dao.business.join.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.CountCyclePriceVO;
import com.doumee.dao.system.model.SystemUser;
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 +29,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 +84,18 @@
    @Autowired
    private InsuranceApplyMapper insuranceApplyMapper;
    @Value("${debug_model}")
    private boolean debugModel;
    @Autowired
    private SmsEmailService smsEmailService;
    @Autowired
    private MultifileMapper multifileMapper;
    @Autowired
    private ApplyLogMapper applyLogMapper;
    @Autowired
    private ApplyLogJoinMapper applyLogJoinMapper;
    @Override
    public Integer create(UnionChange unionChange) {
        unionChangeMapper.insert(unionChange);
@@ -127,6 +141,48 @@
        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 ")
        );
        if(!Objects.isNull(unionChange)){
            //查询操作记录
            List<ApplyLog> applyLogList = applyLogJoinMapper.selectJoinList(ApplyLog.class,
                    new MPJLambdaWrapper<ApplyLog>()
                            .selectAll(ApplyLog.class)
                            .selectAs(SystemUser::getRealname,ApplyLog::getCreatorName)
                            .selectAs(Company::getName,ApplyLog::getCompanyName)
                            .selectAs(SystemUser::getType,ApplyLog::getCreatorType)
                            .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator)
                            .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                            .in(ApplyLog::getObjType,Constants.ApplyLogType.getTypeList(Constants.THREE))
                            .eq(ApplyLog::getApplyId,unionChange.getId())
                            .orderByAsc(ApplyLog::getCreateDate)
            );
            unionChange.setApplyLogList(applyLogList);
        }
        return unionChange;
    }
    @Override
    public UnionChange findOne(UnionChange unionChange) {
        QueryWrapper<UnionChange> wrapper = new QueryWrapper<>(unionChange);
@@ -142,59 +198,79 @@
    @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);
        queryWrapper.selectAs(Solutions::getName,UnionChange::getSolutionsName)
        .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(Constants.equalsInteger(user.getType(),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 +279,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
@@ -234,7 +311,7 @@
                        .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
                        .eq(ApplyChange::getIsdeleted, Constants.ZERO)
                        .eq(InsuranceApply::getUnionApplyId,saveUnionChangeDTO.getUnionApplyId())
                        .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.COMPANY_SIGN.getKey())
                        .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.PALTFORM_CHECK_PASS.getKey())
                        .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
                        .eq(ApplyChange::getType,saveUnionChangeDTO.getBusinessType())
                        .in(ApplyChange::getId,saveUnionChangeDTO.getApplyIds())
@@ -265,6 +342,13 @@
        applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
                .set(ApplyChagneDetail::getUnionChangeId,unionChange.getId())
                .in(ApplyChagneDetail::getApplyId,saveUnionChangeDTO.getApplyIds()));
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD;
        ApplyLog log = new ApplyLog(unionChange,applyLogType.getName(), null
                ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange));
        applyLogMapper.insert(log);
        return unionChange.getId();
    }
@@ -275,16 +359,21 @@
    /**
     * 取消保单合并
     * @param id
     * @param closeDTO
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void cancelMerge(Integer id){
    public void cancelMerge(CloseDTO closeDTO){
        if(Objects.isNull(closeDTO)
                ||Objects.isNull(closeDTO.getId())
                ||StringUtils.isBlank(closeDTO.getReason())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user.getType().equals(Constants.TWO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户用户,无法进行该操作!");
        }
        UnionChange unionChange = unionChangeMapper.selectById(id);
        UnionChange unionChange = unionChangeMapper.selectById(closeDTO.getId());
        if(Objects.isNull(unionChange)||!Constants.equalsInteger(unionChange.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
@@ -313,6 +402,14 @@
                .set(UnionChange::getStatus,Constants.UnionApplyStatus.CLOSE.getKey())
                .eq(UnionChange::getId,unionChange.getId())
        );
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD;
        String info =applyLogType.getInfo();
        info = info.replace("${param}", closeDTO.getReason());
        ApplyLog log = new ApplyLog(unionChange,applyLogType.getName(), info
                ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange));
        applyLogMapper.insert(log);
    }
@@ -369,17 +466,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 +538,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 +569,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()
@@ -481,6 +631,12 @@
                .set(UnionChange::getEditor,user.getId())
                .eq(UnionChange::getId,unionChangeBXDDTO.getId())
        );
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD_INSURANCE;
        ApplyLog log = new ApplyLog(unionChange,applyLogType.getName(), null
                ,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange));
        applyLogMapper.insert(log);
    }