Browse Source

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

lihui007 3 years ago
parent
commit
8867f6b3a4
20 changed files with 169 additions and 95 deletions
  1. 7 11
      operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java
  2. 4 4
      operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java
  3. 4 3
      operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java
  4. 30 25
      operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java
  5. 1 0
      operation_manager/src/main/java/com/huaxu/task/controller/PlanStatisticsController.java
  6. 1 1
      operation_manager/src/main/resources/mapper/evaluation/EvaluationItemMapper.xml
  7. 8 9
      operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml
  8. 4 3
      readme.md
  9. 10 3
      sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java
  10. 0 1
      sms_water/src/main/java/com/huaxu/controller/SceneController.java
  11. 2 0
      sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java
  12. 2 0
      sms_water/src/main/java/com/huaxu/dao/SceneMapper.java
  13. 9 0
      sms_water/src/main/java/com/huaxu/dto/SetupMethod.java
  14. 1 1
      sms_water/src/main/java/com/huaxu/entity/DeviceSetupMethodEntity.java
  15. 6 0
      sms_water/src/main/java/com/huaxu/service/AlarmDetailsService.java
  16. 13 6
      sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java
  17. 24 20
      sms_water/src/main/java/com/huaxu/service/SceneService.java
  18. 4 0
      sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java
  19. 10 0
      sms_water/src/main/resources/mapper/AlarmDetailMapper.xml
  20. 29 8
      sms_water/src/main/resources/mapper/SceneMapper.xml

+ 7 - 11
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java

@@ -261,7 +261,8 @@ public class WorkOrderStatisticsController {
     @RequestMapping(value = "dispatchTimesStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "派单次数统计")
     public AjaxMessage<List<Map<String,Object>>> dispatchTimesStatistics(
-            @ApiParam(value = "设备或场景ID", required = true) @RequestParam(required = true) int id,
+            @ApiParam(value = "场景ID", required = true) @RequestParam(required = true) int scenesId,
+            @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 statsType,
             @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
@@ -286,22 +287,17 @@ public class WorkOrderStatisticsController {
                 endDate = subMonth(endDate,1);
                 break;
         }
+        workOrderManageDto.setScenesId(scenesId);
         workOrderManageDto.setStartDate(startDate);
         workOrderManageDto.setEndDate(endDate);
-        if(sort == 2){
-            AjaxMessage<List<Map<String, Object>>> ajaxMessage = smsWaterClient.selectAlarmDeviceIdBySenceId(id);
-             for(Map<String,Object> map : ajaxMessage.getData()) {
-                 int deviceId = Integer.parseInt(map.get("device_id").toString());
-                 idList.add(deviceId);
-             }
-        }else if(sort==1){
-            idList.add(id);
+         if(sort==1){
+           workOrderManageDto.setDeviceId(id);
         }
         if(statsType ==0 || statsType ==2){
-            statistics =  workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+            statistics =  workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto);
         }
         else if(statsType == 1){
-            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto,idList);
+            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto);
         }
         return new AjaxMessage<>(ResultStatus.OK, statistics);
     }

+ 4 - 4
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -95,14 +95,14 @@ public interface WorkOrderManageMapper {
 
 
     /**
-     * 单次数月统计
+     * 单次数月统计
      */
-    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
     /**
-     * 单次数年统计
+     * 单次数年统计
      */
-    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
     /**
      * 待处理权限

+ 4 - 3
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -9,6 +9,7 @@ import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.entity.WorkOrderManage;
 import org.apache.ibatis.annotations.Param;
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -92,7 +93,7 @@ public interface WorkOrderManageService {
     Map<String,Object> workOrderStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
-    List<Map<String,Object>> eventMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<Map<String,Object>> eventMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto) throws ParseException;
 
     List<Map<String,Object>> eventYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
     /**
@@ -133,12 +134,12 @@ public interface WorkOrderManageService {
     /**
      * 判单次数月统计
      */
-    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto) throws ParseException;
 
     /**
      * 判单次数年统计
      */
-    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
     /**

+ 30 - 25
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -14,6 +14,8 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 
@@ -160,13 +162,12 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> eventMonthStatistics(WorkOrderManageDto workOrderManageDto) {
-        String strMonth = workOrderManageDto.getStartDate().substring(5,7);
-        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+    public List<Map<String, Object>> eventMonthStatistics(WorkOrderManageDto workOrderManageDto) throws ParseException {
+        int days = differentDaysByMillisecond(workOrderManageDto.getStartDate(),workOrderManageDto.getEndDate());
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
         List<Map<String,Object>> list = workOrderManageMapper.eventMonthStatistics(workOrderManageDto);
         for(int i=0; i<days; i++) {
-            String strDate = workOrderManageDto.getStartDate().substring(0, 7) + String.format("-%02d", i + 1);
+            String strDate =  subDay(workOrderManageDto.getStartDate(),i);
             Map<String, Object> data = new HashMap<>();
             data.put("数量", 0);
             data.put("日期", strDate);
@@ -252,13 +253,12 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto,List<Integer> idList) {
-        String strMonth = workOrderManageDto.getStartDate().substring(5,7);
-        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto) throws ParseException {
+        int days = differentDaysByMillisecond(workOrderManageDto.getStartDate(),workOrderManageDto.getEndDate());
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto);
         for(int i=0; i<days; i++) {
-            String strDate = workOrderManageDto.getStartDate().substring(0, 7) + String.format("-%02d", i + 1);
+            String strDate =  subDay(workOrderManageDto.getStartDate(),i);
             Map<String, Object> data = new HashMap<>();
             data.put("数量", 0);
             data.put("日期", strDate);
@@ -274,8 +274,8 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto, List<Integer> idList) {
-        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto,idList);
+    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto) {
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
         for(int i=0; i<12; i++) {
             String strDate = workOrderManageDto.getStartDate().substring(0, 4) + String.format("-%02d", i + 1);
@@ -304,22 +304,27 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
         return workOrderManageMapper.findWorkFlowById(id);
     }
 
-    /**
-     *获取某月有多少天
-     */
-    private int getDaysByYearMonth(int month) {
-
-        Calendar a =Calendar.getInstance();
-
-        a.set(Calendar.MONTH, month- 1);
-
-        a.set(Calendar.DATE, 1);
 
-        a.roll(Calendar.DATE,-1);
-
-        int maxDate =a.get(Calendar.DATE);
+    public int differentDaysByMillisecond(String date1,String date2) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date dt1 = sdf.parse(date1);
+        Date dt2 = sdf.parse(date2);
+        int days = (int) ((dt2.getTime() - dt1.getTime()) / (1000*3600*24));
+        return days;
+    }
 
-        return maxDate;
 
+    /**
+     *日期加一天
+     */
+    private String subDay(String date, int n) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date dt = sdf.parse(date);
+        Calendar rightNow = Calendar.getInstance();
+        rightNow.setTime(dt);
+        rightNow.add(Calendar.DATE, n);
+        Date dt1 = rightNow.getTime();
+        String reStr = sdf.format(dt1);
+        return reStr;
     }
 }

+ 1 - 0
operation_manager/src/main/java/com/huaxu/task/controller/PlanStatisticsController.java

@@ -144,6 +144,7 @@ public class PlanStatisticsController {
                     c.setTime(sdf.parse(endDate));
                     intervalCount= Days.daysBetween(new DateTime(startDate), new DateTime(endDate)).getDays()+c.getActualMaximum(Calendar.DAY_OF_MONTH);
                     break;
+                default:
             }
             planManageDto.setMaintainerCount(userCenterClient.findMaintainerCount(maintainerEndDate));
             planManageDto.setIntervalCount(intervalCount);

