ソースを参照

Merge branch 'master' into usky-zyj

james 1 年間 前
コミット
beeeecd72c
40 ファイル変更522 行追加103 行削除
  1. 5 0
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/domain/BaseAlarmNoticeResult.java
  2. 2 1
      service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/impl/BaseAlarmServiceImpl.java
  3. 1 0
      service-alarm/service-alarm-biz/src/main/resources/mapper/alarm/BaseAlarmNoticeResultMapper.xml
  4. 2 2
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionArea.java
  5. 2 2
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAreaService.java
  6. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BscEnterpriseStreetTownServiceImpl.java
  7. 18 12
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAreaServiceImpl.java
  8. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java
  9. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanServiceImpl.java
  10. 3 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java
  11. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteServiceImpl.java
  12. 2 2
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionAreaVo.java
  13. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionRecordExportVo.java
  14. 1 1
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAreaMapper.xml
  15. 13 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAlarmController.java
  16. 12 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAlarm.java
  17. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseAlarmMapper.java
  18. 2 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceTypeMapper.java
  19. 7 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAlarmService.java
  20. 2 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmNoticeServiceImpl.java
  21. 79 10
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java
  22. 8 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BaseAlarmListVO.java
  23. 28 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseAlarmMapper.xml
  24. 25 16
      service-issue/service-issue-biz/src/main/java/com/usky/issue/annotation/CheckSignAspect.java
  25. 31 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java
  26. 21 1
      service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/YtDeviceStatusController.java
  27. 42 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpProjectConfig.java
  28. 2 2
      service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/YtDeviceStatus.java
  29. 20 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java
  30. 12 3
      service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/YtDeviceStatusMapper.java
  31. 19 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpProjectConfigService.java
  32. 8 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/YtDeviceStatusService.java
  33. 29 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java
  34. 26 3
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java
  35. 25 24
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/util/SignUtil.java
  36. 19 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpProjectConfigRequestVO.java
  37. 7 0
      service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/YtDeviceStatusRequestVO.java
  38. 1 1
      service-issue/service-issue-biz/src/main/resources/bootstrap.yml
  39. 23 0
      service-issue/service-issue-biz/src/main/resources/mapper/issue/SpProjectConfigMapper.xml
  40. 15 13
      service-issue/service-issue-biz/src/main/resources/mapper/issue/YtDeviceStatusMapper.xml

+ 5 - 0
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/domain/BaseAlarmNoticeResult.java

@@ -75,5 +75,10 @@ public class BaseAlarmNoticeResult implements Serializable {
      */
     private Integer tenantId;
 
+    /**
+     * 接收人电话
+     */
+    private String receiverPhone;
+
 
 }

+ 2 - 1
service-alarm/service-alarm-biz/src/main/java/com/usky/alarm/service/impl/BaseAlarmServiceImpl.java

@@ -115,7 +115,8 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                                     .eq(SysUser::getDelFlag,0);
                             SysUser sysUser = sysUserMapper.selectOne(lambdaQuery4);
                             BaseAlarmNoticeResult baseAlarmNoticeResult = new BaseAlarmNoticeResult();
