升降机的接口

This commit is contained in:
Administrator 2023-06-10 11:02:34 +08:00
parent 41ccea4a87
commit 8fa50a4b08
32 changed files with 511 additions and 145 deletions

View File

@ -226,12 +226,4 @@ public class SystemUserController {
return systemUserService.deleteZjwjUser(systemUser);
}
@ApiOperation(value = "调外部接口获取FMS监控⼤屏接⼊url", notes = "调外部接口获取FMS监控⼤屏接⼊url", httpMethod = "GET")
@ApiImplicitParam(name = "account", value = "账号", paramType = "query", required = true, dataType = "String")
@GetMapping(value = "/getFmsMonitoringLargeScreenAccessUrl")
public Result<Map<String, Object>> getFmsMonitoringLargeScreenAccessUrl(@RequestParam Map<String, Object> map) {
HashMap<String, Object> rsMap = systemUserService.getFmsMonitoringLargeScreenAccessUrl(map);
return Result.success(rsMap);
}
}

View File

@ -118,9 +118,6 @@ public class SystemUser implements Serializable {
*/
private String sjUnifiedAuthenticationOrgIds;
@ApiModelProperty(value = "fms监控大屏key")
private String fmsMonitoringScreenKey;
@TableField(exist = false)
@ApiModelProperty(value = "角色ID")
private java.lang.Long roleId;

View File

@ -64,6 +64,4 @@ public interface ISystemUserService extends IService<SystemUser> {
Result<List<SystemUser>> getZjwjUserList(SystemUser systemUser);
HashMap<String, Object> getFmsMonitoringLargeScreenAccessUrl(Map<String, Object> map);
}

View File

@ -93,16 +93,6 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
private ProjectExternalSystemServiceMapper projectExternalSystemServiceMapper;
@Value("${mqtt-scope}")
private String scope;
/**
* 地址host
*/
@Value("${fmsMonitoringScreenRequestHost:}")
private String fmsMonitoringScreenRequestHost;
/**
* 监控地址
*/
@Value("${fmsMonitoringScreenPageUrl:}")
private String fmsMonitoringScreenPageUrl;
@Override
public Map<String, Object> getToken(Map<String, Object> map) {
@ -949,61 +939,4 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
return Result.success(list);
}
@Override
public HashMap<String, Object> getFmsMonitoringLargeScreenAccessUrl(Map<String, Object> map) {
//生成签名
/*
1.拼接签名字符串由date与请求行拼接而成以换行间隔示例date: Thu, 22 Jun 2017 17:15:21 GMT\nGET /requests HTTP/1.1
2.对拼接的签名字符串进行HMAC-SHA256签名签名需要用到的key由FMS提供
3.对HMAC-SHA256的结果进行base64编码得到signature值
签名注意事项
请求参数需要分别进行url编码(UTF-8)
*/
String account = MapUtils.getString(map, "account");
if (StringUtils.isBlank(account)) {
throw new OpenAlertException("account不能为空");
}
if (StringUtils.isBlank(fmsMonitoringScreenRequestHost)) {
throw new OpenAlertException("fmsMonitoringScreenHost未配置");
}
SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getAccount, account));
if (systemUser == null) {
throw new OpenAlertException("查询不到此用户");
}
String key = systemUser.getFmsMonitoringScreenKey();
Date now = new Date();
String gmtTime = com.zhgd.xmgl.util.DateUtil.getGMTTime(now);
String algorithm = "hmac-sha256";
String request_url = "/api-gateway/v2/system/getAccessToken";
String request_line = "GET " + request_url + " HTTP/1.1";
String content = "date: " + gmtTime + "\n" + request_line;
HMac mac = new HMac(HmacAlgorithm.HmacSHA256, key.getBytes());
String signature = com.zhgd.xmgl.util.Base64.encodeBase64(mac.digest(content));
//获取access_token
//hmac username="{用户名}", algorithm="hmac-sha256", headers="date request-line", signature="{签名}"
String authorization = "hmac username=\"" + account + "\", algorithm=\"" + algorithm + "\", headers=\"date request-line\", signature=\"" + signature + "\"";
String accessUrl = fmsMonitoringScreenRequestHost + "/api-gateway/v2/system/getAccessToken";
log.info("accessUrl:{},authorization:{},date:{}", accessUrl, authorization, gmtTime);
String rs = HttpRequest.get(accessUrl)
.header("authorization", authorization)
.header("date", gmtTime)
.execute().body();
log.info("rs(获取access_token):{}", rs);
JSONObject tokenJsonObject = com.alibaba.fastjson.JSON.parseObject(rs);
if (!tokenJsonObject.getBoolean("success")) {
throw new OpenAlertException(MessageUtil.get("thirdErr"));
}
JSONObject dataJSONObject = tokenJsonObject.getJSONObject("data");
String token = dataJSONObject.getString("token");
//返回url
String url = fmsMonitoringScreenPageUrl + token;
HashMap<String, Object> rsMap = new HashMap<>();
rsMap.put("url", url);
return rsMap;
}
}

View File

@ -10,6 +10,7 @@ import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.AlarmsDistinguishedNumberByAlarmType;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterAlarmService;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import com.zhgd.xmgl.modules.project.service.IProjectService;
@ -211,4 +212,16 @@ public class LifterAlarmController {
}
}
@ApiOperation(value = "查询报警数量(按报警类型区分)", notes = "查询报警数量(按报警类型区分)", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "query", required = false, dataType = "String"),
@ApiImplicitParam(name = "queryStartTime", value = "查询开始时间格式2023-05-22 18:00:00", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "queryEndTime", value = "查询结束时间格式2023-05-22 18:00:00", paramType = "query", required = true, dataType = "String"),
})
@PostMapping(value = "/queryAlarmsDistinguishedNumberByAlarmType")
public Result<AlarmsDistinguishedNumberByAlarmType> queryAlarmsDistinguishedNumberByAlarmType(@RequestBody Map<String, Object> map) {
return Result.success(lifterAlarmService.queryAlarmsDistinguishedNumberByAlarmType(map));
}
}

