2023-05-16 10:51:56 完成用户所属策略的查询接口!

master
魔神煜修罗皇 2 years ago
parent 229b471f33
commit e27080f07a
  1. 4
      psdc-admin/src/main/resources/application-dev.yml
  2. 2
      psdc-admin/src/main/resources/application-prop.yml
  3. 4
      psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java
  4. 8
      psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java
  5. 10
      psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java
  6. 1
      psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
  7. 74
      psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java
  8. 41
      psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
  9. 32
      psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java

@ -55,7 +55,7 @@ spring:
# 数据库驱动
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.10.99:3306/psdc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://192.168.10.99:3306/psdc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
username: hwjsolar
password: 123456
messages:
@ -139,7 +139,7 @@ mqtt:
#QOS等级 0, 1, 2
qos: 1
#客户端id 必须唯一
clientId: psdc-dev1234
clientId: psdcdev123
#连接超时,默认30000
timeOut: 10
#心跳间隔时间,默认3000

@ -54,7 +54,7 @@ spring:
# 数据库驱动
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.10.99:3306/psdc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://192.168.10.99:3306/psdc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
username: hwjsolar
password: 123456
messages:

@ -17,9 +17,9 @@ public class SceneVo {
/**
* 策略码
*/
private Integer sceneCode;
private Long sceneCode;
/** 用户id */
private Integer userId;
private Long userId;
/** 设备id */
private Integer deviceId ;
/** 设备名称 */

@ -1,5 +1,6 @@
package com.psdc.mapper;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.vo.SceneVo;
import org.apache.ibatis.annotations.Mapper;
@ -33,7 +34,12 @@ public interface PsdcSceneMapper{
*/
int insert(PsdcScene psdcScene);
/**
void InsertSceneData(@Param(value = "sceneRecord") List<SceneVo> sceneList);
void UpdateSceneData(@Param(value = "sceneRecord") List<SceneVo> sceneList);
/**
* 更新数据
*
* @param psdcScene 实例对象

@ -22,20 +22,20 @@ public interface IPsdcSceneService {
/**
* 新增数据
*
* @param psdcScene 实例对象
* @return 实例对象
* @param scenes 实例对象集合
* @return
*/
PsdcScene insert(PsdcScene psdcScene);
Boolean insert(List<SceneVo> scenes);
List<PsdcScene> sceneList();
/**
* 更新数据
*
* @param psdcScene 实例对象
* @param scenes 实例对象
* @return 实例对象
*/
PsdcScene update(PsdcScene psdcScene);
Boolean update(List<SceneVo> scenes);
/**
* 通过主键删除数据
*

@ -148,7 +148,6 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
pd.setDeviceType(2);
// 新导入的设备默认运行状态为: 关闭
pd.setDeviceRunstatus(2);
System.out.println("设备Infos: " + pd + "\n");
}
psdcDeviceMapper.saveDevicesData(devices);
return true;

@ -1,21 +1,29 @@
package com.psdc.service.impl;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.vo.SceneVo;
import com.psdc.mapper.PsdcSceneMapper;
import com.psdc.service.IPsdcSceneService;
import com.psdc.utils.SecurityUtils;
import com.psdc.utils.poi.ExcelUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.util.*;
import java.util.stream.Collectors;
import static org.springframework.transaction.annotation.Propagation.REQUIRES_NEW;
/**
* 场景设定;(psdc_scene)表服务实现类
* @date : 2023-5-10
*/
@Slf4j
@Service
public class PsdcSceneServiceImpl implements IPsdcSceneService {
@Autowired
@ -35,13 +43,27 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
/**
* 新增数据
*
* @param psdcScene 实例对象
* @return 实例对象
* @param scenes 实例对象集合
* @return Boolean
*/
public PsdcScene insert(PsdcScene psdcScene){
psdcSceneMapper.insert(psdcScene);
return psdcScene;
@Override
@Transactional(propagation = REQUIRES_NEW)
public Boolean insert(List<SceneVo> scenes){
Date date = new Date();
long timestamp = getSecondTimestampTwo(date);
long userId = SecurityUtils.getUserId();
try {
for (SceneVo sc : scenes){
sc.setSceneCode(timestamp);
sc.setUserId(userId);
}
psdcSceneMapper.InsertSceneData(scenes);
return true;
} catch (Exception e) {
e.printStackTrace();
log.info("Sorry,新增场景策略失败!+ 错误原因: {}", e.getMessage());
return false;
}
}
@Override
@ -50,17 +72,26 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
return psdcSceneMapper.sceneList(userId);
}
/**
/**
* 更新数据
*
* @param psdcScene 实例对象
* @param scenes 实例对象
* @return 实例对象
*/
public PsdcScene update(PsdcScene psdcScene){
psdcSceneMapper.update(psdcScene);
return queryById(psdcScene.getSceneId());
@Override
@Transactional(propagation = REQUIRES_NEW)
public Boolean update(List<SceneVo> scenes) {
try {
psdcSceneMapper.UpdateSceneData(scenes);
return true;
} catch (Exception e) {
e.printStackTrace();
log.info("Sorry,修改场景策略失败!+ 错误原因: {}", e.getMessage());
return false;
}
}
/**
* 通过主键删除数据
*
@ -103,7 +134,24 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
@Override
public List<SceneVo> findSceneByUserAndSceneName(Integer sceneId) {
Long userId = SecurityUtils.getUserId();
String sceneName = psdcSceneMapper.queryById(sceneId).getSceneName();
String sceneName = "";
if (0 != sceneId){
psdcSceneMapper.queryById(sceneId).getSceneName();
}
return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneName);
}
/**
* 获取精确到秒的时间戳
* @param date
* @return
*/
public static long getSecondTimestampTwo(Date date){
if (null == date) {
return 0;
}
String timestamp = String.valueOf(date.getTime()/1000);
return Long.valueOf(timestamp);
}
}

@ -14,6 +14,7 @@
</resultMap>
<resultMap type="com.psdc.entity.vo.SceneVo" id="SceneVoMap">
<result property="sceneId" column="scene_id" />
<result property="sceneName" column="scene_name" />
<result property="sceneCode" column="scene_code"/>
<result property="userId" column="user_id"/>
@ -43,6 +44,40 @@
values (#{sceneName},#{sceneCode},#{userId},#{deviceId},#{deviceSn},#{sceneContext},#{sceneKey},#{sceneValue})
</insert>
<insert id="InsertSceneData" parameterType="com.psdc.entity.vo.SceneVo" useGeneratedKeys="true">
Insert into psdc_scene(scene_name,scene_code,user_id,device_id,device_sn,scene_context,scene_key,scene_value)
Values
<foreach collection="sceneRecord" item="entity" separator=",">
(#{entity.sceneName}, #{entity.sceneCode},#{entity.userId}, #{entity.deviceId}, #{entity.deviceSn}, #{entity.sceneContext}, #{entity.sceneKey}, #{entity.sceneValue})
</foreach>
</insert>
<update id="UpdateSceneData">
<foreach collection="sceneRecord" item="item" index="index" open="" close="" separator=";">
Update psdc_scene
<set>
<if test="item.sceneName != null and item.sceneName != ''">
`scene_name`= #{item.sceneName},
</if>
<if test="item.deviceSn != null and item.deviceSn != ''">
`device_sn` = #{item.deviceSn},
</if>
<if test="item.sceneContext != null and item.sceneContext != ''">
`scene_context` = #{item.sceneContext},
</if>
<if test="item.sceneKey != null and item.sceneKey != ''">
`scene_key` = ${item.sceneKey},
</if>
<if test="item.sceneValue != null and item.sceneValue != ''">
`scene_value` = ${item.sceneValue}
</if>
</set>
<where>
`scene_id` = ${item.sceneId}
</where>
</foreach>
</update>
<!-- 更新数据 -->
<update id="update">
update psdc_scene
@ -118,9 +153,9 @@
<!-- 根据策略名称查询策略信息-->
<select id="queryBySceneName" resultMap="SceneVoMap">
select ps.scene_id,ps.scene_name,ps.scene_code,ps.user_id,pd.device_name,ps.device_id,pd.device_sn,ps.scene_context,ps.scene_key,ps.scene_value
from psdc_scene ps left join psdc_device pd on ps.device_id = pd.device_id
where ps.scene_name like concat('%', #{sceneName}, '%')
Select ps.scene_id,ps.scene_name,ps.scene_code,ps.user_id,pd.device_name,ps.device_id,pd.device_sn,ps.scene_context,ps.scene_key,ps.scene_value
From psdc_scene ps Left join psdc_device pd on ps.device_id = pd.device_id
Where ps.scene_name Like concat('%', #{sceneName}, '%')
</select>
<select id="findSceneByUserAndSceneName" resultMap="SceneVoMap">

@ -1,17 +1,20 @@
package com.psdc.controller.manager;
import com.psdc.annotation.Log;
import com.psdc.core.controller.BaseController;
import com.psdc.core.domain.AjaxResult;
import com.psdc.core.domain.entity.SysUser;
import com.psdc.core.page.TableDataInfo;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.vo.SceneVo;
import com.psdc.enums.BusinessType;
import com.psdc.service.IPsdcSceneService;
import com.psdc.utils.SecurityUtils;
import com.psdc.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
@ -55,4 +58,25 @@ public class PsdcSceneController extends BaseController {
return getDataTable(list);
}
/**
* 新增场景策略
*/
@PreAuthorize("@ss.hasPermi('system:cl:list')")
@Log(title = "策略管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody List<SceneVo> scenes) {
return toAjax(psdcSceneService.insert(scenes));
}
/**
* 修改场景策略
*/
@PreAuthorize("@ss.hasPermi('system:cl:list')")
@Log(title = "策略管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody List<SceneVo> scenes) {
return toAjax(psdcSceneService.update(scenes));
}
}

Loading…
Cancel
Save