wangyangyang il y a 4 ans
Parent
commit
50842b19fd

+ 100 - 0
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -0,0 +1,100 @@
+package com.huaxu.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.dto.DeviceDto;
+import com.huaxu.entity.SceneTypeEntity;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.Pagination;
+import com.huaxu.model.ResultStatus;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.ui.ModelMap;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Date;
+import org.springframework.web.bind.annotation.*;
+import com.huaxu.entity.SceneEntity;
+import com.huaxu.service.SceneService;
+
+/**
+ * 场景信息页面控制器
+ * @author WYY
+ * @date 2020-11-17 21:15
+ */
+@RestController
+@RequestMapping("/scene/scene")
+@Api(tags = "场景管理")
+public class SceneController {
+    @Autowired
+    private SceneService sceneService;
+
+    @ApiOperation(value = "分页查询场景")
+    @RequestMapping(value = "/selectPage",method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Pagination<SceneEntity>>  selectPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam(value = "sceneName", required = false) String sceneName) {
+        IPage<SceneEntity> iPage = new Page<>(pageNum, pageSize);
+        SceneEntity sceneEntity = new SceneEntity();
+        sceneEntity.setSceneName(sceneName);
+        iPage = sceneService.findPage(iPage, sceneEntity);
+        Pagination<SceneEntity> pages = new Pagination<>(iPage);
+        return new AjaxMessage<>(ResultStatus.OK, pages);
+    }
+    @ApiOperation(value = "查询场景树")
+    @RequestMapping(value = "/selectList", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<List<SceneEntity>> allList() {
+        SceneEntity sceneEntity = new SceneEntity();
+        List<SceneEntity> menuEntities = sceneService.findAllList(sceneEntity);
+        return new AjaxMessage<>(ResultStatus.OK, menuEntities);
+    }
+    /**
+     * 新增
+     */
+    @ApiOperation(value = "新增")
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Integer> addScene(@ApiParam(value = "场景", required = true) @RequestBody SceneEntity scene) {
+        int result = sceneService.addScene(scene) ? 1 : 0;
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+
+
+    /**
+     * 按ID查询场景
+     */
+    @ApiOperation(value = "按ID查询场景")
+    @RequestMapping(value = "/selectById", method = RequestMethod.GET)
+    @ResponseBody
+    public AjaxMessage<SceneEntity>  selectById(@ApiParam(value = "ID", required = true) @RequestParam Long id) {
+        SceneEntity scene = sceneService.findSceneById(id);
+        return new AjaxMessage<>(ResultStatus.OK, scene);
+    }
+
+    /**
+     * 修改保存场景信息
+     */
+    @RequestMapping(value = "/edit", method = RequestMethod.POST)
+    @ResponseBody
+    @ApiOperation(value = "修改保存场景信息")
+    public AjaxMessage<Integer> editScene(@ApiParam(value = "场景", required = true) @RequestBody SceneEntity scene) {
+        int result = sceneService.updateSceneById(scene) ? 1 : 0;
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/deleteByIds", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Integer> del(@ApiParam(value = "场景ID", required = true) @RequestBody Long[] ids) {
+        int result = sceneService.delSceneByIds(ids) ? 1 : 0;
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+}

+ 2 - 2
sms_water/src/main/java/com/huaxu/controller/SceneTypeController.java

@@ -44,9 +44,9 @@ public class SceneTypeController {
     @ApiOperation(value = "查询所有场景类型")
     @RequestMapping(value = "/selectList", method = RequestMethod.GET)
     @ResponseBody
-    public AjaxMessage<List<SceneTypeEntity>> selectAllList(@ApiParam(value = "名称", required = false) @RequestParam(required = false) String name) {
+    public AjaxMessage<List<SceneTypeEntity>> selectAllList(@ApiParam(value = "名称", required = false) @RequestParam(required = false) String sceneTypeName) {
         SceneTypeEntity sceneType = new SceneTypeEntity();
-        sceneType.setSceneTypeName(name);
+        sceneType.setSceneTypeName(sceneTypeName);
         List<SceneTypeEntity> page = sceneTypeService.findList(sceneType);
         return new AjaxMessage<>(ResultStatus.OK, page);
     }

+ 32 - 0
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -0,0 +1,32 @@
+package com.huaxu.dao;
+
+import com.huaxu.entity.SceneEntity;
+import java.io.Serializable;
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+/**
+ *
+ * sms_sceneDAO接口
+ * @author: WYY
+ * @date 2020-11-17 21:15
+ */
+@Mapper
+public interface SceneMapper extends BaseMapper<SceneEntity> {
+
+	/**
+     * 自定义分页查询
+     * @param  page
+     */
+     Page<SceneEntity> findPage(IPage<SceneEntity> page,@Param(value = "scene") SceneEntity sceneEntity);
+
+     SceneEntity findSceneById(Serializable id);
+
+
+     List<SceneEntity> findList(@Param(value = "scene") SceneEntity sceneEntity);
+
+     /**删除相关方法  使用mybatis-plus集成的 **/
+}

+ 115 - 0
sms_water/src/main/java/com/huaxu/entity/SceneEntity.java

@@ -0,0 +1,115 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.huaxu.model.ProgramItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * sms_scene
+ * @author: WYY
+ * @date 2020-11-17 21:15
+ */
+@Data
+@TableName("sms_scene")
+public class SceneEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @ApiModelProperty(value = "主键")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 租户标识 */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    /** 上级场景 */
+    @ApiModelProperty(value = "上级场景")
+    private Long parentSceneId;
+
+    /** 场景名称 */
+    @ApiModelProperty(value = "场景名称")
+    private String sceneName;
+
+    /** 所属公司 */
+    @ApiModelProperty(value = "所属公司")
+    private Long companyOrgId;
+
+    /** 所属部门 */
+    @ApiModelProperty(value = "所属部门")
+    private Long deptOrgId;
+
+    /** 场景类型 */
+    @ApiModelProperty(value = "场景类型")
+    private Long sceneTypeId;
+
+    /** 状态 */
+    @ApiModelProperty(value = "状态")
+    private Long enableState;
+
+    /** 投运时间 */
+    @ApiModelProperty(value = "投运时间",example = "2020-12-12 12:12:12")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "2020-12-12 12:12:12")
+    private Date runTime;
+
+    /** 地址 */
+    @ApiModelProperty(value = "地址")
+    private String address;
+
+    /** 经度 */
+    @ApiModelProperty(value = "经度")
+    private Double pointX;
+
+    /** 纬度 */
+    @ApiModelProperty(value = "纬度")
+    private Double pointY;
+
+    /** 数据删除标记 */
+    @TableLogic
+    @ApiModelProperty(value = "数据删除标记")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "2020-12-12 12:12:12")
+    @ApiModelProperty(value = "创建时间",example = "2020-12-12 12:12:12")
+    private Date dateCreate;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "2020-12-12 12:12:12")
+    @ApiModelProperty(value = "更新时间",example = "2020-12-12 12:12:12")
+    private Date dateUpdate;
+
+    @ApiModelProperty(value ="权限",hidden = true)
+    @TableField(exist = false)
+    @JsonIgnore
+    private List<ProgramItem> programItems;
+
+    @ApiModelProperty(value="用户权限类型")
+    @TableField(exist = false)
+    @JsonIgnore
+    private Integer permissonType;
+
+    /** 用户类型 */
+    @ApiModelProperty(value = "用户类型(-9999 超管 -999普通用户 2普通用户)")
+    @TableField(exist = false)
+    @JsonIgnore
+    private String userType;
+
+
+    @ApiModelProperty(value = "子类", position = 100)
+    @TableField(exist = false)
+    private List<SceneEntity> children;
+}

+ 1 - 1
sms_water/src/main/java/com/huaxu/entity/SceneTypeEntity.java

@@ -56,7 +56,7 @@ public class SceneTypeEntity implements Serializable {
 
     /** 更新时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "2020-12-12 12:12:12")
-    @ApiModelProperty(value = "更新时间")
+    @ApiModelProperty(value = "更新时间",example = "2020-12-12 12:12:12")
     private Date dateUpdate;
 
     @ApiModelProperty(value ="权限",hidden = true)

+ 156 - 0
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -0,0 +1,156 @@
+package com.huaxu.service;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huaxu.dao.SceneMapper;
+import com.huaxu.entity.SceneEntity;
+import com.huaxu.entity.SceneTypeEntity;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.LoginUser;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.util.UserUtil;
+import org.springframework.beans.BeanUtils;
+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.Map;
+import java.util.List;
+import java.util.Arrays;
+
+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;
+
+    /**
+     * 自定义分页查询,含关联实体对像
+     */
+    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);
+        //查询子节点的信息
+        for (SceneEntity item : sceneEntityPage.getRecords()) {
+            SceneEntity parentItem = new SceneEntity();
+            parentItem.setParentSceneId(item.getId());
+            List<SceneEntity> sceneEntities = findList(parentItem);
+            item.setChildren(sceneEntities);
+        }
+        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 (this.save(scene)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 修改根居ID
+     */
+    public boolean updateSceneById(SceneEntity scene) {
+        if (this.updateById(scene)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 根居ID获取对象
+     */
+    public SceneEntity findSceneById(Long id) {
+        return sceneMapper.findSceneById(id);
+    }
+}

+ 144 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.SceneMapper">
+    <resultMap type="SceneEntity" id="SceneResult">
+        <result property="id" column="id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="parentSceneId" column="parent_scene_id"/>
+        <result property="sceneName" column="scene_name"/>
+        <result property="companyOrgId" column="company_org_id"/>
+        <result property="deptOrgId" column="dept_org_id"/>
+        <result property="sceneTypeId" column="scene_type_id"/>
+        <result property="enableState" column="enable_state"/>
+        <result property="runTime" column="run_time"/>
+        <result property="address" column="address"/>
+        <result property="pointX" column="point_x"/>
+        <result property="pointY" column="point_y"/>
+        <result property="remark" column="remark"/>
+        <result property="status" column="status"/>
+        <result property="dateCreate" column="date_create"/>
+        <result property="createBy" column="create_by"/>
+        <result property="dateUpdate" column="date_update"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!--  实体栏位  -->
+    <sql id="sceneColumns">
+         a.id as "id" ,
+         a.tenant_id as "tenantId" ,
+         a.parent_scene_id as "parentSceneId" ,
+         a.scene_name as "sceneName" ,
+         a.company_org_id as "companyOrgId" ,
+         a.dept_org_id as "deptOrgId" ,
+         a.scene_type_id as "sceneTypeId" ,
+         a.enable_state as "enableState" ,
+         a.run_time as "runTime" ,
+         a.address as "address" ,
+         a.point_x as "pointX" ,
+         a.point_y as "pointY" ,
+         a.remark as "remark" ,
+         a.status as "status" ,
+         a.date_create as "dateCreate" ,
+         a.create_by as "createBy" ,
+         a.date_update as "dateUpdate" ,
+         a.update_by as "updateBy" 
+     </sql>
+
+    <!--  根据主键获取实体   -->
+    <select id="findSceneById" resultType="com.huaxu.entity.SceneEntity">
+        SELECT
+        <include refid="sceneColumns"/>
+        FROM sms_scene a
+        WHERE a.id = #{id} and a.status=1
+    </select>
+
+    <!--  根据获取实体List   -->
+    <select id="findList" resultType="com.huaxu.entity.SceneEntity">
+        SELECT
+        <include refid="sceneColumns"/>
+        FROM sms_scene a
+        <where>
+            a.status=1
+            <if test="scene.tenantId != null  and scene.tenantId != ''">and a.tenant_id = #{scene.tenantId}</if>
+            <if test="scene.parentSceneId != null ">and a.parent_scene_id = #{scene.parentSceneId}</if>
+            <if test="scene.sceneName != null  and scene.sceneName != ''">
+                and a.scene_name LIKE concat('%',#{scene.sceneName},'%')
+            </if>
+            <if test="scene.sceneTypeId != null ">and a.scene_type_id = #{scene.sceneTypeId}</if>
+            <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and  scene.programItems != null and scene.programItems.size() > 0">
+                <if test="scene.permissonType == 5 or scene.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="scene.permissonType == 4 or scene.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="scene.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+        </where>
+        order by  a.date_create
+    </select>
+
+    <!--  根据获取实体 page   -->
+    <select id="findPage" resultType="com.huaxu.entity.SceneEntity">
+        SELECT
+        <include refid="sceneColumns"/>
+        FROM sms_scene a
+        <where>
+            a.status=1 and a.parent_scene_id=0
+            <if test="scene.tenantId != null  and scene.tenantId != ''">and a.tenant_id = #{scene.tenantId}</if>
+            <if test="scene.parentSceneId != null ">and a.parent_scene_id = #{scene.parentSceneId}</if>
+            <if test="scene.sceneName != null  and scene.sceneName != ''">
+                and a.scene_name LIKE concat('%',#{scene.sceneName},'%')
+            </if>
+            <if test="scene.sceneTypeId != null ">and a.scene_type_id = #{scene.sceneTypeId}</if>
+            <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and  scene.programItems != null and scene.programItems.size() > 0">
+                <if test="scene.permissonType == 5 or scene.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="scene.permissonType == 4 or scene.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="scene.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+        </where>
+        order by  a.date_create
+    </select>
+</mapper>