2023-05-22 14:55:46 完成策略管理的增、删、改、查接口!

master
魔神煜修罗皇 2 years ago
parent 06193bc682
commit 7f6ed1042f
  1. 2
      psdc-admin/src/main/resources/application-dev.yml
  2. 2
      psdc-business/src/main/java/com/psdc/entity/PsdcScene.java
  3. 41
      psdc-business/src/main/java/com/psdc/entity/request/PsdcSceneRequest.java
  4. 7
      psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java
  5. 15
      psdc-business/src/main/java/com/psdc/mapper/PsdcSceneMapper.java
  6. 23
      psdc-business/src/main/java/com/psdc/service/IPsdcSceneService.java
  7. 101
      psdc-business/src/main/java/com/psdc/service/impl/PsdcSceneServiceImpl.java
  8. 37
      psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
  9. 19
      psdc-web/src/main/java/com/psdc/controller/manager/PsdcSceneController.java

@ -139,7 +139,7 @@ mqtt:
#QOS等级 0, 1, 2 #QOS等级 0, 1, 2
qos: 1 qos: 1
#客户端id 必须唯一 #客户端id 必须唯一
clientId: psdcdev123 clientId: psdc-dev1234
#连接超时,默认30000 #连接超时,默认30000
timeOut: 10 timeOut: 10
#心跳间隔时间,默认3000 #心跳间隔时间,默认3000

@ -21,7 +21,7 @@ public class PsdcScene {
/** /**
* 策略码 * 策略码
*/ */
private Integer sceneCode; private Long sceneCode;
/** 用户id */ /** 用户id */
private Integer userId; private Integer userId;
/** 设备id */ /** 设备id */

@ -0,0 +1,41 @@
package com.psdc.entity.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
/**
* @AuthorStone
* @Projectpsdc
* @FilenamePsdcSceneRequest
* @Date2023/5/16 15:02
* @Version 1.0
*/
@Data
@Component
@AllArgsConstructor
@NoArgsConstructor
public class PsdcSceneRequest {
/** 场景值 */
private Integer sceneId ;
/** 场景名 */
private String sceneName ;
/** 策略码 */
private Long sceneCode;
/** 用户id */
private Long userId;
/** 设备id */
private Integer deviceId ;
/** 进水 */
private String intemp ;
/** 出水 */
private String outtemp ;
/** 温度 */
private String temp ;
}

@ -33,4 +33,11 @@ public class SceneVo {
/** 控制值 */ /** 控制值 */
private String sceneValue ; private String sceneValue ;
public SceneVo(String sceneName, Integer deviceId, String sceneContext, String sceneKey, String sceneValue) {
this.sceneName = sceneName;
this.deviceId = deviceId;
this.sceneContext = sceneContext;
this.sceneKey = sceneKey;
this.sceneValue = sceneValue;
}
} }

