wangbo 4 роки тому
батько
коміт
417b4a23ee

+ 44 - 9
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -4,14 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.client.UserCenterClient;
 import com.huaxu.common.FileUploadUtil;
+import com.huaxu.common.StringUtils;
 import com.huaxu.dto.DeviceDto;
-import com.huaxu.entity.DeviceParmEntity;
-import com.huaxu.entity.DeviceSceneEntity;
-import com.huaxu.entity.SceneTypeEntity;
+import com.huaxu.entity.*;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.Pagination;
 import com.huaxu.model.ResultStatus;
+import com.huaxu.service.AlarmSettingService;
+import com.huaxu.service.ParmSettingService;
 import com.huaxu.util.UserUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,7 +30,6 @@ import java.time.LocalDate;
 import java.util.*;
 
 import org.springframework.web.bind.annotation.*;
-import com.huaxu.entity.SceneEntity;
 import com.huaxu.service.SceneService;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -48,6 +48,8 @@ public class SceneController {
     private String baseDir;
     @Autowired
     UserCenterClient userCenterClient;
+    @Autowired
+    private ParmSettingService parmSettingService;
 
     @ApiOperation(value = "分页查询场景")
     @RequestMapping(value = "/selectPage", method = RequestMethod.GET)
@@ -218,7 +220,7 @@ public class SceneController {
     @RequestMapping(value = "/selectAlarmSceneAndDevice", method = RequestMethod.GET)
     @ResponseBody
     @ApiOperation(value = "场景及设备故障率")
-    public  AjaxMessage<List<Map<String,Object>>> selectAlarmSceneAndDevice(
+    public  AjaxMessage<Object> selectAlarmSceneAndDevice(
             @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
             @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
             @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
@@ -247,6 +249,27 @@ public class SceneController {
                 days = differentDaysByMillisecond(startDate,endDate);
                 break;
         }
+        ParmSettingEntity parmSettingEntity = new ParmSettingEntity();
+        parmSettingEntity.setCompanyOrgId(Long.valueOf(loginUser.getCompanyId().toString()));
+        parmSettingEntity.setParmType(3);
+        List<ParmSettingEntity> paramSettingList = parmSettingService.findList(parmSettingEntity);
+        if(paramSettingList.size()==0){
+            new AjaxMessage<>(ResultStatus.ERROR,"没有配置故障率参数");
+        }
+        ParmSettingEntity parmSetting = paramSettingList.get(0);
+        String paramValue = parmSetting.getParmValue();
+        String[] params =  paramValue.split(";");
+        if(params.length!=3 ){
+           return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
+        String[] mParam = params[2].split("~");
+        if(mParam.length!=2){
+           return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
+        if(validateNumber(params[0])==false || validateNumber(params[2])==false
+                || validateNumber(mParam[0])==false || validateNumber(mParam[1])==false){
+            return new AjaxMessage<>(ResultStatus.ERROR,"参数设置格式错误!请参照正确格式设置:0.5;0.5~0.2;0.2");
+        }
         List<Map<String,Object>> list = sceneService.selectAlarmSceneAndDevice(sceneEntity, startDate, endDate);
         for(int i=0;i<list.size();i++){
             Map<String,Object> map = list.get(i);
@@ -254,13 +277,13 @@ public class SceneController {
             double rate =amount / days;
             map.put("rate",rate);
 
-            if(rate>=0.5){
+            if(rate>=Double.parseDouble(params[0])){
                 map.put("level","高");
             }
-            else if(rate>=0.2 && rate<0.5){
+            else if(rate>=Double.parseDouble(params[1]) && rate<Double.parseDouble(params[0])){
                 map.put("level","中");
             }
-            else if(rate<0.2){
+            else if(rate<Double.parseDouble(params[2])){
                 map.put("level","低");
             }
         }
@@ -320,6 +343,7 @@ public class SceneController {
     @ApiOperation(value = "报警标签")
     public AjaxMessage<List<Map<String,Object>>> selectAlarmLable(
             @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "设备或场景标识(1:设备;2:场景)", required = true) @RequestParam(required = true) int sort,
             @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int type,
             @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
             @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
@@ -339,7 +363,7 @@ public class SceneController {
                 endDate = String.format("%s-01", endDate);
                 break;
         }
-        List<Map<String,Object>> list = sceneService.selectAlarmLable(sceneEntity,startDate,endDate);
+        List<Map<String,Object>> list = sceneService.selectAlarmLable(sceneEntity,startDate,endDate,sort);
         return new AjaxMessage<>(ResultStatus.OK,list);
     }
 
@@ -395,4 +419,15 @@ public class SceneController {
         return reStr;
     }
 
+    /**
+     * 判断是否是整数或者是小数
+     * @param str
+     * @return true:是,false不是
+     */
+    private boolean validateNumber(String str) {
+        if(StringUtils.isBlank(str)) {
+            return false;
+        }
+        return str.matches("[+-]?[0-9]+(\\\\.[0-9]+)?");
+    }
 }

+ 2 - 4
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -6,7 +6,6 @@ import java.util.List;
 import java.util.Map;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.huaxu.entity.SceneTypeEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -29,7 +28,6 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     SceneEntity findSceneById(Serializable id);
 
-
     List<SceneEntity> findList(@Param(value = "scene") SceneEntity sceneEntity);
 
     List<SceneEntity> findBySceneTypeIds(@Param(value = "Ids") Long[] Ids);
@@ -48,10 +46,10 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     List<Map<String,Object>> selectAlarmSceneAndDevice(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
-    List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort);
+    List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort);
 
     List<Map<String,Object>> selectAlarmDeviceIdBySenceId(@Param("id") int id);
 
-    List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate);
+    List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort);
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

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

@@ -490,8 +490,8 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return result;
     }
 
-    public List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate){
-        return sceneMapper.selectAlarmLable(sceneEntity,startDate,endDate);
+    public List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort){
+        return sceneMapper.selectAlarmLable(sceneEntity, startDate, endDate, sort);
     }
 
     public List<Map<String,Object>> selectAlarmDeviceIdBySenceId(int id){