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