package com.ard.inspection.service.impl; import java.util.List; import com.ard.common.annotation.DataScope; import com.ard.common.constant.UserConstants; import com.ard.common.core.domain.entity.SysUser; import com.ard.common.exception.ServiceException; import com.ard.common.utils.DateUtils; import com.ard.common.utils.SecurityUtils; import com.ard.common.utils.StringUtils; import com.ard.common.utils.spring.SpringUtils; import com.ard.inspection.domain.ArdInspectionGroup; import com.ard.inspection.mapper.ArdInspectionGroupMapper; import com.ard.inspection.service.IArdInspectionGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 精细化巡检分组Service业务层处理 * * @author xia * @date 2026-01-15 */ @Service public class ArdInspectionGroupServiceImpl implements IArdInspectionGroupService { @Autowired private ArdInspectionGroupMapper ardInspectionGroupMapper; /** * 查询精细化巡检分组 * * @param groupId 精细化巡检分组主键 * @return 精细化巡检分组 */ @Override public ArdInspectionGroup selectArdInspectionGroupByGroupId(Long groupId) { return ardInspectionGroupMapper.selectArdInspectionGroupByGroupId(groupId); } /** * 查询精细化巡检分组列表 * * @param ardInspectionGroup 精细化巡检分组 * @return 精细化巡检分组 */ @Override public List selectArdInspectionGroupList(ArdInspectionGroup ardInspectionGroup) { return ardInspectionGroupMapper.selectArdInspectionGroupList(ardInspectionGroup); } /** * 新增精细化巡检分组 * * @param ardInspectionGroup 精细化巡检分组 * @return 结果 */ @Override public int insertArdInspectionGroup(ArdInspectionGroup ardInspectionGroup) { ArdInspectionGroup inspectionGroup = ardInspectionGroupMapper.selectArdInspectionGroupByGroupId(ardInspectionGroup.getGroupParentId()); ardInspectionGroup.setAncestors(inspectionGroup.getAncestors() + "," + ardInspectionGroup.getGroupParentId()); ardInspectionGroup.setCreateTime(DateUtils.getNowDate()); return ardInspectionGroupMapper.insertArdInspectionGroup(ardInspectionGroup); } /** * 修改精细化巡检分组 * * @param ardInspectionGroup 精细化巡检分组 * @return 结果 */ @Override public int updateArdInspectionGroup(ArdInspectionGroup ardInspectionGroup) { ArdInspectionGroup newGroup = ardInspectionGroupMapper.selectArdInspectionGroupByGroupId(ardInspectionGroup.getGroupParentId()); ArdInspectionGroup oldGroup = ardInspectionGroupMapper.selectArdInspectionGroupByGroupId(ardInspectionGroup.getGroupId()); if(StringUtils.isNotNull(newGroup) && StringUtils.isNotNull(oldGroup)){ String newAncestors = newGroup.getAncestors() + "," + newGroup.getGroupId(); String oldAncestors = oldGroup.getAncestors(); ardInspectionGroup.setAncestors(newAncestors); updateInspectionGroupChildren(ardInspectionGroup.getGroupId(), newAncestors, oldAncestors); } ardInspectionGroup.setUpdateTime(DateUtils.getNowDate()); return ardInspectionGroupMapper.updateArdInspectionGroup(ardInspectionGroup); } /** * 修改子元素关系 * * @param groupId 被修改的分组ID * @param newAncestors 新的父ID集合 * @param oldAncestors 旧的父ID集合 */ public void updateInspectionGroupChildren(Long groupId, String newAncestors, String oldAncestors){ List children = ardInspectionGroupMapper.selectChildrenInspectionGroupById(groupId); for (ArdInspectionGroup child : children) { child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); } if (!children.isEmpty()){ ardInspectionGroupMapper.updateInspectionGroupChildren(children); } } /** * 删除精细化巡检分组信息 * * @param groupId 精细化巡检分组主键 * @return 结果 */ @Override public int deleteArdInspectionGroupByGroupId(Long groupId) { return ardInspectionGroupMapper.deleteArdInspectionGroupByGroupId(groupId); } /** * 校验分组名称是否唯一 * * @param ardInspectionGroup 精细化巡检分组 * @return 结果 */ @Override public boolean checkInspectionGroupNameUnique(ArdInspectionGroup ardInspectionGroup) { Long groupId = StringUtils.isNull(ardInspectionGroup.getGroupId()) ? -1L : ardInspectionGroup.getGroupId(); ArdInspectionGroup info = ardInspectionGroupMapper.checkInspectionGroupNameUnique(ardInspectionGroup.getGroupName(),ardInspectionGroup.getGroupParentId()); if (StringUtils.isNotNull(info) && info.getGroupId().longValue() != groupId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } /** * 校验分组是否有数据权限 * * @param groupId 精细化巡检分组主键 */ @Override public void checkInspectionGroupDataScope(Long groupId) { if (!SysUser.isAdmin(SecurityUtils.getUserId()) && StringUtils.isNotNull(groupId)){ ArdInspectionGroup group = new ArdInspectionGroup(); group.setGroupId(groupId); List groups = SpringUtils.getAopProxy(this).selectArdInspectionGroupList(group); if (StringUtils.isEmpty(groups)){ throw new ServiceException("没有权限访问分组数据!"); } } } /** * 是否存在分组子节点 * * @param groupId 分组ID * @return 结果 */ @Override public boolean hasChildByInspectionGroupId(Long groupId) { int result = ardInspectionGroupMapper.hasChildByInspectionGroupId(groupId); return result > 0; } /** * 查询分组是否存在用户 * * @param groupId 分组ID * @return 结果 true 存在 false 不存在 */ @Override public boolean checkInspectionGroupExistUser(Long groupId) { int result = ardInspectionGroupMapper.checkInspectionGroupExistUser(groupId); return result > 0; } }