-                            baseAlarmNoticeResult.setReceiver(sysUser.getPhonenumber());
+                            baseAlarmNoticeResult.setReceiver(sysUser.getNickName());
+                            baseAlarmNoticeResult.setReceiverPhone(sysUser.getPhonenumber());
                             baseAlarmNoticeResult.setAlarmId(alarmId);
                             baseAlarmNoticeResult.setNoticeTime(LocalDateTime.now());
                             baseAlarmNoticeResult.setNoticeContent(records.get(0).getProductName()+","+baseAlarmType.getTypeName()+","+baseAlarm.getAlarmTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd " +

+ 1 - 0
service-alarm/service-alarm-biz/src/main/resources/mapper/alarm/BaseAlarmNoticeResultMapper.xml

@@ -14,6 +14,7 @@
         <result column="is_read" property="isRead" />
         <result column="dept_id" property="deptId" />
         <result column="tenant_id" property="tenantId" />
+        <result column="receiver_phone" property="receiverPhone" />
     </resultMap>
 
 </mapper>

+ 2 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionArea.java

@@ -44,9 +44,9 @@ public class PatrolInspectionArea implements Serializable {
     private Integer areaFid;
 
     /**
-     * 单位ID
+     * 部门ID
      */
-    private String companyId;
+    private Integer deptId;
 
     /**
      * 租户ID

+ 2 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAreaService.java

@@ -31,8 +31,8 @@ public interface PatrolInspectionAreaService extends CrudService<PatrolInspectio
     /**
      * 根据单位ID获取区域ID
      *
-     * @param companyId 单位ID
+     * @param deptId 部门ID
      * @return
      */
-    List<Integer> areaIdList(String companyId);
+    List<Integer> areaIdList(Integer deptId);
 }

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BscEnterpriseStreetTownServiceImpl.java

@@ -602,7 +602,7 @@ public class BscEnterpriseStreetTownServiceImpl extends AbstractCrudService<BscE
         LambdaQueryWrapper<PatrolInspectionArea> queryWrapper2 = Wrappers.lambdaQuery();
         queryWrapper2.select(PatrolInspectionArea::getAreaFid)
                 .eq(PatrolInspectionArea::getEnable, 1)
-                .in(PatrolInspectionArea::getCompanyId, companyIdList);
+                .in(PatrolInspectionArea::getDeptId, companyIdList);
         List<PatrolInspectionArea> areaList = patrolInspectionAreaService.list(queryWrapper2);
         List<Integer> planSonIdList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(areaList)) {

+ 18 - 12
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAreaServiceImpl.java

@@ -6,12 +6,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
-import com.usky.fire.domain.BaseCompany;
 import com.usky.fire.domain.PatrolInspectionArea;
 import com.usky.fire.mapper.PatrolInspectionAreaMapper;
 import com.usky.fire.service.BaseCompanyService;
 import com.usky.fire.service.PatrolInspectionAreaService;
 import com.usky.fire.service.vo.PatrolInspectionAreaVo;
+import com.usky.system.RemoteDeptService;
 import com.usky.system.model.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -35,6 +36,9 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
     @Autowired
     private BaseCompanyService baseCompanyService;
 
+    @Autowired
+    private RemoteDeptService remoteDeptService;
+
     /**
      * 巡查自检-巡检区域-新增
      *
@@ -45,6 +49,7 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
     public void addPatrolInspectionArea(PatrolInspectionAreaVo patrolInspectionAreaVo) {
         LambdaQueryWrapper<PatrolInspectionArea> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(PatrolInspectionArea::getEnable, 1)
+                .eq(PatrolInspectionArea::getDeptId, patrolInspectionAreaVo.getDeptId())
                 .eq(PatrolInspectionArea::getAreaName, patrolInspectionAreaVo.getAreaName());
         List<PatrolInspectionArea> list = this.list(queryWrapper);
         if (list.size() > 0) {
@@ -53,7 +58,7 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
         PatrolInspectionArea patrolInspectionArea = new PatrolInspectionArea();
         patrolInspectionArea.setAreaName(patrolInspectionAreaVo.getAreaName());
         patrolInspectionArea.setAreaFid(0);
-        patrolInspectionArea.setCompanyId(patrolInspectionAreaVo.getCompanyId());
+        patrolInspectionArea.setDeptId(patrolInspectionAreaVo.getDeptId());
         patrolInspectionArea.setCreator(SecurityUtils.getUsername());
         patrolInspectionArea.setCreateTime(LocalDateTime.now());
         patrolInspectionArea.setEnable(1);
@@ -72,7 +77,7 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
             PatrolInspectionArea patrolInspectionAreaZ = new PatrolInspectionArea();
             patrolInspectionAreaZ.setAreaName(patrolInspectionAreaVo.getAreaNameArray()[i]);
             patrolInspectionAreaZ.setAreaFid(areaFid);
-            patrolInspectionAreaZ.setCompanyId(patrolInspectionAreaVo.getCompanyId());
+            patrolInspectionAreaZ.setDeptId(patrolInspectionAreaVo.getDeptId());
             patrolInspectionAreaZ.setCreator(SecurityUtils.getUsername());
             patrolInspectionAreaZ.setCreateTime(LocalDateTime.now());
             patrolInspectionAreaZ.setEnable(1);
@@ -98,7 +103,7 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
         if (list2.size() > 0) {
             throw new BusinessException("区域名称不可重复");
         }
-        patrolInspectionArea.setCompanyId(list.get(0).getCompanyId());
+        patrolInspectionArea.setDeptId(list.get(0).getDeptId());
         patrolInspectionArea.setCreator(SecurityUtils.getUsername());
         patrolInspectionArea.setCreateTime(LocalDateTime.now());
         patrolInspectionArea.setEnable(1);
@@ -123,7 +128,8 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
         queryWrapperTwo.select(PatrolInspectionArea::getAreaFid)
                 .eq(PatrolInspectionArea::getAreaFid, patrolInspectionAreaMap.getAreaFid())
                 .eq(PatrolInspectionArea::getAreaName, patrolInspectionArea.getAreaName())
-                .eq(PatrolInspectionArea::getEnable, 1);
+                .eq(PatrolInspectionArea::getEnable, 1)
+                .ne(PatrolInspectionArea::getId,patrolInspectionArea.getId());
         List<PatrolInspectionArea> list1 = this.list(queryWrapperTwo);
         if (list1.size() > 0) {
             throw new BusinessException(patrolInspectionArea.getAreaName() + "重复,区域不可以重复");
@@ -136,7 +142,7 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
         for (int i = 0; i < list.size(); i++) {
             PatrolInspectionArea patrolInspectionAreaSon = new PatrolInspectionArea();
             patrolInspectionAreaSon.setId(list.get(i).getId());
-            patrolInspectionAreaSon.setCompanyId(patrolInspectionArea.getCompanyId());
+            patrolInspectionAreaSon.setDeptId(patrolInspectionArea.getDeptId());
             this.updateById(patrolInspectionAreaSon);
         }
     }
@@ -195,11 +201,11 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
         queryWrapper.orderByDesc(PatrolInspectionArea::getId);
         List<PatrolInspectionArea> list = this.list(queryWrapper);
         if (CollectionUtils.isNotEmpty(list)) {
-            List<BaseCompany> companyList = baseCompanyService.userCompanySelect();
+            List<Map<String, Object>> deptList = remoteDeptService.getDeptList(SecurityUtils.getTenantId());
             for (int i = 0; i < list.size(); i++) {
-                for (int j = 0; j < companyList.size(); j++) {
-                    if (list.get(i).getCompanyId().equals(companyList.get(j).getCompanyId())) {
-                        list.get(i).setCompanyName(companyList.get(j).getCompanyName());
+                for (int j = 0; j < deptList.size(); j++) {
+                    if (list.get(i).getDeptId().equals(deptList.get(j).get("dept_id"))) {
+                        list.get(i).setCompanyName(deptList.get(j).get("dept_name").toString());
                     }
                 }
             }
@@ -232,9 +238,9 @@ public class PatrolInspectionAreaServiceImpl extends AbstractCrudService<PatrolI
     }
 
     @Override
-    public List<Integer> areaIdList(String companyId){
+    public List<Integer> areaIdList(Integer deptId){
         LambdaQueryWrapper<PatrolInspectionArea> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(PatrolInspectionArea::getCompanyId, companyId)
+        queryWrapper.eq(PatrolInspectionArea::getDeptId, deptId)
                 .eq(PatrolInspectionArea::getEnable, 1);
         List<PatrolInspectionArea> list = this.list(queryWrapper);
         List<Integer> areaIdList = new ArrayList<>();

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java

@@ -194,7 +194,7 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
                 patrolInspectionAreaVo.setId(patrolInspectionAreaList.get(i).getId());
                 patrolInspectionAreaVo.setAreaName(patrolInspectionAreaList.get(i).getAreaName());
                 patrolInspectionAreaVo.setAreaFid(patrolInspectionAreaList.get(i).getAreaFid());
-                patrolInspectionAreaVo.setCompanyId(patrolInspectionAreaList.get(i).getCompanyId());
+                patrolInspectionAreaVo.setDeptId(patrolInspectionAreaList.get(i).getDeptId());
                 patrolInspectionAreaVo.setTenantId(patrolInspectionAreaList.get(i).getTenantId());
                 patrolInspectionAreaVo.setCreator(patrolInspectionAreaList.get(i).getCreator());
                 patrolInspectionAreaVo.setCreateTime(patrolInspectionAreaList.get(i).getCreateTime());

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanServiceImpl.java

@@ -102,7 +102,7 @@ public class PatrolInspectionPlanServiceImpl extends AbstractCrudService<PatrolI
                 patrolInspectionAreaVo.setId(patrolInspectionAreaList.get(i).getId());
                 patrolInspectionAreaVo.setAreaName(patrolInspectionAreaList.get(i).getAreaName());
                 patrolInspectionAreaVo.setAreaFid(patrolInspectionAreaList.get(i).getAreaFid());
-                patrolInspectionAreaVo.setCompanyId(patrolInspectionAreaList.get(i).getCompanyId());
+                patrolInspectionAreaVo.setDeptId(patrolInspectionAreaList.get(i).getDeptId());
                 patrolInspectionAreaVo.setTenantId(patrolInspectionAreaList.get(i).getTenantId());
                 patrolInspectionAreaVo.setCreator(patrolInspectionAreaList.get(i).getCreator());
                 patrolInspectionAreaVo.setCreateTime(patrolInspectionAreaList.get(i).getCreateTime());

+ 3 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java

@@ -262,8 +262,8 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
         patrolInspectionRecord.setSiteType(planRecordVo.getSiteType());
         patrolInspectionRecord.setAreaName(areaList.get(0).getAreaName());
         patrolInspectionRecord.setSiteName(planRecordVo.getSiteName());
-        patrolInspectionRecord.setName(SecurityUtils.getLoginUser().getSysPerson().getFullName());
-        patrolInspectionRecord.setPhone(SecurityUtils.getLoginUser().getSysPerson().getLinkPhone());
+        patrolInspectionRecord.setName(SecurityUtils.getLoginUser().getSysUser().getNickName());
+        patrolInspectionRecord.setPhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
         patrolInspectionRecord.setPlanType(planSonList.get(0).getPlanType());
         patrolInspectionRecord.setSiteStatus(planRecordVo.getSiteStatus());
         patrolInspectionRecord.setLongitude(planRecordVo.getLongitude());
@@ -383,7 +383,7 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
             throw new BusinessException("不可重复采集地点");
         }
         patrolInspectionSite.setCreator(SecurityUtils.getUsername());
-        patrolInspectionSite.setCollector(SecurityUtils.getUsername());
+        patrolInspectionSite.setCollector(SecurityUtils.getLoginUser().getSysUser().getNickName());
         patrolInspectionSite.setCollectTime(LocalDateTime.now());
         patrolInspectionSite.setCreateTime(LocalDateTime.now());
         patrolInspectionSite.setTenantId(SecurityUtils.getTenantId());

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteServiceImpl.java

@@ -89,7 +89,7 @@ public class PatrolInspectionSiteServiceImpl extends AbstractCrudService<PatrolI
                 patrolInspectionAreaVo.setId(patrolInspectionAreaList.get(i).getId());
                 patrolInspectionAreaVo.setAreaName(patrolInspectionAreaList.get(i).getAreaName());
                 patrolInspectionAreaVo.setAreaFid(patrolInspectionAreaList.get(i).getAreaFid());
-                patrolInspectionAreaVo.setCompanyId(patrolInspectionAreaList.get(i).getCompanyId());
+                patrolInspectionAreaVo.setDeptId(patrolInspectionAreaList.get(i).getDeptId());
                 patrolInspectionAreaVo.setTenantId(patrolInspectionAreaList.get(i).getTenantId());
                 patrolInspectionAreaVo.setCreator(patrolInspectionAreaList.get(i).getCreator());
                 patrolInspectionAreaVo.setCreateTime(patrolInspectionAreaList.get(i).getCreateTime());

+ 2 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionAreaVo.java

@@ -50,9 +50,9 @@ public class PatrolInspectionAreaVo implements Serializable {
     private Integer areaFid;
 
     /**
-     * 单位ID
+     * 部门ID
      */
-    private String companyId;
+    private Integer deptId;
 
     /**
      * 租户ID

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionRecordExportVo.java

@@ -75,7 +75,7 @@ public class PatrolInspectionRecordExportVo implements Serializable {
     /**
      * 计划类型(1 普通计划,2 按次计划)
      */
-    @Excel(name = "地点类型", readConverterExp = "1=普通计划,2=按次计划")
+    @Excel(name = "计划类型", readConverterExp = "1=普通计划,2=按次计划")
     private Integer planType;
 
     /**

+ 1 - 1
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAreaMapper.xml

@@ -7,7 +7,7 @@
         <id column="id" property="id" />
         <result column="area_name" property="areaName" />
         <result column="area_fid" property="areaFid" />
-        <result column="company_id" property="companyId" />
+        <result column="dept_id" property="deptId" />
         <result column="tenant_id" property="tenantId" />
         <result column="create_time" property="createTime" />
         <result column="creator" property="creator" />

+ 13 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAlarmController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.stereotype.Controller;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -110,5 +111,17 @@ public class BaseAlarmController {
     public ApiResult<List<Object>> alarmStatistic(@RequestParam(value = "deptId", required = false) Integer deptId){
         return ApiResult.success(baseAlarmService.alarmStatistic(deptId));
     }
+
+    /**
+     * 实时报警-报警统计
+     * @param startTime 开始时间
+     * @param endTime 开始时间
+     * @return
+     */
+    @GetMapping("/alarmStatisticDay")
+    public ApiResult<List<Map<String,Object>>> alarmStatisticDay(@RequestParam(value = "startTime", required = false) String startTime,
+                                                                 @RequestParam(value = "endTime", required = false) String endTime){
+        return ApiResult.success(baseAlarmService.alarmStatisticDay(startTime,endTime));
+    }
 }
 

