diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java new file mode 100644 index 0000000..7c145d7 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -0,0 +1,121 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.dao.DataScopeMapper; +import com.casic.model.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class DataScopeBuilder { + + private final DataScopeMapper dataScopeMapper; + + /** + * 1、所有数据,得到的用户ID + * 2、所属查上级及上级所有部门,得到一个list + * 3、所属本部门 得到list + * 4、本部门自定义的一批部门信息 得到一个list + * + * @retur + */ + public List DataScopeProvider(Long deptId) { + List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); + Map>> userDataScopeListMap = userIdDataScopeList.stream() + .collect(Collectors.groupingBy(a -> a.get("scopeType"))); + List userIdList = new ArrayList<>(); + if(userDataScopeListMap.containsKey("1")){ + userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); + } + userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); + List> deptUserList = new ArrayList<>(); + if (userDataScopeListMap.containsKey("2")) { + deptUserList.addAll(userDataScopeListMap.get("2")); + } + deptUserList.addAll(userDataScopeListMap.get("3")); + userIdList.addAll(getParentDeptList(deptUserList, deptId)); + List userList = userProvider(userIdList); + return userList; + } + + /** + * 1、所有数据的用户要发送 + * 2、 + * + * @return + */ + private List getAllUser(List> allUserList) { + List userIdList = new ArrayList<>(); + if (ObjectUtils.isEmpty(allUserList)) { + return userIdList; + } + allUserList.forEach( + userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) + ); + return userIdList; + } + + /** + * 1 所有数据的用户要发送 + * + * @return + */ + private List getParentDeptList(List> allUserList, Long deptId) { + List userIdList = new ArrayList<>(); + String tempDeptIds = ""; + List> deptList = dataScopeMapper.getDeptList(); + Map deptMap = deptList.stream().collect( + Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) + ); + while (deptId != -1) { + tempDeptIds += "-" + deptId; + deptId = deptMap.get(deptId); + } + final String deptIds = tempDeptIds; + allUserList.forEach( + userDataScope -> { + if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + private List customDeptList(List> userList, Long deptId) { + List userIdList = new ArrayList<>(); + userList.forEach( + userDataScope -> { + if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + + private List userProvider(List userIdList) { + List allUserList = dataScopeMapper.getUserList(); + Map usersMap = allUserList.stream().collect( + Collectors.toMap(e -> e.getId(), Function.identity()) + ); + List scopeUserList = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (usersMap.containsKey(userId)) { + scopeUserList.add(usersMap.get(userId)); + } + } + ); + return scopeUserList; + } + +} diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java new file mode 100644 index 0000000..7c145d7 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -0,0 +1,121 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.dao.DataScopeMapper; +import com.casic.model.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class DataScopeBuilder { + + private final DataScopeMapper dataScopeMapper; + + /** + * 1、所有数据,得到的用户ID + * 2、所属查上级及上级所有部门,得到一个list + * 3、所属本部门 得到list + * 4、本部门自定义的一批部门信息 得到一个list + * + * @retur + */ + public List DataScopeProvider(Long deptId) { + List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); + Map>> userDataScopeListMap = userIdDataScopeList.stream() + .collect(Collectors.groupingBy(a -> a.get("scopeType"))); + List userIdList = new ArrayList<>(); + if(userDataScopeListMap.containsKey("1")){ + userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); + } + userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); + List> deptUserList = new ArrayList<>(); + if (userDataScopeListMap.containsKey("2")) { + deptUserList.addAll(userDataScopeListMap.get("2")); + } + deptUserList.addAll(userDataScopeListMap.get("3")); + userIdList.addAll(getParentDeptList(deptUserList, deptId)); + List userList = userProvider(userIdList); + return userList; + } + + /** + * 1、所有数据的用户要发送 + * 2、 + * + * @return + */ + private List getAllUser(List> allUserList) { + List userIdList = new ArrayList<>(); + if (ObjectUtils.isEmpty(allUserList)) { + return userIdList; + } + allUserList.forEach( + userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) + ); + return userIdList; + } + + /** + * 1 所有数据的用户要发送 + * + * @return + */ + private List getParentDeptList(List> allUserList, Long deptId) { + List userIdList = new ArrayList<>(); + String tempDeptIds = ""; + List> deptList = dataScopeMapper.getDeptList(); + Map deptMap = deptList.stream().collect( + Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) + ); + while (deptId != -1) { + tempDeptIds += "-" + deptId; + deptId = deptMap.get(deptId); + } + final String deptIds = tempDeptIds; + allUserList.forEach( + userDataScope -> { + if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + private List customDeptList(List> userList, Long deptId) { + List userIdList = new ArrayList<>(); + userList.forEach( + userDataScope -> { + if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + + private List userProvider(List userIdList) { + List allUserList = dataScopeMapper.getUserList(); + Map usersMap = allUserList.stream().collect( + Collectors.toMap(e -> e.getId(), Function.identity()) + ); + List scopeUserList = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (usersMap.containsKey(userId)) { + scopeUserList.add(usersMap.get(userId)); + } + } + ); + return scopeUserList; + } + +} diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 22e3abf..c2af406 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -9,13 +9,16 @@ import com.casic.enums.H2sParamsEnum; import com.casic.model.AlarmRecord; import com.casic.model.DataH2s; +import com.casic.model.User; import com.casic.service.ThirdDataService; import com.casic.util.RedisCommon; +import com.casic.util.WebSocket; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -28,6 +31,8 @@ private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); private final RedisCommon redisCommon; private final AlarmRecordMapper alarmRecordMapper; + private final WebSocket webSocket; + private final DataScopeBuilder dataScopeBuilder; @Override public Object h2sData(Map h2sDataMap) { @@ -61,11 +66,10 @@ //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { - configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("interval", String.valueOf((Integer) configDataMap.get("interval"))); configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); - configDataMap.remove("interval"); } map.put("params", configDataMap); //可省略 @@ -122,6 +126,7 @@ String wellCode = this.baseMapper.getWellCode(devcode); dataH2s.setWellCode(wellCode); dataH2s.setDevcode(devcode); + dataH2s.setSnr(h2sDataMap.get(SIGNAL_STRENGTH)); dataH2s.setStrength((String) h2sDataMap.get(H2S_VALUE)); dataH2s.setCell((String) h2sDataMap.get(BATTERY_VALUE)); dataH2s.setUptime(dateFormat.format(new Date())); @@ -136,28 +141,28 @@ * @param dataH2s */ private void checkAlarm(DataH2s dataH2s) { - final Float ruleValue = this.baseMapper.getRuleValue("24"); + final Float ruleValue = this.baseMapper.getRuleValue("14"); if (ruleValue == null) { return; } if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) { - String status = "3"; - if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { - //因新的报警消警 “0” - status = "0"; - alarmRecordMapper.insert(buildAlarmRecord(dataH2s)); - } + String status = "0"; this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status); + if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { + Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode()); + alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id)); + sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())); + } } } - private AlarmRecord buildAlarmRecord(DataH2s dataH2s) { + private AlarmRecord buildAlarmRecord(DataH2s dataH2s, Long deviceId) { AlarmRecord alarmRecord = AlarmRecord.builder() .devcode(dataH2s.getDevcode()) .wellCode(dataH2s.getWellCode()) .alarmType(dataH2s.getStrength()) .alarmMessage("浓度超限") - .deviceId(dataH2s.getId()) + .deviceId(deviceId) .alarmType("1") .alarmContent("浓度超限") .status("1") @@ -165,6 +170,23 @@ return alarmRecord; } + // PC推送 + private void sendAlarm(String msg, Long deptId) { + List userIds = new ArrayList<>(); + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + } + // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20" // + "设备" + devcode + "发生了压力超标,压力值为" + presss private void alarmPushBuilder(String devcode, String presss) { diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java new file mode 100644 index 0000000..7c145d7 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -0,0 +1,121 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.dao.DataScopeMapper; +import com.casic.model.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class DataScopeBuilder { + + private final DataScopeMapper dataScopeMapper; + + /** + * 1、所有数据,得到的用户ID + * 2、所属查上级及上级所有部门,得到一个list + * 3、所属本部门 得到list + * 4、本部门自定义的一批部门信息 得到一个list + * + * @retur + */ + public List DataScopeProvider(Long deptId) { + List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); + Map>> userDataScopeListMap = userIdDataScopeList.stream() + .collect(Collectors.groupingBy(a -> a.get("scopeType"))); + List userIdList = new ArrayList<>(); + if(userDataScopeListMap.containsKey("1")){ + userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); + } + userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); + List> deptUserList = new ArrayList<>(); + if (userDataScopeListMap.containsKey("2")) { + deptUserList.addAll(userDataScopeListMap.get("2")); + } + deptUserList.addAll(userDataScopeListMap.get("3")); + userIdList.addAll(getParentDeptList(deptUserList, deptId)); + List userList = userProvider(userIdList); + return userList; + } + + /** + * 1、所有数据的用户要发送 + * 2、 + * + * @return + */ + private List getAllUser(List> allUserList) { + List userIdList = new ArrayList<>(); + if (ObjectUtils.isEmpty(allUserList)) { + return userIdList; + } + allUserList.forEach( + userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) + ); + return userIdList; + } + + /** + * 1 所有数据的用户要发送 + * + * @return + */ + private List getParentDeptList(List> allUserList, Long deptId) { + List userIdList = new ArrayList<>(); + String tempDeptIds = ""; + List> deptList = dataScopeMapper.getDeptList(); + Map deptMap = deptList.stream().collect( + Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) + ); + while (deptId != -1) { + tempDeptIds += "-" + deptId; + deptId = deptMap.get(deptId); + } + final String deptIds = tempDeptIds; + allUserList.forEach( + userDataScope -> { + if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + private List customDeptList(List> userList, Long deptId) { + List userIdList = new ArrayList<>(); + userList.forEach( + userDataScope -> { + if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + + private List userProvider(List userIdList) { + List allUserList = dataScopeMapper.getUserList(); + Map usersMap = allUserList.stream().collect( + Collectors.toMap(e -> e.getId(), Function.identity()) + ); + List scopeUserList = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (usersMap.containsKey(userId)) { + scopeUserList.add(usersMap.get(userId)); + } + } + ); + return scopeUserList; + } + +} diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 22e3abf..c2af406 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -9,13 +9,16 @@ import com.casic.enums.H2sParamsEnum; import com.casic.model.AlarmRecord; import com.casic.model.DataH2s; +import com.casic.model.User; import com.casic.service.ThirdDataService; import com.casic.util.RedisCommon; +import com.casic.util.WebSocket; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -28,6 +31,8 @@ private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); private final RedisCommon redisCommon; private final AlarmRecordMapper alarmRecordMapper; + private final WebSocket webSocket; + private final DataScopeBuilder dataScopeBuilder; @Override public Object h2sData(Map h2sDataMap) { @@ -61,11 +66,10 @@ //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { - configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("interval", String.valueOf((Integer) configDataMap.get("interval"))); configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); - configDataMap.remove("interval"); } map.put("params", configDataMap); //可省略 @@ -122,6 +126,7 @@ String wellCode = this.baseMapper.getWellCode(devcode); dataH2s.setWellCode(wellCode); dataH2s.setDevcode(devcode); + dataH2s.setSnr(h2sDataMap.get(SIGNAL_STRENGTH)); dataH2s.setStrength((String) h2sDataMap.get(H2S_VALUE)); dataH2s.setCell((String) h2sDataMap.get(BATTERY_VALUE)); dataH2s.setUptime(dateFormat.format(new Date())); @@ -136,28 +141,28 @@ * @param dataH2s */ private void checkAlarm(DataH2s dataH2s) { - final Float ruleValue = this.baseMapper.getRuleValue("24"); + final Float ruleValue = this.baseMapper.getRuleValue("14"); if (ruleValue == null) { return; } if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) { - String status = "3"; - if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { - //因新的报警消警 “0” - status = "0"; - alarmRecordMapper.insert(buildAlarmRecord(dataH2s)); - } + String status = "0"; this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status); + if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { + Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode()); + alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id)); + sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())); + } } } - private AlarmRecord buildAlarmRecord(DataH2s dataH2s) { + private AlarmRecord buildAlarmRecord(DataH2s dataH2s, Long deviceId) { AlarmRecord alarmRecord = AlarmRecord.builder() .devcode(dataH2s.getDevcode()) .wellCode(dataH2s.getWellCode()) .alarmType(dataH2s.getStrength()) .alarmMessage("浓度超限") - .deviceId(dataH2s.getId()) + .deviceId(deviceId) .alarmType("1") .alarmContent("浓度超限") .status("1") @@ -165,6 +170,23 @@ return alarmRecord; } + // PC推送 + private void sendAlarm(String msg, Long deptId) { + List userIds = new ArrayList<>(); + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + } + // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20" // + "设备" + devcode + "发生了压力超标,压力值为" + presss private void alarmPushBuilder(String devcode, String presss) { diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..ef3f9da 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -3,16 +3,16 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:dm://111.198.10.15:11211/schema=SMARTWELL?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:dm://10.80.1.157:5236/schema=XLJC?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull driver-class-name: dm.jdbc.driver.DmDriver - username: SMARTWELL - password: Casic20311 + username: XLJC + password: Xljc@2023 session: store-type: redis redis: - host: 111.198.10.15 - port: 11412 - password: ew5T4K3#203lwh + host: 10.80.1.124 + port: 31681 + password: redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer # session: diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java new file mode 100644 index 0000000..7c145d7 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -0,0 +1,121 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.dao.DataScopeMapper; +import com.casic.model.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class DataScopeBuilder { + + private final DataScopeMapper dataScopeMapper; + + /** + * 1、所有数据,得到的用户ID + * 2、所属查上级及上级所有部门,得到一个list + * 3、所属本部门 得到list + * 4、本部门自定义的一批部门信息 得到一个list + * + * @retur + */ + public List DataScopeProvider(Long deptId) { + List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); + Map>> userDataScopeListMap = userIdDataScopeList.stream() + .collect(Collectors.groupingBy(a -> a.get("scopeType"))); + List userIdList = new ArrayList<>(); + if(userDataScopeListMap.containsKey("1")){ + userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); + } + userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); + List> deptUserList = new ArrayList<>(); + if (userDataScopeListMap.containsKey("2")) { + deptUserList.addAll(userDataScopeListMap.get("2")); + } + deptUserList.addAll(userDataScopeListMap.get("3")); + userIdList.addAll(getParentDeptList(deptUserList, deptId)); + List userList = userProvider(userIdList); + return userList; + } + + /** + * 1、所有数据的用户要发送 + * 2、 + * + * @return + */ + private List getAllUser(List> allUserList) { + List userIdList = new ArrayList<>(); + if (ObjectUtils.isEmpty(allUserList)) { + return userIdList; + } + allUserList.forEach( + userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) + ); + return userIdList; + } + + /** + * 1 所有数据的用户要发送 + * + * @return + */ + private List getParentDeptList(List> allUserList, Long deptId) { + List userIdList = new ArrayList<>(); + String tempDeptIds = ""; + List> deptList = dataScopeMapper.getDeptList(); + Map deptMap = deptList.stream().collect( + Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) + ); + while (deptId != -1) { + tempDeptIds += "-" + deptId; + deptId = deptMap.get(deptId); + } + final String deptIds = tempDeptIds; + allUserList.forEach( + userDataScope -> { + if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + private List customDeptList(List> userList, Long deptId) { + List userIdList = new ArrayList<>(); + userList.forEach( + userDataScope -> { + if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + + private List userProvider(List userIdList) { + List allUserList = dataScopeMapper.getUserList(); + Map usersMap = allUserList.stream().collect( + Collectors.toMap(e -> e.getId(), Function.identity()) + ); + List scopeUserList = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (usersMap.containsKey(userId)) { + scopeUserList.add(usersMap.get(userId)); + } + } + ); + return scopeUserList; + } + +} diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 22e3abf..c2af406 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -9,13 +9,16 @@ import com.casic.enums.H2sParamsEnum; import com.casic.model.AlarmRecord; import com.casic.model.DataH2s; +import com.casic.model.User; import com.casic.service.ThirdDataService; import com.casic.util.RedisCommon; +import com.casic.util.WebSocket; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -28,6 +31,8 @@ private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); private final RedisCommon redisCommon; private final AlarmRecordMapper alarmRecordMapper; + private final WebSocket webSocket; + private final DataScopeBuilder dataScopeBuilder; @Override public Object h2sData(Map h2sDataMap) { @@ -61,11 +66,10 @@ //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { - configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("interval", String.valueOf((Integer) configDataMap.get("interval"))); configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); - configDataMap.remove("interval"); } map.put("params", configDataMap); //可省略 @@ -122,6 +126,7 @@ String wellCode = this.baseMapper.getWellCode(devcode); dataH2s.setWellCode(wellCode); dataH2s.setDevcode(devcode); + dataH2s.setSnr(h2sDataMap.get(SIGNAL_STRENGTH)); dataH2s.setStrength((String) h2sDataMap.get(H2S_VALUE)); dataH2s.setCell((String) h2sDataMap.get(BATTERY_VALUE)); dataH2s.setUptime(dateFormat.format(new Date())); @@ -136,28 +141,28 @@ * @param dataH2s */ private void checkAlarm(DataH2s dataH2s) { - final Float ruleValue = this.baseMapper.getRuleValue("24"); + final Float ruleValue = this.baseMapper.getRuleValue("14"); if (ruleValue == null) { return; } if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) { - String status = "3"; - if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { - //因新的报警消警 “0” - status = "0"; - alarmRecordMapper.insert(buildAlarmRecord(dataH2s)); - } + String status = "0"; this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status); + if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { + Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode()); + alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id)); + sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())); + } } } - private AlarmRecord buildAlarmRecord(DataH2s dataH2s) { + private AlarmRecord buildAlarmRecord(DataH2s dataH2s, Long deviceId) { AlarmRecord alarmRecord = AlarmRecord.builder() .devcode(dataH2s.getDevcode()) .wellCode(dataH2s.getWellCode()) .alarmType(dataH2s.getStrength()) .alarmMessage("浓度超限") - .deviceId(dataH2s.getId()) + .deviceId(deviceId) .alarmType("1") .alarmContent("浓度超限") .status("1") @@ -165,6 +170,23 @@ return alarmRecord; } + // PC推送 + private void sendAlarm(String msg, Long deptId) { + List userIds = new ArrayList<>(); + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + } + // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20" // + "设备" + devcode + "发生了压力超标,压力值为" + presss private void alarmPushBuilder(String devcode, String presss) { diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..ef3f9da 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -3,16 +3,16 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:dm://111.198.10.15:11211/schema=SMARTWELL?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:dm://10.80.1.157:5236/schema=XLJC?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull driver-class-name: dm.jdbc.driver.DmDriver - username: SMARTWELL - password: Casic20311 + username: XLJC + password: Xljc@2023 session: store-type: redis redis: - host: 111.198.10.15 - port: 11412 - password: ew5T4K3#203lwh + host: 10.80.1.124 + port: 31681 + password: redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer # session: diff --git a/src/main/resources/mapper/DataH2sMapper.xml b/src/main/resources/mapper/DataH2sMapper.xml index 5029f6b..15e72ab 100644 --- a/src/main/resources/mapper/DataH2sMapper.xml +++ b/src/main/resources/mapper/DataH2sMapper.xml @@ -13,6 +13,14 @@ ) + + update bus_device @@ -36,8 +44,18 @@ LIMIT 1 + + + + + - UPDATE alarm_record + UPDATE alarm_records SET status=#{status} WHERE devcode=#{devcode} AND status=1 diff --git a/src/main/java/com/casic/dao/DataH2sMapper.java b/src/main/java/com/casic/dao/DataH2sMapper.java index e316504..447cf4c 100644 --- a/src/main/java/com/casic/dao/DataH2sMapper.java +++ b/src/main/java/com/casic/dao/DataH2sMapper.java @@ -7,17 +7,21 @@ import org.apache.ibatis.annotations.Param; import java.util.Date; +import java.util.Map; @Mapper public interface DataH2sMapper extends BaseMapper { int configConfirm(@Param("devcode") String devcode); + Long getDeptIdsByDevcode(@Param("devcode") String devcode); int clearOnline(@Param("devcode") String devcode); String getWellCode(@Param("devcode") String devcode); + Long getDeviceId(@Param("devcode") String devcode); + Float getRuleValue(@Param("deviceType") String deviceType); int cancelAlarm(@Param("devcode") String devcode, @Param("status") String status); diff --git a/src/main/java/com/casic/dao/DataScopeMapper.java b/src/main/java/com/casic/dao/DataScopeMapper.java new file mode 100644 index 0000000..4f36dfb --- /dev/null +++ b/src/main/java/com/casic/dao/DataScopeMapper.java @@ -0,0 +1,18 @@ +package com.casic.dao; + +import com.casic.model.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface DataScopeMapper { + + List> getDeptList(); + + List getUserList(); + + List> getUserIdDataScope(); + +} diff --git a/src/main/java/com/casic/enums/H2sParamsEnum.java b/src/main/java/com/casic/enums/H2sParamsEnum.java index 26b3fa8..7910c42 100644 --- a/src/main/java/com/casic/enums/H2sParamsEnum.java +++ b/src/main/java/com/casic/enums/H2sParamsEnum.java @@ -16,6 +16,8 @@ String ICCID = "iccid"; String IMEI = "imei"; String DEVCODE = "devcode"; + String SIGNAL_STRENGTH = "signalStrength"; + /** * 上传时间 */ diff --git a/src/main/java/com/casic/model/User.java b/src/main/java/com/casic/model/User.java new file mode 100644 index 0000000..13d68fa --- /dev/null +++ b/src/main/java/com/casic/model/User.java @@ -0,0 +1,81 @@ +package com.casic.model; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@TableName("sys_user") +public class User { + private static final long serialVersionUID = 1L; + @TableId( + value = "id", + type = IdType.ASSIGN_ID + ) + private Long id; + private String avatar; + + private String account; + private String password; + private String salt; + private String name; + @JSONField( + format = "yyyy-MM-dd" + ) + private Date birthday; + private Integer sex; + private String email; + private String phone; + @TableField("role_id") + private String roleId; + @TableField("dept_id") + private Long deptId; + private String status; + private Integer version; + @TableField("LOGIN_IP") + private String loginIp; + @TableField("LOGIN_MAC") + private String loginMac; + @TableField("POSITION_LNG") + private BigDecimal positionLng; + @TableField("POSITION_LAT") + private BigDecimal positionLat; + @TableField("attr1") + private String attr1; + @TableField("LAST_TIME") + private Timestamp lastTime; + @TableField("sync_id") + private String syncId; + @TableField("sync_name") + private String syncName; + @TableField("sync_pwd") + private String syncPwd; + @TableField("sync_deptid") + private String syncDeptid; + @TableField("is_sync") + private Integer isSync; + @TableField("del_flag") + private String delFlag; + @TableField( + exist = false + ) + private String deptname; + + public Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "User{id=" + this.id + ", avatar=" + this.avatar + ", account=" + this.account + ", password=" + this.password + ", salt=" + this.salt + ", name=" + this.name + ", birthday=" + this.birthday + ", sex=" + this.sex + ", email=" + this.email + ", phone=" + this.phone + ", roleId=" + this.roleId + ", deptId=" + this.deptId + ", status=" + this.status + ", version=" + this.version + "}"; + } + +} diff --git a/src/main/java/com/casic/service/impl/DataScopeBuilder.java b/src/main/java/com/casic/service/impl/DataScopeBuilder.java new file mode 100644 index 0000000..7c145d7 --- /dev/null +++ b/src/main/java/com/casic/service/impl/DataScopeBuilder.java @@ -0,0 +1,121 @@ +package com.casic.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.casic.dao.DataScopeMapper; +import com.casic.model.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class DataScopeBuilder { + + private final DataScopeMapper dataScopeMapper; + + /** + * 1、所有数据,得到的用户ID + * 2、所属查上级及上级所有部门,得到一个list + * 3、所属本部门 得到list + * 4、本部门自定义的一批部门信息 得到一个list + * + * @retur + */ + public List DataScopeProvider(Long deptId) { + List> userIdDataScopeList = dataScopeMapper.getUserIdDataScope(); + Map>> userDataScopeListMap = userIdDataScopeList.stream() + .collect(Collectors.groupingBy(a -> a.get("scopeType"))); + List userIdList = new ArrayList<>(); + if(userDataScopeListMap.containsKey("1")){ + userIdList.addAll(getAllUser(userDataScopeListMap.get("1"))); + } + userIdList.addAll(customDeptList(userDataScopeListMap.get("4"), deptId)); + List> deptUserList = new ArrayList<>(); + if (userDataScopeListMap.containsKey("2")) { + deptUserList.addAll(userDataScopeListMap.get("2")); + } + deptUserList.addAll(userDataScopeListMap.get("3")); + userIdList.addAll(getParentDeptList(deptUserList, deptId)); + List userList = userProvider(userIdList); + return userList; + } + + /** + * 1、所有数据的用户要发送 + * 2、 + * + * @return + */ + private List getAllUser(List> allUserList) { + List userIdList = new ArrayList<>(); + if (ObjectUtils.isEmpty(allUserList)) { + return userIdList; + } + allUserList.forEach( + userDataScope -> userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))) + ); + return userIdList; + } + + /** + * 1 所有数据的用户要发送 + * + * @return + */ + private List getParentDeptList(List> allUserList, Long deptId) { + List userIdList = new ArrayList<>(); + String tempDeptIds = ""; + List> deptList = dataScopeMapper.getDeptList(); + Map deptMap = deptList.stream().collect( + Collectors.toMap(e -> Long.valueOf(e.get("id")), e -> Long.valueOf(e.get("pid"))) + ); + while (deptId != -1) { + tempDeptIds += "-" + deptId; + deptId = deptMap.get(deptId); + } + final String deptIds = tempDeptIds; + allUserList.forEach( + userDataScope -> { + if (deptIds.contains(String.valueOf(userDataScope.get("deptid")))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + private List customDeptList(List> userList, Long deptId) { + List userIdList = new ArrayList<>(); + userList.forEach( + userDataScope -> { + if (userDataScope.get("dataScope").contains(String.valueOf(deptId))) { + userIdList.add(Long.valueOf(String.valueOf(userDataScope.get("userId")))); + } + } + ); + return userIdList; + } + + + private List userProvider(List userIdList) { + List allUserList = dataScopeMapper.getUserList(); + Map usersMap = allUserList.stream().collect( + Collectors.toMap(e -> e.getId(), Function.identity()) + ); + List scopeUserList = new ArrayList<>(); + userIdList.forEach( + userId -> { + if (usersMap.containsKey(userId)) { + scopeUserList.add(usersMap.get(userId)); + } + } + ); + return scopeUserList; + } + +} diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java index 22e3abf..c2af406 100644 --- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java +++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java @@ -9,13 +9,16 @@ import com.casic.enums.H2sParamsEnum; import com.casic.model.AlarmRecord; import com.casic.model.DataH2s; +import com.casic.model.User; import com.casic.service.ThirdDataService; import com.casic.util.RedisCommon; +import com.casic.util.WebSocket; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -28,6 +31,8 @@ private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); private final RedisCommon redisCommon; private final AlarmRecordMapper alarmRecordMapper; + private final WebSocket webSocket; + private final DataScopeBuilder dataScopeBuilder; @Override public Object h2sData(Map h2sDataMap) { @@ -61,11 +66,10 @@ //判断是否有下发配置必须 map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201); if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) { - configDataMap.put("cycle", String.valueOf((Integer) configDataMap.get("interval"))); + configDataMap.put("interval", String.valueOf((Integer) configDataMap.get("interval"))); configDataMap.put("port", String.valueOf((Integer) configDataMap.get("port"))); configDataMap.put("period", String.valueOf((Integer) configDataMap.get("period"))); configDataMap.put("repeat", String.valueOf((Integer) configDataMap.get("repeat"))); - configDataMap.remove("interval"); } map.put("params", configDataMap); //可省略 @@ -122,6 +126,7 @@ String wellCode = this.baseMapper.getWellCode(devcode); dataH2s.setWellCode(wellCode); dataH2s.setDevcode(devcode); + dataH2s.setSnr(h2sDataMap.get(SIGNAL_STRENGTH)); dataH2s.setStrength((String) h2sDataMap.get(H2S_VALUE)); dataH2s.setCell((String) h2sDataMap.get(BATTERY_VALUE)); dataH2s.setUptime(dateFormat.format(new Date())); @@ -136,28 +141,28 @@ * @param dataH2s */ private void checkAlarm(DataH2s dataH2s) { - final Float ruleValue = this.baseMapper.getRuleValue("24"); + final Float ruleValue = this.baseMapper.getRuleValue("14"); if (ruleValue == null) { return; } if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) { - String status = "3"; - if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { - //因新的报警消警 “0” - status = "0"; - alarmRecordMapper.insert(buildAlarmRecord(dataH2s)); - } + String status = "0"; this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status); + if (Float.valueOf(dataH2s.getStrength()) > ruleValue) { + Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode()); + alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id)); + sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())); + } } } - private AlarmRecord buildAlarmRecord(DataH2s dataH2s) { + private AlarmRecord buildAlarmRecord(DataH2s dataH2s, Long deviceId) { AlarmRecord alarmRecord = AlarmRecord.builder() .devcode(dataH2s.getDevcode()) .wellCode(dataH2s.getWellCode()) .alarmType(dataH2s.getStrength()) .alarmMessage("浓度超限") - .deviceId(dataH2s.getId()) + .deviceId(deviceId) .alarmType("1") .alarmContent("浓度超限") .status("1") @@ -165,6 +170,23 @@ return alarmRecord; } + // PC推送 + private void sendAlarm(String msg, Long deptId) { + List userIds = new ArrayList<>(); + List userList = dataScopeBuilder.DataScopeProvider(deptId); + for (User user : userList) { + userIds.add(user.getId().toString()); + } + if (userIds.size() > 0) { + Map map = new HashMap(); + map.put("message", msg); + map.put("type", "alarm"); + webSocket.sendListMessage(userIds, JSON.toJSONString(map)); + } else { + log.info("告警消息找不到责任人,pc端未推送:" + msg); + } + } + // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20" // + "设备" + devcode + "发生了压力超标,压力值为" + presss private void alarmPushBuilder(String devcode, String presss) { diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index ef7bf6a..ef3f9da 100644 --- a/src/main/resources/config/application-dev.yml +++ b/src/main/resources/config/application-dev.yml @@ -3,16 +3,16 @@ ################### spring配置 ################### spring: datasource: - url: jdbc:dm://111.198.10.15:11211/schema=SMARTWELL?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:dm://10.80.1.157:5236/schema=XLJC?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull driver-class-name: dm.jdbc.driver.DmDriver - username: SMARTWELL - password: Casic20311 + username: XLJC + password: Xljc@2023 session: store-type: redis redis: - host: 111.198.10.15 - port: 11412 - password: ew5T4K3#203lwh + host: 10.80.1.124 + port: 31681 + password: redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer # session: diff --git a/src/main/resources/mapper/DataH2sMapper.xml b/src/main/resources/mapper/DataH2sMapper.xml index 5029f6b..15e72ab 100644 --- a/src/main/resources/mapper/DataH2sMapper.xml +++ b/src/main/resources/mapper/DataH2sMapper.xml @@ -13,6 +13,14 @@ ) + + update bus_device @@ -36,8 +44,18 @@ LIMIT 1 + + + + + - UPDATE alarm_record + UPDATE alarm_records SET status=#{status} WHERE devcode=#{devcode} AND status=1 diff --git a/src/main/resources/mapper/DataScopeMapper.xml b/src/main/resources/mapper/DataScopeMapper.xml new file mode 100644 index 0000000..fad0303 --- /dev/null +++ b/src/main/resources/mapper/DataScopeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + +