From 2a2885f45160b4048a27e75d5be03ba9232c7363 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 10 九月 2024 17:34:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ycl-common/src/main/java/constant/RedisConstant.java | 4
ycl-server/src/main/java/com/ycl/task/ClearRedisTask.java | 28 ++
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml | 39 +++
ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java | 8
ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml | 4
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java | 25 ++
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 7
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java | 4
ycl-server/src/main/resources/application-dev.yml | 4
ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java | 2
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java | 8
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java | 11
ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java | 129 ++++++++++++
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java | 15 +
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderDetailVO.java | 79 +++++++
ycl-server/src/main/java/com/ycl/platform/service/ReportService.java | 8
ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java | 7
ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml | 28 ++
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 21 +
ycl-server/src/main/java/com/ycl/task/UYTask.java | 103 +++++----
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java | 9
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 16 +
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/OnlineThreadVO.java | 21 ++
23 files changed, 511 insertions(+), 69 deletions(-)
diff --git a/ycl-common/src/main/java/constant/RedisConstant.java b/ycl-common/src/main/java/constant/RedisConstant.java
index b576a18..6e66eb4 100644
--- a/ycl-common/src/main/java/constant/RedisConstant.java
+++ b/ycl-common/src/main/java/constant/RedisConstant.java
@@ -6,4 +6,8 @@
//杞﹁締銆佷汉鑴稿湪绾跨巼 Redis 姣忔湀鏁版嵁涓柇娆℃暟 Hash key
public final static String Check_Car_ViewConnect = "CarViewConnectNoData";
public final static String Check_Face_ViewConnect = "FaceViewConnectNoData";
+
+ /** 鐐逛綅鍦ㄧ嚎锛宧ash鐨刱ey */
+ public final static String ONLINE_KEY = "ONLINE_";
+
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
index 1712e99..0249df5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
@@ -24,7 +24,7 @@
/**
* 宸ュ崟鍙�
*/
- private String workOrderNo;
+ private String keyword;
/**
* 杩愮淮澶勭悊鏃堕棿
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/OnlineThreadVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/OnlineThreadVO.java
new file mode 100644
index 0000000..c952333
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/OnlineThreadVO.java
@@ -0,0 +1,21 @@
+package com.ycl.platform.domain.vo;
+
+import com.ycl.platform.domain.entity.WorkOrder;
+import lombok.Data;
+
+/**
+ * 鐩戞祴鍦ㄧ嚎鐨勭嚎绋嬭繑鍥炲璞�
+ *
+ * @author锛歺p
+ * @date锛�2024/9/10 11:44
+ */
+@Data
+public class OnlineThreadVO {
+
+ private Boolean online;
+
+ private String ip;
+
+ private WorkOrder workOrder;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderDetailVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderDetailVO.java
new file mode 100644
index 0000000..7e5c654
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderDetailVO.java
@@ -0,0 +1,79 @@
+package com.ycl.platform.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.base.AbsVo;
+import com.ycl.platform.domain.entity.WorkOrder;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 宸ュ崟灞曠ず
+ *
+ * @author xp
+ * @since 2024-03-05
+ */
+@Data
+public class WorkOrderDetailVO extends AbsVo {
+
+ /** 宸ュ崟鍙� */
+ private String workOrderNo;
+
+ /** 鐘舵�� */
+ private String status;
+
+ /** 杩愮淮鍗曚綅 */
+ private Integer unitId;
+ private String unitName;
+ private String unitContact;
+ private String unitContactPhone;
+
+ /** 宸ュ崟鏉ユ簮/璁惧鍚嶇О */
+ private String source;
+
+ /**
+ * 璁惧缂栧彿
+ */
+ private String serialNumber;
+
+ /**
+ * 澶勭悊鏃堕檺
+ */
+ private Integer processingPeriod;
+
+ /**
+ * 鏄惁閲嶇偣鐐逛綅
+ */
+ private Boolean important;
+
+ /** 鏁呴殰绫诲瀷 */
+ private List<String> errorTypeList;
+
+ /** 鏁呴殰绫诲瀷 */
+ private String errorType;
+
+ /** 0鏈秴鏃� 1瓒呮椂 */
+ private Integer overtime;
+
+ /** 涓嬪彂鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date distributeTime;
+
+ /**
+ * 鏄惁鎶ュ
+ */
+ private Boolean hasReport;
+
+ public static WorkOrderDetailVO getVoByEntity(@NonNull WorkOrder entity, WorkOrderDetailVO vo) {
+ if(vo == null) {
+ vo = new WorkOrderDetailVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
index 4d730b9..38acde9 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -7,6 +7,8 @@
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
+
+import enumeration.general.WorkOrderStatusEnum;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
@@ -27,7 +29,7 @@
private String workOrderNo;
/** 鐘舵�� */
- private String status;
+ private WorkOrderStatusEnum status;
/** 杩愮淮鍗曚綅 */
private Integer unitId;
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java b/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
index bf5d5ef..197de36 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
@@ -127,4 +127,11 @@
ExcelUtil<ReportVO> util = new ExcelUtil<>(ReportVO.class);
util.exportExcel(response, list, "杩愮淮鍗曚綅");
}
+
+ @GetMapping("/list/{gb}")
+ @ApiOperation(value = "鏍规嵁鍥芥爣鐮佹煡鎶ュ", notes = "鏍规嵁鍥芥爣鐮佹煡鎶ュ")
+ public Result getListByGb(@PathVariable("gb") String gb)
+ {
+ return reportService.getListByGb(gb);
+ }
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
index 39216f0..d2067df 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -1,9 +1,11 @@
package com.ycl.platform.controller;
+import com.ycl.platform.domain.entity.WorkOrderAuditingRecord;
import com.ycl.platform.domain.form.*;
import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
import com.ycl.platform.domain.query.WorkOrderQuery;
import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
+import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO;
import com.ycl.platform.service.WorkOrderService;
import com.ycl.system.Result;
import com.ycl.system.domain.group.Add;
@@ -143,4 +145,27 @@
public Result list() {
return workOrderService.all();
}
+
+
+
+ @GetMapping("/detail/info/{workOrderNo}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ @PreAuthorize("@ss.hasPermi('work:order:detail')")
+ public Result detailByNo(@PathVariable("workOrderNo") String workOrderNo) {
+ return workOrderService.detailByNo(workOrderNo);
+ }
+
+ @GetMapping("/yw-condition-list/{workOrderNo}")
+ @ApiOperation(value = "杩愮淮鎯呭喌璁板綍鍒楄〃", notes = "杩愮淮鎯呭喌璁板綍鍒楄〃")
+ public Result ywCondition(@PathVariable String workOrderNo) {
+ List<WorkOrderYwConditionRecordVO> data = workOrderService.selectYwConditionByYwId(workOrderNo);
+ return Result.ok().data(data);
+ }
+
+ @GetMapping("/yw-auditing-list/{workOrderNo}")
+ @ApiOperation(value = "杩愮淮瀹℃牳璁板綍", notes = "杩愮淮瀹℃牳璁板綍")
+ public Result ywAuditingByYwId(@PathVariable String workOrderNo) {
+ List<WorkOrderAuditingRecord> data = workOrderService.selectYwAuditingListByYwId(workOrderNo);
+ return Result.ok().data(data);
+ }
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
index f61f978..544aa1d 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportMapper.java
@@ -49,4 +49,12 @@
* @return
*/
List<Report> getTogether(@Param("pid") String pid);
+
+ /**
+ * 鍥芥爣鐮佹煡璁惧
+ *
+ * @param gb
+ * @return
+ */
+ List<ReportVO> getListByGb(@Param("gb") String gb);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index 266054a..bda6714 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -156,13 +156,14 @@
*
* @return
*/
- List<String> getDistinctIP();
+ List<TMonitor> getDistinctIP();
/**
* 鏍规嵁ip淇敼鐐逛綅琛ㄧ殑鏄惁鍦ㄧ嚎瀛楁
- * @param online
+ * @param onlineList
*/
- void updateOnline(@Param("online") UpdateOnlineVO online);
+ void updateOnline(@Param("onlineList") List<UpdateOnlineVO> onlineList);
+
/**
* 鐐逛綅鍦ㄧ嚎鐜�
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
index 96603cc..16efe99 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.entity.WorkOrderErrorType;
+import com.ycl.system.entity.SysDictData;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Repository;
@@ -87,4 +88,11 @@
*/
int addMany(@Param("errorTypeList") List<WorkOrderErrorType> errorTypeList);
+ /**
+ * 鑾峰彇鏁呴殰绫诲瀷锛岃繛琛ㄥ瓧鍏�
+ *
+ * @param workOrderNo
+ * @return
+ */
+ List<SysDictData> getErrorList(@Param("workOrderNo") String workOrderNo);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index 1625fb5..c37308f 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -5,6 +5,7 @@
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.query.*;
import com.ycl.platform.domain.vo.DeviceInfoVO;
+import com.ycl.platform.domain.vo.WorkOrderDetailVO;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.domain.vo.YwPointJobVO;
import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO;
@@ -92,4 +93,12 @@
* @return
*/
List<WorkOrder> getNotFinishedWorkOrders(@Param("list") List<String> serialNumberList);
+
+ /**
+ * 宸ュ崟鍙锋煡璇︽儏
+ *
+ * @param workOrderNo
+ * @return
+ */
+ WorkOrderDetailVO detailByNo(@Param("workOrderNo") String workOrderNo);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java b/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
index bcea92c..02eef8c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
@@ -109,4 +109,12 @@
* @return
*/
Result getTogether(String pid);
+
+ /**
+ * 鍥芥爣鐮佹煡鎶ュ璁板綍
+ *
+ * @param gb
+ * @return
+ */
+ Result getListByGb(String gb);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 0f3bf8b..e968d6d 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -26,13 +26,12 @@
public interface WorkOrderService extends IService<WorkOrder> {
/**
- * 绯荤粺鍐呴儴鐨勬坊鍔狅紝涓嬪彂
+ * 绯荤粺鍐呴儴鐨勬坊鍔�
*
* @param workOrderList
* @return
*/
Boolean innerAddWorkOrder(List<WorkOrder> workOrderList);
-
/**
* 娣诲姞
@@ -216,4 +215,12 @@
* @return
*/
Result processImg(String workOrderNo);
+
+ /**
+ * 宸ュ崟璇︽儏
+ *
+ * @param workOrderNo
+ * @return
+ */
+ Result detailByNo(String workOrderNo);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
index a4e0441..b9df674 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.dto.ReportImportDTO;
import com.ycl.platform.domain.entity.*;
@@ -386,4 +387,18 @@
}
return Result.ok("鎿嶄綔鎴愬姛");
}
+
+ @Override
+ public Result getListByGb(String gb) {
+ List<ReportVO> list = baseMapper.getListByGb(gb);
+ for (ReportVO report : list) {
+ List<ReportErrorType> errors = new LambdaQueryChainWrapper<>(reportErrorTypeService.getBaseMapper())
+ .eq(ReportErrorType::getReportId, report.getId())
+ .orderByDesc(ReportErrorType::getCreateTime)
+ .list();
+ String err = errors.stream().map(ReportErrorType::getErrorType).collect(Collectors.joining(","));
+ report.setErrorType(err);
+ }
+ return Result.ok().data(list);
+ }
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index edc2c11..a946f0c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -26,6 +26,7 @@
import com.ycl.platform.wvp.WVPResult;
import com.ycl.system.Result;
import com.ycl.system.domain.SysConfig;
+import com.ycl.system.entity.SysDictData;
import com.ycl.system.mapper.SysConfigMapper;
import com.ycl.system.mapper.SysDictDataMapper;
import com.ycl.system.model.LoginUser;
@@ -55,11 +56,6 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
-import javax.imageio.ImageIO;
-import javax.swing.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -782,4 +778,19 @@
}
return Result.ok().data(process);
}
+
+ @Override
+ public Result detailByNo(String workOrderNo) {
+ WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo);
+ // 鏄惁鎶ュ
+ boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
+ .eq(Report::getSerialNumber, workOrder.getSerialNumber())
+ .exists();
+ workOrder.setHasReport(hasReport);
+ // 鏁呴殰绫诲瀷
+ List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
+ List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
+ workOrder.setErrorTypeList(errList);
+ return Result.ok().data(workOrder);
+ }
}
diff --git a/ycl-server/src/main/java/com/ycl/task/ClearRedisTask.java b/ycl-server/src/main/java/com/ycl/task/ClearRedisTask.java
new file mode 100644
index 0000000..37b16cd
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/task/ClearRedisTask.java
@@ -0,0 +1,28 @@
+package com.ycl.task;
+
+import constant.RedisConstant;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+/**
+ * 瀹氭椂娓呯悊redis涓殑鏁版嵁
+ *
+ * @author锛歺p
+ * @date锛�2024/9/10 15:26
+ */
+@RequiredArgsConstructor
+@Component("clearRedisTask")
+public class ClearRedisTask {
+
+ private final RedisTemplate redisTemplate;
+
+ /**
+ * 娓呴櫎鍦ㄧ嚎鐩戞祴鐨剅edis璁$绾挎鏁�
+ *
+ */
+ public void clearOnlineData() {
+ redisTemplate.delete(RedisConstant.ONLINE_KEY);
+ }
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index 2c3ae39..c070048 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,24 +3,33 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.param.UY.*;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.domain.vo.OnlineThreadVO;
import com.ycl.platform.domain.vo.UpdateOnlineVO;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.UYErrorTypeCheckService;
+import com.ycl.platform.service.WorkOrderService;
import com.ycl.platform.service.YwPointService;
+import com.ycl.system.domain.SysConfig;
+import com.ycl.system.mapper.SysConfigMapper;
+import com.ycl.thread.OnlineCheckThread;
import com.ycl.utils.DateUtils;
import com.ycl.utils.http.HttpUtils;
import com.ycl.utils.http.SelfHttpUtil;
import constant.ApiConstants;
+import constant.RedisConstant;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
@@ -30,14 +39,10 @@
import java.io.IOException;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
//浼樹簯瀵规帴鏁版嵁浠诲姟
@Slf4j
@@ -51,6 +56,9 @@
private final YwPointService pointService;
private final TMonitorMapper monitorMapper;
private final SelfHttpUtil selfHttpUtil;
+ private final RedisTemplate redisTemplate;
+ private final WorkOrderService workOrderService;
+ private final SysConfigMapper sysConfigMapper;
@Value("${youYun.tenantId}")
private String tenantId;
@@ -170,44 +178,51 @@
/**
* 鐐逛綅鍦ㄧ嚎妫�娴�
*/
- public void pointOnline() {
+ public void pointOnline() throws ExecutionException, InterruptedException {
log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
- // 鍏堟煡鍑鸿澶嘔P闆嗗悎
- List<String> ipList = monitorMapper.getDistinctIP();
- String prefix = "http://";
- Date now = new Date();
- for (String ip : ipList) {
- executorService.submit(() -> {
- // 鍏堟娴嬭兘鍚﹁闂ip鐨勭綉椤�
- ResponseEntity<Object> res = null;
- UpdateOnlineVO online = new UpdateOnlineVO();
- online.setIp(ip);
- if ("127.0.0.1".equals(ip)) {
- online.setOnline(Boolean.FALSE);
- monitorMapper.updateOnline(online);
- return;
- }
- try {
- res = selfHttpUtil.get(prefix + ip, null, null);
- online.setOnline(Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode());
- } catch (Exception e) {
- online.setOnline(Boolean.FALSE);
- }
- online.setUpdateTime(now);
-
- // 濡傛灉http寰楀埌鐨勪笉鍦ㄧ嚎锛岄偅涔堝啀ping涓�涓�
- boolean reachable = false;
- if (! online.getOnline()) {
- try {
- reachable = InetAddress.getByName(ip).isReachable(3000);
- } catch (IOException e) {
- e.printStackTrace();
- }
- online.setOnline(reachable);
- }
- monitorMapper.updateOnline(online);
- });
+ Integer times = 2;
+ SysConfig config = new SysConfig();
+ config.setConfigKey("DAY_OF_POINT_OUTLINE_TIMES");
+ SysConfig sysConfig = sysConfigMapper.selectConfig(config);
+ if (Objects.nonNull(sysConfig)) {
+ times = Integer.valueOf(sysConfig.getConfigValue());
+ } else {
+ log.error("璇烽厤缃绾挎鏁帮紝姝ゆ璁剧疆涓洪粯璁ゅ��2");
}
+ // 鍏堟煡鍑鸿澶嘔P闆嗗悎
+ List<TMonitor> monitorList = monitorMapper.getDistinctIP();
+ List<Future<OnlineThreadVO>> futureList = new ArrayList<>(48);
+ List<OnlineThreadVO> dataList = new ArrayList<>(48);
+ for (TMonitor monitor : monitorList) {
+ OnlineCheckThread thread = new OnlineCheckThread(monitor, redisTemplate, selfHttpUtil, times);
+ Future<OnlineThreadVO> future = executorService.submit(thread);
+ futureList.add(future);
+ }
+ for (Future<OnlineThreadVO> future : futureList) {
+ dataList.add(future.get()); // get鏂规硶浼氶樆濉烇紝鐭ラ亾鎷垮埌缁撴灉鎵嶇户缁墽琛宖or
+ }
+
+ // 鏇存柊point琛ㄧ殑鍦ㄧ嚎鏍囪瘑
+ Date now = new Date();
+ List<UpdateOnlineVO> willUpdateList = dataList.stream().map(item -> {
+ UpdateOnlineVO vo = new UpdateOnlineVO();
+ vo.setOnline(item.getOnline());
+ vo.setIp(item.getIp());
+ vo.setUpdateTime(now);
+ return vo;
+ }).collect(Collectors.toList());
+ monitorMapper.updateOnline(willUpdateList);
+
+ // 宸ュ崟
+ List<WorkOrder> workOrderList = dataList.stream()
+ .filter(item -> Objects.nonNull(item.getWorkOrder()))
+ .map(OnlineThreadVO::getWorkOrder)
+ .collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(workOrderList)) {
+ return;
+ }
+ workOrderService.innerAddWorkOrder(workOrderList);
+ log.info("鐐逛綅鍦ㄧ嚎鐩戞祴瀹屾垚");
}
//鐐逛綅鍦ㄧ嚎鐜�
diff --git a/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java b/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java
new file mode 100644
index 0000000..a3c762d
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java
@@ -0,0 +1,129 @@
+package com.ycl.thread;
+
+import com.ycl.platform.domain.entity.TMonitor;
+import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.vo.OnlineThreadVO;
+import com.ycl.platform.domain.vo.UpdateOnlineVO;
+import com.ycl.utils.http.SelfHttpUtil;
+import constant.RedisConstant;
+import enumeration.ErrorType;
+import enumeration.general.WorkOrderStatusEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/9/10 11:43
+ */
+@Slf4j
+public class OnlineCheckThread implements Callable<OnlineThreadVO> {
+
+ private TMonitor monitor;
+
+ private RedisTemplate redisTemplate;
+
+ private SelfHttpUtil selfHttpUtil;
+
+ private Integer times;
+
+ public OnlineCheckThread(TMonitor monitor, RedisTemplate redisTemplate, SelfHttpUtil selfHttpUtil, Integer times) {
+ this.monitor = monitor;
+ this.redisTemplate = redisTemplate;
+ this.selfHttpUtil = selfHttpUtil;
+ this.times = times;
+ }
+
+ public Integer getTimes() {
+ return times;
+ }
+
+ public void setTimes(Integer times) {
+ this.times = times;
+ }
+
+ public SelfHttpUtil getSelfHttpUtil() {
+ return selfHttpUtil;
+ }
+
+ public void setSelfHttpUtil(SelfHttpUtil selfHttpUtil) {
+ this.selfHttpUtil = selfHttpUtil;
+ }
+
+ public TMonitor getMonitor() {
+ return monitor;
+ }
+
+ public void setMonitor(TMonitor monitor) {
+ this.monitor = monitor;
+ }
+
+ public RedisTemplate getRedisTemplate() {
+ return redisTemplate;
+ }
+
+ public void setRedisTemplate(RedisTemplate redisTemplate) {
+ this.redisTemplate = redisTemplate;
+ }
+
+ @Override
+ public OnlineThreadVO call() throws Exception {
+ // 鍏堟娴嬭兘鍚﹁闂ip鐨勭綉椤�
+ ResponseEntity<Object> res = null;
+ OnlineThreadVO vo = new OnlineThreadVO();
+ vo.setIp(monitor.getIp());
+ log.info("鐩戞祴IP锛�" + monitor.getIp());
+ String prefix = "http://";
+ if ("127.0.0.1".equals(monitor.getIp())) {
+ vo.setOnline(Boolean.FALSE);
+ return vo;
+ }
+ try {
+ res = selfHttpUtil.get(prefix + monitor.getIp(), null, null);
+ vo.setOnline(Objects.nonNull(res) && HttpStatus.OK == res.getStatusCode());
+ } catch (Exception e) {
+ vo.setOnline(Boolean.FALSE);
+ }
+
+ // 濡傛灉http寰楀埌鐨勪笉鍦ㄧ嚎锛岄偅涔堝啀ping涓�涓�
+ boolean reachable = false;
+ if (!vo.getOnline()) {
+ try {
+ reachable = InetAddress.getByName(monitor.getIp()).isReachable(3000);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ vo.setOnline(reachable);
+ }
+ if (!vo.getOnline()) {
+ Integer outLineTimes = (Integer) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getIp());
+ if (Objects.isNull(outLineTimes)) {
+ outLineTimes = 1;
+ } else {
+ outLineTimes += 1;
+ }
+ redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getIp(), outLineTimes);
+ // 涓�澶╁唴鐩戞祴鍒扮绾�1娆′互涓婏紝鐢熸垚宸ュ崟
+ if (outLineTimes >= times) {
+ WorkOrder workOrder = new WorkOrder();
+ workOrder.setSerialNumber(monitor.getSerialNumber());
+ List<String> errList = new ArrayList<>();
+ errList.add(ErrorType.DEVICE_OFFLINE.getValue());
+ workOrder.setErrorTypeList(errList);
+ workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+ vo.setWorkOrder(workOrder);
+ }
+ }
+ return vo;
+ }
+
+}
diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml
index cdc2747..137d862 100644
--- a/ycl-server/src/main/resources/application-dev.yml
+++ b/ycl-server/src/main/resources/application-dev.yml
@@ -37,9 +37,9 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://localhost:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://101.35.247.188:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: root
- password: 1234
+ password: ycl@202466
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index 1b7816b..1877141 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -61,6 +61,34 @@
ORDER BY r.update_time DESC
</select>
+ <select id="getListByGb" resultType="com.ycl.platform.domain.vo.ReportVO">
+ SELECT
+ DISTINCT
+ r.id,
+ r.report_materials,
+ r.create_time,
+ r.report_type,
+ r.report_content,
+ r.status,
+ r.serial_number as pointId,
+ r.begin_create_time,
+ r.end_create_time,
+ r.import_batch_number,
+ r.update_time,
+ u.unit_name,
+ p.yw_person_name as peopleName,
+ pt.point_name
+ FROM
+ t_report r
+ INNER JOIN t_report_error_type ret ON ret.report_id = r.id and ret.deleted = 0
+ LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0
+ LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0
+ LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0
+ WHERE
+ r.serial_number = #{gb} AND r.deleted = 0
+ ORDER BY r.update_time DESC
+ </select>
+
<select id="examineRecord" resultMap="BaseResultMap">
SELECT
r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name, ar.result, ar.result_remark, ar.create_time as auditing_time
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 3ab225e..5bfc1f0 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -594,16 +594,22 @@
serial_number in <foreach collection="gbList" open="(" separator="," close=")" item="no">#{no}</foreach>
</select>
- <select id="getDistinctIP" resultType="string">
+ <select id="getDistinctIP" resultType="com.ycl.platform.domain.entity.TMonitor">
SELECT
- DISTINCT ip
+ DISTINCT ip, serial_number
FROM
t_monitor
</select>
<update id="updateOnline">
- update t_yw_ponit set online = #{online.online}, update_time = #{online.updateTime} WHERE EXISTS (
- SELECT 1 FROM t_monitor WHERE ip = #{online.ip} AND t_monitor.serial_number = t_yw_point.serial_number
- );
+ <foreach collection="onlineList" item="online" separator=";">
+ UPDATE
+ t_yw_point
+ SET
+ online = #{online.online},
+ update_time = #{online.updateTime}
+ WHERE
+ EXISTS (SELECT 1 FROM t_monitor WHERE ip = #{online.ip} AND t_monitor.serial_number = t_yw_point.serial_number)
+ </foreach>
</update>
</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
index 5505241..ee9d42b 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
@@ -97,4 +97,8 @@
</foreach>
</insert>
+ <select id="getErrorList" resultType="com.ycl.system.entity.SysDictData">
+ SELECT da.dict_value, da.dict_label FROM t_work_order_error_type oer INNER JOIN sys_dict_data da ON oer.error_name = da.dict_value WHERE oer.work_order_no = #{workOrderNo}
+ </select>
+
</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 4717be2..b65027e 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -32,7 +32,17 @@
<select id="page" resultMap="BaseResultMap">
SELECT
- wo.id,wo.status, wo.work_order_no, wo.serial_number,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
+ wo.id,wo.status,
+ wo.work_order_no,
+ wo.serial_number,
+ wo.create_time,
+ wo.unit_id,
+ wo.yw_people_id,
+ wo.yw_handle_time,
+ wo.yw_result,
+ wo.yw_check_result,
+ wo.overtime,
+ wo.deduct,
u.unit_name,
p.yw_person_name,
tm.name as source,
@@ -52,14 +62,11 @@
<if test="query.unitId != null">
AND wo.unit_id = #{query.unitId}
</if>
- <if test="query.workOrderNo != null and query.workOrderNo != ''">
- AND wo.work_order_no = #{query.workOrderNo}
+ <if test="query.keyword != null and query.keyword != ''">
+ AND (wo.work_order_no like concat('%', #{query.keyword}, '%') or tm.name like concat('%', #{query.keyword}, '%'))
</if>
<if test="query.status != null and query.status != ''">
AND wo.status = #{query.status}
- </if>
- <if test="query.status == null or query.status == ''">
- AND wo.status = 'DISTRIBUTED'
</if>
<if test="query.start != null">
AND wo.yw_handle_time BETWEEN #{query.start} AND #{query.end}
@@ -289,4 +296,24 @@
<result column="status" property="status" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/>
<result column="error_names" property="errorType"/>
</resultMap>
+
+ <select id="detailByNo" resultType="com.ycl.platform.domain.vo.WorkOrderDetailVO">
+ SELECT
+ wo.id,
+ wo.work_order_no,
+ wo.serial_number,
+ dr.create_time as distributeTime,
+ m.name as source,
+ yw.unit_name,
+ yw.unit_contact,
+ yw.unit_contact_phone,
+ wo.overtime,
+ wo.processing_period,
+ wo.status
+ FROM
+ t_work_order wo
+ INNER JOIN t_work_order_distribute_record dr ON wo.work_order_no = dr.work_order_no AND dr.deleted = 0 AND wo.work_order_no = #{workOrderNo}
+ INNER JOIN t_monitor m ON m.serial_number = wo.serial_number
+ LEFT JOIN t_yw_unit yw ON yw.id = wo.unit_id AND yw.deleted = 0
+ </select>
</mapper>
--
Gitblit v1.8.0