+ 12 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/BaseAlarm.java

@@ -162,4 +162,16 @@ public class BaseAlarm implements Serializable {
      */
     @TableField(exist = false)
     private String alarmTime1;
+
+    /**
+     * 设备类型
+     */
+    @TableField(exist = false)
+    private Integer deviceType;
+
+    /**
+     * 设备类型名称
+     */
+    @TableField(exist = false)
+    private String deviceTypeName;
 }

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseAlarmMapper.java

@@ -7,6 +7,7 @@ import com.usky.iot.domain.DmpDeviceInfo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -26,4 +27,8 @@ public interface BaseAlarmMapper extends CrudMapper<BaseAlarm> {
     List<BaseAlarm> getUnDeviceAlarmList(@Param("devList") List<String> devList);
 
     List<BaseAlarm> getDeviceAlarmList(@Param("devList") List<String> devList);
+
+    List<Map<String,Object>> getAlarmStatisticDay(@Param("startTime") String startTime,
+                                                  @Param("endTime") String endTime,
+                                                  @Param("tenantId") Integer tenantId);
 }

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceTypeMapper.java

@@ -4,6 +4,7 @@ import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.DmpDeviceType;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpProductInfo;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
@@ -15,6 +16,7 @@ import java.util.List;
  * @author ya
  * @since 2023-06-06
  */
