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.*; import com.doumee.dao.business.join.SolutionWorktypeJoinMapper; import com.doumee.dao.business.join.SolutionsBaseJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.SolutionsBaseService; 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.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * 保险方案信息表Service实现 * @author 江蹄蹄 * @date 2024/10/28 19:16 */ @Service public class SolutionsBaseServiceImpl implements SolutionsBaseService { @Autowired private SolutionsBaseMapper solutionsBaseMapper; @Autowired private SolutionsBaseJoinMapper solutionsBaseJoinMapper; @Autowired private InsuranceMapper insuranceMapper; @Autowired private SolutionWorktypeJoinMapper solutionWorktypeJoinMapper; @Autowired private WorktypeMapper worktypeMapper; @Autowired private CompanySolutionMapper companySolutionMapper; @Autowired private DuSolutionMapper duSolutionMapper; @Autowired private SolutionsMapper solutionsMapper; @Autowired private InsuranceApplyMapper insuranceApplyMapper; @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer create(SolutionsBase solutionsBase) { LoginUserInfo user= (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); initCreateParam(solutionsBase); if(solutionsBaseMapper.selectCount(new QueryWrapper().lambda() .eq(SolutionsBase::getName,solutionsBase.getName()) .eq(SolutionsBase::getIsdeleted,Constants.ZERO) .eq(SolutionsBase::getDataType,Constants.ZERO) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"保险主方案名称已存在"); } solutionsBase.setCreateDate(new Date()); solutionsBase.setCreator(user.getId()); solutionsBase.setEditDate(new Date()); solutionsBase.setEditor(user.getId()); solutionsBase.setIsdeleted(Constants.ZERO); solutionsBase.setStatus(Constants.ZERO); solutionsBase.setVersion(UUID.randomUUID().toString());//版本号 solutionsBase.setDataType(Constants.ZERO); //2024年6月17日15:56:18 仅支持替换模式下,批增配置日期 等于 批减配置日期 if(Constants.equalsInteger(solutionsBase.getDelOnlyReplace(),Constants.ONE)){ solutionsBase.setAddValidDays(solutionsBase.getDelValidDays()); } solutionsBaseMapper.insert(solutionsBase); //基础版本 //如果有工种,则产生一个新的有效历史版本 ~ SolutionsBase newModel = new SolutionsBase(); BeanUtils.copyProperties(solutionsBase,newModel); newModel.setId(null); newModel.setBaseId(solutionsBase.getId()); newModel.setDataType(Constants.TWO); solutionsBaseMapper.insert(newModel); dealWorkTypeInsurance(solutionsBase,newModel,solutionsBase.getWorktypeIdList()); return solutionsBase.getId(); } private void dealWorkTypeInsurance(SolutionsBase solutionsBase, SolutionsBase newModel, List worktypeIdList) { Insurance model = insuranceMapper.selectById(solutionsBase.getInsuranceId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.TWO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该保险公司信息不存在,请尝试刷新页面重试~" ); } if( !Constants.equalsInteger(model.getStatus(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该保险公司已被禁用,请尝试刷新页面重试~" ); } List worktypeList = worktypeMapper.selectList(new QueryWrapper().lambda() .eq(Worktype::getInsuranceId,solutionsBase.getInsuranceId()) .eq(Worktype::getIsdeleted,Constants.ZERO) .in(Worktype::getId,worktypeIdList)); if(worktypeList==null ||worktypeIdList.size()==0){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,工种信息选择有误,请尝试刷新页面重试~" ); } int num =0; for(Worktype type : worktypeList) { //基础版本 SolutionWorktype w = new SolutionWorktype(); w.setSolutionId(solutionsBase.getId()); w.setIsdeleted(Constants.ZERO); w.setCreator(newModel.getCreator()); w.setCreateDate(solutionsBase.getCreateDate()); w.setWorktypeId(type.getId()); w.setStatus(Constants.ZERO); w.setSortnum(num++); w.setType(Constants.ONE); solutionWorktypeJoinMapper.insert(w); //历史版本的工种信息 SolutionWorktype newType = new SolutionWorktype(); BeanUtils.copyProperties(w, newType); newType.setId(null); newType.setSolutionId(newModel.getId()); solutionWorktypeJoinMapper.insert(newType); } } private void initCreateParam(SolutionsBase solutionsBase) { if(StringUtils.isBlank(solutionsBase.getName())|| StringUtils.isBlank(solutionsBase.getCompanyName()) || Objects.isNull(solutionsBase.getValidType()) // || Objects.isNull(solutionsBase.getCanAdd()) // || Objects.isNull(solutionsBase.getCanReduce()) // || Objects.isNull(solutionsBase.getCanChangeUnit()) // || Objects.isNull(solutionsBase.getDelOnlyReplace()) || Objects.isNull(solutionsBase.getAddValidDays()) || Objects.isNull(solutionsBase.getDelValidDays()) || Objects.isNull(solutionsBase.getInsuranceId()) // || Objects.isNull(solutionsBase.getRiskDelayStatus()) // || Objects.isNull(solutionsBase.getRiskDelayTime()) // || Objects.isNull(solutionsBase.getRiskDelayUnit()) // || Objects.isNull(solutionsBase.getRiskNewUserStatus()) // || Objects.isNull(solutionsBase.getRiskNewUserTime()) // || Objects.isNull(solutionsBase.getRiskNewUserUnit()) ||solutionsBase.getInsuranceId()==null || Constants.formatIntegerNum(solutionsBase.getMaxAge()) < 0 ||Constants.formatIntegerNum(solutionsBase.getMinAge()) < 0 ||Constants.formatIntegerNum( solutionsBase.getMinAge()) >Constants.formatIntegerNum(solutionsBase.getMaxAge()) || com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(solutionsBase.getWorktypeIdList()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(Constants.equalsInteger(solutionsBase.getValidType(),Constants.ZERO) && Objects.isNull(solutionsBase.getValidTypeNum())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } @Override public void saveSolutionsRisk(SolutionsBase solutionsBase){ if( Objects.isNull(solutionsBase) || Objects.isNull(solutionsBase.getId()) ||Objects.isNull(solutionsBase.getRiskDelayStatus()) || Objects.isNull(solutionsBase.getRiskDelayTime()) || Objects.isNull(solutionsBase.getRiskDelayUnit()) || Objects.isNull(solutionsBase.getRiskNewUserStatus()) || Objects.isNull(solutionsBase.getRiskNewUserTime()) || Objects.isNull(solutionsBase.getRiskNewUserUnit())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } SolutionsBase model = solutionsBaseMapper.selectById(solutionsBase.getId()); if(Objects.isNull(model)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } solutionsBaseMapper.update(new UpdateWrapper().lambda() .set(SolutionsBase::getEditDate,new Date()) .set(SolutionsBase::getRiskDelayStatus,solutionsBase.getRiskDelayStatus()) .set(SolutionsBase::getRiskDelayTime,solutionsBase.getRiskDelayTime()) .set(SolutionsBase::getRiskDelayUnit,solutionsBase.getRiskDelayUnit()) .set(SolutionsBase::getRiskNewUserStatus,solutionsBase.getRiskNewUserStatus()) .set(SolutionsBase::getRiskNewUserTime,solutionsBase.getRiskNewUserTime()) .set(SolutionsBase::getRiskNewUserUnit,solutionsBase.getRiskNewUserUnit()) .eq(SolutionsBase::getId,solutionsBase.getId()) ); } @Override public void deleteById(Integer id) { SolutionsBase solutionsBase = solutionsBaseMapper.selectById(id); if (!Objects.isNull(solutionsBase)){ //查询主方案下所有启用版本数据中 是否存在 子方案 if(solutionsMapper.selectCount(new QueryWrapper() .lambda() .eq(Solutions::getDataType,Constants.ZERO) .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getParentId,id) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+solutionsBase.getName()+"]下存在子方案,无法进行删除"); }; } solutionsBaseMapper.deleteById(id); } @Override public void delete(SolutionsBase solutionsBase) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(solutionsBase); solutionsBaseMapper.delete(deleteWrapper); } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id:ids) { this.deleteById(id); } solutionsBaseMapper.deleteBatchIds(ids); } @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void updateById(SolutionsBase solutionsBase) { LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); SolutionsBase model = findById(solutionsBase.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } //数据有效性校验 initCreateParam(solutionsBase); //查询是否已存在使用中的保单 if(insuranceApplyMapper.selectCount(new QueryWrapper().lambda() .apply(" solution_id in ( select s.ID from solutions s where s.PARENT_ID in ( select id from solutions_base where BASE_ID = "+solutionsBase.getId()+" or id = "+solutionsBase.getId()+" ) )" ) .notIn(InsuranceApply::getStatus ,Constants.InsuranceApplyStatus.PLATFORM_RETURN ,Constants.InsuranceApplyStatus.CLOSE ,Constants.InsuranceApplyStatus.WTB_CLOSED ) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在已投保的保单数据,无法进行修改"); }; if(solutionsBaseMapper.selectCount(new QueryWrapper().lambda() .eq(SolutionsBase::getName,solutionsBase.getName()) .eq(SolutionsBase::getIsdeleted,Constants.ZERO) .eq(SolutionsBase::getDataType,Constants.ZERO) .ne(SolutionsBase::getId,solutionsBase.getId()) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"保险主方案名称已存在"); } solutionsBase.setEditor(user.getId()); solutionsBase.setVersion(UUID.randomUUID().toString()); solutionsBase.setEditDate(new Date()); //2024年6月17日15:56:18 仅支持替换模式下,批增日期 等于 批减日期 if(Constants.equalsInteger(solutionsBase.getDelOnlyReplace(),Constants.ONE)){ solutionsBase.setAddValidDays(solutionsBase.getDelValidDays()); } solutionsBaseMapper.updateById(solutionsBase); SolutionsBase oldVersion = solutionsBaseMapper.selectOne(new QueryWrapper() .lambda() .eq(SolutionsBase::getBaseId,solutionsBase.getId()) .eq(SolutionsBase::getDataType,Constants.TWO) .last("limit 1") ); if(Objects.isNull(oldVersion)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到历史版本数据"); } //如果修改,则产生一个新的历史版本 ~ SolutionsBase newModel = new SolutionsBase(); BeanUtils.copyProperties( findById(solutionsBase.getId()),newModel); newModel.setId(null); newModel.setVersion(solutionsBase.getVersion()); newModel.setCreateDate(new Date()); newModel.setBaseId(solutionsBase.getId()); newModel.setDataType(Constants.TWO); solutionsBaseMapper.insert(newModel); //删除父方案下所有工种数据 solutionWorktypeJoinMapper.delete(new UpdateWrapper() .lambda() .eq(SolutionWorktype::getSolutionId,solutionsBase.getId()) .eq(SolutionWorktype::getType,Constants.ONE) ); //删除父方案下所有子方案的工种数据 solutionWorktypeJoinMapper.delete(new UpdateWrapper() .lambda() .eq(SolutionWorktype::getType,Constants.ZERO) .apply(" SOLUTION_ID in ( select s.id from solutions s where s.PARENT_ID = "+solutionsBase.getId()+" ) ") ); dealWorkTypeInsurance(solutionsBase,newModel,solutionsBase.getWorktypeIdList()); solutionsBaseMapper.update(null,new UpdateWrapper() .lambda() .ne(SolutionsBase::getId,newModel.getId()) .eq(SolutionsBase::getBaseId,solutionsBase.getId()) .eq(SolutionsBase::getDataType,Constants.TWO) .set(SolutionsBase::getDataType,Constants.ONE) ); //更新company_solution 使用新版本的数据 companySolutionMapper.update(null, new UpdateWrapper() .lambda() .eq(CompanySolution::getStatus,Constants.ZERO) .set(CompanySolution::getSolutionId,newModel.getId()) .eq(CompanySolution::getSolutionBaseId,solutionsBase.getId()) ); //更新 du_solution 使用新版本的数据 duSolutionMapper.update(null, new UpdateWrapper() .lambda() .eq(DuSolution::getIsdeleted, Constants.ZERO) .eq(DuSolution::getStatus, Constants.ONE) .set(DuSolution::getSolutionId,newModel.getId()) .eq(DuSolution::getSolutionId,oldVersion.getId())); } @Override public void updateByIdInBatch(List solutionsBases) { if (CollectionUtils.isEmpty(solutionsBases)) { return; } for (SolutionsBase solutionsBase: solutionsBases) { this.updateById(solutionsBase); } } @Override public void updateStatus(SolutionsBase solutionsBase){ if(solutionsBase.getId() == null || solutionsBase.getStatus()==null || solutionsBase.getStatus()<0||solutionsBase.getStatus()>1){ throw new BusinessException(ResponseStatus.BAD_REQUEST ); } SolutionsBase model = findById(solutionsBase.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } if(Constants.equalsInteger(model.getStatus(),solutionsBase.getStatus())){ //如果状态不发生改变,直接返回 return; } LoginUserInfo user= (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); //同时更新基表和历史版本所有数据状态 solutionsBaseMapper.update(null,new UpdateWrapper() .lambda() .and(m -> m.eq(SolutionsBase::getId,model.getId()).or().eq(SolutionsBase::getBaseId,model.getId())) .eq(SolutionsBase::getIsdeleted,Constants.ZERO) .set(SolutionsBase::getEditDate,new Date()) .set(SolutionsBase::getEditor,user.getId()) .set(SolutionsBase::getStatus,solutionsBase.getStatus()) ); //如果是禁用,则修改方案子表的全部数据为禁用 if(Constants.equalsInteger(solutionsBase.getStatus(),Constants.ONE)){ solutionsMapper.update(null,new UpdateWrapper() .lambda() .set(Solutions::getStatus,solutionsBase.getStatus()) .set(Solutions::getEditDate,new Date()) .set(Solutions::getEditor,user.getId()) .eq(Solutions::getParentId,solutionsBase.getId()) ); } } @Override public SolutionsBase findById(Integer id) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(SolutionsBase.class); queryWrapper.selectAs(Insurance::getName,SolutionsBase::getInsuranceName); queryWrapper.selectAs(Company::getName,SolutionsBase::getShopName); queryWrapper.leftJoin(Insurance.class,Insurance::getId,SolutionsBase::getInsuranceId); queryWrapper.leftJoin(Company.class,Company::getId,SolutionsBase::getShopId); queryWrapper.eq(SolutionsBase::getId,id); SolutionsBase model = solutionsBaseJoinMapper.selectJoinOne(SolutionsBase.class,queryWrapper); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(SolutionWorktype.class); wrapper.selectAs(Worktype::getName,SolutionWorktype::getWorktypeName); wrapper.leftJoin(Worktype.class,Worktype::getId,SolutionWorktype::getWorktypeId); wrapper.eq(SolutionWorktype::getSolutionId,id); wrapper.eq(SolutionWorktype::getType,Constants.ONE); wrapper.eq(SolutionWorktype::getIsdeleted,Constants.ZERO); wrapper.orderByAsc(SolutionWorktype::getSortnum); List worktypeList = solutionWorktypeJoinMapper.selectJoinList(SolutionWorktype.class,wrapper); model.setWorktypeList(worktypeList); return model; } @Override public SolutionsBase findOne(SolutionsBase solutionsBase) { QueryWrapper wrapper = new QueryWrapper<>(solutionsBase); return solutionsBaseMapper.selectOne(wrapper); } @Override public List findList(SolutionsBase solutionsBase) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().select(SolutionsBase::getId,SolutionsBase::getName); wrapper.lambda().eq(SolutionsBase::getDataType,Constants.ZERO); wrapper.lambda().eq(SolutionsBase::getIsdeleted,Constants.ZERO); return solutionsBaseMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(SolutionsBase.class); queryWrapper.selectAs(Insurance::getName,SolutionsBase::getInsuranceName); queryWrapper.selectAs(Company::getName,SolutionsBase::getShopName); queryWrapper.leftJoin(Insurance.class,Insurance::getId,SolutionsBase::getInsuranceId); queryWrapper.leftJoin(Company.class,Company::getId,SolutionsBase::getShopId); //只查询未删除的数据 queryWrapper.eq(SolutionsBase::getIsdeleted,Constants.ZERO); //只查询基础版本数据 queryWrapper.eq(SolutionsBase::getDataType,Constants.ZERO); if (pageWrap.getModel().getName() != null) { queryWrapper.like(SolutionsBase::getName, pageWrap.getModel().getName()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } IPage iPageData = solutionsBaseJoinMapper.selectJoinPage(page,SolutionsBase.class,queryWrapper); return PageData.from(iPageData); } @Override public long count(SolutionsBase solutionsBase) { QueryWrapper wrapper = new QueryWrapper<>(solutionsBase); return solutionsBaseMapper.selectCount(wrapper); } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void createSolutionBase(Integer solutionId){ List solutionsList = solutionsMapper.selectList(new QueryWrapper().lambda() .eq(Objects.nonNull(solutionId),Solutions::getId,solutionId) .isNull(Solutions::getParentId).eq(Solutions::getDataType,Constants.ZERO).eq(Solutions::getIsdeleted,Constants.ZERO)); for (Solutions solutions: solutionsList) { SolutionsBase solutionsBase = new SolutionsBase(); solutionsBase.setCreator(solutions.getCreator()); solutionsBase.setCreateDate(new Date()); solutionsBase.setIsdeleted(Constants.ZERO); solutionsBase.setName(solutions.getName()); solutionsBase.setStatus(solutions.getStatus()); solutionsBase.setSortnum(Constants.ZERO); solutionsBase.setInsuranceId(solutions.getInsuranceId()); solutionsBase.setValidType(solutions.getValidType()); solutionsBase.setMinAge(solutions.getMinAge()); solutionsBase.setMaxAge(solutions.getMaxAge()); solutionsBase.setSingleWorktype(solutions.getSingleWorktype()); solutionsBase.setSpecialInfo(solutions.getSpecialInfo()); solutionsBase.setSpecialAgreement(solutions.getSpecialAgreement()); solutionsBase.setOrtherInfo(solutions.getOrtherInfo()); solutionsBase.setDataType(Constants.ZERO); solutionsBase.setValidTypeNum(solutions.getValidTypeNum()); solutionsBase.setShopId(solutions.getShopId()); solutionsBase.setAddValidDays(solutions.getAddValidDays()); solutionsBase.setDelValidDays(solutions.getDelValidDays()); solutionsBase.setCanAdd(solutions.getCanAdd()); solutionsBase.setCanReduce(solutions.getCanReduce()); solutionsBase.setCanChangeUnit(solutions.getCanChangeUnit()); solutionsBase.setDelOnlyReplace(solutions.getDelOnlyReplace()); solutionsBase.setCompanyName(solutions.getCompanyName()); solutionsBase.setCompanyName(solutions.getCompanyName()); solutionsBase.setCorrectWarnTime("18:30"); solutionsBaseMapper.insert(solutionsBase); //如果有工种,则产生一个新的有效历史版本 ~ SolutionsBase newModel = new SolutionsBase(); BeanUtils.copyProperties(solutionsBase,newModel); newModel.setId(null); newModel.setBaseId(solutionsBase.getId()); newModel.setDataType(Constants.TWO); solutionsBaseMapper.insert(newModel); List solutionWorktypeList = solutionWorktypeJoinMapper.selectList(new QueryWrapper().lambda().eq(SolutionWorktype::getType,Constants.ZERO).eq(SolutionWorktype::getSolutionId,solutions.getId())); Integer num = 1; for(SolutionWorktype solutionWorktype : solutionWorktypeList) { //基础版本 SolutionWorktype w = new SolutionWorktype(); w.setSolutionId(solutionsBase.getId()); w.setIsdeleted(Constants.ZERO); w.setCreator(newModel.getCreator()); w.setCreateDate(solutionsBase.getCreateDate()); w.setStatus(Constants.ZERO); w.setSortnum(num++); w.setWorktypeId(solutionWorktype.getWorktypeId()); w.setType(Constants.ONE); solutionWorktypeJoinMapper.insert(w); //历史版本的工种信息 SolutionWorktype newType = new SolutionWorktype(); BeanUtils.copyProperties(w, newType); newType.setSolutionId(newModel.getId()); solutionWorktypeJoinMapper.insert(newType); } solutionsMapper.update(null,new UpdateWrapper().lambda().set(Solutions::getParentId,solutionsBase.getId()) .and(i->i.eq(Solutions::getId,solutions.getId()).or().eq(Solutions::getBaseId,solutions.getId())) ); } } }