123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- package com.huaxu.service;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.huaxu.common.Reflections;
- import com.huaxu.common.StringUtils;
- import com.huaxu.dao.SceneImageMapper;
- import com.huaxu.dao.SceneMapper;
- import com.huaxu.dto.DeviceDto;
- import com.huaxu.entity.DeviceSceneEntity;
- import com.huaxu.entity.SceneEntity;
- import com.huaxu.entity.SceneImageEntity;
- import com.huaxu.entity.SceneTypeEntity;
- import com.huaxu.model.AjaxMessage;
- import com.huaxu.model.LoginUser;
- import com.huaxu.model.ResultStatus;
- import com.huaxu.util.OrgInfoUtil;
- import com.huaxu.util.Snowflake;
- import com.huaxu.util.UserUtil;
- import javafx.scene.Scene;
- import org.apache.ibatis.annotations.Param;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import javax.annotation.Resource;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.*;
- import static com.google.common.collect.Lists.newArrayList;
- /**
- * 场景信息Service接口
- *
- * @author: WYY
- * @date 2020-11-17 21:15
- */
- @Service
- public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
- @Resource
- private SceneMapper sceneMapper;
- @Resource
- private SceneImageService sceneImageService;
- @Autowired
- private OrgInfoUtil orgInfoUtil;
- @Autowired
- private DeviceSceneService deviceSceneService;
- /**
- * 自定义分页查询,含关联实体对像
- */
- public IPage<SceneEntity> findPage(IPage<SceneEntity> page, SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- //分页查询父级节点的信息
- Page<SceneEntity> sceneEntityPage = sceneMapper.findPage(page, sceneEntity);
- //查询子节点的信息
- List<SceneEntity> sceneEntities = newArrayList();
- for (SceneEntity item : sceneEntityPage.getRecords()) {
- sceneEntities.addAll(findByParentLike(item.getId()));
- }
- for (SceneEntity item : sceneEntities) {
- if (item.getCompanyOrgId() != null)
- item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
- if (item.getDeptOrgId() != null)
- item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId().intValue()));
- }
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- sceneEntityPage.setRecords(sceneTree);
- return sceneEntityPage;
- }
- public static List<SceneEntity> getSceneTree(List<SceneEntity> list, Long id, Integer leve) {
- List<SceneEntity> temList = newArrayList();
- if (list != null) {
- for (SceneEntity sceneEntity : list) {
- if (id.equals(sceneEntity.getParentSceneId())) {
- List<SceneEntity> chidren = getSceneTree(list, sceneEntity.getId(), ++leve);
- SceneEntity temMeanu = new SceneEntity();
- BeanUtils.copyProperties(sceneEntity, temMeanu);
- temMeanu.setChildren(chidren);
- temList.add(temMeanu);
- leve--;
- }
- }
- }
- if (temList.size() > 0) {
- return temList;
- } else {
- return null;
- }
- }
- /**
- * 查列表
- */
- public List<SceneEntity> findAllList(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> sceneEntities = sceneMapper.findList(sceneEntity);
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- return sceneTree;
- }
- /**
- * 查列表
- */
- public List<SceneEntity> findList(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- return sceneMapper.findList(sceneEntity);
- }
- /**
- * 批量删除
- */
- @Transactional(rollbackFor = Exception.class)
- public boolean delSceneByIds(Long[] ids) {
- return this.removeByIds(Arrays.asList(ids));
- }
- /**
- * 单个删除
- */
- public boolean delSceneById(Long id) {
- return this.removeById(id);
- }
- /**
- * 保存
- */
- public boolean addScene(SceneEntity scene) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- if (currentUser != null) {
- scene.setCreateBy(currentUser.getName());
- scene.setUpdateBy(currentUser.getName());
- scene.setDateUpdate(new Date());
- scene.setDateCreate(new Date());
- }
- if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
- scene.setDeptOrgId(null);
- // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体
- if (scene.getParentSceneId() == null || StringUtils.isBlank(scene.getParentSceneId().toString())) {
- scene.setParentSceneId(Long.valueOf(0));
- } else {
- scene.setParentSceneId(scene.getParentSceneId());
- }
- if (scene.getParentSceneId() == null) {
- scene.setParentSceneIds("0,");
- }
- //查询父节点信息
- SceneEntity sceneEntity = sceneMapper.findSceneById(scene.getParentSceneId());
- if (this.save(scene)) {
- Long id = scene.getId();
- // 设置新的父节点串
- if (sceneEntity != null) {
- scene.setParentSceneIds(sceneEntity.getParentSceneIds() + id + ",");
- } else {
- scene.setParentSceneIds("0," + id + ",");
- }
- sceneMapper.updateById(scene);
- //增加场景图片
- if (scene.getSceneImages() != null) {
- for (SceneImageEntity sceneImage : scene.getSceneImages()) {
- sceneImage.setCreateBy(currentUser.getName());
- sceneImage.setDateCreate(new Date());
- sceneImage.setDateUpdate(new Date());
- sceneImage.setSceneId(id);
- sceneImage.setStatus(1);
- sceneImage.setUpdateBy(currentUser.getName());
- }
- sceneImageService.saveBatch(scene.getSceneImages());
- }
- return true;
- }
- return false;
- }
- /**
- * 根据父级ID查询所有子节点及本身
- */
- public List<SceneEntity> findByParentLike(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- if (id != null)
- scene.setParentSceneIds("%," + id + ",%");
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- return list;
- }
- /**
- * 根据父级ID查询所有子节点及本身
- */
- public List<Long> findByParentIdsLike(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- if (id != null)
- scene.setParentSceneIds("%," + id + ",%");
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- List<Long> longs = newArrayList();
- for (SceneEntity item : list) {
- longs.add(item.getId());
- }
- return longs;
- }
- /**
- * 根据父级ID查询所有子节点及本身
- */
- public List<Long> findByParentIdsByCom(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setCompanyOrgId(id);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- List<Long> longs = newArrayList();
- for (SceneEntity item : list) {
- longs.add(item.getId());
- }
- return longs;
- }
- /**
- * 修改根居ID
- */
- public boolean updateSceneById(SceneEntity scene) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- scene.setUpdateBy(currentUser.getName());
- if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0)
- scene.setDeptOrgId(null);
- // 获取修改前的parentIds,用于更新子节点的parentIds
- SceneEntity cScene = sceneMapper.findSceneById(scene.getId());
- String oldParentIds = cScene.getParentSceneIds();
- // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体
- if (scene.getParentSceneId() == null || StringUtils.isBlank(scene.getParentSceneId().toString())) {
- scene.setParentSceneId(Long.valueOf(0));
- } else {
- scene.setParentSceneId(scene.getParentSceneId());
- }
- if (scene.getParentSceneId() == null) {
- scene.setParentSceneIds("0,");
- }
- //查询父节点信息
- SceneEntity sceneEntity = sceneMapper.findSceneById(scene.getParentSceneId());
- if (this.updateById(scene)) {
- // 设置新的父节点串
- if (sceneEntity != null) {
- scene.setParentSceneIds(sceneEntity.getParentSceneIds() + scene.getId() + ",");
- } else {
- scene.setParentSceneIds("0," + scene.getId() + ",");
- }
- sceneMapper.updateById(scene);
- // 更新子节点 parentIds
- Class<SceneEntity> entityClass = Reflections.getClassGenricType(getClass(), 1);
- SceneEntity o = null;
- try {
- o = entityClass.newInstance();
- } catch (Exception e) {
- }
- o.setParentSceneIds("%," + scene.getId() + ",%");
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(o);
- for (SceneEntity e : list) {
- if (!e.getId().equals(scene.getId()) && e.getParentSceneId() != null && oldParentIds != null) {
- e.setParentSceneIds(e.getParentSceneIds().replace(oldParentIds, scene.getParentSceneIds()));
- e.setDeptOrgId(scene.getDeptOrgId());
- e.setCompanyOrgId(scene.getCompanyOrgId());
- sceneMapper.updateById(e);
- }
- }
- //删除之前的图片信息
- sceneImageService.updateBySceneId(scene.getId());
- //增加场景图片
- if (scene.getSceneImages() != null) {
- for (SceneImageEntity sceneImage : scene.getSceneImages()) {
- sceneImage.setCreateBy(currentUser.getName());
- sceneImage.setDateCreate(new Date());
- sceneImage.setDateUpdate(new Date());
- sceneImage.setSceneId(scene.getId());
- sceneImage.setStatus(1);
- sceneImage.setUpdateBy(currentUser.getName());
- }
- sceneImageService.saveBatch(scene.getSceneImages());
- }
- return true;
- }
- return false;
- }
- /**
- * 根居ID获取对象
- */
- public SceneEntity findSceneById(Long id) {
- SceneEntity sceneEntity = sceneMapper.findSceneById(id);
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(id);
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- sceneEntity.setSceneImages(sceneImageEntities);
- return sceneEntity;
- }
- public List<SceneEntity> findBySceneTypeIds(Long[] Ids) {
- return sceneMapper.findBySceneTypeIds(Ids);
- }
- public List<SceneEntity> findByParentSceneIds(Long[] Ids) {
- return sceneMapper.findByParentSceneIds(Ids);
- }
- public List<SceneEntity> selectByTypeName(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- return sceneMapper.selectByTypeName(sceneEntity);
- }
- public List<SceneEntity> findByParentId(Long id) {
- SceneEntity sceneEntity = new SceneEntity();
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- if (id != null)
- sceneEntity.setParentSceneIds("%," + id + ",%");
- List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
- for (SceneEntity item : sceneEntities) {
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(item.getId());
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- item.setSceneImages(sceneImageEntities);
- }
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- return sceneTree;
- }
- /**
- * 根据场景id查询一级场景信息
- */
- public SceneEntity findParentSceneById(Long id) {
- return sceneMapper.findParentSceneById(id);
- }
- public void saveUpdateBatch(List<DeviceSceneEntity> deviceScenes) {
- //先进行查询判断哪些设备已经被保存
- }
- public List<SceneEntity> selectByTypeNameForCom(SceneEntity sceneEntity, Long companyOrgId) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
- //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- sceneEntity.setCompanyOrgId(companyOrgId);
- return sceneMapper.selectByTypeName(sceneEntity);
- }
- }
|