From 2f432f52c1cfb1567dadcf6e040c5d38b0a26a79 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期五, 28 十一月 2025 17:31:49 +0800
Subject: [PATCH] 数量检测配置页面
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 407 insertions(+), 0 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java
new file mode 100644
index 0000000..bc994f1
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DeviceSerService.java
@@ -0,0 +1,407 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.DeviceSer;
+import com.fzzy.igds.repository.DeviceSerRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysDeptService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/28 13:48
+ */
+@Slf4j
+@Service
+public class DeviceSerService {
+ @Resource
+ private ISysDeptService iSysDeptService;
+ @Resource
+ private DeviceSerRepository deviceSerRepository;
+ @Resource
+ private RedisCache redisCache;
+
+ /**
+ * JPA 鏌ヨ鍒嗘満鍒楄〃
+ *
+ * @return
+ */
+ public List<DeviceSer> getAllSer() {
+ SysUser user = ContextUtil.getLoginUser();
+ SysDept userDept = iSysDeptService.selectDeptById(user.getDeptId());
+ if (Constant.DEPT_TYPE_20.equals(userDept.getType())) {
+ return deviceSerRepository.getDataByDeptId(user.getDeptId() + "");
+ }else {
+ return deviceSerRepository.getDataByParentId(user.getDeptId() + "%");
+ }
+
+ }
+
+ /**
+ * JPA 鏌ヨ鍒嗘満
+ *
+ * @param companyId
+ * @param id
+ * @return
+ */
+ public DeviceSer getDataById(String companyId, String id) {
+
+ if (StringUtils.isEmpty(id)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ return deviceSerRepository.getDataById(companyId, id);
+ }
+
+ /**
+ * JPA 鏇存柊淇濆瓨鍒嗘満
+ *
+ * @param ser
+ */
+ public void saveSer(DeviceSer ser) {
+ if (null == ser.getNetworkType()) {
+ ser.setNetworkType(Constant.NETWORK_01);
+ }
+ if (null == ser.getSn()) {
+ ser.setSn(ser.getId());
+ }
+ if (StringUtils.isEmpty(ser.getCompanyId())) {
+ ser.setCompanyId(ContextUtil.getCompanyId());
+ ser.setCreateBy(ContextUtil.getLoginUserName());
+ ser.setCreateTime(new Date());
+ }
+
+ ser.setUpdateBy(ContextUtil.getLoginUserName());
+ ser.setUpdateTime(new Date());
+ deviceSerRepository.save(ser);
+ refreshCache(ser.getCompanyId());
+ }
+
+ /**
+ * JPA 鏇存柊淇濆瓨鍒嗘満
+ *
+ * @param ser
+ */
+ public void delSer(DeviceSer ser) {
+ deviceSerRepository.delete(ser);
+
+ //鍒犻櫎缂撳瓨
+ delCache(ser.getCompanyId(), ser.getId());
+
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param status
+ * @param ip
+ * @param port
+ */
+ public void updateStatusByIp(String status, String ip, Integer port) {
+ String companyId = ContextUtil.getCompanyId();
+ DeviceSer ser = this.getCacheSerByIp(companyId, ip);
+
+ ser.setStatus(status);
+ ser.setIp(ip);
+ ser.setPort(port);
+ ser.setUpdateTime(new Date());
+
+ deviceSerRepository.save(ser);
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param data
+ */
+ public void updateByData(DeviceSer data) {
+ if (null == data) {
+ return;
+ }
+ DeviceSer ser = this.getCacheSer(data.getCompanyId(), data.getId());
+ if (null == ser) {
+ return;
+ }
+ ser.setStatus(Constant.YN_Y);
+ ser.setIp(data.getIp());
+ ser.setPort(data.getPort());
+ ser.setUpdateTime(new Date());
+ ser.setSn(data.getSn());
+ deviceSerRepository.save(ser);
+
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鏇存柊鍒嗘満淇℃伅
+ * @param companyId
+ * @param serId
+ * @param controlModel
+ */
+ public void updateControlModel(String companyId, String serId, String controlModel) {
+
+ DeviceSer ser = this.getCacheSer(companyId, serId);
+ if (null == ser) {
+ return;
+ }
+
+ ser.setStatus(Constant.YN_Y);
+ ser.setControlModel(controlModel);
+ ser.setUpdateTime(new Date());
+ deviceSerRepository.save(ser);
+
+ setCacheSer(ser);
+ }
+
+ /**
+ * 鍒锋柊缂撳瓨
+ *
+ * @param companyId
+ */
+ public void refreshCache(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ List<DeviceSer> list = this.getAllSer();
+ this.setCacheSer(list, companyId);
+ }
+
+ /**
+ * 璁剧疆鍗曚釜鍒嗘満缂撳瓨
+ *
+ * @param ser
+ */
+ public void setCacheSer(DeviceSer ser) {
+ if (null == ser) {
+ return;
+ }
+ ContextUtil.addSerCompany(ser.getSn(), ser.getCompanyId());
+ String key = RedisConst.buildKey(ser.getCompanyId(), RedisConst.KEY_DEVICE_SER_LIST, ser.getId());
+ redisCache.setCacheObject(key, ser);
+ }
+
+ /**
+ * 璁剧疆缂撳瓨
+ *
+ * @param data
+ * @param companyId
+ */
+ public void setCacheSer(List<DeviceSer> data, String companyId) {
+ if (null == data) {
+ return;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key;
+ for (DeviceSer ser : data) {
+ ContextUtil.addSerCompany(ser.getSn(), ser.getCompanyId());
+ key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, ser.getId());
+ redisCache.setCacheObject(key, ser);
+ }
+ }
+
+ /**
+ * 鍒犻櫎缂撳瓨淇℃伅
+ *
+ * @param companyId
+ * @param serId
+ */
+ public void delCache(String companyId, String serId) {
+ if (StringUtils.isEmpty(serId)) {
+ return;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, serId);
+ redisCache.deleteObject(key);
+ }
+
+ /**
+ * 鏍规嵁缁勭粐缂栫爜鑾峰彇鍒嗘満鍒楄〃
+ *
+ * @param companyId
+ * @return
+ */
+ public List<DeviceSer> getCacheSerList(String companyId) {
+
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String pattern = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST) + "*";
+ Collection<String> keys = redisCache.keys(pattern);
+
+ List<DeviceSer> result = new ArrayList<>();
+ if (null == keys) {
+ return result;
+ }
+ for (String key : keys) {
+ result.add((DeviceSer) redisCache.getCacheObject(key));
+ }
+ if (result.size() < 1) {
+ result = getAllSer();
+ }
+ if (result.size() < 1) {
+ return null;
+ }
+ //閲嶆柊鎺掑簭
+ Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+ return result;
+ }
+
+ /**
+ * 鏍规嵁绫诲瀷鑾峰彇鍒嗘満淇℃伅
+ * @param companyId
+ * @param type
+ * @return
+ */
+ public List<DeviceSer> getSerCacheByType(String companyId, String type) {
+ List<DeviceSer> listAll = this.getCacheSerList(companyId);
+ if (null == listAll || listAll.isEmpty()){
+ return null;
+ }
+ if (null == type){
+ return listAll;
+ }
+ List<DeviceSer> result = new ArrayList<DeviceSer>();
+ for (DeviceSer ser : listAll) {
+ if (ser.getType().equals(type))
+ result.add(ser);
+ }
+ return result;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満ID鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param serId
+ * @return
+ */
+ public DeviceSer getCacheSer(String companyId, String serId) {
+ if (StringUtils.isEmpty(serId)) {
+ return null;
+ }
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, serId);
+
+ DeviceSer ser = (DeviceSer) redisCache.getCacheObject(key);
+
+ if (null == ser) {
+ ser = getDataById(companyId, serId);
+ if (null == ser) {
+ log.error("---------缂撳瓨涓病鏈夎幏鍙栧埌鍒嗘満缂撳瓨----------");
+ return null;
+ }
+ redisCache.setCacheObject(key, ser);
+ }
+ return ser;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満IP鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param ip
+ * @return
+ */
+ public DeviceSer getCacheSerByIp(String companyId, String ip) {
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getIp().equals(ip)) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満IP鍜岀鍙h幏鍙栧垎鏈轰俊鎭�
+ *
+ * @param companyId
+ * @param ip
+ * @param port
+ * @return
+ */
+ public DeviceSer getCacheSerByIp(String companyId, String ip, Integer port) {
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getIp().equals(ip) && deviceSer.getPort() == port) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 鏍规嵁鍒嗘満SN鑾峰彇鍒嗘満淇℃伅
+ *
+ * @param companyId
+ * @param sn
+ * @return
+ */
+ public DeviceSer getCacheSerBySn(String companyId, String sn) {
+
+ if (StringUtils.isEmpty(companyId)) {
+ return null;
+ }
+ List<DeviceSer> serList = getCacheSerList(companyId);
+ if (null == serList) {
+ return null;
+ }
+ for (DeviceSer deviceSer : serList) {
+ if (deviceSer.getSn().equals(sn)) {
+ return deviceSer;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * JPA-鏇存柊璁惧鍏ㄩ儴绂荤嚎
+ * @param companyId
+ */
+ public void allOffLine(String companyId) {
+ if (StringUtils.isEmpty(companyId)) {
+ companyId = ContextUtil.getCompanyId();
+ }
+ deviceSerRepository.updateSerStatus(companyId, Constant.YN_N);
+ }
+
+ /**
+ * JPA-鏍规嵁SN鏇存柊鐘舵��
+ * @param ip
+ * @param port
+ * @param sn
+ * @param status
+ */
+ public void onlineBySn(String ip, Integer port, String sn, String status) {
+ deviceSerRepository.updateBySn(ip, port, status, sn, new Date());
+ }
+
+}
--
Gitblit v1.9.3