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.ProjectLabelJoinMapper; import com.doumee.dao.business.ProjectLabelMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.ProjectLabelService; 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.base.mapper.MPJJoinMapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; 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 org.yaml.snakeyaml.scanner.Constant; import java.util.Date; import java.util.List; /** * 项目诊断类型关联表Service实现 * @author 江蹄蹄 * @date 2023/04/14 14:33 */ @Service public class ProjectLabelServiceImpl implements ProjectLabelService { @Autowired private ProjectLabelMapper projectLabelMapper; @Autowired private ProjectLabelJoinMapper projectLabelJoinMapper; @Override public Integer create(ProjectLabel projectLabel) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(projectLabel.getProjectId() ==null || StringUtils.isBlank(projectLabel.getName())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按要求配置信息!"); } projectLabel.setCreateDate(new Date()); projectLabel.setEditDate(new Date()); projectLabel.setIsdeleted(Constants.ZERO); projectLabel.setCreator(loginUserInfo.getId()); projectLabel.setEditor(loginUserInfo.getId()); projectLabelMapper.insert(projectLabel); return projectLabel.getId(); } @Override public void deleteById(Integer id) { projectLabelMapper.deleteById(id); } @Override public void delete(ProjectLabel projectLabel) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(projectLabel); projectLabelMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } projectLabelMapper.deleteBatchIds(ids); } @Override public void updateById(ProjectLabel projectLabel) { LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); projectLabel.setEditor(loginUserInfo.getId()); projectLabel.setEditDate(new Date()); UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.lambda().set(ProjectLabel::getRatio,projectLabel.getRatio()) .set(ProjectLabel::getSortnum,projectLabel.getSortnum()) .eq(ProjectLabel::getId,projectLabel.getId()); projectLabelMapper.update(null,wrapper); } @Override public void updateByIdInBatch(List projectLabels) { if (CollectionUtils.isEmpty(projectLabels)) { return; } for (ProjectLabel projectLabel: projectLabels) { this.updateById(projectLabel); } } @Override public ProjectLabel findById(Integer id) { return projectLabelMapper.selectById(id); } @Override public ProjectLabel findOne(ProjectLabel projectLabel) { QueryWrapper wrapper = new QueryWrapper<>(projectLabel); return projectLabelMapper.selectOne(wrapper); } @Override public List findList(ProjectLabel projectLabel) { QueryWrapper wrapper = new QueryWrapper<>(projectLabel); return projectLabelMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper mpjWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); mpjWrapper.selectAll(ProjectLabel.class) .selectAs(Project::getName,ProjectLabel::getProjectName) .leftJoin(Project.class,Project::getId,ProjectLabel::getProjectId) .eq(pageWrap.getModel().getProjectId()!=null,ProjectLabel::getProjectId,pageWrap.getModel().getProjectId()) .eq( ProjectLabel::getIsdeleted, Constants.ZERO) .orderByAsc(ProjectLabel::getSortnum); IPage result = projectLabelJoinMapper.selectJoinPage(page, ProjectLabel.class, mpjWrapper); return PageData.from(result); } @Override public long count(ProjectLabel projectLabel) { QueryWrapper wrapper = new QueryWrapper<>(projectLabel); return projectLabelMapper.selectCount(wrapper); } }