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: 1
#客户端id 必须唯一
clientId: psdcdev123
clientId: psdc-dev1234
#连接超时,默认30000
timeOut: 10
#心跳间隔时间,默认3000

@ -21,7 +21,7 @@ public class PsdcScene {
/**
* 策略码
*/
private Integer sceneCode;
private Long sceneCode;
/** 用户id */
private Integer userId;
/** 设备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 ;
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;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.vo.SceneVo;
import org.apache.ibatis.annotations.Mapper;
@ -15,13 +14,8 @@ import java.util.List;
*/
@Mapper
public interface PsdcSceneMapper{
/**
* 通过ID查询单条数据
*
* @param sceneId 主键
* @return 实例对象
*/
PsdcScene queryById(Integer sceneId);
String querySceneNameById(@Param(value = "sceneCode") Long sceneCode);
List<PsdcScene> sceneList(@Param(value = "userId") Long userId);
@ -48,10 +42,10 @@ public interface PsdcSceneMapper{
/**
* 通过策略名称删除场景策略
* @param sceneName
* @param sceneCode
* @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> findSceneByUserAndSceneName(@Param(value = "userId") Long userId,
@Param(value = "sceneCode") Long sceneCode,
@Param(value = "sceneName") String sceneName);
}

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

@ -1,18 +1,16 @@
package com.psdc.service.impl;
import com.psdc.entity.PsdcDevice;
import com.psdc.entity.PsdcScene;
import com.psdc.entity.request.PsdcSceneRequest;
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;
@ -28,17 +26,6 @@ import static org.springframework.transaction.annotation.Propagation.REQUIRES_NE
public class PsdcSceneServiceImpl implements IPsdcSceneService {
@Autowired
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
*/
@Override
@Transactional(propagation = REQUIRES_NEW)
public Boolean insert(List<SceneVo> scenes){
public Boolean insert(PsdcSceneRequest scenes){
Date date = new Date();
long timestamp = getSecondTimestampTwo(date);
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 {
for (SceneVo sc : scenes){
for (SceneVo sc : scenesList){
sc.setSceneCode(timestamp);
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;
} catch (Exception e) {
e.printStackTrace();
@ -80,9 +121,9 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
*/
@Override
@Transactional(propagation = REQUIRES_NEW)
public Boolean update(List<SceneVo> scenes) {
public Boolean update(PsdcScene scenes) {
try {
psdcSceneMapper.UpdateSceneData(scenes);
psdcSceneMapper.update(scenes);
return true;
} catch (Exception e) {
e.printStackTrace();
@ -93,12 +134,17 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
/**
* 通过策略名称删除数据
* @param sceneName
* @param scene
* @return 是否成功
*/
@Override
public Boolean deleteBySceneName(String sceneName) {
int count = psdcSceneMapper.deleteBySceneName(sceneName);
public Boolean deleteByScene(PsdcSceneRequest scene) {
int count = 0;
if (null != scene.getSceneCode() && !"".equals(scene.getSceneCode())){
count = psdcSceneMapper.deleteBySceneName(scene.getSceneCode());
} else {
count = psdcSceneMapper.deleteById(scene.getSceneId());
}
if (count > 0){
return true;
} else {
@ -136,13 +182,10 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
}
@Override
public List<SceneVo> findSceneByUserAndSceneName(Integer sceneId) {
public List<SceneVo> findSceneByUserAndSceneName(Long sceneCode) {
Long userId = SecurityUtils.getUserId();
String sceneName = "";
if (0 != sceneId){
psdcSceneMapper.queryById(sceneId).getSceneName();
}
return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneName);
return psdcSceneMapper.findSceneByUserAndSceneName(userId, sceneCode, sceneName);
}
/**
@ -158,4 +201,6 @@ public class PsdcSceneServiceImpl implements IPsdcSceneService {
return Long.valueOf(timestamp);
}
}

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

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

Loading…
Cancel
Save