+@Repository
 public interface DmpDeviceTypeMapper extends CrudMapper<DmpDeviceType> {
     List<DmpProductInfo> getProductInfo(Integer tenantId);
 }

+ 7 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAlarmService.java

@@ -10,6 +10,7 @@ import com.usky.iot.service.vo.BaseAlarmResponeVO;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -42,4 +43,10 @@ public interface BaseAlarmService extends CrudService<BaseAlarm> {
      * @return
      */
     List<Object> alarmStatistic(Integer deptId);
+
+    /**
+     * 实时报警-报警统计
+     * @return
+     */
+    List<Map<String,Object>> alarmStatisticDay(String startTime, String endTime);
 }

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmNoticeServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.iot.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -73,7 +74,7 @@ public class BaseAlarmNoticeServiceImpl extends AbstractCrudService<BaseAlarmNot
     public CommonPage<BaseAlarmNotice> page(BaseAlarmListVO baseAlarmListVO){
         IPage<BaseAlarmNotice> page = new Page<>(baseAlarmListVO.getCurrent(),baseAlarmListVO.getSize());
         LambdaQueryWrapper<BaseAlarmNotice> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getAlarmType()),BaseAlarmNotice::getTypeCode,
+        queryWrapper.in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarmNotice::getTypeCode,
                 baseAlarmListVO.getAlarmType())
                 .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarmNotice::getProductCode,
                         baseAlarmListVO.getProductCode())

+ 79 - 10
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -13,6 +13,7 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.*;
 import com.usky.iot.mapper.BaseAlarmMapper;
+import com.usky.iot.mapper.DmpDeviceTypeMapper;
 import com.usky.iot.service.*;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.service.config.websocket.WebSocket;
@@ -29,6 +30,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -61,6 +63,9 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
     @Autowired
     private DmpDeviceStatusService dmpDeviceStatusService;
 
+    @Autowired
+    private DmpDeviceTypeMapper dmpDeviceTypeMapper;
+
     @Override
     public CommonPage<BaseAlarmResponeVO> statistic(BaseAlarmRequestVO baseAlarmRequestVO){
 
@@ -179,13 +184,38 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         List<BaseAlarm> list = new ArrayList<>();
 
         LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
-                .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
-                .eq(StringUtils.isNotBlank(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,baseAlarmListVO.getAlarmType())
-                .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
-                .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
-                .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
-                .orderByDesc(BaseAlarm::getId);
+        if (StringUtils.isNotBlank(baseAlarmListVO.getTypeCode())){
+            if (baseAlarmListVO.getTypeCode().equals("1")){
+                queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
+                        .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
+                        .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
+                                baseAlarmListVO.getAlarmType())
+                        .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
+                        .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
+                        .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
+                        .eq(BaseAlarm::getAlarmGrade,1)
+                        .orderByDesc(BaseAlarm::getId);
+            }else if (baseAlarmListVO.getTypeCode().equals("2")){
+                queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
+                        .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
+                        .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
+                                baseAlarmListVO.getAlarmType())
+                        .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
+                        .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
+                        .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
+                        .ne(BaseAlarm::getAlarmGrade,1)
+                        .orderByDesc(BaseAlarm::getId);
+            }
+        }else {
+            queryWrapper.eq(StringUtils.isNotBlank(baseAlarmListVO.getDeviceId()),BaseAlarm::getDeviceId,baseAlarmListVO.getDeviceId())
+                    .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
+                    .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
+                            baseAlarmListVO.getAlarmType())
+                    .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
+                    .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
+                    .eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId())
+                    .orderByDesc(BaseAlarm::getId);
+        }
         List<BaseAlarm> records = this.list(queryWrapper);
         if(records.size()>0){
             List<String> devList = new ArrayList<>();
@@ -199,15 +229,24 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                         .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
                         .eq(DmpDeviceInfo::getDeleteFlag,0);
                 List<DmpDeviceInfo> deviceInfo = dmpDeviceInfoService.list(queryWrapper1);
+                LambdaQueryWrapper<BaseFacilityDevice> lambdaQuery1 = Wrappers.lambdaQuery();
+                lambdaQuery1.in(BaseFacilityDevice::getDeviceId,devList);
+                List<BaseFacilityDevice> records1 = baseFacilityDeviceService.list(lambdaQuery1);
                 if(CollectionUtils.isNotEmpty(deviceInfo)){
                     for(int i=0;i<records.size();i++){
                         for(int j=0;j<deviceInfo.size();j++){
                             if(records.get(i).getDeviceId().equals(deviceInfo.get(j).getDeviceId())){
                                 records.get(i).setDeviceName(deviceInfo.get(j).getDeviceName());
+                                records.get(i).setDeviceType(deviceInfo.get(j).getDeviceType());
+                                break;
+                            }
+                        }
+                        for(int k=0;k<records1.size();k++){
+                            if(records.get(i).getDeviceId().equals(records1.get(k).getDeviceId())){
+                                records.get(i).setFacilityId(records1.get(k).getFacilityId());
                                 break;
                             }
                         }
-
                     }
                 }
             }