View File

@ -11,6 +11,7 @@ import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.basicdata.service.UploadFileService;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import com.zhgd.xmgl.modules.bigdevice.service.LifterViolationService;
import com.zhgd.xmgl.util.MessageUtil;
@ -169,5 +170,12 @@ public class LifterViolationController {
}
}
@ApiOperation(value = "查询升降机违章次数统计", notes = "查询升降机违章次数统计", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
})
@GetMapping(value = "/queryStatisticsViolationNum")
public Result<StatisticsElevatorNumVo> queryStatisticsViolationNum(@RequestParam Map<String, Object> map) {
return Result.success(lifterViolationService.queryStatisticsViolationNum(map));
}
}

View File

@ -5,6 +5,7 @@ import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterWorkCycle;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterWorkCycleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -12,10 +13,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@ -35,7 +33,7 @@ import java.util.Map;
public class LifterWorkCycleController {
@Autowired
private ILifterWorkCycleService lifterWorkCycleService;
@ApiOperation(value = " 分页列表查询升降机工作循环信息", notes = "分页列表查询升降机工作循环信息", httpMethod="POST")
@ApiImplicitParams({
@ApiImplicitParam(name="devSn",value="设备编号",dataType = "String",paramType = "query",required =false),
@ -67,16 +65,25 @@ public class LifterWorkCycleController {
/**
* 添加
* @param lifterWorkCycle
* @return
*/
@OperLog(operModul = "升降机管理",operType = "添加升降机工作循环",operDesc = "添加升降机工作循环")
@ApiOperation(value = " 添加升降机工作循环信息", notes = "添加升降机工作循环信息" , httpMethod="POST")
@PostMapping(value = "/add")
public Result<LifterWorkCycle> add(@RequestBody LifterWorkCycle lifterWorkCycle) {
* @param lifterWorkCycle
* @return
*/
@OperLog(operModul = "升降机管理", operType = "添加升降机工作循环", operDesc = "添加升降机工作循环")
@ApiOperation(value = " 添加升降机工作循环信息", notes = "添加升降机工作循环信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<LifterWorkCycle> add(@RequestBody LifterWorkCycle lifterWorkCycle) {
lifterWorkCycleService.addLifterWorkCycle(lifterWorkCycle);
return Result.ok();
}
}
}
@ApiOperation(value = "查询升降机运行次数统计", notes = "查询升降机运行次数统计", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
})
@GetMapping(value = "/queryStatisticsElevatorOperationsNum")
public Result<StatisticsElevatorNumVo> queryStatisticsElevatorOperationsNum(@RequestParam Map<String, Object> map) {
return Result.success(lifterWorkCycleService.queryStatisticsElevatorOperationsNum(map));
}
}

View File

@ -6,6 +6,7 @@ import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerCurrentCountVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerNumAndAlarmCount;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
import io.swagger.annotations.Api;
@ -159,7 +160,7 @@ public class TowerController {
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
})
@PostMapping(value = "/selectTowerCurrentCount")
public Result<List<Map<String, Object>>> selectTowerCurrentCount(@RequestBody Map<String, Object> map) {
public Result<List<TowerCurrentCountVo>> selectTowerCurrentCount(@RequestBody Map<String, Object> map) {
return Result.success(towerService.selectTowerCurrentCount(map));
}

View File

@ -76,7 +76,6 @@ public class BigDeviceDriverRecord implements Serializable {
* 劳务人员Id
*/
@Excel(name = "劳务人员Id", width = 15)
@ApiModelProperty(value = "劳务人员Id")
private java.lang.Long workerId;
/**
@ -85,4 +84,12 @@ public class BigDeviceDriverRecord implements Serializable {
@Excel(name = "项目sn", width = 15)
@ApiModelProperty(value = "项目sn")
private java.lang.String projectSn;
@ApiModelProperty(value = "性别1男2女")
private java.lang.Integer sex;
@ApiModelProperty(value = "年龄")
private java.lang.Integer age;
@ApiModelProperty(value = "工作年限")
private java.lang.Integer workYear;
@ApiModelProperty(value = "本次连续工作时长(分钟)")
private java.lang.Integer continuousWorkingTime;
}

View File

@ -13,7 +13,7 @@ public class AlarmsDistinguishedNumberByAlarmType {
@Data
public static class TypeNum {
@ApiModelProperty(value = "报警类型momentAlarm>力矩报警 0: 正常 1:报警 2:预警\n" +
@ApiModelProperty(value = "1.塔吊>>>报警类型momentAlarm>力矩报警 0: 正常 1:报警 2:预警\n" +
"windSpeedAlarm>风速报警 0: 正常 1:报警 2:预警\n" +
"heightAlarm>高度上限位报警 0: 正常 1:报警 2:预警\n" +
"heightLowerAlarm>高度下限位报警 0: 正常 1:报警 2:预警\n" +
@ -24,7 +24,21 @@ public class AlarmsDistinguishedNumberByAlarmType {
"obliguityAlarm>倾角报警 0: 正常 1:报警 2:预警\n" +
"environmentAlarm>环境防撞报警 0: 正常 1:报警 2:预警\n" +
"multiAlarm>多机防撞报警 0: 正常 1:报警 2:预警\n" +
"standardHighAlarm>塔机间竖向高度报警 0: 正常 1:报警 2:预警")
"standardHighAlarm>塔机间竖向高度报警 0: 正常 1:报警 2:预警\n" +
"" +
"2.升降机>>>people_cnt_alarm>人数报警 0:正常 1:报警\n" +
"weightAlarm>载重报警 0:正常 1:报警\n" +
"speedAlarm>速度报警 0:正常 1:报警\n" +
"heightAlarm>高度报警 0:正常 1:报警\n" +
"obliguityXAlarm>倾角X报警 0:正常 1:报警\n" +
"obliguityYAlarm>倾角Y报警 0:正常 1:报警\n" +
"windSpeedAlarm>风速报警 0:正常 1:报警\n" +
"motor1Alarm>1号电机报警 0:正常 1:报警\n" +
"motor2Alarm>2号电机报警 0:正常 1:报警\n" +
"motor3Alarm>3号电机报警 0:正常 1:报警\n" +
"topAlarm>防冲顶报警 0:正常 1:报警\n" +
"fallAlarm>防坠器报警 0:正常 1:报警\n" +
"bottomAlarm>下限位报警 0:正常 1:报警")
private String type;
@ApiModelProperty(value = "报警数量")
private Integer num;

View File

@ -0,0 +1,19 @@
package com.zhgd.xmgl.modules.bigdevice.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StatisticsElevatorNumVo {
@ApiModelProperty(value = "今日运行次数")
private Integer todayRunNum;
@ApiModelProperty(value = "昨日运行次数(同一时段)")
private Integer yesterdayRunNum;
@ApiModelProperty(value = "过去30日运行次数")
private Integer last30DayRunNum;
@ApiModelProperty(value = "运行次数(相比昨日同一时段)")
private Integer todayRunNumCompareYesterday;
@ApiModelProperty(value = "运行次数相比过去30日")
private Integer todayRunNumCompareLast30Day;
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.TowerAlarm;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -40,4 +41,6 @@ public interface LifterAlarmMapper extends BaseMapper<LifterAlarm> {
List<Map<String, Object>> selectLifterDevAlarmGroupCount(Map<String, Object> map);
IPage<EntityMap> selectPageInfo(Page<EntityMap> page, @Param("map") Map<String, Object> map);
List<LifterAlarm> queryAlarmsByTime(Map<String, Object> map);
}

View File

@ -7,6 +7,8 @@ import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @author 邱平毅
* @ClassName LifterViolationMapper
@ -16,7 +18,9 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface LifterViolationMapper extends BaseMapper<LifterViolation> {
IPage<LifterViolation> getListByPageInfo(@Param("pushPersonId") Long pushPersonId,@Param("devSn") String devSn, @Param("projectSn") String projectSn, @Param("violationDate") String violationDate, @Param("devName") String devName, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("status") Integer status, Page<?> page);
IPage<LifterViolation> getListByPageInfo(@Param("pushPersonId") Long pushPersonId, @Param("devSn") String devSn, @Param("projectSn") String projectSn, @Param("violationDate") String violationDate, @Param("devName") String devName, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("status") Integer status, Page<?> page);
LifterViolation getInfoById(@Param("id") Long id);
}
Integer selectLifterViolationCount(Map<String, Object> map);
}

View File

@ -326,4 +326,12 @@
</if>
order by l.update_date desc,l.add_time DESC
</select>
<select id="queryAlarmsByTime" resultType="com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm">
select la.*
from lifter_alarm la
where la.add_time >= #{queryStartTime}
and la.add_time <![CDATA[<=]]>
#{queryEndTime}
</select>
</mapper>

View File

@ -156,7 +156,8 @@
<resultMap id="lifterAndDriverInfo" type="com.zhgd.xmgl.modules.bigdevice.entity.Lifter" autoMapping="true">
<id property="id" column="id"/>
<collection property="driverList" ofType="com.zhgd.xmgl.modules.bigdevice.entity.BigDeviceDriverRecord">
<collection property="driverList" ofType="com.zhgd.xmgl.modules.bigdevice.entity.BigDeviceDriverRecord"
autoMapping="true">
<id property="id" column="bId"/>
<result property="driverName" column="worker_name"/>
<result property="driverPhone" column="phone_number"/>
@ -169,20 +170,30 @@
select l.id,
l.dev_name,
l.project_sn,
l.dev_sn,
l.regist_no,
l.factory_name,
l.max_load,
l.max_height,
l.total_floor,
bddr.id bId,
wi.worker_name,
wi.phone_number,
wi.special_certificate_number,
wi.field_acquisition_url
l.dev_sn,
l.regist_no,
l.factory_name,
l.max_load,
l.max_height,
l.total_floor,
bddr.id bId,
wi.worker_name,
wi.phone_number,
wi.special_certificate_number,
wi.field_acquisition_url,
wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
TIMESTAMPDIFF(YEAR, wi.enter_date, CURDATE()) as workYear,
t1.continuous_working_time,
wi.id_card
from lifter l
left join big_device_driver_record bddr on l.dev_sn = bddr.dev_sn and bddr.type = 2
left join worker_info wi on wi.id = bddr.worker_id
left join big_device_driver_record bddr on l.dev_sn = bddr.dev_sn and bddr.type = 2
left join worker_info wi on wi.id = bddr.worker_id
left join (select a.driver_id_card,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) continuous_working_time
from lifter_work_cycle a
where a.id in (select max(id) from lifter_work_cycle twc group by twc.driver_id_card)
) t1 on wi.id_card = t1.driver_id_card
where l.dev_sn = #{devSn}
</select>
</mapper>
</mapper>

View File

@ -55,8 +55,21 @@
<select id="getInfoById" resultType="com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation">
select lv.*, l.dev_name devName, su.real_name rectificationPersonName
from lifter_violation lv
left join lifter l on lv.dev_sn = l.dev_sn
left join system_user su on lv.rectification_person_id = su.user_id
left join lifter l on lv.dev_sn = l.dev_sn
left join system_user su on lv.rectification_person_id = su.user_id
where lv.id = #{id}
</select>
</mapper>
<select id="selectLifterViolationCount" resultType="java.lang.Integer">
select count(*)
from lifter_violation lv
left join lifter l on lv.dev_sn = l.dev_sn
where l.project_sn=#{projectSn}
<if test="queryStartTime != null and queryStartTime != ''">
and l.add_time >= #{queryStartTime}
</if>
<if test="queryEndTime != null and queryEndTime != ''">
and l.add_time <![CDATA[<=]]> #{queryEndTime}
</if>
</select>
</mapper>

View File

@ -26,6 +26,5 @@
<if test="endTime!=null and endTime!=''">
AND a.end_time &lt;=CONCAT(DATE_FORMAT(#{endTime},'%Y-%m-%d'),' 23:59:59')
</if>
</select>
</mapper>
</mapper>

View File

@ -6,6 +6,7 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterCurrentData;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.AlarmsDistinguishedNumberByAlarmType;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -30,9 +31,11 @@ public interface ILifterAlarmService extends IService<LifterAlarm> {
Map<String, Object> selectComapnyLifterAlarmCount(Map<String, Object> map);
List<Map<String,Object>> selectLifterAlarmTrendList(Map<String, Object> map);
List<Map<String, Object>> selectLifterAlarmTrendList(Map<String, Object> map);
List<EntityMap> selectProjectNewestLifterAlarmList(Map<String, Object> map);
IPage<EntityMap> selectPageInfo(Map<String, Object> map);
AlarmsDistinguishedNumberByAlarmType queryAlarmsDistinguishedNumberByAlarmType(Map<String, Object> map);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterWorkCycle;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import java.util.List;
import java.util.Map;
@ -11,7 +12,7 @@ import java.util.Map;
/**
* @Description: 升降机工作循环
* @author pds
* @date 2020-12-16
* @date 2020-12-16
* @version V1.0
*/
public interface ILifterWorkCycleService extends IService<LifterWorkCycle> {
@ -21,4 +22,6 @@ public interface ILifterWorkCycleService extends IService<LifterWorkCycle> {
List<EntityMap> selectLifterWorkCycleList(Map<String, Object> map);
void addLifterWorkCycle(LifterWorkCycle lifterWorkCycle);
StatisticsElevatorNumVo queryStatisticsElevatorOperationsNum(Map<String, Object> map);
}

View File

@ -6,6 +6,7 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.entity.TowerAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerCurrentCountVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerNumAndAlarmCount;
import java.util.List;
@ -41,7 +42,7 @@ public interface ITowerService extends IService<Tower> {
TowerNumAndAlarmCount selectTowerNumAndAlarmCount(Map<String, Object> map);
List<Map<String, Object>> selectTowerCurrentCount(Map<String, Object> map);
List<TowerCurrentCountVo> selectTowerCurrentCount(Map<String, Object> map);
List<Map<String, Object>> selectTowerAlarmRankingList(Map<String, Object> map);

View File

@ -3,6 +3,9 @@ package com.zhgd.xmgl.modules.bigdevice.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import java.util.Map;
/**
* @author 邱平毅
@ -11,7 +14,9 @@ import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
* @Version 1.0
*/
public interface LifterViolationService extends IService<LifterViolation> {
IPage<LifterViolation> getListByPageInfo(Long pushPersonId,String devSn, String projectSn, String violationDate, String devName, String startDate, String endDate, Integer status, Integer pageNo, Integer pageSize);
IPage<LifterViolation> getListByPageInfo(Long pushPersonId, String devSn, String projectSn, String violationDate, String devName, String startDate, String endDate, Integer status, Integer pageNo, Integer pageSize);
LifterViolation getInfoById(Long id);
StatisticsElevatorNumVo queryStatisticsViolationNum(Map<String, Object> map);
}

View File

@ -10,12 +10,14 @@ import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterCurrentData;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.AlarmsDistinguishedNumberByAlarmType;
import com.zhgd.xmgl.modules.bigdevice.mapper.LifterAlarmMapper;
import com.zhgd.xmgl.modules.bigdevice.mapper.LifterMapper;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterAlarmService;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import com.zhgd.xmgl.util.DateUtil;
import com.zhgd.xmgl.util.MessageUtil;
import com.zhgd.xmgl.util.ReflectionUtil;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -198,4 +200,99 @@ public class LifterAlarmServiceImpl extends ServiceImpl<LifterAlarmMapper, Lifte
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
return lifterAlarmMapper.selectPageInfo(new Page<>(pageNo, pageSize), map);
}
@Override
public AlarmsDistinguishedNumberByAlarmType queryAlarmsDistinguishedNumberByAlarmType(Map<String, Object> map) {
String queryEndTime = map.getOrDefault("queryEndTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")).toString();
String queryStartTime = map.getOrDefault("queryStartTime", DateUtil.offsetDay(new Date(), -7)).toString();
map.putIfAbsent("queryEndTime", queryEndTime);
map.putIfAbsent("queryStartTime", queryStartTime);
List<LifterAlarm> lifterAlarms = lifterAlarmMapper.queryAlarmsByTime(map);
Map<String, Integer> countTowerAlarmByTypeMap = countLifterAlarmByType(lifterAlarms);
List<AlarmsDistinguishedNumberByAlarmType.TypeNum> typeNums = new ArrayList<>();
for (Map.Entry<String, Integer> entry : countTowerAlarmByTypeMap.entrySet()) {
AlarmsDistinguishedNumberByAlarmType.TypeNum typeNum = new AlarmsDistinguishedNumberByAlarmType.TypeNum();
typeNum.setType(entry.getKey());
typeNum.setNum(entry.getValue());
}
Integer count = countTowerAlarmByTypeMap.size();
AlarmsDistinguishedNumberByAlarmType rt = new AlarmsDistinguishedNumberByAlarmType();
rt.setAlarmNum(count);
rt.setTypeNumList(typeNums);
return rt;
}
/**
* 按报警类型统计数量
*
* @param lifterAlarms
*/
private Map<String, Integer> countLifterAlarmByType(List<LifterAlarm> lifterAlarms) {
Map<String, Integer> typeNumMap = new HashMap<>();
for (LifterAlarm lifterAlarm : lifterAlarms) {
if (Objects.equals(lifterAlarm.getPeopleCntAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getPeopleCntAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getWeightAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getWeightAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getSpeedAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getSpeedAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getHeightAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getHeightAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getObliguityXAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getObliguityXAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getObliguityYAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getObliguityYAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getWindSpeedAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getWindSpeedAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getMotor1Alarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getMotor1Alarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getMotor2Alarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getMotor2Alarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getMotor3Alarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getMotor3Alarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getTopAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getTopAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getFallAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getFallAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
if (Objects.equals(lifterAlarm.getBottomAlarm(), 1)) {
String fieldName = ReflectionUtil.getFieldName(LifterAlarm::getBottomAlarm);
addLifterAlarmCountByType(typeNumMap, fieldName);
}
}
return typeNumMap;
}
private void addLifterAlarmCountByType(Map<String, Integer> typeNumMap, String fieldName) {
Integer integer = typeNumMap.get(fieldName);
if (integer != null) {
integer += 1;
} else {
integer = 1;
}
typeNumMap.put(fieldName, integer);
}
}

View File

@ -132,17 +132,6 @@ public class LifterCurrentDataServiceImpl extends ServiceImpl<LifterCurrentDataM
data.put("field_acquisition_url", "");
}
}
/*if(data!=null){
QueryWrapper<LifterAlarm> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(LifterAlarm::getProjectSn, MapUtils.getString(data,"projectSn"))
.eq(LifterAlarm::getLifterCurrentdataId,MapUtils.getString(data,"id"));
int count=lifterAlarmMapper.selectCount(queryWrapper);
if(count>0){
data.put("is_alarm",1);
}else{
data.put("is_alarm",0);
}
}*/
return data;
}

View File

@ -324,6 +324,11 @@ public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> impleme
log.info("getRelatedInfo升降机实时数据信息{}", newData);
List<DriverVO> driverList = lifter.getDriverList().stream().map(driver -> {
DriverVO driverVO = new DriverVO();
driverVO.setSex(driver.getSex());
driverVO.setAge(driver.getAge());
driverVO.setWorkYear(driver.getWorkYear());
driverVO.setContinuousWorkingTime(driver.getContinuousWorkingTime());
driverVO.setIdCard(driver.getDriverIdCard());
driverVO.setWorkerName(driver.getDriverName());
driverVO.setPhoneNumber(driver.getDriverPhone());
driverVO.setSpecialCertificateNumber(driver.getCertificateNumber());

View File

@ -2,16 +2,21 @@ package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterWorkCycle;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import com.zhgd.xmgl.modules.bigdevice.mapper.LifterViolationMapper;
import com.zhgd.xmgl.modules.bigdevice.service.LifterViolationService;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Map;
/**
* @author 邱平毅
@ -25,7 +30,7 @@ public class LifterViolationServiceImpl extends ServiceImpl<LifterViolationMappe
LifterViolationMapper lifterViolationMapper;
@Override
public IPage<LifterViolation> getListByPageInfo(Long pushPersonId,String devSn, String projectSn, String violationDate, String devName, String startDate, String endDate, Integer status, Integer pageNo, Integer pageSize) {
public IPage<LifterViolation> getListByPageInfo(Long pushPersonId, String devSn, String projectSn, String violationDate, String devName, String startDate, String endDate, Integer status, Integer pageNo, Integer pageSize) {
if (StringUtils.isBlank(violationDate)) {
if (StringUtils.isBlank(startDate)) {
startDate = "0001-01-01 01:01:01";
@ -34,11 +39,32 @@ public class LifterViolationServiceImpl extends ServiceImpl<LifterViolationMappe
endDate = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
}
}
return lifterViolationMapper.getListByPageInfo(pushPersonId,devSn,projectSn, violationDate, devName, startDate, endDate, status, new Page<>(pageNo, pageSize));
return lifterViolationMapper.getListByPageInfo(pushPersonId, devSn, projectSn, violationDate, devName, startDate, endDate, status, new Page<>(pageNo, pageSize));
}
@Override
public LifterViolation getInfoById(Long id) {
return lifterViolationMapper.getInfoById(id);
}
@Override
public StatisticsElevatorNumVo queryStatisticsViolationNum(Map<String, Object> map) {
Date date = new Date();
map.put("queryStartTime", DateUtil.today());
map.put("queryEndTime", null);
Integer todayRunNum = lifterViolationMapper.selectLifterViolationCount(map);
map.put("queryStartTime", DateUtil.formatDate(DateUtil.offsetDay(date, -1)));
map.put("queryEndTime", DateUtil.formatDateTime(DateUtil.offsetDay(date, -1)));
Integer yesterdayRunNum = lifterViolationMapper.selectLifterViolationCount(map);
map.put("queryStartTime", DateUtil.formatDateTime(DateUtil.offsetDay(date, -30)));
map.put("queryEndTime", null);
Integer last30DayRunNum = lifterViolationMapper.selectLifterViolationCount(map);
StatisticsElevatorNumVo vo = new StatisticsElevatorNumVo();
vo.setTodayRunNum(todayRunNum);
vo.setYesterdayRunNum(yesterdayRunNum);
vo.setLast30DayRunNum(last30DayRunNum);
vo.setTodayRunNumCompareYesterday(todayRunNum - yesterdayRunNum);
vo.setTodayRunNumCompareLast30Day(todayRunNum - last30DayRunNum);
return vo;
}
}

View File

@ -2,16 +2,21 @@ package com.zhgd.xmgl.modules.bigdevice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterWorkCycle;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.StatisticsElevatorNumVo;
import com.zhgd.xmgl.modules.bigdevice.mapper.LifterMapper;
import com.zhgd.xmgl.modules.bigdevice.mapper.LifterWorkCycleMapper;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterWorkCycleService;
import com.zhgd.xmgl.util.DateUtil;
import com.zhgd.xmgl.util.MessageUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -61,4 +66,34 @@ public class LifterWorkCycleServiceImpl extends ServiceImpl<LifterWorkCycleMappe
lifterWorkCycle.setProjectSn(lifter.getProjectSn());
lifterWorkCycleMapper.insert(lifterWorkCycle);
}
@Override
public StatisticsElevatorNumVo queryStatisticsElevatorOperationsNum(Map<String, Object> map) {
Date date = new Date();
Integer todayRunNum = lifterWorkCycleMapper.selectCount(Wrappers.lambdaQuery(LifterWorkCycle.class)
.eq(LifterWorkCycle::getProjectSn, MapUtils.getString(map, "projectSn"))
.ge(LifterWorkCycle::getAddTime, DateUtil.today())
);
Integer yesterdayRunNum = lifterWorkCycleMapper.selectCount(Wrappers.lambdaQuery(LifterWorkCycle.class)
.eq(LifterWorkCycle::getProjectSn, MapUtils.getString(map, "projectSn"))
.ge(LifterWorkCycle::getAddTime, DateUtil.formatDate(DateUtil.offsetDay(date, -1)))
.le(LifterWorkCycle::getAddTime, DateUtil.offsetDay(date, -1))
);
Integer last30DayRunNum = lifterWorkCycleMapper.selectCount(Wrappers.lambdaQuery(LifterWorkCycle.class)
.eq(LifterWorkCycle::getProjectSn, MapUtils.getString(map, "projectSn"))
.ge(LifterWorkCycle::getAddTime, DateUtil.offsetDay(date, -30))
);
StatisticsElevatorNumVo vo = new StatisticsElevatorNumVo();
vo.setTodayRunNum(todayRunNum);
vo.setYesterdayRunNum(yesterdayRunNum);
vo.setLast30DayRunNum(last30DayRunNum);
vo.setTodayRunNumCompareYesterday(todayRunNum - yesterdayRunNum);
vo.setTodayRunNumCompareLast30Day(todayRunNum - last30DayRunNum);
return vo;
}
public static void main(String[] args) {
System.out.println(DateUtil.offsetDay(new Date(), -1));
}
}

View File

@ -16,10 +16,7 @@ import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.bigdevice.entity.*;
import com.zhgd.xmgl.modules.bigdevice.entity.dto.TowerDataInfoDTO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DevWorkerVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerNumAndAlarmCount;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.mapper.*;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerVisualizeService;
@ -312,8 +309,10 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
}
@Override
public List<Map<String, Object>> selectTowerCurrentCount(Map<String, Object> map) {
return towerMapper.selectTowerCurrentCount(map);
public List<TowerCurrentCountVo> selectTowerCurrentCount(Map<String, Object> map) {
List<Map<String, Object>> maps = towerMapper.selectTowerCurrentCount(map);
List<TowerCurrentCountVo> countVoList = maps.stream().map(e -> BeanUtil.toBeanIgnoreCase(e, TowerCurrentCountVo.class, true)).collect(Collectors.toList());
return countVoList;
}
@Override
@ -481,6 +480,11 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
driverVO.setPhoneNumber(driver.getDriverPhone());
driverVO.setSpecialCertificateNumber(driver.getCertificateNumber());
driverVO.setImageUrl(driver.getImageUrl());
driverVO.setSex(driver.getSex());
driverVO.setAge(driver.getAge());
driverVO.setWorkYear(driver.getWorkYear());
driverVO.setContinuousWorkingTime(driver.getContinuousWorkingTime());
driverVO.setIdCard(driver.getDriverIdCard());
return driverVO;
}).collect(Collectors.toList());
DevWorkerVO devWorker = new DevWorkerVO(tower.getDevName(), tower.getDevSn(), tower.getRegistNo(), tower.getFactoryName(), null, driverList);

View File

@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -405,4 +406,12 @@ public class ProjectController {
return Result.success(Arrays.asList(SanjiangProgressProjectEnum.values()));
}
@ApiOperation(value = "调外部接口获取FMS监控⼤屏接⼊url", notes = "调外部接口获取FMS监控⼤屏接⼊url", httpMethod = "GET")
@ApiImplicitParam(name = "account", value = "账号", paramType = "query", required = true, dataType = "String")
@GetMapping(value = "/getFmsMonitoringLargeScreenAccessUrl")
public Result<Map<String, Object>> getFmsMonitoringLargeScreenAccessUrl(@RequestParam Map<String, Object> map) {
HashMap<String, Object> rsMap = projectService.getFmsMonitoringLargeScreenAccessUrl(map);
return Result.success(rsMap);
}
}

View File

@ -251,4 +251,10 @@ public class Project implements Serializable {
@ApiModelProperty(value = "三江重点工程类型多选")
private String keyProjectType;
@ApiModelProperty(value = "fms监控大屏username")
private String fmsMonitoringScreenUsername;
@ApiModelProperty(value = "fms监控大屏key")
private String fmsMonitoringScreenKey;
}

View File

@ -10,6 +10,7 @@ import com.zhgd.xmgl.modules.project.entity.vo.GroupByProjectProgressVo;
import com.zhgd.xmgl.modules.project.entity.vo.GroupByProjectTypeVo;
import com.zhgd.xmgl.modules.project.entity.vo.ProjectDurationVO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -67,4 +68,6 @@ public interface IProjectService extends IService<Project> {
List<GroupByProjectTypeVo> groupByProjectType(Map<String, Object> map);
List<GroupByProjectProgressVo> groupByProjectProgress();
HashMap<String, Object> getFmsMonitoringLargeScreenAccessUrl(Map<String, Object> map);
}

View File

@ -1,6 +1,11 @@
package com.zhgd.xmgl.modules.project.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.crypto.digest.HMac;
import cn.hutool.crypto.digest.HmacAlgorithm;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -55,6 +60,7 @@ import com.zhgd.xmgl.modules.worker.service.*;
import com.zhgd.xmgl.util.AddressUtil;
import com.zhgd.xmgl.util.MessageUtil;
import com.zhgd.xmgl.util.ProfileJudgeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -77,6 +83,7 @@ import java.util.stream.Collectors;
*/
@Service
@Transactional(rollbackFor = Exception.class)
@Slf4j
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService {
@Autowired
private BimfaceConfigMapper bimfaceConfigMapper;
@ -146,6 +153,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
@Resource
private RedisRepository redisRepository;
/**
* 地址host
*/
@Value("${fmsMonitoringScreenRequestHost:}")
private String fmsMonitoringScreenRequestHost;
/**
* 监控地址
*/
@Value("${fmsMonitoringScreenPageUrl:}")
private String fmsMonitoringScreenPageUrl;
@Override
public IPage<EntityMap> selectProjectPage(Map<String, Object> map) {
@ -587,4 +604,60 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
return projectProgressVos;
}
@Override
public HashMap<String, Object> getFmsMonitoringLargeScreenAccessUrl(Map<String, Object> map) {
//生成签名
/*
1.拼接签名字符串由date与请求行拼接而成以换行间隔示例date: Thu, 22 Jun 2017 17:15:21 GMT\nGET /requests HTTP/1.1
2.对拼接的签名字符串进行HMAC-SHA256签名签名需要用到的key由FMS提供
3.对HMAC-SHA256的结果进行base64编码得到signature值
签名注意事项
请求参数需要分别进行url编码(UTF-8)
*/
String account = MapUtils.getString(map, "account");
if (StringUtils.isBlank(account)) {
throw new OpenAlertException("account不能为空");
}
if (StringUtils.isBlank(fmsMonitoringScreenRequestHost)) {
throw new OpenAlertException("fmsMonitoringScreenHost未配置");
}
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getFmsMonitoringScreenUsername, account));
if (project == null) {
throw new OpenAlertException("查询不到此用户,请检查配置");
}
String key = project.getFmsMonitoringScreenKey();
Date now = new Date();
String gmtTime = com.zhgd.xmgl.util.DateUtil.getGMTTime(now);
String algorithm = "hmac-sha256";
String request_url = "/api-gateway/v2/system/getAccessToken";
String request_line = "GET " + request_url + " HTTP/1.1";
String content = "date: " + gmtTime + "\n" + request_line;
HMac mac = new HMac(HmacAlgorithm.HmacSHA256, key.getBytes());
String signature = com.zhgd.xmgl.util.Base64.encodeBase64(mac.digest(content));
//获取access_token
//hmac username="{用户名}", algorithm="hmac-sha256", headers="date request-line", signature="{签名}"
String authorization = "hmac username=\"" + project.getFmsMonitoringScreenUsername() + "\", algorithm=\"" + algorithm + "\", headers=\"date request-line\", signature=\"" + signature + "\"";
String accessUrl = fmsMonitoringScreenRequestHost + "/api-gateway/v2/system/getAccessToken";
log.info("accessUrl:{},authorization:{},date:{}", accessUrl, authorization, gmtTime);
String rs = HttpRequest.get(accessUrl)
.header("authorization", authorization)
.header("date", gmtTime)
.execute().body();
log.info("rs(获取access_token):{}", rs);
JSONObject tokenJsonObject = com.alibaba.fastjson.JSON.parseObject(rs);
if (!tokenJsonObject.getBoolean("success")) {
throw new OpenAlertException(MessageUtil.get("thirdErr"));
}
JSONObject dataJSONObject = tokenJsonObject.getJSONObject("data");
String token = dataJSONObject.getString("token");
//返回url
String url = fmsMonitoringScreenPageUrl + token;
HashMap<String, Object> rsMap = new HashMap<>();
rsMap.put("url", url);
return rsMap;
}
}

