package com.sandu.ximon.admin.service; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.GroupParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.PoleGroup; import com.sandu.ximon.dao.domain.PoleGroupRelation; import com.sandu.ximon.dao.enums.OrderByEnums; import com.sandu.ximon.dao.mapper.PoleGroupMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; /** * 分组操作 * * @author chenjiantian */ @Service @AllArgsConstructor public class PoleGroupService extends BaseServiceImpl { private final PoleGroupRelationService poleGroupRelationService; public boolean addGroup(GroupParam param) { PoleGroup group = new PoleGroup(); if (SecurityUtils.getClientId() != null) { group.setClientId(SecurityUtils.getUserId()); } group.setGroupName(param.getGroupName()); return save(group); } public boolean updateGroup(Long groupId, GroupParam param) { PoleGroup poleGroup = getById(groupId); if (poleGroup == null) { throw new BusinessException("未找到该分组"); } PoleGroup update = new PoleGroup(); update.setGroupId(groupId); update.setGroupName(param.getGroupName()); return updateById(update); } public boolean deleteGroup(List groupIds) { List poleGroups = listByIds(groupIds); if (poleGroups.isEmpty()) { throw new BusinessException("未找到该分组"); } /** * 刪除 */ poleGroupRelationService.remove(Wrappers.lambdaQuery(PoleGroupRelation.class).in(PoleGroupRelation::getPoleGroupId, groupIds)); return removeByIds(groupIds); } public List groupList(BaseConditionVO baseConditionVO, String keyword, Integer order, Integer seq) { Long clientId = SecurityUtils.getClientId(); //排序字段 String orderByResult = "group_id"; //正序、倒叙 String orderBySeq = OrderByEnums.ASC.getCode(); if (order != null) { switch (order) { case 1: orderByResult = OrderByEnums.POLE_GROUP_UPDATE_TIME.getCode(); break; case 2: orderByResult = OrderByEnums.POLE_GROUP_CREATE_TIME.getCode(); break; default: } } if (seq != null) { switch (seq) { case 1: orderBySeq = OrderByEnums.ASC.getCode(); break; case 2: orderBySeq = OrderByEnums.DESC.getCode(); break; default: break; } } //排序方式 String orderBy = orderByResult + " " + orderBySeq; if (baseConditionVO != null) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy); } List list; if (clientId == null) { list = list(Wrappers.lambdaQuery(PoleGroup.class).like(PoleGroup::getGroupName, keyword)); } else { list = list(Wrappers.lambdaQuery(PoleGroup.class).eq(PoleGroup::getClientId, clientId).like(PoleGroup::getGroupName, keyword)); } list.forEach(poleGroup -> { poleGroup.setPoleCount(poleGroupRelationService.list(Wrappers.lambdaQuery(PoleGroupRelation.class).eq(PoleGroupRelation::getPoleGroupId, poleGroup.getGroupId())).size()); }); return list; } /** * 绑定灯杆 */ public boolean bindPole(Long groupId, List poleIdList) { PoleGroup poleGroup = getById(groupId); if (poleGroup == null) { throw new BusinessException("未找到该分组"); } return poleGroupRelationService.saveBinding(groupId, poleIdList); } }