@@ -246,8 +285,32 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         if(pageNum != null && pageSize >0){
             current = (pageNum-1)*pageSize;
         }
+        QueryWrapper<DmpDeviceType> queryWrapper5 = Wrappers.query();
+        queryWrapper5.eq("tenant_id",SecurityUtils.getTenantId());
+        List<DmpDeviceType> deviceTypeList = dmpDeviceTypeMapper.selectList(queryWrapper5);
         List<BaseAlarm> info = list.stream().sorted(Comparator.comparing(BaseAlarm::getId,Comparator.reverseOrder())).skip(current).limit(pageSize).collect(Collectors.toList());
-
+        LocalDateTime toDateTime = LocalDateTime.now();
+        for(int l=0;l<info.size();l++){
+            LocalDateTime fromDateTime = info.get(l).getAlarmTime();
+            LocalDateTime tempDateTime = LocalDateTime.from( fromDateTime );
+            long days = tempDateTime.until( toDateTime, ChronoUnit.DAYS);
+            tempDateTime = tempDateTime.plusDays( days );
+            long hours = tempDateTime.until( toDateTime, ChronoUnit.HOURS);
+            tempDateTime = tempDateTime.plusHours( hours );
+            long minutes = tempDateTime.until( toDateTime, ChronoUnit.MINUTES);
+            tempDateTime = tempDateTime.plusMinutes( minutes );
+            long seconds = tempDateTime.until( toDateTime, ChronoUnit.SECONDS);
+            if (days>0){
+                info.get(l).setAlarmTime1(days+"天");
+            }else {
+                info.get(l).setAlarmTime1(hours+":"+minutes+":"+seconds);
+            }
+            for(int m=0;m<deviceTypeList.size();m++){
+                if(info.get(l).getDeviceType().equals(Integer.parseInt(deviceTypeList.get(m).getTypeCode()))){
+                    info.get(l).setDeviceTypeName(deviceTypeList.get(m).getTypeName());
+                }
+            }
+        }
         return new CommonPage<BaseAlarm>(info,total,pageSize,pageNum);
 
     }
@@ -363,7 +426,8 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         LambdaQueryWrapper<BaseAlarm> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper
                 .eq(StringUtils.isNotBlank(baseAlarmListVO.getProductCode()),BaseAlarm::getProductCode,baseAlarmListVO.getProductCode())
-                .eq(StringUtils.isNotBlank(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,baseAlarmListVO.getAlarmType())
+                .in(CollectionUtils.isNotEmpty(baseAlarmListVO.getAlarmType()),BaseAlarm::getAlarmType,
+                        baseAlarmListVO.getAlarmType())
                 .eq(null != baseAlarmListVO.getHandleStatus(),BaseAlarm::getHandleStatus,baseAlarmListVO.getHandleStatus())
                 .between(StringUtils.isNotBlank(baseAlarmListVO.getStartTime()) && StringUtils.isNotBlank(baseAlarmListVO.getEndTime()),BaseAlarm::getAlarmTime,baseAlarmListVO.getStartTime(),baseAlarmListVO.getEndTime())
                 .orderByDesc(BaseAlarm::getId);
@@ -700,6 +764,11 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
         list.add(map);
         return list;
     }
+    @Override
+    public List<Map<String,Object>> alarmStatisticDay(String startTime,String endTime) {
+        List<Map<String,Object>> list = baseMapper.getAlarmStatisticDay(startTime,endTime,SecurityUtils.getTenantId());
+        return list;
+    }
 }
 
 

+ 8 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/BaseAlarmListVO.java

@@ -2,6 +2,8 @@ package com.usky.iot.service.vo;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class BaseAlarmListVO {
     /**
@@ -36,7 +38,7 @@ public class BaseAlarmListVO {
     /**
      * 告警类型
      */
-    private String alarmType;
+    private List<String> alarmType;
 
     /**
      * 处理状态;0 未处理,1 已处理
@@ -53,4 +55,9 @@ public class BaseAlarmListVO {
      */
     private String endTime;
 
+    /**
+     * 报警分类(1、报警 2、隐患)
+     */
+    private String typeCode;
+
 }

+ 28 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseAlarmMapper.xml

@@ -92,4 +92,32 @@
             </if>
         </where>
     </select>