View File

@ -0,0 +1,80 @@
#http.port=30250
http.port=38323
#spring.datasource.url=jdbc:mysql://124.71.178.44:3306/wisdomsite_lgdc?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
#spring.datasource.url=jdbc:mysql://183.60.227.61:20246/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&serverTimezone=UTC
#spring.datasource.url=jdbc:mysql://36.137.53.203:3306/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
#spring.datasource.url=jdbc:mysql://139.9.66.234:3386/wisdomsite_ty?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
#spring.datasource.url=jdbc:mysql://182.90.224.237:3306/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false
#spring.datasource.url=jdbc:mysql://139.9.66.234:3306/wisdomsite?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
spring.datasource.url=jdbc:mysql://localhost:3306/wisdomsite_shahu?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useSSL=false
spring.datasource.username=ENC(XR4C/hvTYCUqudS49Wh/jA==)
spring.datasource.password=ENC(LsKaVL2ycDu+uUNoPndYLA==)
server.port=30015
#server.port=30246
basePath=C:/jxj/prod/backEnd/itbgpImage/
server.tomcat.basedir=C:/jxj/prod/backEnd/tempImage/
#arcsoft.dllPath=D:/hz/wisdomSite/src/main/resources/dll
#basePath=F:/zhgd/itbgpImage/
#server.tomcat.basedir=F:/zhgd/tempImage/
#arcsoft.dllPath=F:/zhgd/dll
arcsoft.dllPath=C:/jxj/prod/backEnd/dll
security.enable=false
isGetStandardData=false
isGetEnvironmentData=false
isGetFaceFeatureDate=false
#\u6D77\u5EB7\u89C6\u9891\u62A5\u8B66\u56FE\u7247IP\u7AEF\u53E3\u66FF\u6362
video.alarm.newUrl=223.82.100.80:6040
wx-appid=
wx-AppSecret=
mqtt-scope=zjsjTopic
serverUrl=http://124.71.67.160:8088/
#serverUrl=http://182.90.224.237:7000
#serverUrl=http://127.0.0.1:6023
#\u89C6\u9891\u5206\u6790url
video-analysis-url=
server.ssl.enabled=false
#\u9ED8\u8BA4\u653F\u52A1\u521B\u5EFA\u9879\u76EE\u6240\u5C5E\u4F01\u4E1A
defaultZwComapnySn=
#\u6587\u4EF6\u5B58\u50A8\u914D\u7F6E
#\u9ED8\u8BA4\u4F7F\u7528\u7684\u5B58\u50A8\u5E73\u53F0
spring.file-storage.default-platform=local
#".min.jpg" #\u7F29\u7565\u56FE\u540E\u7F00\uFF0C\u4F8B\u5982\u3010.min.jpg\u3011\u3010.png\u3011
spring.file-storage.thumbnail-suffix=.jpg
# \u672C\u5730\u5B58\u50A8\uFF0C\u4E0D\u4F7F\u7528\u7684\u60C5\u51B5\u4E0B\u53EF\u4EE5\u4E0D\u5199
# \u5B58\u50A8\u5E73\u53F0\u6807\u8BC6
spring.file-storage.local[0].platform=local
#\u542F\u7528\u5B58\u50A8
spring.file-storage.local[0].enable-storage=true
#\u542F\u7528\u8BBF\u95EE\uFF08\u7EBF\u4E0A\u8BF7\u4F7F\u7528 Nginx \u914D\u7F6E\uFF0C\u6548\u7387\u66F4\u9AD8\uFF09
spring.file-storage.local[0].enable-access=false
# \u8BBF\u95EE\u57DF\u540D\uFF0C\u4F8B\u5982\uFF1A\u201Chttp://127.0.0.1:6023/image/\u201D\uFF0C\u6CE8\u610F\u540E\u9762\u8981\u548C path-patterns \u4FDD\u6301\u4E00\u81F4\uFF0C\u201C/\u201D\u7ED3\u5C3E\uFF0C\u672C\u5730\u5B58\u50A8\u5EFA\u8BAE\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u65B9\u4FBF\u540E\u671F\u66F4\u6362\u57DF\u540D
spring.file-storage.local[0].domain=
# \u5B58\u50A8\u5730\u5740
spring.file-storage.local[0].base-path=C:/jxj/prod/backEnd/itbgpImage/
# \u8BBF\u95EE\u8DEF\u5F84\uFF0C\u5F00\u542F enable-access \u540E\uFF0C\u901A\u8FC7\u6B64\u8DEF\u5F84\u53EF\u4EE5\u8BBF\u95EE\u5230\u4E0A\u4F20\u7684\u6587\u4EF6
spring.file-storage.local[0].path-patterns=
spring.file-storage.aliyun-oss[0].platform=aliyun-oss
spring.file-storage.aliyun-oss[0].enable-storage=false
spring.file-storage.aliyun-oss[0].access-key=
spring.file-storage.aliyun-oss[0].secret-key=
spring.file-storage.aliyun-oss[0].end-point=
spring.file-storage.aliyun-oss[0].bucket-name=
# \u8BBF\u95EE\u57DF\u540D\uFF0C\u6CE8\u610F\u201C/\u201D\u7ED3\u5C3E\uFF0C\u4F8B\u5982\uFF1Ahttps://abc.oss-cn-shanghai.aliyuncs.com/
spring.file-storage.aliyun-oss[0].domain=
spring.file-storage.aliyun-oss[0].base-path=
# admin\u4E2D\u5BF9\u5E94\u7684\u5730\u5740\u53CA\u5B9E\u4F8B\u540D
spring.boot.admin.client.instance.service-url=http://localhost:18070
spring.boot.admin.client.instance.name=zjsj
# \u6C34\u7535\u6570\u636E\u63A8\u9001\u5730\u5740
double-carbon.water-data-url=http://test.cesms.net
double-carbon.ammeter-data-url=http://test.cesms.net
license.licensePath=C:/jxj/prod/backEnd/license/license.lic
license.publicKeysStorePath=C:/jxj/prod/backEnd/license/publicCerts.keystore
#\u9AD8\u652F\u6A21\u7684tcp\u670D\u52A1\u7AEF\u7684\u7AEF\u53E3\u53F7
high_formwork.netty.port=15333
#同步bim进度管理的IP端口号
bimProgressIpPort=http://47.105.67.193:8086
#fms接⼝地址host
fmsMonitoringScreenRequestHost=http://gateway.sit.bzlrobot.com
#fms施⼯监控⼤屏⻚⾯地址
fmsMonitoringScreenPageUrl=https://fms.bzlrobot.com:8085/#/intelligenceMonitor/dataScreen?token=