@ -1,6 +1,5 @@
package com.psdc.mapper; package com.psdc.mapper;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene; import com.psdc.entity.PsdcScene;
import com.psdc.entity.vo.SceneVo; import com.psdc.entity.vo.SceneVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -15,13 +14,8 @@ import java.util.List;
*/ */
@Mapper @Mapper
public interface PsdcSceneMapper{ public interface PsdcSceneMapper{
/**
* 通过ID查询单条数据 String querySceneNameById(@Param(value = "sceneCode") Long sceneCode);
*
* @param sceneId 主键
* @return 实例对象
*/
PsdcScene queryById(Integer sceneId);
List<PsdcScene> sceneList(@Param(value = "userId") Long userId); List<PsdcScene> sceneList(@Param(value = "userId") Long userId);
@ -48,10 +42,10 @@ public interface PsdcSceneMapper{
/** /**
* 通过策略名称删除场景策略 * 通过策略名称删除场景策略
* @param sceneName * @param sceneCode
* @return * @return
*/ */
Integer deleteBySceneName(@Param(value = "sceneName") String sceneName); Integer deleteBySceneName(@Param(value = "sceneCode") Long sceneCode);
/** /**
* 更新数据 * 更新数据
@ -116,5 +110,6 @@ public interface PsdcSceneMapper{
List<SceneVo> queryBySceneName(String sceneName); List<SceneVo> queryBySceneName(String sceneName);
List<SceneVo> findSceneByUserAndSceneName(@Param(value = "userId") Long userId, List<SceneVo> findSceneByUserAndSceneName(@Param(value = "userId") Long userId,
@Param(value = "sceneCode") Long sceneCode,
@Param(value = "sceneName") String sceneName); @Param(value = "sceneName") String sceneName);
} }

@ -1,6 +1,7 @@
package com.psdc.service; package com.psdc.service;
import com.psdc.entity.PsdcScene; import com.psdc.entity.PsdcScene;
import com.psdc.entity.request.PsdcSceneRequest;
import com.psdc.entity.vo.SceneVo; import com.psdc.entity.vo.SceneVo;
import java.util.List; import java.util.List;
@ -11,20 +12,14 @@ import java.util.Map;
* @date : 2023-5-10 * @date : 2023-5-10
*/ */
public interface IPsdcSceneService { public interface IPsdcSceneService {
/**
* 通过ID查询单条数据
*
* @param sceneId 主键
* @return 实例对象
*/
PsdcScene queryById(Integer sceneId);
/** /**
* 新增数据 * 新增数据
* @param scenes 实例对象集合 * @param scenes
* @return * @return
*/ */
Boolean insert(List<SceneVo> scenes); Boolean insert(PsdcSceneRequest scenes);
Boolean insertByCode(PsdcSceneRequest scenes);
List<PsdcScene> sceneList(); List<PsdcScene> sceneList();
@ -33,16 +28,16 @@ public interface IPsdcSceneService {
* @param scenes 实例对象 * @param scenes 实例对象
* @return 实例对象 * @return 实例对象
*/ */
Boolean update(List<SceneVo> scenes); Boolean update(PsdcScene scenes);
/** /**
* 通过策略名称删除数据 * 通过策略名称删除数据
* @param sceneName * @param scene
* @return 是否成功 * @return 是否成功
*/ */
Boolean deleteBySceneName(String sceneName); Boolean deleteByScene(PsdcSceneRequest scene);
List<Map<String, Object>> getStrategyList(); List<Map<String, Object>> getStrategyList();
List<SceneVo> findSceneByUserAndSceneName(Integer sceneId); List<SceneVo> findSceneByUserAndSceneName(Long sceneCode);
} }

@ -1,18 +1,16 @@
package com.psdc.service.impl; package com.psdc.service.impl;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene; import com.psdc.entity.PsdcScene;
import com.psdc.entity.request.PsdcSceneRequest;
import com.psdc.entity.vo.SceneVo; import com.psdc.entity.vo.SceneVo;
import com.psdc.mapper.PsdcSceneMapper; import com.psdc.mapper.PsdcSceneMapper;
import com.psdc.service.IPsdcSceneService; import com.psdc.service.IPsdcSceneService;
import com.psdc.utils.SecurityUtils; import com.psdc.utils.SecurityUtils;
import com.psdc.utils.poi.ExcelUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -28,17 +26,6 @@ import static org.springframework.transaction.annotation.Propagation.REQUIRES_NE
public class PsdcSceneServiceImpl implements IPsdcSceneService { public class PsdcSceneServiceImpl implements IPsdcSceneService {
@Autowired @Autowired
private PsdcSceneMapper psdcSceneMapper; private PsdcSceneMapper psdcSceneMapper;
/**
* 通过ID查询单条数据
*
* @param sceneId 主键
* @return 实例对象
*/
public PsdcScene queryById(Integer sceneId){
return psdcSceneMapper.queryById(sceneId);
}
/** /**
@ -47,17 +34,71 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
* @return Boolean * @return Boolean
*/ */
@Override @Override
@Transactional(propagation = REQUIRES_NEW) public Boolean insert(PsdcSceneRequest scenes){
public Boolean insert(List<SceneVo> scenes){
Date date = new Date(); Date date = new Date();
long timestamp = getSecondTimestampTwo(date); long timestamp = getSecondTimestampTwo(date);
long userId = SecurityUtils.getUserId(); long userId = SecurityUtils.getUserId();
List<SceneVo> scenesList = new ArrayList<>();
if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())){
SceneVo sceneVo;
sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "进水温度", "intemp", scenes.getIntemp());
scenesList.add(sceneVo);
}
if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())){
SceneVo sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "出水温度", "outtemp", scenes.getOuttemp());
scenesList.add(sceneVo);
}
if (null != scenes.getTemp() && !"".equals(scenes.getTemp())){
SceneVo sceneVo = new SceneVo(scenes.getSceneName(), scenes.getDeviceId(), "温度", "temp", scenes.getTemp());
scenesList.add(sceneVo);
}
try { try {
for (SceneVo sc : scenes){ for (SceneVo sc : scenesList){
sc.setSceneCode(timestamp); sc.setSceneCode(timestamp);
sc.setUserId(userId); sc.setUserId(userId);
} }
psdcSceneMapper.InsertSceneData(scenes); psdcSceneMapper.InsertSceneData(scenesList);
return true;
} catch (Exception e) {
e.printStackTrace();
log.info("Sorry,新增场景策略失败!+ 错误原因: {}", e.getMessage());
return false;
}
}
/**
* 在原有策略基础上增加设备温度管理
* @param scenes
* @return
*/
@Override
public Boolean insertByCode(PsdcSceneRequest scenes) {
long userId = SecurityUtils.getUserId();
List<SceneVo> scenesList = new ArrayList<>();
String sceneName = psdcSceneMapper.querySceneNameById(scenes.getSceneCode());
Integer deviceId = scenes.getDeviceId();
if (null != scenes.getIntemp() && !"".equals(scenes.getIntemp())){
SceneVo sceneVo = new SceneVo(sceneName, deviceId, "进水温度", "intemp", scenes.getIntemp());
scenesList.add(sceneVo);
}
if (null != scenes.getOuttemp() && !"".equals(scenes.getOuttemp())){
SceneVo sceneVo = new SceneVo(sceneName, deviceId, "出水温度", "outtemp", scenes.getOuttemp());
scenesList.add(sceneVo);
}
if (null != scenes.getTemp() && !"".equals(scenes.getTemp())){
SceneVo sceneVo = new SceneVo(sceneName, deviceId, "温度", "temp", scenes.getTemp());
scenesList.add(sceneVo);
}
try {
for (SceneVo sc : scenesList){
sc.setSceneCode(scenes.getSceneCode());
sc.setUserId(userId);
}
psdcSceneMapper.InsertSceneData(scenesList);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -80,9 +121,9 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
*/ */
@Override @Override
@Transactional(propagation = REQUIRES_NEW) @Transactional(propagation = REQUIRES_NEW)
public Boolean update(List<SceneVo> scenes) { public Boolean update(PsdcScene scenes) {
try { try {
psdcSceneMapper.UpdateSceneData(scenes); psdcSceneMapper.update(scenes);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -93,12 +134,17 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
/** /**
* 通过策略名称删除数据 * 通过策略名称删除数据
* @param sceneName * @param scene
* @return 是否成功 * @return 是否成功
*/ */
@Override @Override
public Boolean deleteBySceneName(String sceneName) { public Boolean deleteByScene(PsdcSceneRequest scene) {
int count = psdcSceneMapper.deleteBySceneName(sceneName); int count = 0;
if (null != scene.getSceneCode() && !"".equals(scene.getSceneCode())){
count = psdcSceneMapper.deleteBySceneName(scene.getSceneCode());
} else {
count = psdcSceneMapper.deleteById(scene.getSceneId());
}
if (count > 0){ if (count > 0){
return true; return true;
} else { } else {
@ -136,13 +182,10 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
} }
@Override @Override
public List<SceneVo> findSceneByUserAndSceneName(Integer sceneId) { public List<SceneVo> findSceneByUserAndSceneName(Long sceneCode) {
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
String sceneName = ""; String sceneName = "";
if (0 != sceneId){ return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneCode, sceneName);
psdcSceneMapper.queryById(sceneId).getSceneName();
}
return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneName);
} }
/** /**
@ -158,4 +201,6 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
return Long.valueOf(timestamp); return Long.valueOf(timestamp);
} }
} }

@ -27,11 +27,8 @@
</resultMap> </resultMap>
<!-- 通过ID查询单条数据 --> <!-- 通过ID查询单条数据 -->
<select id="queryById" resultMap="PsdcSceneMap"> <select id="querySceneNameById" resultType="java.lang.String">
select Select scene_name From psdc_scene Where scene_code = #{sceneCode} GROUP BY scene_name
scene_id,scene_name,user_id,scene_code,device_id,device_sn,scene_context,scene_key,scene_value
from psdc_scene
where scene_id = #{sceneId}
</select> </select>
<select id="sceneList" resultMap="PsdcSceneMap"> <select id="sceneList" resultMap="PsdcSceneMap">
@ -59,6 +56,9 @@
<if test="item.sceneName != null and item.sceneName != ''"> <if test="item.sceneName != null and item.sceneName != ''">
`scene_name`= #{item.sceneName}, `scene_name`= #{item.sceneName},
</if> </if>
<if test="deviceId != null and deviceId != ''">
device_id = #{deviceId},
</if>
<if test="item.deviceSn != null and item.deviceSn != ''"> <if test="item.deviceSn != null and item.deviceSn != ''">
`device_sn` = #{item.deviceSn}, `device_sn` = #{item.deviceSn},
</if> </if>
@ -73,27 +73,18 @@
</if> </if>
</set> </set>
<where> <where>
`scene_id` = ${item.sceneId} `scene_code` = ${item.sceneCode}
</where> </where>
</foreach> </foreach>
</update> </update>
<!-- 更新数据 --> <!-- 更新数据 -->
<update id="update"> <update id="update">
update psdc_scene Update psdc_scene
<set> <set>
<if test="sceneName != null and sceneName != ''"> <if test="sceneName != null and sceneName != ''">
scene_name = #{sceneName}, scene_name = #{sceneName},
</if> </if>
<if test="sceneCode != null and sceneCode != ''">
scene_code = #{sceneCode},
</if>
<if test="userId != null and userId != ''">
user_id = #{userId},
</if>
<if test="deviceId != null and deviceId != ''">
device_id = #{deviceId},
</if>
<if test="deviceSn != null and deviceSn != ''"> <if test="deviceSn != null and deviceSn != ''">
device_sn = #{deviceSn}, device_sn = #{deviceSn},
</if> </if>
@ -107,7 +98,14 @@
scene_value = #{sceneValue}, scene_value = #{sceneValue},
</if> </if>
</set> </set>
where scene_id = #{sceneId} <where>
<if test="sceneId != null and sceneId != ''">
scene_id = #{sceneId}
</if>
<if test="sceneCode != null and sceneCode != ''">
And scene_code = #{sceneCode}
</if>
</where>
</update> </update>
<!--通过主键删除--> <!--通过主键删除-->
@ -116,7 +114,7 @@
</delete> </delete>
<delete id="deleteBySceneName"> <delete id="deleteBySceneName">
Delete From psdc_scene Where scene_name = #{sceneName} Delete From psdc_scene Where scene_code = #{sceneCode}
</delete> </delete>
<!-- 根据用户ID查询策略信息--> <!-- 根据用户ID查询策略信息-->
@ -172,6 +170,9 @@
<if test="userId != null and userId != ''"> <if test="userId != null and userId != ''">
And su.user_id = #{userId} And su.user_id = #{userId}
</if> </if>
<if test="sceneCode != null and sceneCode != ''">
And ps.scene_code = #{sceneCode}
</if>
<if test="sceneName != null and sceneName != ''"> <if test="sceneName != null and sceneName != ''">
And ps.scene_name Like concat('%', #{sceneName}, '%') And ps.scene_name Like concat('%', #{sceneName}, '%')
</if> </if>

@ -7,6 +7,7 @@ import com.psdc.core.domain.AjaxResult;
import com.psdc.core.page.TableDataInfo; import com.psdc.core.page.TableDataInfo;
import com.psdc.entity.PsdcDevice; import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene; import com.psdc.entity.PsdcScene;
import com.psdc.entity.request.PsdcSceneRequest;
import com.psdc.entity.vo.SceneVo; import com.psdc.entity.vo.SceneVo;
import com.psdc.enums.BusinessType; import com.psdc.enums.BusinessType;
import com.psdc.service.IPsdcSceneService; import com.psdc.service.IPsdcSceneService;
@ -55,7 +56,7 @@ public class PsdcSceneController extends BaseController {
public TableDataInfo list(@RequestBody JSONObject jsonObject) { public TableDataInfo list(@RequestBody JSONObject jsonObject) {
startPage(); startPage();
PsdcScene sceneVo = myPage(jsonObject, PsdcScene.class); PsdcScene sceneVo = myPage(jsonObject, PsdcScene.class);
List<SceneVo> list = psdcSceneService.findSceneByUserAndSceneName(sceneVo.getSceneId()); List<SceneVo> list = psdcSceneService.findSceneByUserAndSceneName(sceneVo.getSceneCode());
return getDataTable(list); return getDataTable(list);
} }
@ -65,17 +66,23 @@ public class PsdcSceneController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:cl:list')") @PreAuthorize("@ss.hasPermi('system:cl:list')")
@Log(title = "策略管理", businessType = BusinessType.INSERT) @Log(title = "策略管理", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@Validated @RequestBody List<SceneVo> scenes) { public AjaxResult add(@Validated @RequestBody PsdcSceneRequest scenes) {
return toAjax(true); Long code = scenes.getSceneCode();
if (null != code && !"".equals(code)){
return toAjax(psdcSceneService.insertByCode(scenes));
} else {
return toAjax(psdcSceneService.insert(scenes));
}
} }
/** /**
* 修改场景策略 * 修改场景策略
*/ */
@PreAuthorize("@ss.hasPermi('system:cl:list')") @PreAuthorize("@ss.hasPermi('system:cl:list')")
@Log(title = "策略管理", businessType = BusinessType.UPDATE) @Log(title = "策略管理", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@Validated @RequestBody List<SceneVo> scenes) { public AjaxResult edit(@Validated @RequestBody PsdcScene scenes) {
return toAjax(psdcSceneService.update(scenes)); return toAjax(psdcSceneService.update(scenes));
} }
@ -85,8 +92,8 @@ public class PsdcSceneController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:cl:list')") @PreAuthorize("@ss.hasPermi('system:cl:list')")
@Log(title = "策略管理", businessType = BusinessType.DELETE) @Log(title = "策略管理", businessType = BusinessType.DELETE)
@DeleteMapping() @DeleteMapping()
public AjaxResult remove(@RequestParam String sceneName) { public AjaxResult remove(@Validated @RequestBody PsdcSceneRequest sceneId) {
return toAjax(psdcSceneService.deleteBySceneName(sceneName)); return toAjax(psdcSceneService.deleteByScene(sceneId));
} }
} }

Loading…
Cancel
Save