+    <select id="getAlarmStatisticDay" resultType="java.util.Map">
+        SELECT
+        `date`,
+        MAX( `sum` ) AS `sum`
+        FROM
+            (
+            SELECT
+                @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`,
+                0 AS `sum`
+            FROM
+                ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM base_build ) t1
+            WHERE
+                @cdate > #{startTime} UNION ALL
+            SELECT
+                DATE(alarm_time) AS date,
+                COUNT( * ) AS 'sum'
+            FROM
+                `base_alarm`
+            WHERE
+                base_alarm.alarm_time >= #{startTime} AND base_alarm.tenant_id = #{tenantId}
+            GROUP BY
+                DATE DESC
+            ) _tmpAllTable
+            WHERE
+               `date` BETWEEN #{startTime} AND #{endTime}
+        GROUP BY
+            `date` DESC
+    </select>
 </mapper>

+ 25 - 16
service-issue/service-issue-biz/src/main/java/com/usky/issue/annotation/CheckSignAspect.java

@@ -1,12 +1,16 @@
 package com.usky.issue.annotation;
 
+import com.alibaba.fastjson.JSONObject;
+import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.utils.StringUtils;
+import com.usky.issue.mapper.SpProjectConfigMapper;
 import com.usky.issue.service.util.SignUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.context.request.RequestAttributes;
@@ -25,7 +29,8 @@ import java.util.Objects;
 @Configuration
 @Slf4j
 public class CheckSignAspect {
-
+    @Autowired
+    private SpProjectConfigMapper spProjectConfigMapper;
     @Value("${sign.expireTime}")
     private long expireTime;//接口签名验证超时时间
     @Value("${sign.secretKey}")
@@ -42,36 +47,40 @@ public class CheckSignAspect {
         try {
             ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
             HttpServletRequest request = Objects.requireNonNull(sra).getRequest();
-
-            String timestamp = request.getHeader("timestamp");//获取timestamp参数
-            String sign = request.getHeader("sign");//获取sign参数
-
-            if (StringUtils.isBlank(timestamp) || StringUtils.isBlank(sign)) {
-                return "timestamp和sign参数不能为空";
+            Object[] args = joinPoint.getArgs();
+            String originalValue = (String) args[0];
+            JSONObject requestBody = JSONObject.parseObject(originalValue);
+            String timestamp = requestBody.get("timestamp").toString();//获取timestamp参数
+            String sign = requestBody.get("sign").toString();//获取sign参数
+            String appKey = request.getHeader("appKey");//获取appKey参数
+            if (StringUtils.isBlank(timestamp) || StringUtils.isBlank(sign) || StringUtils.isBlank(appKey)) {
+                return ApiResult.success("timestamp和sign、appKey参数不能为空");
             }
             long requestTime = Long.valueOf(timestamp);
             long now = System.currentTimeMillis() / 1000;
-            log.info("now={}", now);
             // 请求发起时间与当前时间超过expireTime,则接口请求过期
             if (now - requestTime > expireTime) {
-                return "接口请求过期";
+                return ApiResult.success("接口请求过期");
             }
 
-            String generatedSign = generatedSignature(request, timestamp);
+            String generatedSign = generatedSignature(request, timestamp,appKey);
             if (!generatedSign.equals(sign)) {
-                return "签名校验错误";
+                return ApiResult.success("签名校验错误");
             }
-
-            Object result = joinPoint.proceed();
+            String companyCode = spProjectConfigMapper.getCompanyCode(appKey);
+            StringBuilder newString = new StringBuilder(originalValue);
+            newString.insert(newString.lastIndexOf("}"), ",\"companyCode\":\""+companyCode+"\"");
+            args[0] = newString.toString();
+            Object result = joinPoint.proceed(args);
             return result;
         } catch (Throwable t) {
-            return "签名校验异常";
+            return ApiResult.success("签名校验异常");
         }
 
     }
 
     //获取请求参数并生成签名
-    private String generatedSignature(HttpServletRequest request, String timestamp) {
+    private String generatedSignature(HttpServletRequest request, String timestamp,String appKey) {
         //获取RequestBody参数,此处需要配合过滤器处理request后才能获取
         String bodyParam = null;
         if (request instanceof ContentCachingRequestWrapper) {
@@ -86,7 +95,7 @@ public class CheckSignAspect {
         Map<String, String> requestPathMap = (Map<String, String>) webRequest.getAttribute(
                 HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);
 
-        return SignUtil.sign(bodyParam, requestParameterMap, requestPathMap, secretKey, timestamp);
+        return SignUtil.sign(bodyParam, requestParameterMap, requestPathMap, secretKey, timestamp,appKey);
     }
 
 }

+ 31 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/SpProjectConfigController.java

@@ -0,0 +1,31 @@
+package com.usky.issue.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.issue.service.SpProjectConfigService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/spProjectConfig")
+public class SpProjectConfigController {
+    @Autowired
+    SpProjectConfigService spProjectConfigService;
+    @PostMapping("/getCompanyCode")
+    ApiResult<String> getCompanyCode(@RequestBody SpProjectConfigRequestVO requestVO) {
+        return ApiResult.success(spProjectConfigService.getCompanyCode(requestVO));
+    }
+
+}

+ 21 - 1
service-issue/service-issue-biz/src/main/java/com/usky/issue/controller/web/YtDeviceStatusController.java

@@ -3,6 +3,7 @@ package com.usky.issue.controller.web;
 
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.issue.annotation.CheckSign;
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.issue.service.YtDeviceStatusService;
 import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
@@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -25,11 +27,18 @@ public class YtDeviceStatusController {
     @Autowired
     private YtDeviceStatusService ytDeviceStatusService;
 
+    @CheckSign
+    @PostMapping("hello")
+    ApiResult<String> hello(@RequestBody String requestBody){
+        return ApiResult.success(requestBody);
+    }
+
     /**
-     * 分页
+     * 离线设备查询
      * @param requestVO
      * @return
      */
+    //CheckSign
     @PostMapping("page")
     ApiResult<CommonPage<YtDeviceStatus>> page(@RequestBody YtDeviceStatusRequestVO requestVO){
         return ApiResult.success(ytDeviceStatusService.page(requestVO));
@@ -45,5 +54,16 @@ public class YtDeviceStatusController {
         return ApiResult.success(ytDeviceStatusService.export());
     }
 
+    /**
+     * 查询对应单位对应类型设备
+     * @param
+     * @return
+     */
+    @CheckSign
+    @PostMapping("deviceList")
+    ApiResult <List<Map<String, Object>>> deviceList(@RequestBody String requestBody){
+        return ApiResult.success(ytDeviceStatusService.deviceList(requestBody));
+    }
+
 }
 

+ 42 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/SpProjectConfig.java

@@ -0,0 +1,42 @@
+package com.usky.issue.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SpProjectConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * appKey
+     */
+    private String appKey;
+
+    /**
+     * 项目对应单位编号
+     */
+    private String companyCode;
+
+
+}

+ 2 - 2
service-issue/service-issue-biz/src/main/java/com/usky/issue/domain/YtDeviceStatus.java

@@ -2,6 +2,8 @@ package com.usky.issue.domain;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.List;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -68,6 +70,4 @@ public class YtDeviceStatus implements Serializable {
      * 时间差值(小时)
      */
     private Long difference;
-
-
 }

+ 20 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/SpProjectConfigMapper.java

@@ -0,0 +1,20 @@
+package com.usky.issue.mapper;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Repository
+public interface SpProjectConfigMapper extends CrudMapper<SpProjectConfig> {
+    String getCompanyCode(@Param("appKey") String appKey);
+}
+

+ 12 - 3
service-issue/service-issue-biz/src/main/java/com/usky/issue/mapper/YtDeviceStatusMapper.java

@@ -2,10 +2,12 @@ package com.usky.issue.mapper;
 
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.common.mybatis.core.CrudMapper;
-import feign.Param;
+import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,8 +19,15 @@ import java.util.List;
  */
 @Repository
 public interface YtDeviceStatusMapper extends CrudMapper<YtDeviceStatus> {
+    /*
+    deviceType 设备类型
+    current 第几页
+    size 页大小
+     */
     List<YtDeviceStatus> getDeviceStatusType(@Param("deviceType") String deviceType,
-                                             @Param("Current") int Current,
-                                             @Param("Size") int Size);
+                                             @Param("current") int current,
+                                             @Param("size") int size);
+
     List<YtDeviceStatus> exportData();
+
 }

+ 19 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/SpProjectConfigService.java

@@ -0,0 +1,19 @@
+package com.usky.issue.service;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+public interface SpProjectConfigService extends CrudService<SpProjectConfig> {
+    String getCompanyCode(SpProjectConfigRequestVO requestVO);
+}
+

+ 8 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/YtDeviceStatusService.java

@@ -6,6 +6,7 @@ import com.usky.common.mybatis.core.CrudService;
 import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -16,6 +17,13 @@ import java.util.List;
  * @since 2023-11-23
  */
 public interface YtDeviceStatusService extends CrudService<YtDeviceStatus> {
+
+    //离线设备分页查询
     CommonPage<YtDeviceStatus> page(YtDeviceStatusRequestVO requestVO);
+
+    //离线设备数据导出
     List<YtDeviceStatus> export();
+
+    //根据单位编号查询离线设备
+    List<Map<String, Object>> deviceList(String requestBody);
 }

+ 29 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/SpProjectConfigServiceImpl.java

@@ -0,0 +1,29 @@
+package com.usky.issue.service.impl;
+
+import com.usky.issue.domain.SpProjectConfig;
+import com.usky.issue.mapper.SpProjectConfigMapper;
+import com.usky.issue.service.SpProjectConfigService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.issue.service.vo.SpProjectConfigRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2023-12-11
+ */
+@Service
+public class SpProjectConfigServiceImpl extends AbstractCrudService<SpProjectConfigMapper, SpProjectConfig> implements SpProjectConfigService {
+    @Autowired
+    SpProjectConfigMapper spProjectConfigMapper;
+    @Override
+    public String getCompanyCode(SpProjectConfigRequestVO RequestVO) {
+        String appKey = RequestVO.getAppKey();
+        String companyCode = spProjectConfigMapper.getCompanyCode(appKey);
+        return companyCode;
+    }
+}

+ 26 - 3
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/impl/YtDeviceStatusServiceImpl.java

@@ -1,7 +1,11 @@
 package com.usky.issue.service.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.issue.domain.YtDeviceStatus;
 import com.usky.issue.mapper.YtDeviceStatusMapper;
 import com.usky.issue.service.YtDeviceStatusService;
@@ -10,7 +14,8 @@ import com.usky.issue.service.vo.YtDeviceStatusRequestVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -23,7 +28,6 @@ import java.util.stream.Collectors;
  */
 @Service
 public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatusMapper, YtDeviceStatus> implements YtDeviceStatusService {
-
     @Autowired
     private YtDeviceStatusMapper ytDeviceStatusMapper;
 
@@ -58,9 +62,28 @@ public class YtDeviceStatusServiceImpl extends AbstractCrudService<YtDeviceStatu
         return new CommonPage<>(records, total, pageSize, pageCurrent);
     }
 
+    /*
+    导出离线数据查询结果
+     */
     @Override
     public List<YtDeviceStatus> export() {
         return ytDeviceStatusMapper.exportData();
     }
 
-}
+    /*
+    根据传入单位编号查询所有设备信息
+    */
+    @Override
+    public List<Map<String, Object>> deviceList(String requestBody) {
+        JSONObject requestVO = JSONObject.parseObject(requestBody);
+        String companyCode = requestVO.get("companyCode").toString();
+        QueryWrapper<YtDeviceStatus> queryWrapper = Wrappers.query();
+        queryWrapper.select("device_type AS deviceType","COUNT(*) AS deviceTypeCounts","COUNT(difference < 48 OR " +
+                        "NULL) AS onlineCount","COUNT(difference >= 48 OR NULL) AS offlineCount")
+                .eq("company_code",companyCode)
+                .groupBy("device_type");
+        List<Map<String, Object>> deviceStatusList = this.listMaps(queryWrapper);
+        return deviceStatusList;
+    }
+
+}

+ 25 - 24
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/util/SignUtil.java

@@ -26,30 +26,31 @@ public class SignUtil {
         return sortMap;
     }
 
-    public static String sign(String body, Map<String, String[]> params, Map<String, String> requestPathMap, String secretKey, String timestamp) {
-        StringBuilder sb = new StringBuilder();
-        if (StringUtils.isNotBlank(body)) {
-            sb.append(body).append('#');
-        }
-
-        if (!CollectionUtils.isEmpty(params)) {
-            params.entrySet()
-                    .stream()
-                    .sorted(Map.Entry.comparingByKey())
-                    .forEach(paramEntry -> {
-                        String paramValue = String.join(",", Arrays.stream(paramEntry.getValue()).sorted().toArray(String[]::new));
-                        sb.append(paramEntry.getKey()).append("=").append(paramValue).append('#');
-                    });
-        }
-
-        if (!CollectionUtils.isEmpty(requestPathMap)) {
-            for (String key : requestPathMap.keySet()) {
-                String value = requestPathMap.get(key);
-                sb.append(key).append("=").append(value).append('#');
-            }
-
-        }
-        String a = String.join("#", secretKey, timestamp, sb.toString());
+    public static String sign(String body, Map<String, String[]> params, Map<String, String> requestPathMap,
+                              String secretKey, String timestamp,String appKey) {
+//        StringBuilder sb = new StringBuilder();
+//        if (StringUtils.isNotBlank(body)) {
+//            sb.append(body).append('#');
+//        }
+
+//        if (!CollectionUtils.isEmpty(params)) {
+//            params.entrySet()
+//                    .stream()
+//                    .sorted(Map.Entry.comparingByKey())
+//                    .forEach(paramEntry -> {
+//                        String paramValue = String.join(",", Arrays.stream(paramEntry.getValue()).sorted().toArray(String[]::new));
+//                        sb.append(paramEntry.getKey()).append("=").append(paramValue).append('#');
+//                    });
+//        }
+//
+//        if (!CollectionUtils.isEmpty(requestPathMap)) {
+//            for (String key : requestPathMap.keySet()) {
+//                String value = requestPathMap.get(key);
+//                sb.append(key).append("=").append(value).append('#');
+//            }
+//
+//        }
+        String a = String.join("#", secretKey, timestamp, appKey);
         return SecureUtil.md5(a);
     }
 }

+ 19 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/SpProjectConfigRequestVO.java

@@ -0,0 +1,19 @@
+package com.usky.issue.service.vo;
+
+import lombok.Data;
+
+/**
+ * @description:TODO
+ * @author: fu
+ * @create: 2023/11/23 15:58
+ */
+@Data
+public class SpProjectConfigRequestVO {
+
+    /**
+     * appKey
+     */
+    private String appKey;
+
+}
+

+ 7 - 0
service-issue/service-issue-biz/src/main/java/com/usky/issue/service/vo/YtDeviceStatusRequestVO.java

@@ -2,6 +2,8 @@ package com.usky.issue.service.vo;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @description:TODO
  * @author: fu
@@ -25,5 +27,10 @@ public class YtDeviceStatusRequestVO {
      */
     private String deviceType;
 
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
 }
 

+ 1 - 1
service-issue/service-issue-biz/src/main/resources/bootstrap.yml

@@ -1,6 +1,6 @@
 # Tomcat
 server:
-  port: 9887
+  port: 9892
 
 # Spring
 spring: 

+ 23 - 0
service-issue/service-issue-biz/src/main/resources/mapper/issue/SpProjectConfigMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.issue.mapper.SpProjectConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.issue.domain.SpProjectConfig">
+        <id column="id" property="id" />
+        <result column="project_name" property="projectName" />
+        <result column="app_key" property="appKey" />
+        <result column="company_code" property="companyCode" />
+    </resultMap>
+    <!--根据传入appKey查询company_code-->
+    <select id="getCompanyCode" resultType="java.lang.String">
+        select company_code
+        from sp_project_config
+        <where>
+            <if test="appKey != null">
+                and app_key = #{appKey}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 15 - 13
service-issue/service-issue-biz/src/main/resources/mapper/issue/YtDeviceStatusMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.issue.domain.YtDeviceStatus">
         <result column="id" property="id"/>
-        <result column="company_code" property="companyCode"/>
+        <result column="company_code" property="companyCode" typeHandler="org.apache.ibatis.type.StringTypeHandler"/>
         <result column="company_name" property="companyName"/>
         <result column="device_code" property="deviceCode"/>
         <result column="device_name" property="deviceName"/>
@@ -16,29 +16,31 @@
         <result column="difference" property="difference"/>
     </resultMap>
 
+    <!-- 离线设备数据查询 -->
     <select id="getDeviceStatusType" resultType="com.usky.issue.domain.YtDeviceStatus">
-        select
-        device_code,device_name,address,device_type,company_name,company_code,data_time
+        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time,difference
         from yt_device_status yds
         <where>
-                difference > 48
-                AND company_code in ('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
-                '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
-                '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
-                '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',
-                '10315','10312','10222','10077','10146','10151','10232','10116','10114','10122','10166','10353','10358',
-                '10359','10361','10360','10140','10362','10206','10355','10105','10338','10318','10367','10124','10365',
-                '10363','10368','10371','10341','10375','10373','10126','10374','10376','10378')
+            difference > 48
+            AND company_code IN('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
+            '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
+            '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
+            '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',
+            '10315','10312','10222','10077','10146','10151','10232','10116','10114','10122','10166','10353','10358',
+            '10359','10361','10360','10140','10362','10206','10355','10105','10338','10318','10367','10124','10365',
+            '10363','10368','10371','10341','10375','10373','10126','10374','10376','10378')
         </where>
         ORDER BY company_code ASC
     </select>
+
+    <!-- 离线设备数据导出 -->
     <select id="exportData" resultType="com.usky.issue.domain.YtDeviceStatus">
-        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time
+        SELECT device_code,device_name,address,device_type,company_name,company_code,data_time,difference
         FROM yt_device_status yds
         <where>
             device_type NOT IN ('烟感系统','电气火灾','视频监测')
             AND difference > 48
-            AND company_code IN ('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
+            AND company_code IN('10357','10356','10354','10352','10349','10350','10347','10346','10334','10188',
             '10343','10348','10331','10320','10320','10164','10071','10345','10144','10064','10336','10131','10205',
             '10340','10339','10225','10323','10320','10134','10337','10226','10214','10160','10076','10079','10078',
             '10215','10324','10324','10154','10106','10121','10067','10325','10323','10322','10320','10128','10314',