Browse Source

状态迁移图

zhc
review512jwy@163.com 1 month ago
parent
commit
e4f84a2239
  1. 5
      dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java
  2. 18
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java
  3. 96
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java
  4. 9
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java
  5. 257
      dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml
  6. 5
      dongjian-dashboard-back-dao/src/main/resources/mybatis-generator/generatorConfig.xml
  7. 166
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistory.java
  8. 552
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistoryExample.java
  9. 5
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DeviceDataBaStatusService.java
  10. 10
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
  11. 2
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java
  12. 77
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java
  13. 2
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java
  14. 39
      dongjian-dashboard-back-util/src/test/java/com/dongjian/dashboard/back/util/Test.java

5
dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/Constants.java

@ -1,5 +1,7 @@
package com.dongjian.dashboard.back.common;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
@ -7,6 +9,9 @@ import java.util.*;
* @time 2022年5月20日 下午2:01:41
*/
public class Constants {
public static final ZoneId ZONE_TOKYO = ZoneId.of("Asia/Tokyo");
public static final DateTimeFormatter FORMATTER_YMDHMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//这个很重要,不要随便动
public static final String DES_SALT = "ci3b512jwy199511";

18
dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/controller/DeviceDataBaStatusController.java

@ -6,13 +6,16 @@ import com.dongjian.dashboard.back.common.exception.BusinessException;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.PageResponse;
import com.dongjian.dashboard.back.common.response.ResponseCode;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.configurator.aspect.OperationLog;
import com.dongjian.dashboard.back.configurator.interceptor.AccessRequired;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.ExportDeviceBaStatusDataDTO;
import com.dongjian.dashboard.back.easyexcel.LanguageDynamicHeaderAdapter;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.device.LineData;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Schema;
@ -108,4 +111,19 @@ public class DeviceDataBaStatusController {
.doWrite(exportList);
}
@OperationLog(operation = "getLineData", remark = "")
@Operation(summary = "获取状态迁移图")
@RequestMapping(value = "/getLineData",method = RequestMethod.POST)
public SimpleDataResponse<List<LineData>> getLineData(
@Parameter(name = "searchType", description = "1-按小时,2-全部数据", required = true) Integer searchType,
@Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
@Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
@Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
@Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
@Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType,
@RequestBody LineDataSearchParams lineDataSearchParams
) throws BusinessException {
return deviceDataBaStatusService.getLineData(searchType, lineDataSearchParams, CompanyId, UserId, LanguageType);
}
}

96
dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/auto/BaStatusHistoryMapper.java

