package com.ruoyi.inspect.service.impl;
|
|
import cn.hutool.core.util.NumberUtil;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.constant.UserConstants;
|
import com.ruoyi.common.core.text.Convert;
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.inspect.mapper.StaffCompetencyInspectItemConfigMapper;
|
import com.ruoyi.inspect.pojo.StaffCompetencyInspectItemConfig;
|
import com.ruoyi.inspect.service.StaffCompetencyInspectItemConfigService;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author 27233
|
* @description 针对表【staff_competency_inspect_item_config(人员能力-检验项配置表)】的数据库操作Service实现
|
* @createDate 2026-03-26 17:16:51
|
*/
|
@Service
|
public class StaffCompetencyInspectItemConfigServiceImpl extends ServiceImpl<StaffCompetencyInspectItemConfigMapper, StaffCompetencyInspectItemConfig>
|
implements StaffCompetencyInspectItemConfigService{
|
|
|
@Override
|
public List<StaffCompetencyInspectItemConfig> selectConfigList(StaffCompetencyInspectItemConfig config) {
|
return baseMapper.selectConfigList(config);
|
}
|
|
@Override
|
public StaffCompetencyInspectItemConfig selectConfigById(Long configId) {
|
return baseMapper.selectConfigById(configId);
|
}
|
|
@Override
|
public boolean checkItemNameUnique(StaffCompetencyInspectItemConfig config) {
|
Long configId = ObjectUtils.isEmpty(config.getId()) ? -1L : config.getId();
|
StaffCompetencyInspectItemConfig info = baseMapper.checkDeptNameUnique(config.getItemName(), config.getParentId());
|
if (StringUtils.isNotNull(info) && info.getId().longValue() != configId.longValue())
|
{
|
return UserConstants.NOT_UNIQUE;
|
}
|
return UserConstants.UNIQUE;
|
}
|
|
@Override
|
public int insertConfig(StaffCompetencyInspectItemConfig config) {
|
StaffCompetencyInspectItemConfig info = baseMapper.selectConfigById(config.getParentId());
|
if(ObjectUtils.isEmpty(config.getParentId())){
|
StaffCompetencyInspectItemConfig itemConfig = baseMapper.selectOne(Wrappers.<StaffCompetencyInspectItemConfig>lambdaQuery().orderByAsc(StaffCompetencyInspectItemConfig::getParentId).last("limit 1"));
|
if(ObjectUtils.isNotEmpty(itemConfig)){
|
config.setParentId(itemConfig.getParentId()-1L);
|
}else{
|
config.setParentId(0L);
|
}
|
}
|
// 如果父节点不为正常状态,则不允许新增子节点
|
if (ObjectUtils.isNotEmpty(info) && !info.getIsEnable())
|
{
|
throw new ServiceException("检验项点停用,不允许新增");
|
}
|
if(Long.compare(config.getParentId(),0)<1){
|
config.setAncestors(config.getParentId().toString());
|
}else{
|
config.setAncestors(info.getAncestors() + "," + config.getParentId());
|
}
|
return baseMapper.insertConfig(config);
|
}
|
|
@Override
|
public int updateConfig(StaffCompetencyInspectItemConfig config) {
|
StaffCompetencyInspectItemConfig newParentConfig = baseMapper.selectConfigById(config.getParentId());
|
StaffCompetencyInspectItemConfig oldConfig = baseMapper.selectConfigById(config.getId());
|
if (StringUtils.isNotNull(newParentConfig) && StringUtils.isNotNull(oldConfig))
|
{
|
String newAncestors = newParentConfig.getAncestors() + "," + newParentConfig.getId();
|
String oldAncestors = oldConfig.getAncestors();
|
config.setAncestors(newAncestors);
|
updateConfigChildren(config.getId(), newAncestors, oldAncestors);
|
}
|
int result = baseMapper.updateConfig(config);
|
if (config.getIsEnable() && Long.compare(config.getParentId(),0)==1)
|
{
|
// 如果该检验项点是启用状态,则启用该检验项点的所有上级项点
|
updateParentConfigStatusNormal(config);
|
}
|
return result;
|
}
|
|
/**
|
* 修改该检验项点的父级项点状态
|
*
|
* @param config 当前检验项点
|
*/
|
private void updateParentConfigStatusNormal(StaffCompetencyInspectItemConfig config)
|
{
|
String ancestors = config.getAncestors();
|
List<Long> configIds = Arrays.stream(Convert.toLongArray(ancestors)).filter(f->Long.compare(f,0)>0).collect(Collectors.toList());
|
baseMapper.updateConfigStatusNormal(configIds);
|
}
|
|
/**
|
* 修改子元素关系
|
*
|
* @param configId 被修改的检验项点ID
|
* @param newAncestors 新的父ID集合
|
* @param oldAncestors 旧的父ID集合
|
*/
|
public void updateConfigChildren(Long configId, String newAncestors, String oldAncestors)
|
{
|
List<StaffCompetencyInspectItemConfig> children = baseMapper.selectChildrenConfigById(configId);
|
for (StaffCompetencyInspectItemConfig child : children)
|
{
|
child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
|
}
|
if (!children.isEmpty())
|
{
|
baseMapper.updateConfigChildren(children);
|
}
|
}
|
|
@Override
|
public boolean hasChildByConfigId(Long configId) {
|
int result = baseMapper.hasChildByConfigId(configId);
|
return result > 0;
|
}
|
|
@Override
|
public int deleteConfigById(Long configId) {
|
return baseMapper.deleteById(configId);
|
}
|
|
@Override
|
public int selectNormalChildrenConfigById(Long configId) {
|
return baseMapper.selectNormalChildrenConfigById(configId);
|
}
|
}
|