+ 1 - 1
operation_manager/src/main/resources/mapper/evaluation/EvaluationItemMapper.xml

@@ -104,7 +104,7 @@
             </if>
 
             <if test="evaluationItem.companyOrgId!=null and evaluationItem.deptOrgId == null">
-               and a.COMPANY_ORG_ID = #{evaluationItem.companyOrgId}
+               and a.COMPANY_ORG_ID = #{evaluationItem.companyOrgId} and a.DEPT_ORG_ID is null
             </if>
             <if test="evaluationItem.name != null  and evaluationItem.name != ''">
                 and a.name LIKE concat('%',#{evaluationItem.name},'%')

+ 8 - 9
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -1197,17 +1197,16 @@
       and date_create between #{startTime} and #{endTime}
     order by send_time desc
   </select>
-
   <!--派单次数月统计-->
   <select id="dispatchTimesMonthStatistics" resultType="map">
       select count(1) 数量, DATE_FORMAT(send_time,'%Y-%m-%d') 日期
       from sc_work_order_manage t1
       where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
       and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
-      and device_id in
-      <foreach collection="idList" item="item" open="(" close=")" separator=",">
-        #{item,jdbcType=INTEGER}
-      </foreach>
+      and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+      <if test="order.deviceId != null">
+        and device_id = #{order.deviceId,jdbcType=INTEGER}
+      </if>
       group by DATE_FORMAT(send_time,'%Y-%m-%d')
   </select>
   <!--派单次数年统计-->
@@ -1216,10 +1215,10 @@
     from sc_work_order_manage t1
     where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
     and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
-    and device_id in
-    <foreach collection="idList" item="item" open="(" close=")" separator=",">
-      #{item,jdbcType=INTEGER}
-    </foreach>
+    and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+    <if test="order.deviceId != null">
+      and device_id = #{order.deviceId,jdbcType=INTEGER}
+    </if>
     group by DATE_FORMAT(send_time,'%Y-%m')
   </select>
 

+ 4 - 3
readme.md

@@ -227,18 +227,19 @@ CREATE TABLE `sms_device_setup_method` (
 
 ### sc_work_order_manage、sc_plan_manage 添加字段in_process_status
 ALTER TABLE sc_work_order_manage ADD in_process_status int(11) null COMMENT '处理中状态(null未接单、1已接单、2已提交、3已审核)';
-ALTER TABLE sc_plan_manage ADD in_process_status int(11) null COMMENT '处理中状态(null未提交、2已提交、3已审核)'
+ALTER TABLE sc_plan_manage ADD in_process_status int(11) null COMMENT '处理中状态(null未提交、2已提交、3已审核)',
+        ADD finish_date timestamp null COMMENT '实际结束时间';
 
 ## uims 用户中心数据库
 CREATE TABLE `uims_ver_manage` (
   `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', 
   `VER_ID` varchar(255) COLLATE utf8mb4_croatian_ci DEFAULT NULL COMMENT '版本号',
   `VER_URL` varchar(255) COLLATE utf8mb4_croatian_ci DEFAULT NULL COMMENT 'App URL',
-  `IS_FORCED_UPGRADE` int(1) DEFAULT NULL COMMENT '是否强制升级',
+  `IS_FORCED_UPGRADE` smallint(1) DEFAULT NULL COMMENT '是否强制升级(1是 0否)',
   `REMARK` varchar(255) COLLATE utf8mb4_croatian_ci DEFAULT NULL COMMENT '备注',
   `CREATE_BY` varchar(255) COLLATE utf8mb4_croatian_ci DEFAULT NULL COMMENT '创建人',
   `DATE_CREATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `UPDATE_BY` varchar(255) COLLATE utf8mb4_croatian_ci DEFAULT NULL COMMENT '更新人',
-  `DATE_UPDATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `DATE_UPDATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   PRIMARY KEY (`ID`)
 ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_croatian_ci COMMENT='APP版本表';

+ 10 - 3
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -168,9 +168,16 @@ public class MonitorInfoController {
         parm.setDeviceId(item.getDeviceId());
         parm.setAttributeId(item.getAttributeId());
         parm.setType(type);
-        if (type == 4||type == 3) {
-            //更新压力值或状态值
-            item.setAttributeValue(monitorDataReportService.getDeviceAttributeValue(item.getDeviceCode(),item.getAttributeId()).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue());
+        if (type == 4 || type == 3) {
+            //更新压力值或状态值 泵状态0关 1开 TODO 后续需要统一
+            item.setAttributeValue(monitorDataReportService.getDeviceAttributeValue(item.getDeviceCode(), item.getAttributeId()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue());
+        }
+        //查询报警信息
+        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailsService.selectByDeviceAttributeId(sceneId, item.getDeviceId().intValue(), item.getAttributeId().intValue());
+        if (alarmDetailsDtos.size() > 0) {
+            item.setIsAlarm(1);
+        } else {
+            item.setIsAlarm(0);
         }
         DeviceSetupRecordEntity recordEntity = deviceSetupRecordService.selectLastOne(parm);
         if (recordEntity != null) {

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

@@ -310,7 +310,6 @@ public class SceneController {
             @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int statsType,
             @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
             @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
-        LoginUser loginUser = UserUtil.getCurrentUser();
         SceneEntity sceneEntity = new SceneEntity();
         sceneEntity.setId(Long.parseLong(String.valueOf(id)));
         switch (statsType) {

+ 2 - 0
sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java

@@ -133,4 +133,6 @@ public interface AlarmDetailMapper {
     Integer updateAlarmSendMessageState(List<DeviceAlarmInfoForOrder> list);
 
     List<AlarmDetailsDto> selectBySceneId(@Param("sceneId") Integer sceneId);
+
+    List<AlarmDetailsDto> selectByDeviceAttributeId(@Param("sceneId")Long sceneId,@Param("deviceId")Integer deviceId, @Param("attributeId")Integer attributeId);
 }

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

@@ -48,6 +48,8 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     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>> selectYearAlarmTimes(@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, @Param("sort") int sort);

+ 9 - 0
sms_water/src/main/java/com/huaxu/dto/SetupMethod.java

@@ -8,7 +8,16 @@ import java.util.Date;
 
 @Data
 public class SetupMethod {
+//    {
+//        "deviceId":"912cf9e7-8557-4792-a2f9-27ba72bbcb89",
+//            "unitIdentifier":"867126056979409",
+//            "receiveTime":"2021-05-19 09:50:15",
+//            "method":"WriteValve",
+//            "params":{"electronicNo":"AAAAAAAAAAAAAA","valveStatus":"1"}}
     private String deviceId;
+    //private String deviceMode;
+    //private String deviceType;
+    //private String manufacturer;
     private String method;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     private Date receiveTime;

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

@@ -31,7 +31,7 @@ public class DeviceSetupMethodEntity{
     /** 属性ID */
     private Long attributeId;
 
-    /** 类型(0水泵控制 1压力调节 2水表开关阀) */
+    /** 类型(3水泵控制 4压力调节 5水表开关阀) */
     private Integer type;
 
     /** 方法名 */

+ 6 - 0
sms_water/src/main/java/com/huaxu/service/AlarmDetailsService.java

@@ -26,6 +26,12 @@ public interface AlarmDetailsService {
      * @return
      */
     List<AlarmDetailsDto> selectByDeviceId(Long sceneId,Integer deviceId);
+    /**
+     * 查询单个设备属性
+     * @return
+     */
+    List<AlarmDetailsDto> selectByDeviceAttributeId(Long sceneId,Integer deviceId,Integer attributeId);
+
     /**
      * 按场景查询
      * @return

+ 13 - 6
sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java

@@ -10,10 +10,7 @@ import com.huaxu.common.HttpRequest;
 import com.huaxu.common.JacksonUtil;
 import com.huaxu.dao.DeviceSetupMethodMapper;
 import com.huaxu.dto.SetupMethod;
-import com.huaxu.entity.DeviceEntity;
-import com.huaxu.entity.DeviceSetupMethodEntity;
-import com.huaxu.entity.DeviceSetupRecordEntity;
-import com.huaxu.entity.ParmSettingEntity;
+import com.huaxu.entity.*;
 import com.huaxu.model.LoginUser;
 import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +49,8 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
     private  String setSetupUrl;
     @Autowired
     private ParmSettingService parmSettingService;
+    @Autowired
+    private DeviceTypeService deviceTypeService;
 
     /**
      * 查列表
@@ -134,11 +133,17 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
         List<DeviceSetupMethodEntity> deviceSetupMethodEntities = deviceSetupMethodMapper.findList(info);
         //查询到操作方法后执行操作
         if (deviceSetupMethodEntities.size() > 0) {
+            //查询设备型号
+            //DeviceTypeEntity deviceTypeEntity = deviceTypeService.findDeviceTypeById(Long.valueOf(deviceEntity.getDeviceTypeId()));
             String method = deviceSetupMethodEntities.get(0).getMethod();
             methodParms = deviceSetupMethodEntities.get(0).getParams();
             SetupMethod setupMethod = new SetupMethod();
             setupMethod.setMethod(method);
+            setupMethod.setDeviceId("912cf9e7-8557-4792-a2f9-27ba72bbcb89");
             setupMethod.setUnitIdentifier(deviceEntity.getDeviceCode());
+            //setupMethod.setDeviceMode(deviceTypeEntity.getDeviceMode());
+            //setupMethod.setDeviceType(deviceTypeEntity.getDeviceType());
+            //setupMethod.setManufacturer(deviceTypeEntity.getManufacturerId());
             setupMethod.setReceiveTime(new Date());
             //封装指令
             String[] parm = parms.split(",");
@@ -173,7 +178,7 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
                 if (resultNode.get("status").toString().equals("0")) {
                     deviceSetupRecordEntity.setState(1);
                 } else {
-                    deviceSetupRecordEntity.setState(1);
+                    deviceSetupRecordEntity.setState(2);
                 }
             } catch (IOException e) {
                 return false;
@@ -201,7 +206,9 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
         ParmSettingEntity parmSettingEntity = new ParmSettingEntity();
         parmSettingEntity.setEnableState(1);
         parmSettingEntity.setParmType(1);
-        parmSettingEntity.setCompanyOrgId(Long.valueOf(currentUser.getCompanyId()));
+        if(currentUser!=null&&currentUser.getCompanyId()!=null) {
+            parmSettingEntity.setCompanyOrgId(Long.valueOf(currentUser.getCompanyId()));
+        }
         parmSettingEntity.setTenantId(currentUser.getTenantId());
         List<ParmSettingEntity> parmSettingEntities = parmSettingService.findList(parmSettingEntity);
         if (parmSettingEntities.size() == 0) {

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

@@ -31,6 +31,8 @@ import javax.annotation.Resource;
 
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 import static com.google.common.collect.Lists.newArrayList;
@@ -459,13 +461,12 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return sceneMapper.selectAlarmSceneAndDevice(sceneEntity, startDate, endDate);
     }
 
-    public List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort){
-        String strMonth = startDate.substring(5,7);
-        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+    public List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort) throws ParseException {
+        int days = differentDaysByMillisecond(startDate,endDate);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
         List<Map<String,Object>> list = sceneMapper.selectMonthAlarmTimes(sceneEntity,startDate,endDate,sort);
         for(int i=0; i<days; i++) {
-            String strDate = startDate.substring(0, 7) + String.format("-%02d", i + 1);
+            String strDate =  subDay(startDate,i);
             Map<String, Object> data = new HashMap<>();
             data.put("数量", 0);
             data.put("日期", strDate);
@@ -481,7 +482,7 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
     }
 
     public List<Map<String,Object>> selectYearAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort){
-        List<Map<String,Object>> list = sceneMapper.selectMonthAlarmTimes(sceneEntity,startDate,endDate,sort);
+        List<Map<String,Object>> list = sceneMapper.selectYearAlarmTimes(sceneEntity,startDate,endDate,sort);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
         for(int i=0; i<12; i++) {
             String strDate = startDate.substring(0, 4) + String.format("-%02d", i + 1);
@@ -507,23 +508,26 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return sceneMapper.selectAlarmDeviceIdBySenceId(id);
     }
 
+    public int differentDaysByMillisecond(String date1,String date2) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date dt1 = sdf.parse(date1);
+        Date dt2 = sdf.parse(date2);
+        int days = (int) ((dt2.getTime() - dt1.getTime()) / (1000*3600*24));
+        return days;
+    }
+
     /**
-     *获取某月有多少天
+     *日期加一
      */
-    private int getDaysByYearMonth(int month) {
-
-        Calendar a =Calendar.getInstance();
-
-        a.set(Calendar.MONTH, month- 1);
-
-        a.set(Calendar.DATE, 1);
-
-        a.roll(Calendar.DATE,-1);
-
-        int maxDate =a.get(Calendar.DATE);
-
-        return maxDate;
-
+    private String subDay(String date, int n) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date dt = sdf.parse(date);
+        Calendar rightNow = Calendar.getInstance();
+        rightNow.setTime(dt);
+        rightNow.add(Calendar.DATE, n);
+        Date dt1 = rightNow.getTime();
+        String reStr = sdf.format(dt1);
+        return reStr;
     }
 
 

+ 4 - 0
sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java

@@ -64,6 +64,10 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
     public List<AlarmDetailsDto> selectByDeviceId(Long sceneId,Integer deviceId) {
         return alarmDetailMapper.selectByDeviceId(sceneId,deviceId);
     }
+    @Override
+    public List<AlarmDetailsDto> selectByDeviceAttributeId(Long sceneId,Integer deviceId,Integer attributeId) {
+        return alarmDetailMapper.selectByDeviceAttributeId(sceneId, deviceId,attributeId);
+    }
 
     @Override
     public List<AlarmDetailsDto> selectBySceneId(Integer sceneId) {

+ 10 - 0
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -685,6 +685,16 @@
         and a.DEVICE_ID=#{deviceId} and (a.scene_id=#{sceneId} or a.PARENT_SCENE_ID=#{sceneId}) and a.state=1
     </select>
 
+    <select id="selectByDeviceAttributeId" resultType="com.huaxu.dto.AlarmDetailsDto">
+        select
+        <include refid="Base_Column_List"/>,concat(b.alarm_condition,cast(b.alarm_value as char)+0) alarmRange
+        from sms_alarm_details a
+        left join sms_alarm_setting b on a.alarm_setting_id=b.id and b.status = 1 and b.alarm_condition!='='
+        <include refid="alarmDetailJoins"/>
+        where a.`STATUS` = 1
+        and a.DEVICE_ID=#{deviceId} and a.ATTRIBUTE_ID=#{attributeId} and (a.scene_id=#{sceneId} or a.PARENT_SCENE_ID=#{sceneId}) and a.state=1
+    </select>
+
     <select id="getAlarmInfoForWorkOrderManage" resultType="com.huaxu.dto.DeviceAlarmInfoForOrder">
         select
             ad.id as "alarmId"

+ 29 - 8
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -430,8 +430,8 @@
     </select>
     <!--报警场景及报警设备查询-->
     <select id="selectAlarmSceneAndDevice" resultType="map">
-       select amount, id, name, sort from(
-        select count(1) amount, a.id, a.SCENE_NAME name,2 sort
+       select amount, id, scene_id, name, sort from(
+        select count(1) amount, a.id,a.id scene_id, a.SCENE_NAME name,2 sort
         from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
         INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
         <where>
@@ -470,14 +470,14 @@
             and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
             and SCENE_TYPE_NAME in('水源','水厂','泵站')
         </where>
-        group by a.SCENE_NAME, a.ID, sort
+        group by a.scene_name, a.id, sort
 
         union all
 
-        select count(1) amount, d.id, d.DEVICE_NAME name,1 sort
+        select count(1) amount, d.id,c.scene_id, d.device_name name,1 sort
         from sms_alarm_details c
         INNER JOIN sms_device d on c.DEVICE_ID=d.ID
-        INNER JOIN sms_scene a on  c.PARENT_SCENE_ID=a.ID
+        INNER JOIN sms_scene a on  c.SCENE_ID=a.ID
         INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
         <where>
             a.PARENT_SCENE_ID=0 and a.STATUS=1
@@ -515,7 +515,7 @@
             and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
             and SCENE_TYPE_NAME='管网'
         </where>
-        group by d.DEVICE_NAME, d.ID, sort) t
+        group by d.device_name, d.id, c.scene_id, sort) t
         order by amount desc
     </select>
 
@@ -554,25 +554,46 @@
     <select id="selectAlarmLable" resultType="map">
         select amount 数量, label 标签 from
             (
-                select count(1) amount, label from
+                select count(1) amount, concat(label,op) label from
                     (
-                        select if(d.REMARK is null,e.NAME,d.REMARK) label
+                        select if(d.REMARK is null,e.NAME,d.REMARK) label,CASE WHEN ALARM_CONDITION='&gt;' OR ALARM_CONDITION='&gt;=' then '高'
+                        WHEN ALARM_CONDITION='&lt;' OR ALARM_CONDITION='&lt;=' then '低'
+                        ELSE '' END op
                         <if test="sort == 2">
                             from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
                             INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
                             INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
                             LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.DEVICE_ID=c.DEVICE_ID and d.TENANT_ID=c.TENANT_ID and d.PARENT_SCENE_ID=c.PARENT_SCENE_ID and d.STATUS=1
+                            INNER JOIN sms_alarm_setting f on f.device_id = c.device_id and f.SCENE_ID=c.SCENE_ID and f.STATUS=1
                             where a.ID = #{scene.id}
                         </if>
                         <if test="sort == 1">
                             from sms_alarm_details c
                             INNER JOIN sms_device_attribute e on e.ID = c.ATTRIBUTE_ID and e.STATUS=1
                             LEFT JOIN sms_device_parm d on d.ATTRIBUTE_ID = c.ATTRIBUTE_ID and d.DEVICE_ID=c.DEVICE_ID and d.TENANT_ID=c.TENANT_ID and d.PARENT_SCENE_ID=c.PARENT_SCENE_ID and d.STATUS=1
+                            INNER JOIN sms_alarm_setting f on f.device_id = c.device_id and f.SCENE_ID=c.SCENE_ID and f.STATUS=1
                             where c.device_id = #{scene.id}
                         </if>
                         and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
                         and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
                     ) t1
+                group by concat(label,op)
+                union all
+                select count(1) amount, label from
+                (
+                    select '离线' label
+                    <if test="sort == 2">
+                        from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+                        INNER JOIN sms_alarm_details c on c.PARENT_SCENE_ID=a.ID
+                        where a.ID = #{scene.id} and alarm_type='状态报警'
+                    </if>
+                    <if test="sort == 1">
+                        from sms_alarm_details c
+                        where c.device_id = #{scene.id} and alarm_type='状态报警'
+                    </if>
+                    and c.date_create &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                    and c.date_create &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                ) t1
                 group by label
             ) t2
         order by amount desc