@ -0,0 +1,96 @@
package com.dongjian.dashboard.back.dao.auto;
import com.dongjian.dashboard.back.model.BaStatusHistory;
import com.dongjian.dashboard.back.model.BaStatusHistoryExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface BaStatusHistoryMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
long countByExample(BaStatusHistoryExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int deleteByExample(BaStatusHistoryExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int deleteByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int insert(BaStatusHistory record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int insertSelective(BaStatusHistory record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
List<BaStatusHistory> selectByExample(BaStatusHistoryExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
BaStatusHistory selectByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int updateByExampleSelective(@Param("record") BaStatusHistory record, @Param("example") BaStatusHistoryExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int updateByExample(@Param("record") BaStatusHistory record, @Param("example") BaStatusHistoryExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int updateByPrimaryKeySelective(BaStatusHistory record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
int updateByPrimaryKey(BaStatusHistory record);
}

9
dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BaStatusHistoryMapperExt.java

@ -0,0 +1,9 @@
package com.dongjian.dashboard.back.dao.ex;
import com.dongjian.dashboard.back.dao.auto.BaStatusHistoryMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BaStatusHistoryMapperExt extends BaStatusHistoryMapper {
}

257
dongjian-dashboard-back-dao/src/main/resources/mappers/auto/BaStatusHistoryMapper.xml

@ -0,0 +1,257 @@
<?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.dongjian.dashboard.back.dao.auto.BaStatusHistoryMapper">
<resultMap id="BaseResultMap" type="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="device_info_id" jdbcType="INTEGER" property="deviceInfoId" />
<result column="is_running" jdbcType="INTEGER" property="isRunning" />
<result column="update_ts" jdbcType="VARCHAR" property="updateTs" />
</resultMap>
<sql id="Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, device_info_id, is_running, update_ts
</sql>
<select id="selectByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<if test="distinct">
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select
<include refid="Base_Column_List" />
from ba_status_history
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from ba_status_history
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
delete from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into ba_status_history (device_info_id, is_running, update_ts
)
values (#{deviceInfoId,jdbcType=INTEGER}, #{isRunning,jdbcType=INTEGER}, #{updateTs,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
insert into ba_status_history
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="deviceInfoId != null">
device_info_id,
</if>
<if test="isRunning != null">
is_running,
</if>
<if test="updateTs != null">
update_ts,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deviceInfoId != null">
#{deviceInfoId,jdbcType=INTEGER},
</if>
<if test="isRunning != null">
#{isRunning,jdbcType=INTEGER},
</if>
<if test="updateTs != null">
#{updateTs,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.dongjian.dashboard.back.model.BaStatusHistoryExample" resultType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
select count(*) from ba_status_history
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.deviceInfoId != null">
device_info_id = #{record.deviceInfoId,jdbcType=INTEGER},
</if>
<if test="record.isRunning != null">
is_running = #{record.isRunning,jdbcType=INTEGER},
</if>
<if test="record.updateTs != null">
update_ts = #{record.updateTs,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
set id = #{record.id,jdbcType=BIGINT},
device_info_id = #{record.deviceInfoId,jdbcType=INTEGER},
is_running = #{record.isRunning,jdbcType=INTEGER},
update_ts = #{record.updateTs,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
<set>
<if test="deviceInfoId != null">
device_info_id = #{deviceInfoId,jdbcType=INTEGER},
</if>
<if test="isRunning != null">
is_running = #{isRunning,jdbcType=INTEGER},
</if>
<if test="updateTs != null">
update_ts = #{updateTs,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.dongjian.dashboard.back.model.BaStatusHistory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
update ba_status_history
set device_info_id = #{deviceInfoId,jdbcType=INTEGER},
is_running = #{isRunning,jdbcType=INTEGER},
update_ts = #{updateTs,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

5
dongjian-dashboard-back-dao/src/main/resources/mybatis-generator/generatorConfig.xml

@ -154,5 +154,10 @@
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
<table tableName="ba_status_history" domainObjectName="BaStatusHistory" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<property name="useActualColumnNames" value="false" />
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>

166
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistory.java

@ -0,0 +1,166 @@
package com.dongjian.dashboard.back.model;
import java.io.Serializable;
public class BaStatusHistory implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.id
*
* @mbg.generated
*/
private Long id;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.device_info_id
*
* @mbg.generated
*/
private Integer deviceInfoId;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.is_running
*
* @mbg.generated
*/
private Integer isRunning;
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column ba_status_history.update_ts
*
* @mbg.generated
*/
private String updateTs;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
private static final long serialVersionUID = 1L;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.id
*
* @return the value of ba_status_history.id
*
* @mbg.generated
*/
public Long getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.id
*
* @param id the value for ba_status_history.id
*
* @mbg.generated
*/
public void setId(Long id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.device_info_id
*
* @return the value of ba_status_history.device_info_id
*
* @mbg.generated
*/
public Integer getDeviceInfoId() {
return deviceInfoId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.device_info_id
*
* @param deviceInfoId the value for ba_status_history.device_info_id
*
* @mbg.generated
*/
public void setDeviceInfoId(Integer deviceInfoId) {
this.deviceInfoId = deviceInfoId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.is_running
*
* @return the value of ba_status_history.is_running
*
* @mbg.generated
*/
public Integer getIsRunning() {
return isRunning;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.is_running
*
* @param isRunning the value for ba_status_history.is_running
*
* @mbg.generated
*/
public void setIsRunning(Integer isRunning) {
this.isRunning = isRunning;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column ba_status_history.update_ts
*
* @return the value of ba_status_history.update_ts
*
* @mbg.generated
*/
public String getUpdateTs() {
return updateTs;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column ba_status_history.update_ts
*
* @param updateTs the value for ba_status_history.update_ts
*
* @mbg.generated
*/
public void setUpdateTs(String updateTs) {
this.updateTs = updateTs == null ? null : updateTs.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", deviceInfoId=").append(deviceInfoId);
sb.append(", isRunning=").append(isRunning);
sb.append(", updateTs=").append(updateTs);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}

552
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/model/BaStatusHistoryExample.java

@ -0,0 +1,552 @@
package com.dongjian.dashboard.back.model;
import java.util.ArrayList;
import java.util.List;
public class BaStatusHistoryExample {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected String orderByClause;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected boolean distinct;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected List<Criteria> oredCriteria;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public BaStatusHistoryExample() {
oredCriteria = new ArrayList<Criteria>();
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public String getOrderByClause() {
return orderByClause;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public boolean isDistinct() {
return distinct;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated
*/
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIsNull() {
addCriterion("device_info_id is null");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIsNotNull() {
addCriterion("device_info_id is not null");
return (Criteria) this;
}
public Criteria andDeviceInfoIdEqualTo(Integer value) {
addCriterion("device_info_id =", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotEqualTo(Integer value) {
addCriterion("device_info_id <>", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdGreaterThan(Integer value) {
addCriterion("device_info_id >", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdGreaterThanOrEqualTo(Integer value) {
addCriterion("device_info_id >=", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdLessThan(Integer value) {
addCriterion("device_info_id <", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdLessThanOrEqualTo(Integer value) {
addCriterion("device_info_id <=", value, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdIn(List<Integer> values) {
addCriterion("device_info_id in", values, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotIn(List<Integer> values) {
addCriterion("device_info_id not in", values, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdBetween(Integer value1, Integer value2) {
addCriterion("device_info_id between", value1, value2, "deviceInfoId");
return (Criteria) this;
}
public Criteria andDeviceInfoIdNotBetween(Integer value1, Integer value2) {
addCriterion("device_info_id not between", value1, value2, "deviceInfoId");
return (Criteria) this;
}
public Criteria andIsRunningIsNull() {
addCriterion("is_running is null");
return (Criteria) this;
}
public Criteria andIsRunningIsNotNull() {
addCriterion("is_running is not null");
return (Criteria) this;
}
public Criteria andIsRunningEqualTo(Integer value) {
addCriterion("is_running =", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotEqualTo(Integer value) {
addCriterion("is_running <>", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningGreaterThan(Integer value) {
addCriterion("is_running >", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningGreaterThanOrEqualTo(Integer value) {
addCriterion("is_running >=", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningLessThan(Integer value) {
addCriterion("is_running <", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningLessThanOrEqualTo(Integer value) {
addCriterion("is_running <=", value, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningIn(List<Integer> values) {
addCriterion("is_running in", values, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotIn(List<Integer> values) {
addCriterion("is_running not in", values, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningBetween(Integer value1, Integer value2) {
addCriterion("is_running between", value1, value2, "isRunning");
return (Criteria) this;
}
public Criteria andIsRunningNotBetween(Integer value1, Integer value2) {
addCriterion("is_running not between", value1, value2, "isRunning");
return (Criteria) this;
}
public Criteria andUpdateTsIsNull() {
addCriterion("update_ts is null");
return (Criteria) this;
}
public Criteria andUpdateTsIsNotNull() {
addCriterion("update_ts is not null");
return (Criteria) this;
}
public Criteria andUpdateTsEqualTo(String value) {
addCriterion("update_ts =", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotEqualTo(String value) {
addCriterion("update_ts <>", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsGreaterThan(String value) {
addCriterion("update_ts >", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsGreaterThanOrEqualTo(String value) {
addCriterion("update_ts >=", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLessThan(String value) {
addCriterion("update_ts <", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLessThanOrEqualTo(String value) {
addCriterion("update_ts <=", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsLike(String value) {
addCriterion("update_ts like", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotLike(String value) {
addCriterion("update_ts not like", value, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsIn(List<String> values) {
addCriterion("update_ts in", values, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotIn(List<String> values) {
addCriterion("update_ts not in", values, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsBetween(String value1, String value2) {
addCriterion("update_ts between", value1, value2, "updateTs");
return (Criteria) this;
}
public Criteria andUpdateTsNotBetween(String value1, String value2) {
addCriterion("update_ts not between", value1, value2, "updateTs");
return (Criteria) this;
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated do_not_delete_during_merge
*/
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
/**
* This class was generated by MyBatis Generator.
* This class corresponds to the database table ba_status_history
*
* @mbg.generated
*/
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

5
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/DeviceDataBaStatusService.java

@ -1,8 +1,11 @@
package com.dongjian.dashboard.back.service;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.device.LineData;
import java.util.List;
@ -14,4 +17,6 @@ public interface DeviceDataBaStatusService {
PageInfo<DeviceBaStatusData> getDataList(BaStatusDataSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType);
List<DeviceBaStatusData> handleDeviceBaStatusData(BaStatusDataSearchParam pageSearchParam);
SimpleDataResponse<List<LineData>> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType);
}

10
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java

@ -260,7 +260,7 @@ public class CommonOpt {
public List<String> getPreDay(int days) {
// 日本时区
ZoneId JST = ZoneId.of("Asia/Tokyo");
ZoneId JST = Constants.ZONE_TOKYO;
// 获取当前日期
LocalDate currentDate = LocalDate.now(JST);
// 设置日期格式化
@ -399,8 +399,8 @@ public class CommonOpt {
try (ResultSet rs = ps.executeQuery()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ZoneId JST = ZoneId.of("Asia/Tokyo");
DateTimeFormatter formatter = Constants.FORMATTER_YMDHMS;
ZoneId JST = Constants.ZONE_TOKYO;
while (rs.next()) {
long ts = rs.getLong("upload_at");
@ -516,7 +516,7 @@ public class CommonOpt {
List<Object> yDataList = new ArrayList<>();
// 使用 DateTimeFormatter 来格式化时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter = Constants.FORMATTER_YMDHMS;
ObjectMapper mapper = new ObjectMapper();
// 遍历查询结果
@ -532,7 +532,7 @@ public class CommonOpt {
// 将 long 时间戳转换为 LocalDateTime(日本时区)
Instant instant = Instant.ofEpochMilli(receiveTs);
String formattedDate = instant.atZone(ZoneId.of("Asia/Tokyo"))
String formattedDate = instant.atZone(Constants.ZONE_TOKYO)
.toLocalDateTime()
.format(formatter);

2
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java

@ -138,7 +138,7 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ
}
}
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Tokyo"));
LocalDateTime now = LocalDateTime.now(Constants.ZONE_TOKYO);
LocalDate today = now.toLocalDate();
LocalDate yesterday = today.minusDays(1);
LocalDate lastYear = DateUtil.getLastYearSameIsoWeekDay(today);

77
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java

@ -3,20 +3,21 @@ package com.dongjian.dashboard.back.service.impl;
import com.dongjian.dashboard.back.common.Constants;
import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange;
import com.dongjian.dashboard.back.common.response.PageInfo;
import com.dongjian.dashboard.back.common.response.SimpleDataResponse;
import com.dongjian.dashboard.back.dao.ex.BaStatusHistoryMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceInfoMapperExt;
import com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt;
import com.dongjian.dashboard.back.dao.ex.FavoritedDeviceMapperExt;
import com.dongjian.dashboard.back.dto.data.BaStatusDataSearchParam;
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams;
import com.dongjian.dashboard.back.easyexcel.SecondsToHMSConverter;
import com.dongjian.dashboard.back.model.DeviceInfo;
import com.dongjian.dashboard.back.model.DeviceInfoExample;
import com.dongjian.dashboard.back.model.DeviceRawdataRealtime;
import com.dongjian.dashboard.back.model.DeviceRawdataRealtimeExample;
import com.dongjian.dashboard.back.model.*;
import com.dongjian.dashboard.back.service.DeviceDataBaStatusService;
import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData;
import com.dongjian.dashboard.back.vo.data.DeviceBaStatusData;
import com.dongjian.dashboard.back.vo.data.DeviceMeasureData;
import com.dongjian.dashboard.back.vo.device.LineData;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
@ -30,6 +31,9 @@ import org.springframework.stereotype.Service;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -49,6 +53,8 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
@Autowired
private FavoritedDeviceMapperExt favoritedDeviceMapperExt;
@Autowired
private BaStatusHistoryMapperExt baStatusHistoryMapperExt;
@Autowired
private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt;
@Autowired
private MsgLanguageChange msgLanguageChange;
@ -172,4 +178,67 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
return resultList;
}
@Override
public SimpleDataResponse<List<LineData>> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType) {
List<LineData> lineDataList = new ArrayList<>();
DeviceInfoExample devExample = new DeviceInfoExample();
devExample.createCriteria()
.andCompanyIdEqualTo(companyId)
.andDeviceIdEqualTo(lineDataSearchParams.getDeviceId());
List<DeviceInfo> deviceInfoList = deviceInfoMapperExt.selectByExample(devExample);
if (CollectionUtils.isEmpty(deviceInfoList)) {
return SimpleDataResponse.success(lineDataList);
}
DeviceInfo deviceInfo = deviceInfoList.get(0);
// 今天 00:00:00.000
LocalDate today = LocalDate.now();
long startOfDay = today
.atStartOfDay(ZoneId.systemDefault())
.toInstant()
.toEpochMilli();
String startTs = String.valueOf(startOfDay);
BaStatusHistoryExample bshExample = new BaStatusHistoryExample();
BaStatusHistoryExample.Criteria criteria = bshExample.createCriteria();
criteria.andUpdateTsGreaterThanOrEqualTo(startTs).andDeviceInfoIdEqualTo(deviceInfo.getId());
List<BaStatusHistory> result = baStatusHistoryMapperExt.selectByExample(bshExample);
if (CollectionUtils.isNotEmpty(result)) {
LineData lineData = new LineData();
List<Object> yCommon = new ArrayList<>();
for (BaStatusHistory item : result) {
String tsStr = item.getUpdateTs();
if (tsStr == null || tsStr.isEmpty()) {
continue; // 跳过
}
long ts;
try {
ts = Long.parseLong(tsStr);
} catch (NumberFormatException e) {
logger.error("Invalid timestamp: {}", tsStr);
continue; // 非法时间戳跳过
}
// 毫秒 -> 日本时间 -> 格式化
String formatted = Instant.ofEpochMilli(ts)
.atZone(Constants.ZONE_TOKYO)
.format(Constants.FORMATTER_YMDHMS);
lineData.getXData().add(formatted);
yCommon.add(item.getIsRunning());
}
lineData.setAttrCode(lineDataSearchParams.getAttrCodeList()[0]);
lineData.getYData().put("common", yCommon);
lineDataList.add(lineData);
}
return SimpleDataResponse.success(lineDataList);
}
}

2
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java

@ -148,7 +148,7 @@ public class DeviceDataMeasureServiceImpl implements DeviceDataMeasureService {
}
}
ZoneId tokyoZone = ZoneId.of("Asia/Tokyo");
ZoneId tokyoZone = Constants.ZONE_TOKYO;
LocalDate tokyoToday = LocalDate.now(tokyoZone);
int year = tokyoToday.getYear();
int month = tokyoToday.getMonthValue();

39
dongjian-dashboard-back-util/src/test/java/com/dongjian/dashboard/back/util/Test.java

@ -7,6 +7,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
@ -22,23 +23,31 @@ public class Test {
private final static long ondDayMillis = 3600 * 24 * 1000;
private static final String betweenQuotesRegex = "\"([^\"]*)\"";
private static final String[] suffixes = { "_85", "_85_9003", "_111", "_111_9003", "_S", "_s", "_131_5" };
public static void main(String[] args) throws ParseException{
long ZeroTime = getTodayZeroTime();
System.out.println(ZeroTime);
long startTime = ZeroTime - ondDayMillis;
System.out.println(startTime);
long endTime = ZeroTime - 1;
System.out.println(endTime);
int days = 2;
System.out.println("前"+ days +"天的0点的毫秒级时间戳: " + getMinusZeroTimestamp(days));
int mins = 9;
minusInterval(mins);
System.out.println(CommonUtil.extractContentBetweenQuotes("aurora_cluster_endpoint = \"company-13-aurora-cluster.cluster-cde6q2assvmn.ap-northeast-1.rds.amazonaws.com\""));
// long ZeroTime = getTodayZeroTime();
// System.out.println(ZeroTime);
// long startTime = ZeroTime - ondDayMillis;
// System.out.println(startTime);
// long endTime = ZeroTime - 1;
// System.out.println(endTime);
//
// int days = 2;
// System.out.println("前"+ days +"天的0点的毫秒级时间戳: " + getMinusZeroTimestamp(days));
//
// int mins = 9;
// minusInterval(mins);
//
// System.out.println(CommonUtil.extractContentBetweenQuotes("aurora_cluster_endpoint = \"company-13-aurora-cluster.cluster-cde6q2assvmn.ap-northeast-1.rds.amazonaws.com\""));
if (Arrays.stream(suffixes).anyMatch("AMMM_42_TL_TRED800073_131_5"::endsWith)){
System.out.println("包含");
} else {
System.out.println("不包含");
}
}
public static String extractContentBetweenQuotes(String text) {

Loading…
Cancel
Save