From fea22e82e7e49691f6e0c20a29b228d0ab3173e9 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 29 十月 2025 17:08:38 +0800
Subject: [PATCH] 修改问题
---
ycl-server/src/main/java/com/ycl/platform/service/IMonitorConstructionService.java | 29 +
ycl-server/src/main/java/com/ycl/platform/service/impl/IMonitorConstructionServiceImpl.java | 142 +++++++
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DemeritRecord.java | 5
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java | 2
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/MonitorConstruction.java | 32 +
ycl-pojo/src/main/java/com/ycl/platform/domain/dto/MonitorConstructionDTO.java | 22 +
ycl-server/src/main/java/com/ycl/platform/controller/MonitorConstructionController.java | 35 +
ycl-server/src/main/java/com/ycl/platform/mapper/IMonitorConstructionMapper.java | 14
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/screen/DemeritRecordVO.java | 6
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java | 7
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java | 356 ++++++++++++-------
ycl-server/src/main/java/com/ycl/task/DemeritRecordTask.java | 200 ++++++----
ycl-server/src/main/resources/mapper/zgyw/IMonitorConstructionMapper.xml | 13
ycl-server/src/main/resources/mapper/zgyw/DemeritREcordMapper.xml | 8
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java | 28
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 21
ycl-server/src/main/java/com/ycl/task/UYTask.java | 11
ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java | 2
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | 120 +++++-
19 files changed, 788 insertions(+), 265 deletions(-)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/dto/MonitorConstructionDTO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/dto/MonitorConstructionDTO.java
new file mode 100644
index 0000000..a5a0e1f
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/dto/MonitorConstructionDTO.java
@@ -0,0 +1,22 @@
+package com.ycl.platform.domain.dto;
+
+
+import annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * zgyw
+ *
+ * @author : zxl
+ * @date : 2025-10-20 14:20
+ **/
+@Data
+public class MonitorConstructionDTO {
+ @Excel(name = "璁惧缂栫爜")
+ private String serialNumber;
+
+ @Excel(name = "寤鸿绫诲瀷鏍囩")
+ private String tag;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DemeritRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DemeritRecord.java
index d327cd0..7107546 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DemeritRecord.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/DemeritRecord.java
@@ -8,6 +8,7 @@
import lombok.Data;
import java.math.BigDecimal;
+import java.util.Date;
/**
* zgyw
@@ -27,4 +28,8 @@
@TableField("construction_type")
private String constructionType;
+
+ //褰曞儚璁$畻鐢熸垚鏃堕棿
+ @TableField("record_time")
+ private Date recordTime;
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/MonitorConstruction.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/MonitorConstruction.java
new file mode 100644
index 0000000..eddb219
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/MonitorConstruction.java
@@ -0,0 +1,32 @@
+package com.ycl.platform.domain.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ycl.platform.base.AbsEntity;
+import com.ycl.system.entity.BaseEntity;
+import lombok.Data;
+
+/**
+ * zgyw
+ *
+ * @author : zxl
+ * @date : 2025-10-20 11:37
+ **/
+@Data
+@TableName("t_monitor_construction")
+public class MonitorConstruction extends AbsEntity {
+
+ /**
+ * 璁惧缂栧彿
+ */
+ @TableField(value = "serial_number")
+ private String serialNumber;
+
+ /**
+ * 璁惧鏍囩json瀛楃涓�
+ */
+ @TableField(value = "tag")
+ private String tag;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
index 7da59b2..30542eb 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.system.entity.BaseEntity;
import lombok.Data;
+import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -342,4 +343,10 @@
* 璁惧鍘傚晢锛� 0娴峰悍 1澶у崕 2瀹囪
*/
private Integer deviceType;
+
+ List<String> ids;
+ /**
+ * 寤鸿绫诲瀷鏍囩
+ */
+ private String tag;
}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/screen/DemeritRecordVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/screen/DemeritRecordVO.java
index baa6ab2..b796116 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/screen/DemeritRecordVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/screen/DemeritRecordVO.java
@@ -1,9 +1,11 @@
package com.ycl.platform.domain.vo.screen;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsVo;
import lombok.Data;
import java.math.BigDecimal;
+import java.util.Date;
/**
* zgyw
@@ -33,4 +35,8 @@
*/
private BigDecimal demerit;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date recordTime;
+
+
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/MonitorConstructionController.java b/ycl-server/src/main/java/com/ycl/platform/controller/MonitorConstructionController.java
new file mode 100644
index 0000000..47ce7e3
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/MonitorConstructionController.java
@@ -0,0 +1,35 @@
+package com.ycl.platform.controller;
+
+
+import com.ycl.platform.service.IMonitorConstructionService;
+import com.ycl.system.Result;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * zgyw
+ *
+ * @author : zxl
+ * @date : 2025-10-20 13:55
+ **/
+@RestController
+@RequestMapping("/monitorConstruction")
+@RequiredArgsConstructor
+public class MonitorConstructionController {
+ private final IMonitorConstructionService monitorConstructionService;
+
+ @PostMapping("/import")
+ public Result importExcel(@RequestBody MultipartFile file) {
+
+ return monitorConstructionService.importExcel(file);
+ }
+ @PostMapping("/importTemplate")
+ public void importTemplate(HttpServletResponse httpServletResponse) {
+ monitorConstructionService.getImportTemplate(httpServletResponse);
+ }
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java b/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
index 48f4102..bcd1aaa 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
@@ -39,7 +39,7 @@
@GetMapping("/list")
public TableDataInfo list(TMonitorVO tMonitor)
{
- startPage();
+
List<TMonitorVO> list = tMonitorService.selectTMonitorList(tMonitor);
return getDataTable(list);
}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/IMonitorConstructionMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/IMonitorConstructionMapper.java
new file mode 100644
index 0000000..e4a07d9
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/IMonitorConstructionMapper.java
@@ -0,0 +1,14 @@
+package com.ycl.platform.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.entity.MonitorConstruction;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface IMonitorConstructionMapper extends BaseMapper<MonitorConstruction> {
+
+ int insertBatch(@Param("list") List<MonitorConstruction> list);
+}
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 1a13b60..d4241bd 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
@@ -45,7 +45,7 @@
* @return 璁惧璧勪骇闆嗗悎
*/
public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor);
-
+ public List<TMonitorVO> selectTMonitorListAndIds(TMonitorVO tMonitor);
/**
* 鏌ヨ璁惧璧勪骇鍒楄〃
*
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/IMonitorConstructionService.java b/ycl-server/src/main/java/com/ycl/platform/service/IMonitorConstructionService.java
new file mode 100644
index 0000000..640a0ab
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/service/IMonitorConstructionService.java
@@ -0,0 +1,29 @@
+package com.ycl.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.platform.domain.entity.MonitorConstruction;
+import com.ycl.system.Result;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+
+public interface IMonitorConstructionService extends IService<MonitorConstruction> {
+
+
+ /**
+ * 瀵煎叆璁惧鏍囩
+ * @param file
+ * @return
+ */
+ Result importExcel(MultipartFile file);
+
+ /**
+ * 瀵煎嚭璁惧妯℃澘
+ * @return
+ */
+ void getImportTemplate(HttpServletResponse httpServletResponse);
+
+ List<MonitorConstruction> getSerialNumberListByConstructionType(String constructionType);
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 86ea120..a778877 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -565,21 +565,21 @@
//澶у睆灞曠ず鑰冩牳寰楀垎
@Override
public Map<String, Map<String, Object>> dashboard(DashboardQuery dashboardQuery) {
-// Date now = new Date();
+ Date now = new Date();
- Calendar cal = Calendar.getInstance();
-
-// 2. 璁剧疆涓轰粖骞�10鏈�12鍙� 00:00:00锛堟竻闄ゆ椂鍒嗙锛岄伩鍏嶅綋鍓嶆椂闂村共鎵帮級
- cal.set(Calendar.MONTH, Calendar.OCTOBER); // 10鏈堬紙鐢ㄥ父閲忔洿鐩磋锛岄伩鍏嶈0鍩猴級
-// cal.set(Calendar.MONTH, 9); // 涔熷彲浠ョ敤鏁板瓧9锛堜笉鎺ㄨ崘锛屽彲璇绘�у樊锛�
- cal.set(Calendar.DAY_OF_MONTH, 12); // 鏃ユ湡璁句负12鍙�
- cal.set(Calendar.HOUR_OF_DAY, 12); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級
- cal.set(Calendar.MINUTE, 0); // 鍒嗛挓璁句负0
- cal.set(Calendar.SECOND, 0); // 绉掕涓�0
- cal.set(Calendar.MILLISECOND, 0); // 姣璁句负0
-
-// 3. 杞垚Date瀵硅薄
- Date now = cal.getTime();
+// Calendar cal = Calendar.getInstance();
+//
+//// 2. 璁剧疆涓轰粖骞�10鏈�12鍙� 00:00:00锛堟竻闄ゆ椂鍒嗙锛岄伩鍏嶅綋鍓嶆椂闂村共鎵帮級
+// cal.set(Calendar.MONTH, Calendar.OCTOBER); // 10鏈堬紙鐢ㄥ父閲忔洿鐩磋锛岄伩鍏嶈0鍩猴級
+//// cal.set(Calendar.MONTH, 9); // 涔熷彲浠ョ敤鏁板瓧9锛堜笉鎺ㄨ崘锛屽彲璇绘�у樊锛�
+// cal.set(Calendar.DAY_OF_MONTH, 12); // 鏃ユ湡璁句负12鍙�
+// cal.set(Calendar.HOUR_OF_DAY, 12); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級
+// cal.set(Calendar.MINUTE, 0); // 鍒嗛挓璁句负0
+// cal.set(Calendar.SECOND, 0); // 绉掕涓�0
+// cal.set(Calendar.MILLISECOND, 0); // 姣璁句负0
+//
+//// 3. 杞垚Date瀵硅薄
+// Date now = cal.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/IMonitorConstructionServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/IMonitorConstructionServiceImpl.java
new file mode 100644
index 0000000..ecf4dcb
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/IMonitorConstructionServiceImpl.java
@@ -0,0 +1,142 @@
+package com.ycl.platform.service.impl;
+
+
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.domain.dto.MonitorConstructionDTO;
+import com.ycl.platform.domain.dto.ReportImportDTO;
+import com.ycl.platform.domain.entity.MonitorConstruction;
+import com.ycl.platform.mapper.IMonitorConstructionMapper;
+import com.ycl.platform.service.IMonitorConstructionService;
+import com.ycl.system.Result;
+import com.ycl.utils.StringUtils;
+import com.ycl.utils.poi.ExcelUtil;
+import enumeration.ConstructionTypeEnum;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * zgyw
+ *
+ * @author : zxl
+ * @date : 2025-10-20 13:58
+ **/
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class IMonitorConstructionServiceImpl extends ServiceImpl<IMonitorConstructionMapper, MonitorConstruction>
+ implements IMonitorConstructionService {
+ private final IMonitorConstructionMapper monitorConstructionMapper;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result importExcel(MultipartFile file) {
+ log.info("杩涘叆瀵煎叆閫昏緫");
+ ExcelUtil<MonitorConstructionDTO> excelUtil = new ExcelUtil<>(MonitorConstructionDTO.class);
+ List<MonitorConstructionDTO> list = null;
+ List<MonitorConstructionDTO> distinctList = null;
+ try {
+ list = excelUtil.importExcel(file.getInputStream());
+ distinctList = list.stream()
+ .filter(Objects::nonNull)//杩囨护鎺塶ull鐨勫璞�
+ .filter(dto -> dto.getSerialNumber() != null)//杩囨护鎺� getSerialNumber涓簄ull鐨勫璞�
+ .collect(Collectors.toMap(
+ MonitorConstructionDTO::getSerialNumber,
+ dto -> dto,
+ (existing, replacement) -> existing
+ ))
+ .values()
+ .stream()
+ .collect(Collectors.toList());
+ } catch (IOException e) {
+ log.error("璇锋鏌ュ鍏xcel琛ㄦ牸鍐呭");
+ throw new RuntimeException("璇锋鏌ュ鍏xcel琛ㄦ牸鍐呭");
+ }
+
+ List<MonitorConstruction> data = new ArrayList<>();
+ for (MonitorConstructionDTO dto : distinctList) {
+ MonitorConstruction monitorConstruction = new MonitorConstruction();
+ monitorConstruction.setSerialNumber(dto.getSerialNumber());
+ monitorConstruction.setTag(dto.getTag());
+ data.add(monitorConstruction);
+ }
+ List<String> serialNumbers = data.stream()
+ .map(MonitorConstruction::getSerialNumber)
+ .collect(Collectors.toList());
+
+ //鍒犻櫎宸插瓨鍦ㄧ殑璁惧瀵瑰簲鏍囩
+ if (CollectionUtils.isNotEmpty(serialNumbers)) {
+ log.info("鍒犻櫎鏍囩鏁版嵁琛屾暟:{}",serialNumbers.size());
+ QueryWrapper<MonitorConstruction> queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("serial_number", serialNumbers);
+ queryWrapper.eq("deleted",false);
+ baseMapper.delete(queryWrapper);
+ }
+
+ if (CollectionUtils.isNotEmpty(data)) {
+ //鎻掑叆鏍囩琛ㄤ腑
+ log.info("鎻掑叆鏍囩鏁版嵁琛屾暟:{}",data.size());
+ saveBatch(data);
+ }
+ return Result.ok();
+ }
+
+
+ @Override
+ public void getImportTemplate(HttpServletResponse httpServletResponse){
+ ExcelUtil<MonitorConstructionDTO> excelUtil = new ExcelUtil<>(MonitorConstructionDTO.class);
+ excelUtil.exportExcel(httpServletResponse, null, "璁惧鏍囩妯℃澘");
+ }
+
+ @Override
+ public List<MonitorConstruction> getSerialNumberListByConstructionType(String constructionType) {
+ List<MonitorConstruction> list = new ArrayList<>();
+ if (ConstructionTypeEnum.PHASE_ONE_TWO.name().equals(constructionType)){
+ //涓�浜屾湡
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.PHASE_ONE_TWO.getDesc())
+ .list();
+
+ }else if (ConstructionTypeEnum.PHASE_THREE.name().equals(constructionType)){
+ //涓夋湡
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.PHASE_THREE.getDesc())
+ .list();
+ }else if (ConstructionTypeEnum.PHASE_FOURTH.name().equals(constructionType)){
+ //鍥涙湡浜鸿劯
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.PHASE_FOURTH.getDesc())
+ .list();
+ }else if (ConstructionTypeEnum.EASTERN_NEW_CITY.name().equals(constructionType)){
+ //涓滈儴鏂板煄
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.EASTERN_NEW_CITY.getDesc())
+ .list();
+ }else if (ConstructionTypeEnum.CHECK_ENTER_SICHUAN.name().equals(constructionType)){
+ //鍏ュ窛鍗虫
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.CHECK_ENTER_SICHUAN.getDesc())
+ .list();
+ }else if (ConstructionTypeEnum.YAN_TAN_PHASE_TWO_FACE.name().equals(constructionType)){
+ //娌挎哗浜屾湡浜鸿劯
+ list = new LambdaQueryChainWrapper<>(baseMapper).eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .eq(MonitorConstruction::getTag, ConstructionTypeEnum.YAN_TAN_PHASE_TWO_FACE.getDesc())
+ .list();
+ }
+ return list;
+ }
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index d7ac0b3..d837e1a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -6,6 +6,7 @@
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
+import com.ycl.platform.domain.entity.MonitorConstruction;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.excel.*;
import com.ycl.platform.domain.form.VideoExportForm;
@@ -31,6 +32,7 @@
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.mapper.WorkOrderMapper;
import com.ycl.platform.mapper.YwPointMapper;
+import com.ycl.platform.service.IMonitorConstructionService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.Result;
import com.ycl.system.entity.SysDictData;
@@ -74,6 +76,8 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import static com.ycl.utils.PageUtils.startPage;
+
/**
* 璁惧璧勪骇Service涓氬姟灞傚鐞�
*
@@ -99,7 +103,8 @@
private DynamicColumnMapper dynamicColumnMapper;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
-
+ @Autowired
+ private IMonitorConstructionService monitorConstructionService;
/**
* 鏌ヨ璁惧璧勪骇
*
@@ -129,156 +134,173 @@
}
tMonitor.setTime(time);
}
- List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor);
- // 寮傚父鎭㈠鐩戞帶
- if (Objects.equals(tMonitor.getRecovery(), 1L)) {
- //宸ュ崟鍙�
- List<String> orders = monitors.stream().map(TMonitorVO::getWorkOrderNo).collect(Collectors.toList());
- if (CollectionUtils.isEmpty(orders)) {
+ List<TMonitorVO> monitors = new ArrayList<>();
+ if (StringUtils.isNotBlank(tMonitor.getConstructionType())){
+ List<MonitorConstruction> list =
+ monitorConstructionService.getSerialNumberListByConstructionType(tMonitor.getConstructionType());
+ log.info("鎵撳嵃鏌ヨ璁惧鏍囩鏁�:{},寤鸿绫诲瀷鏍囩:{}",list.size(), tMonitor.getConstructionType() );
+ //鑾峰緱璁惧缂栧彿闆嗗悎 閫氳繃寤鸿绫诲瀷鏍囩
+ if(!CollectionUtils.isEmpty(list)){
+ tMonitor.setIds(
+ list.stream().map(MonitorConstruction::getSerialNumber).collect(Collectors.toList()));
+
+ startPage();
+ monitors = tMonitorMapper.selectTMonitorListAndIds(tMonitor);
+ }
+
+ }else{
+ startPage();
+ monitors = tMonitorMapper.selectTMonitorList(tMonitor);
+ }
+ // 寮傚父鎭㈠鐩戞帶
+ if (Objects.equals(tMonitor.getRecovery(), 1L)) {
+ //宸ュ崟鍙�
+ List<String> orders = monitors.stream().map(TMonitorVO::getWorkOrderNo).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(orders)) {
+ return monitors;
+ }
+ List<WorkOrderVO> voList = workOrderMapper.getRecoveryInfo(orders);
+ for (TMonitorVO monitor : monitors) {
+ if (!CollectionUtils.isEmpty(voList)) {
+ for (WorkOrderVO workOrderVO : voList) {
+ if (monitor.getWorkOrderNo() != null && monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())) {
+ monitor.setUnitContact(workOrderVO.getUnitContact());
+ monitor.setUnitContactPhone(workOrderVO.getUnitContactPhone());
+ monitor.setYwPeopleName(workOrderVO.getYwPeopleName());
+ monitor.setErrorType(workOrderVO.getErrorType());
+ }
+ }
+ }
+ }
return monitors;
}
- List<WorkOrderVO> voList = workOrderMapper.getRecoveryInfo(orders);
- for (TMonitorVO monitor : monitors) {
- if (!CollectionUtils.isEmpty(voList)) {
- for (WorkOrderVO workOrderVO : voList) {
- if (monitor.getWorkOrderNo() != null && monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())) {
- monitor.setUnitContact(workOrderVO.getUnitContact());
- monitor.setUnitContactPhone(workOrderVO.getUnitContactPhone());
- monitor.setYwPeopleName(workOrderVO.getYwPeopleName());
- monitor.setErrorType(workOrderVO.getErrorType());
+ //璁惧缂栧彿
+ List<String> numbers = monitors.stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList());
+ Query query = new Query();
+ Date now = new Date();
+ query.addCriteria(Criteria.where("no").in(numbers)
+ .and("mongoCreateTime").gte(DateUtils.getDayStart(now)).lt(DateUtils.getDayEnd(now))
+ );
+ //涓�鏈轰竴妗d俊鎭�
+ List<MonitorQualifyResult> monitorQualifyResults = mongoTemplate.find(query, MonitorQualifyResult.class);
+ // 瑙嗛鐩戞帶璁惧
+ if (Objects.equals(tMonitor.getCameraFunType(), "1")) {
+ //OSD淇℃伅
+ List<OsdCheckResult> osdCheckResults = mongoTemplate.find(query, OsdCheckResult.class);
+ //褰曞儚鍙敤淇℃伅
+ List<RecordMetaDSumResult> videoResults = mongoTemplate.find(query, RecordMetaDSumResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //褰曞儚
+ if (!CollectionUtils.isEmpty(videoResults)) {
+ for (RecordMetaDSumResult videoResult : videoResults) {
+ if (monitor.getSerialNumber().equals(videoResult.getNo())) {
+ monitor.setVideoComplete(videoResult.getRecordStatus());
+ monitor.setVideoLoseTime(videoResult.getMissDuration());
+ }
+ }
+ }
+ //OSD
+ if (!CollectionUtils.isEmpty(osdCheckResults)) {
+ for (OsdCheckResult osdCheckResult : osdCheckResults) {
+ if (monitor.getSerialNumber().equals(osdCheckResult.getNo())) {
+ monitor.setOSD(OsdCheckResult.checkOsd(osdCheckResult));
+ monitor.setOSDTime(OsdCheckResult.checkTime(osdCheckResult));
+ }
}
}
}
}
- return monitors;
- }
- //璁惧缂栧彿
- List<String> numbers = monitors.stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList());
- Query query = new Query();
- Date now = new Date();
- query.addCriteria(Criteria.where("no").in(numbers)
- .and("mongoCreateTime").gte(DateUtils.getDayStart(now)).lt(DateUtils.getDayEnd(now))
- );
- //涓�鏈轰竴妗d俊鎭�
- List<MonitorQualifyResult> monitorQualifyResults = mongoTemplate.find(query, MonitorQualifyResult.class);
- // 瑙嗛鐩戞帶璁惧
- if (Objects.equals(tMonitor.getCameraFunType(), "1")) {
- //OSD淇℃伅
- List<OsdCheckResult> osdCheckResults = mongoTemplate.find(query, OsdCheckResult.class);
- //褰曞儚鍙敤淇℃伅
- List<RecordMetaDSumResult> videoResults = mongoTemplate.find(query, RecordMetaDSumResult.class);
- for (TMonitorVO monitor : monitors) {
- monitor.setMongoCreateTime(now);
- //涓�鏈轰竴妗�
- setOneFile(monitorQualifyResults, monitor);
- //褰曞儚
- if (!CollectionUtils.isEmpty(videoResults)) {
- for (RecordMetaDSumResult videoResult : videoResults) {
- if (monitor.getSerialNumber().equals(videoResult.getNo())) {
- monitor.setVideoComplete(videoResult.getRecordStatus());
- monitor.setVideoLoseTime(videoResult.getMissDuration());
- }
- }
- }
- //OSD
- if (!CollectionUtils.isEmpty(osdCheckResults)) {
- for (OsdCheckResult osdCheckResult : osdCheckResults) {
- if (monitor.getSerialNumber().equals(osdCheckResult.getNo())) {
- monitor.setOSD(OsdCheckResult.checkOsd(osdCheckResult));
- monitor.setOSDTime(OsdCheckResult.checkTime(osdCheckResult));
- }
- }
- }
- }
- }
- // 杞﹁締鐩戞帶璁惧
- if (Objects.equals(tMonitor.getCameraFunType(), "2")) {
- //灞炴�т竴鑷寸巼銆佸ぇ鍥�
- List<VehicleDeviceSamplingResult> sampleResults = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
- List<PicAccessResult> picAccessResults = mongoTemplate.find(query, PicAccessResult.class);
- //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
- List<VehicleDeviceInspectionResult> inspectResults = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
- for (TMonitorVO monitor : monitors) {
- monitor.setMongoCreateTime(now);
- //涓�鏈轰竴妗�
- setOneFile(monitorQualifyResults, monitor);
- //url
- if (!CollectionUtils.isEmpty(sampleResults)) {
- for (PicAccessResult picAccessResult : picAccessResults) {
- if (monitor.getSerialNumber().equals(picAccessResult.getNo())) {
- BigDecimal bigDecimal = PicAccessResult.calUrl(picAccessResult);
- monitor.setUrlPercent(bigDecimal);
- }
- }
- }
+ // 杞﹁締鐩戞帶璁惧
+ if (Objects.equals(tMonitor.getCameraFunType(), "2")) {
//灞炴�т竴鑷寸巼銆佸ぇ鍥�
- if (!CollectionUtils.isEmpty(sampleResults)) {
- for (VehicleDeviceSamplingResult sampleResult : sampleResults) {
- if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
- if (sampleResult.getBigUseful() != null) {
- monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
- }
- if (sampleResult.getVehDiff() != null) {
- monitor.setImportantConPercent(sampleResult.getVehDiff().getImportantConPercent());
- monitor.setMajorConPercent(sampleResult.getVehDiff().getMajorConPercent());
- }
- }
- }
- }
+ List<VehicleDeviceSamplingResult> sampleResults = mongoTemplate.find(query, VehicleDeviceSamplingResult.class);
+ List<PicAccessResult> picAccessResults = mongoTemplate.find(query, PicAccessResult.class);
//鎶撴媿閲忋�佹椂閽熴�佷笂浼�
- if (!CollectionUtils.isEmpty(inspectResults)) {
- for (VehicleDeviceInspectionResult inspectResult : inspectResults) {
- if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
- monitor.setSnapResult(inspectResult.getSnapResult());
- monitor.setSnapCount(inspectResult.getDataCount());
- if (inspectResult.getSnapClock() != null)
- monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
- if (inspectResult.getSnapTimely() != null)
- monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
- }
- }
- }
- }
- }
- // 浜鸿劯鐩戞帶璁惧
- if (Objects.equals(tMonitor.getCameraFunType(), "3")) {
- //浜鸿劯鍚堟牸銆佸ぇ鍥俱�乽rl璁块棶寮傚父
- List<FaceDeviceSamplingResult> sampleResults = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
- //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
- List<FaceDeviceInspectionResult> inspectResults = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
- for (TMonitorVO monitor : monitors) {
- monitor.setMongoCreateTime(now);
- //涓�鏈轰竴妗�
- setOneFile(monitorQualifyResults, monitor);
- //浜鸿劯鍚堟牸銆佸ぇ鍥�
- if (!CollectionUtils.isEmpty(sampleResults)) {
- for (FaceDeviceSamplingResult sampleResult : sampleResults) {
- if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
- if (sampleResult.getBigUseful() != null) {
- monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
+ List<VehicleDeviceInspectionResult> inspectResults = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //url
+ if (!CollectionUtils.isEmpty(sampleResults)) {
+ for (PicAccessResult picAccessResult : picAccessResults) {
+ if (monitor.getSerialNumber().equals(picAccessResult.getNo())) {
+ BigDecimal bigDecimal = PicAccessResult.calUrl(picAccessResult);
+ monitor.setUrlPercent(bigDecimal);
}
- if (sampleResult.getFaceEligibility() != null)
- monitor.setFacePercent(sampleResult.getFaceEligibility().getFaceEligPercent());
}
}
- }
- //鎶撴媿閲忋�佹椂閽熴�佷笂浼犮�佸缓妯″け璐ョ巼
- if (!CollectionUtils.isEmpty(inspectResults)) {
- for (FaceDeviceInspectionResult inspectResult : inspectResults) {
- if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
- monitor.setSnapResult(inspectResult.getSnapResult());
- monitor.setSnapCount(inspectResult.getDataCount());
- if (inspectResult.getSnapClock() != null)
- monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
- if (inspectResult.getSnapTimely() != null)
- monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
- if (inspectResult.getSnapValidity() != null)
- monitor.setFailPercent(inspectResult.getSnapValidity().getFailPercent());
+ //灞炴�т竴鑷寸巼銆佸ぇ鍥�
+ if (!CollectionUtils.isEmpty(sampleResults)) {
+ for (VehicleDeviceSamplingResult sampleResult : sampleResults) {
+ if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
+ if (sampleResult.getBigUseful() != null) {
+ monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
+ }
+ if (sampleResult.getVehDiff() != null) {
+ monitor.setImportantConPercent(sampleResult.getVehDiff().getImportantConPercent());
+ monitor.setMajorConPercent(sampleResult.getVehDiff().getMajorConPercent());
+ }
+ }
+ }
+ }
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
+ if (!CollectionUtils.isEmpty(inspectResults)) {
+ for (VehicleDeviceInspectionResult inspectResult : inspectResults) {
+ if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
+ monitor.setSnapResult(inspectResult.getSnapResult());
+ monitor.setSnapCount(inspectResult.getDataCount());
+ if (inspectResult.getSnapClock() != null)
+ monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
+ if (inspectResult.getSnapTimely() != null)
+ monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
+ }
}
}
}
}
- }
+ // 浜鸿劯鐩戞帶璁惧
+ if (Objects.equals(tMonitor.getCameraFunType(), "3")) {
+ //浜鸿劯鍚堟牸銆佸ぇ鍥俱�乽rl璁块棶寮傚父
+ List<FaceDeviceSamplingResult> sampleResults = mongoTemplate.find(query, FaceDeviceSamplingResult.class);
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼�
+ List<FaceDeviceInspectionResult> inspectResults = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
+ for (TMonitorVO monitor : monitors) {
+ monitor.setMongoCreateTime(now);
+ //涓�鏈轰竴妗�
+ setOneFile(monitorQualifyResults, monitor);
+ //浜鸿劯鍚堟牸銆佸ぇ鍥�
+ if (!CollectionUtils.isEmpty(sampleResults)) {
+ for (FaceDeviceSamplingResult sampleResult : sampleResults) {
+ if (monitor.getSerialNumber().equals(sampleResult.getNo())) {
+ if (sampleResult.getBigUseful() != null) {
+ monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent());
+ }
+ if (sampleResult.getFaceEligibility() != null)
+ monitor.setFacePercent(sampleResult.getFaceEligibility().getFaceEligPercent());
+ }
+ }
+ }
+ //鎶撴媿閲忋�佹椂閽熴�佷笂浼犮�佸缓妯″け璐ョ巼
+ if (!CollectionUtils.isEmpty(inspectResults)) {
+ for (FaceDeviceInspectionResult inspectResult : inspectResults) {
+ if (monitor.getSerialNumber().equals(inspectResult.getNo())) {
+ monitor.setSnapResult(inspectResult.getSnapResult());
+ monitor.setSnapCount(inspectResult.getDataCount());
+ if (inspectResult.getSnapClock() != null)
+ monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent());
+ if (inspectResult.getSnapTimely() != null)
+ monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent());
+ if (inspectResult.getSnapValidity() != null)
+ monitor.setFailPercent(inspectResult.getSnapValidity().getFailPercent());
+ }
+ }
+ }
+ }
+ }
return monitors;
}
@@ -346,6 +368,13 @@
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public Map<String, String> getVideoCount(TMonitorVO tMonitor) {
+
+ List<MonitorConstruction> list =
+ monitorConstructionService.getSerialNumberListByConstructionType(tMonitor.getConstructionType());
+ //鑾峰緱璁惧缂栧彿闆嗗悎 閫氳繃寤鸿绫诲瀷鏍囩
+ tMonitor.setIds(
+ list.stream().map(MonitorConstruction::getSerialNumber).collect(Collectors.toList()));
+
return tMonitorMapper.getVideoCount(tMonitor);
}
@@ -556,8 +585,6 @@
ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet);
util.exportExcelManySheet(response, mysheet);
}
-
-
/**
* 瀵煎嚭姣忔棩鍦ㄧ嚎鏁版嵁
*/
@@ -578,9 +605,34 @@
// 浣跨敤绾跨▼瀹夊叏鐨凩ist锛岄鍏堟寚瀹氬閲�
List<ExcelExp> mysheet = Collections.synchronizedList(new ArrayList<>());
VideoExportForm.convertTags(exportForm);
- Query query = getQuery(exportForm);
+ Query query = getQuery(exportForm);//瑁呴厤鏉′欢
// 鏈堜唤姣忔棩鍦ㄧ嚎鏁版嵁
+
List<TMonitorResult> onlineResult = mongoTemplate.find(query, TMonitorResult.class);
+ log.info("澶у皬:{}",onlineResult.size());
+ //姝ゅ闇�瑕佽繃婊ゆ帀璁惧鍏ㄦ櫙鍦ㄧ嚎 缁嗚妭涓嶅湪绾跨殑鎯呭喌 鍙互鎸� point鍒嗙粍 鍒嗘垜璁稿缁勪箣鍚庡啀鍋氬鐞�
+ Map<String, List<TMonitorResult>> ipToDevices = onlineResult.stream()
+ .collect(Collectors.groupingBy(TMonitorResult::getIp));
+
+// onlineResult = ipToDevices.values().stream()
+// .map(devices -> {
+// // 妫�鏌ュ垎缁勪腑鏄惁鏈� online = true 鐨勮澶�
+// List<TMonitorResult> onlineDevices = devices.stream()
+// .filter(monitor -> monitor.getOnline() == 1) // 鍋囪online瀛楁鐨刧etter鏄痠sOnline()
+// .collect(Collectors.toList());
+//
+// if (!onlineDevices.isEmpty()) {
+// // 鑻ュ瓨鍦╫nline=true鐨勮澶囷紝鍙繚鐣欑涓�涓紙鎴栧彇浠绘剰涓�涓紝鎸夐渶璋冩暣锛�
+// return onlineDevices.get(0);
+// } else {
+// // 鑻ュ叏涓簅nline=false锛屽彧淇濈暀绗竴涓�
+// return devices.get(0);
+// }
+// })
+// .collect(Collectors.toList());
+
+
+
log.info("鏈堜唤鍦ㄧ嚎鏁版嵁:{}鏉℃暟", onlineResult.size());
// 浣跨敤Collectors.toMap鍘婚噸锛屼繚鐣欐瘡涓狽o鐨勭涓�涓亣鍒扮殑鍏冪礌
Map<String, TMonitorResult> uniqueResultsMap = onlineResult.stream()
@@ -589,9 +641,14 @@
Function.identity(), // valueMapper锛岀洿鎺ヤ娇鐢ㄥ璞℃湰韬�
(existing, replacement) -> existing // mergeFunction锛屽鏋滄湁閲嶅锛屼繚鐣欑涓�涓�
));
+
+
// 灏� Map 杞崲涓� List
List<TMonitorResult> tMonitorResults = new ArrayList<>(uniqueResultsMap.values());
log.info("鍘婚噸鍚庡ぇ灏�:{}", tMonitorResults.size());
+
+
+
// 鑾峰彇鍔ㄦ�佸垪鏁版嵁骞舵瀯寤虹紦瀛楳ap
Map<Integer, List<DynamicColumnVO>> dynamicColumnMap = new HashMap<>();
if (!tMonitorResults.isEmpty()) {
@@ -600,6 +657,8 @@
.map(TMonitorResult::getPointId)
.distinct() // 鍘婚噸锛屽噺灏戞暟鎹簱鏌ヨ
.collect(Collectors.toList());
+
+
//鑾峰彇闆嗗悎鐐逛綅鐨勮ˉ鍏呭垪淇℃伅
List<DynamicColumnVO> dynamics = dynamicColumnMapper.getDynamicsByIds("t_yw_point", pointIds);
if (!CollectionUtils.isEmpty(dynamics)) {
@@ -631,6 +690,9 @@
CompletableFuture<ExcelExp> future = CompletableFuture.supplyAsync(() -> {
// 鐩存帴浠庨鍒嗙粍鐨凪ap涓幏鍙栵紝閬垮厤姣忔杩囨护
List<TMonitorResult> monitors = deptMonitorMap.getOrDefault(currentDeptId, Collections.emptyList());
+
+
+
if (monitors.isEmpty()) {
return null;
}
@@ -1458,6 +1520,22 @@
@Override
public void export(HttpServletResponse response, TMonitorVO tMonitor) {
List<TMonitorExp> monitors = tMonitorMapper.exportTMonitorList(tMonitor);
+ //杩囨护鍑鸿澶囧缓璁剧被鍨�
+ if (StringUtils.isNotBlank(tMonitor.getConstructionType())){
+ List<MonitorConstruction> list =
+ monitorConstructionService.getSerialNumberListByConstructionType(tMonitor.getConstructionType());
+ //鑾峰緱璁惧缂栧彿闆嗗悎 閫氳繃寤鸿绫诲瀷鏍囩
+ List<String> serialNumberList = list.stream().map(MonitorConstruction::getSerialNumber).collect(Collectors.toList());
+ monitors = monitors.stream()
+ .filter(result -> {
+ String sn = result.getSerialNumber();
+ // 浠讳竴瀛楁闈炵┖涓斿湪闆嗗悎涓嵆鍙�
+ return (sn != null && serialNumberList.contains(sn));
+ })
+ .collect(Collectors.toList());
+ }
+
+
//鑾峰彇鍔ㄦ�佸垪鏁版嵁
List<Integer> pointIds = monitors.stream().map(TMonitorExp::getPointId).collect(Collectors.toList());
List<DynamicColumnVO> dynamics = dynamicColumnMapper.getDynamicsByIds("t_yw_point", pointIds);
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 a138de8..99411d5 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
@@ -1303,10 +1303,23 @@
}
// 鏄惁鎶ュ
- boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
- .eq(Report::getSerialNumber, workOrder.getSerialNumber())
- .exists();
- workOrder.setHasReport(hasReport);
+ Date target = workOrder.getCreateTime();
+
+ Report reports = new LambdaQueryChainWrapper<>(reportMapper)
+ .eq(Report::getSerialNumber,workOrder.getWorkOrderNo())
+ .eq(Report::getStatus,1)
+ .orderByDesc(Report::getCreateTime)
+ .last("LIMIT 1")
+ .one();
+ boolean isInRange = false;
+ if (reports != null){
+ Date start = reports.getBeginCreateTime();
+ Date end = reports.getEndCreateTime();
+ isInRange = target.after(start) || target.equals(start) // target >= start
+ && target.before(end) || target.equals(end);
+ }
+
+ workOrder.setHasReport(isInRange);
// 鏁呴殰绫诲瀷
List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());
diff --git a/ycl-server/src/main/java/com/ycl/task/DemeritRecordTask.java b/ycl-server/src/main/java/com/ycl/task/DemeritRecordTask.java
index fbd70f3..cd9d594 100644
--- a/ycl-server/src/main/java/com/ycl/task/DemeritRecordTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/DemeritRecordTask.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.google.common.util.concurrent.AtomicDouble;
import com.ycl.platform.domain.entity.DemeritRecord;
+import com.ycl.platform.domain.entity.MonitorConstruction;
import com.ycl.platform.domain.entity.Report;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.mapper.DemeritRecordMapper;
+import com.ycl.platform.mapper.IMonitorConstructionMapper;
import com.ycl.platform.mapper.ReportMapper;
import com.ycl.platform.service.IDemeritRecordService;
import com.ycl.utils.DateUtils;
@@ -50,6 +52,8 @@
private final ReportMapper reportMapper;
+ private final IMonitorConstructionMapper monitorConstructionMapper;
+
private static final ExecutorService executorService = new ThreadPoolExecutor(16,
128,
5000,
@@ -59,21 +63,12 @@
);
private final IDemeritRecordService demeritRecordService;
- // 鎻愬彇鍏叡杩囨护鏂规硶
- private Predicate<RecordMetaDSumResult> deviceNameStartsWith(String prefix) {
- return result -> result.getDeviceName() != null && result.getDeviceName().startsWith(prefix);
- }
-
- private Predicate<RecordMetaDSumResult> deviceNameStartsWithAny(String... prefixes) {
- return result -> result.getDeviceName() != null &&
- Arrays.stream(prefixes).anyMatch(prefix -> result.getDeviceName().startsWith(prefix));
- }
-
- private DemeritRecord buildDemeritRecord(String constructionType,BigDecimal demerit,Integer deptId) {
+ private DemeritRecord buildDemeritRecord(String constructionType,BigDecimal demerit,Integer deptId,Date recordTime) {
DemeritRecord record = new DemeritRecord();
record.setConstructionType(constructionType);
record.setDemerit(demerit);
record.setDeptId(deptId);
+ record.setRecordTime(recordTime);
return record;
}
private BigDecimal calculateTotalDeduction(List<RecordMetaDSumResult> records) {
@@ -126,7 +121,7 @@
log.info("鏃ユ湡:{},鏌ヨ鍑虹殑璁惧褰曞儚璁板綍鏁皗}",today,results.size());
//杩囨护鎺夐潪鍏ㄦ櫙鐨勮澶� 涓� 1鍒欎负缁嗚妭锛屽鏋滄槸0鍒欎负鍏ㄦ櫙
- results.stream().filter(obj ->
+ results = results.stream().filter(obj ->
{
String deviceId = obj.getDeviceId();
if (deviceId == null || deviceId.length() < 7) {
@@ -135,7 +130,7 @@
// 鑾峰彇鍊掓暟绗竷浣嶇殑瀛楃
char seventhFromEnd = deviceId.charAt(deviceId.length() - 7);
return seventhFromEnd != '1'; //涓�1 鍒欎細 false 鍘婚櫎鎺�
- });
+ }).collect(Collectors.toList());
log.info("杩囨护鍚庡墿浣欏叏鏅澶囨暟{}",results.size());
//鍙�冩牳LT_銆�(涓夋湡)
@@ -143,28 +138,43 @@
// DX_R銆侊紙鍥涘尯浜鸿劯锛�
// DX_RS銆侊紙鍥涘尯浜鸿劯锛�
// 锛堥渶瑕佹帓闄X_R2銆丏X_RD銆丣_銆乀1銆乀3浠ュ強娌℃湁鍓嶇紑鐨勮澶囷級
- List<String> prefixes = Arrays.asList("LT_", "DX_", "DX_R", "DX_RS");
-
- results.stream()
+// List<String> prefixes = Arrays.asList("LT_", "DX_", "DX_R", "DX_RS");
+ //鏌ヨ璁惧鏍囩琛ㄤ腑鐨凪onitorConstruction鍒楄〃
+ List<MonitorConstruction> monitorConstructionList = new LambdaQueryChainWrapper<>(monitorConstructionMapper)
+ .eq(MonitorConstruction::getDeleted, Boolean.FALSE)
+ .list();
+ List<String> serialNumberList = monitorConstructionList.stream()
+ .map(MonitorConstruction::getSerialNumber).collect(Collectors.toList());
+ //杩囨护鑾峰緱鍖呭惈浜嗚繖浜涙爣绛剧殑璁惧褰曞儚鎯呭喌闆嗗悎
+ results = results.stream()
.filter(result -> {
- String deviceName = result.getDeviceName();
- if (deviceName == null) {
- return false;
- }
- return prefixes.stream().anyMatch(deviceName::startsWith);
+ String sn = result.getNo();
+ // 浠讳竴瀛楁闈炵┖涓斿湪闆嗗悎涓嵆鍙�
+ return (sn != null && serialNumberList.contains(sn));
})
.collect(Collectors.toList());
+
log.info("鍓╀綑鑰冩牳璁惧杩囨护鍚庤澶囨暟{}",results.size());
//杩囨护鎺夋姤澶囩殑璁惧
//鏌ヨ鍦ㄥ綋鍓嶆椂闂存湁鎶ュ鐨勬墍鏈夎澶囷紝
//鍥犱负褰曞儚鏁版嵁鐨勬椂闂�
- List<String> deviceIds = new LambdaQueryChainWrapper<>(reportMapper)
+ Date yesterday =new Date();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(yesterday);
+ calendar.add(Calendar.DAY_OF_YEAR, -1); // 鍑忓幓1澶� 娴嬭瘯鐢�
+ yesterday = calendar.getTime();
+ log.info("娴嬭瘯鏃堕棿:{}",yesterday);
+
+ List<Report> list = new LambdaQueryChainWrapper<>(reportMapper)
.eq(Report::getStatus, 1)
- .ge(Report::getBeginCreateTime, today)
- .le(Report::getEndCreateTime, today)
- .list().stream()
+ .ge(Report::getBeginCreateTime, DateUtils.getDayStart(yesterday))
+ .le(Report::getEndCreateTime, DateUtils.getDayEnd(yesterday))
+ .list();
+
+ log.info("鎶ュ璁板綍锛歿}",list);
+ List<String> deviceIds = list.stream()
.collect(Collectors.toMap(
Report::getSerialNumber, // key: serialNumber
Function.identity(), // value: Report瀵硅薄鏈韩
@@ -177,7 +187,7 @@
Set<String> deviceIdSet = new HashSet<>(deviceIds);
log.info("鎶ュ璁惧鏁皗}",deviceIdSet.size());
- results.stream()
+ results = results.stream()
.filter(result -> {
// 鑾峰彇褰撳墠瀵硅薄鐨刣eviceId
String resultDeviceId = result.getDeviceId();
@@ -202,6 +212,24 @@
Map<String,List<RecordMetaDSumResult>> groupByArealayerno = results.stream()
.collect(Collectors.groupingBy(RecordMetaDSumResult::getArealayerno));
+ //鎸夊缓璁剧被鍨嬫爣绛惧垎缁勮澶嘚O monitorConstructionList
+ //鎸夋爣绛惧垎缁�
+ Map<String, List<String>> groupByTag = monitorConstructionList.stream()
+ // 鍒嗙粍閿細鎻愬彇姣忎釜瀵硅薄鐨� tag锛堟敞鎰忓鐞� tag 涓� null 鐨勬儏鍐碉紝閬垮厤閿负 null锛�
+ .collect(Collectors.groupingBy(
+ mc -> mc.getTag() != null ? mc.getTag() : "DEFAULT_TAG",
+ Collectors.mapping(MonitorConstruction::getSerialNumber, Collectors.toList())
+
+ ));
+ List<String> phaseOneTwoSerials = groupByTag.getOrDefault(ConstructionTypeEnum.PHASE_ONE_TWO.getDesc(), Collections.emptyList());
+ List<String> phaseThreeSerials = groupByTag.getOrDefault(ConstructionTypeEnum.PHASE_THREE.getDesc(), Collections.emptyList());
+ List<String> phaseFourthSerials = groupByTag.getOrDefault(ConstructionTypeEnum.PHASE_FOURTH.getDesc(), Collections.emptyList());
+
+ List<String> checkEnterSichuan = groupByTag.getOrDefault(ConstructionTypeEnum.CHECK_ENTER_SICHUAN.getDesc(), Collections.emptyList());
+
+ List<String> easternNewCity= groupByTag.getOrDefault(ConstructionTypeEnum.EASTERN_NEW_CITY.getDesc(), Collections.emptyList());
+
+ List<String> yanTanPhaseTwoFace = groupByTag.getOrDefault(ConstructionTypeEnum.YAN_TAN_PHASE_TWO_FACE.getDesc(), Collections.emptyList());
//寰幆鍒嗙粍鍚庣殑map
for (Map.Entry<String, List<RecordMetaDSumResult>> entry : groupByArealayerno.entrySet()) {
String arealayerno = entry.getKey();
@@ -218,65 +246,62 @@
if (CollectionUtils.isNotEmpty(resultList)) {
// 瀵规瘡涓狶ist杩涜澶勭悊 鍒嗗缓绫诲瀷澶勭悊闆嗗悎
List<RecordMetaDSumResult> phase_one_two = resultList.stream()
- .filter(deviceNameStartsWith("DX_"))
+ .filter(result -> {
+ String no = result.getNo();
+ return no != null && phaseOneTwoSerials.contains(no);
+ })
.collect(Collectors.toList());
- log.info("涓�浜屾湡鑰冩牳璁板綍鏁皗}",phase_one_two.size());
+ log.info("涓�浜屾湡鑰冩牳璁板綍鏁皗}", phase_one_two.size());
List<RecordMetaDSumResult> phase_three = resultList.stream()
- .filter(deviceNameStartsWith("LT_"))
+ .filter(result -> {
+ String no = result.getNo();
+ return no != null && phaseThreeSerials.contains(no);
+ })
.collect(Collectors.toList());
- log.info("涓夋湡鑰冩牳璁板綍鏁皗}",phase_three.size());
+ log.info("涓夋湡鑰冩牳璁板綍鏁皗}", phase_three.size());
List<RecordMetaDSumResult> phase_fourth = resultList.stream()
- .filter(deviceNameStartsWithAny("DX_R", "DX_RS"))
+ .filter(result -> {
+ String no = result.getNo();
+ return no != null && phaseFourthSerials.contains(no);
+ })
.collect(Collectors.toList());
- log.info("鍥涙湡鑰冩牳璁板綍鏁皗}",phase_fourth.size());
- if (CollectionUtils.isNotEmpty(phase_one_two)){
- BigDecimal phaseOneTwoDeduction = calculateTotalDeduction(phase_one_two);
- DemeritRecord demeritRecordPhaseOneTwo = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_ONE_TWO.name(),
- phaseOneTwoDeduction,
- areaDeptEnum.getDeptId());
- demeritRecords.add(demeritRecordPhaseOneTwo);
- }else{
- DemeritRecord phaseOneTwoDeduction = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_ONE_TWO.name(),
- BigDecimal.ZERO,
- areaDeptEnum.getDeptId());
- demeritRecords.add(phaseOneTwoDeduction);
- }
+ log.info("鍥涙湡鑰冩牳璁板綍鏁皗}", phase_fourth.size());
+ List<RecordMetaDSumResult> check_enter_sichuan = resultList.stream()
+ .filter(result ->{
+ String no = result.getNo();
+ return no != null && checkEnterSichuan.contains(no);
+ })
+ .collect(Collectors.toList());
+ log.info("鍏ュ窛鍗虫{}", check_enter_sichuan.size());
- if (CollectionUtils.isNotEmpty(phase_three)){
- BigDecimal phaseThreeDeduction = calculateTotalDeduction(phase_three);
- DemeritRecord demeritRecordPhaseThree = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_THREE.name(),
- phaseThreeDeduction,
- areaDeptEnum.getDeptId());
- demeritRecords.add(demeritRecordPhaseThree);
- }else {
- DemeritRecord phaseThreeDeduction = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_THREE.name(),
- BigDecimal.ZERO,
- areaDeptEnum.getDeptId());
- demeritRecords.add(phaseThreeDeduction);
- }
- if (CollectionUtils.isNotEmpty(phase_fourth)){
- BigDecimal phaseFourthDeduction = calculateTotalDeduction(phase_fourth);
- DemeritRecord demeritRecordPhaseFourth = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_FOURTH.name(),
- phaseFourthDeduction,
- areaDeptEnum.getDeptId());
- demeritRecords.add(demeritRecordPhaseFourth);
- }else{
- DemeritRecord phaseFourthDeduction = buildDemeritRecord(
- ConstructionTypeEnum.PHASE_FOURTH.name(),
- BigDecimal.ZERO,
- areaDeptEnum.getDeptId());
- demeritRecords.add(phaseFourthDeduction);
- }
-
+ List<RecordMetaDSumResult> eastern_new_city = resultList.stream()
+ .filter(result ->{
+ String no = result.getNo();
+ return no != null && easternNewCity.contains(no);
+ })
+ .collect(Collectors.toList());
+ log.info("涓滈儴鏂板煄{}", eastern_new_city.size());
+ List<RecordMetaDSumResult> yan_tan_phase_two_face = resultList.stream()
+ .filter(result ->{
+ String no = result.getNo();
+ return no != null && yanTanPhaseTwoFace.contains(no);
+ })
+ .collect(Collectors.toList());
+ log.info("娌挎哗浜屾湡浜鸿劯{}", yan_tan_phase_two_face.size());
+ //涓�浜屾湡
+ buildAndAddDemeritRecords(phase_one_two, ConstructionTypeEnum.PHASE_ONE_TWO.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
+ //涓夋湡
+ buildAndAddDemeritRecords(phase_three, ConstructionTypeEnum.PHASE_THREE.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
+ //鍥涙湡
+ buildAndAddDemeritRecords(phase_fourth, ConstructionTypeEnum.PHASE_FOURTH.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
+ //鍏ュ窛鍗虫
+ buildAndAddDemeritRecords(check_enter_sichuan, ConstructionTypeEnum.CHECK_ENTER_SICHUAN.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
+ //涓滈儴鏂板煄
+ buildAndAddDemeritRecords(eastern_new_city, ConstructionTypeEnum.EASTERN_NEW_CITY.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
+ //娌挎哗浜屾湡浜鸿劯
+ buildAndAddDemeritRecords(yan_tan_phase_two_face, ConstructionTypeEnum.YAN_TAN_PHASE_TWO_FACE.name(), areaDeptEnum.getDeptId(),yesterday,demeritRecords);
}
-
-
}
@@ -292,4 +317,25 @@
log.info("缁撴潫璁$畻姣忔棩鎵e垎璁板綍鎯呭喌锛氭彃鍏ユ暟鎹噺{},鏁版嵁淇℃伅:{}",demeritRecords.size(),demeritRecords);
}
+ public void buildAndAddDemeritRecords(List<RecordMetaDSumResult> constructionByRecordMetaList,
+ String constructionType,Integer areaDeptId,Date recordTime,
+ List<DemeritRecord> demeritRecords) {
+ if (CollectionUtils.isNotEmpty(constructionByRecordMetaList)) {
+ BigDecimal deduction = calculateTotalDeduction(constructionByRecordMetaList);
+ DemeritRecord demeritRecord = buildDemeritRecord(
+ constructionType,
+ deduction,
+ areaDeptId,
+ DateUtils.getDayStart(recordTime));
+ demeritRecords.add(demeritRecord);
+ }else{
+ DemeritRecord demeritRecord = buildDemeritRecord(
+ constructionType,
+ BigDecimal.ZERO,
+ areaDeptId,
+ DateUtils.getDayStart(recordTime));
+ demeritRecords.add(demeritRecord);
+ }
+ }
+
}
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 b1dfe89..fb1bf59 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -182,6 +182,8 @@
* online瀛楁鏉ヨ嚜浜庝紭浜戯紝pingOnline涓轰富鍔╬ing妫�娴嬬殑銆傚瓨鍏ongo缁欐暟鎹腑蹇冩煡闃�
*/
public void pointOnline() throws ExecutionException, InterruptedException {
+
+
log.info("寮�濮嬫娴嬬偣浣嶅湪绾�");
Integer times = 2;
SysConfig config = new SysConfig();
@@ -261,6 +263,11 @@
unKnownList.add(item.getIp());
}
});
+
+ if(!CollectionUtils.isEmpty(onLineList)){
+ log.error("鍦ㄧ嚎鐐逛綅闆嗗悎:{}",onLineList);
+ }
+
log.error("unKnownList:{}",unKnownList);
if(!CollectionUtils.isEmpty(offLineList)) {
log.error("淇敼绂荤嚎鐨勭偣浣嶉泦鍚�:{}",offLineList);
@@ -289,6 +296,10 @@
}else if("3".equals(type)){
mongoData.setProvinceTag(mongoData.getProvinceTagFace());
}
+ //淇敼绾夸笂
+ if(mongoData.getPingOnline()){
+ mongoData.setOnline(1);
+ }
mongoList.add(mongoData);
}
}
diff --git a/ycl-server/src/main/resources/mapper/zgyw/DemeritREcordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/DemeritREcordMapper.xml
index 6382d56..47a10cd 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/DemeritREcordMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/DemeritREcordMapper.xml
@@ -18,7 +18,8 @@
ter.dept_id,
ter.create_time,
ter.construction_type,
- ter.demerit
+ ter.demerit,
+ ter.record_time
from t_demerit_record ter where ter.deleted = 0
<if test="query.deptId != null and query.deptId != ''">
AND ter.dept_id = #{query.deptId}
@@ -28,13 +29,14 @@
</if>
<!-- 鏃堕棿鑼冨洿绛涢�夛細鎸夋棩鏌ヨ -->
<if test="query.searchType == 'day' and query.dayDate != null">
- AND ter.create_time >= #{query.dayDate} <!-- 褰撳ぉ00:00:00 -->
- AND ter.create_time <DATE_ADD(#{query.dayDate}, INTERVAL 1 DAY) <!-- 娆℃棩00:00:00锛堜笉鍖呭惈锛� -->
+ AND ter.record_time >= #{query.dayDate} <!-- 褰撳ぉ00:00:00 -->
+ AND ter.record_time <DATE_ADD(#{query.dayDate}, INTERVAL 1 DAY) <!-- 娆℃棩00:00:00锛堜笉鍖呭惈锛� -->
</if>
<!-- 鏃堕棿鑼冨洿绛涢�夛細鎸夋湀鏌ヨ -->
<if test="query.searchType == 'month' and query.monthDate != null">
AND ter.create_time >= #{query.monthDate} <!-- 褰撴湀1鏃�00:00:00 -->
AND ter.create_time <DATE_ADD(LAST_DAY(#{query.monthDate}), INTERVAL 1 DAY) <!-- 涓嬫湀1鏃�00:00:00锛堜笉鍖呭惈锛� -->
</if>
+ ORDER BY ter.record_time DESC
</select>
</mapper>
\ No newline at end of file
diff --git a/ycl-server/src/main/resources/mapper/zgyw/IMonitorConstructionMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/IMonitorConstructionMapper.xml
new file mode 100644
index 0000000..03af139
--- /dev/null
+++ b/ycl-server/src/main/resources/mapper/zgyw/IMonitorConstructionMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.platform.mapper.IMonitorConstructionMapper">
+ <insert id="insertBatch">
+ INSERT INTO t_monitor_construction(serial_number,tag,deleted) values
+ <foreach collection="list" item="item" index="index" separator=",">
+ ( #{item.serialNumber},#{item.tag},0)
+ </foreach>
+ </insert>
+
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index bdf1ed6..fa79b60 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -106,7 +106,8 @@
WHEN p.online = -1 OR p.ping_online = -1 THEN -1
ELSE 0
END AS onState, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag_video,p.province_tag_car,p.province_tag_face,p.dept_tag,
- IF(COUNT(w.id) OVER() > 0, '鏄�', '鍚�') AS error, u.unit_name,p.recovery_time,p.reason,p.start_time,p.end_time, w.work_order_no
+ IF(COUNT(w.id) OVER() > 0, '鏄�', '鍚�') AS error, u.unit_name,p.recovery_time,p.reason,p.start_time,p.end_time, w.work_order_no,
+ tmc.tag
from t_monitor m
left join t_yw_point p on m.serial_number = p.serial_number and p.deleted = 0
left join sys_dept d on p.dept_id = d.dept_id and d.del_flag = 0
@@ -117,6 +118,7 @@
) SELECT * FROM cte WHERE rn=1
) w on m.serial_number = w.serial_number and w.deleted = 0
left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
+ LEFT JOIN t_monitor_construction tmc on m.serial_number = tmc.serial_number and tmc.deleted = 0
<where>
p.examine_status = 1
<if test="serialNumber != null and serialNumber != ''">and m.serial_number = #{serialNumber}</if>
@@ -166,35 +168,94 @@
<if test="cameraDept != null and cameraDept != ''">and camera_dept = #{cameraDept}</if>
<if test="hybm != null and hybm != ''">and hybm = #{hybm}</if>
<if test="lxbm != null ">and lxbm = #{lxbm}</if>
- <if test="constructionType != null and constructionType != ''">
- <choose>
- <when test="constructionType == 'PHASE_ONE_TWO'">
- and m.name LIKE 'DX_%'
- </when>
- <when test="constructionType == 'PHASE_THREE'">
- and m.name LIKE 'LT_%'
- </when>
-
- <when test="constructionType == 'PHASE_FOURTH'">
- and (
- m.name LIKE 'DX_R%'
- OR
- m.name LIKE 'DX_RS%'
- )
- </when>
- <when test="constructionType == 'EASTERN_NEW_CITY'">
- and m.name LIKE 'DX_RD%'
- </when>
- <when test="constructionType == 'YAN_TAN_PHASE_TWO_FACE'">
- and m.name LIKE 'DX_R2%'
- </when>
- </choose>
- </if>
-
${params.dataScope}
</where>
</select>
+ <select id="selectTMonitorListAndIds" resultType="com.ycl.platform.domain.vo.TMonitorVO">
+ select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
+ camera_capture_area,
+ CASE
+ WHEN p.online = 1 AND p.ping_online = 1 THEN 1
+ WHEN p.online = -1 OR p.ping_online = -1 THEN -1
+ ELSE 0
+ END AS onState, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag_video,p.province_tag_car,p.province_tag_face,p.dept_tag,
+ IF(COUNT(w.id) OVER() > 0, '鏄�', '鍚�') AS error, u.unit_name,p.recovery_time,p.reason,p.start_time,p.end_time, w.work_order_no,
+ tmc.tag
+ from t_monitor m
+ left join t_yw_point p on m.serial_number = p.serial_number and p.deleted = 0
+ left join sys_dept d on p.dept_id = d.dept_id and d.del_flag = 0
+ left join (
+ WITH cte AS (
+ SELECT *,row_number() OVER(PARTITION BY serial_number ORDER BY create_time DESC) rn FROM t_work_order
+ WHERE deleted = 0 AND status != 'AUDITING_SUCCESS'
+ ) SELECT * FROM cte WHERE rn=1
+ ) w on m.serial_number = w.serial_number and w.deleted = 0
+ left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
+ LEFT JOIN t_monitor_construction tmc on m.serial_number = tmc.serial_number and tmc.deleted = 0
+ <where>
+ p.examine_status = 1
+ <if test="ids != null and ids.size() > 0">
+ and m.serial_number in
+ <foreach collection="ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="serialNumber != null and serialNumber != ''">and m.serial_number = #{serialNumber}</if>
+ <if test="name != null and name != ''">
+ and (name like concat('%', #{name}, '%')
+ or m.ip like concat('%', #{name}, '%')
+ or m.serial_number like concat('%', #{name}, '%')
+ or u.unit_name like concat('%', #{name}, '%'))
+ </if>
+ <if test="provinceTag != null and cameraFunType == 1">and p.province_tag_video = #{provinceTag}</if>
+ <if test="provinceTag != null and cameraFunType == 2">and p.province_tag_car = #{provinceTag}</if>
+ <if test="provinceTag != null and cameraFunType == 3">and p.province_tag_face = #{provinceTag}</if>
+ <if test="provinceTag != null and recovery == 1">and (p.province_tag_face = #{provinceTag} or p.province_tag_video = #{provinceTag} or p.province_tag_car = #{provinceTag})</if>
+ <if test="deptTag != null ">and p.dept_tag = #{deptTag}</if>
+ <if test="siteType != null ">and site_type = #{siteType}</if>
+ <if test="macAddr != null and macAddr != ''">and mac_addr = #{macAddr}</if>
+ <if test="ip != null and ip != ''">and ip = #{ip}</if>
+ <if test="cameraFunType != null and cameraFunType != ''">and camera_fun_type like concat('%',
+ #{cameraFunType}, '%')
+ </if>
+ <if test="longitude != null and longitude != ''">and longitude = #{longitude}</if>
+ <if test="latitude != null and latitude != ''">and latitude = #{latitude}</if>
+ <if test="cameraCaptureArea != null and cameraCaptureArea != ''">and camera_capture_area =
+ #{cameraCaptureArea}
+ </if>
+ <if test="time !=null and time !=''">and TIMESTAMPDIFF(DAY, p.recovery_time, NOW()) <![CDATA[<=]]> #{time}</if>
+ <if test="onState != null and onState == 1">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+ <if test="onState != null and onState == -1">and (p.online = #{onState} or p.ping_online = #{onState})</if>
+ <if test="onState != null and onState == 0">and (p.online = #{onState} and p.ping_online = #{onState})</if>
+ <if test="civilCode != null and civilCode != ''">and civil_code = #{civilCode}</if>
+ <if test="integratedDevice != null ">and integrated_device = #{integratedDevice}</if>
+ <if test="cameraBrand != null ">and camera_brand = #{cameraBrand}</if>
+ <if test="address != null and address != ''">and d.dept_id = #{address}</if>
+ <if test="netWorking != null ">and net_working = #{netWorking}</if>
+ <if test="publicSecurity != null and publicSecurity != ''">and public_security = #{publicSecurity}</if>
+ <if test="installedTime != null ">and installed_time = #{installedTime}</if>
+ <if test="managementUnit != null and managementUnit != ''">and management_unit = #{managementUnit}</if>
+ <if test="muContactInfo != null and muContactInfo != ''">and mu_contact_info = #{muContactInfo}</if>
+ <if test="storageDays != null ">and storage_days = #{storageDays}</if>
+ <if test="monitorAzimuth != null ">and monitor_azimuth = #{monitorAzimuth}</if>
+ <if test="scenePhotoAddr != null and scenePhotoAddr != ''">and scene_photo_addr = #{scenePhotoAddr}</if>
+ <if test="model != null and model != ''">and model = #{model}</if>
+ <if test="siteVulgo != null and siteVulgo != ''">and site_vulgo = #{siteVulgo}</if>
+ <if test="cameraType != null ">and camera_type = #{cameraType}</if>
+ <if test="cameraLightType != null ">and camera_light_type = #{cameraLightType}</if>
+ <if test="encodedFormat != null ">and encoded_format = #{encodedFormat}</if>
+ <if test="cameraDept != null and cameraDept != ''">and camera_dept = #{cameraDept}</if>
+ <if test="hybm != null and hybm != ''">and hybm = #{hybm}</if>
+ <if test="lxbm != null ">and lxbm = #{lxbm}</if>
+ ${params.dataScope}
+ </where>
+
+
+
+
+
+ </select>
<select id="exportTMonitorList" resultType="com.ycl.platform.domain.excel.TMonitorExp">
select m.id, m.serial_number, name, ip, camera_fun_type,
CASE
@@ -441,6 +502,12 @@
<if test="address != null">
and p.dept_id = #{address}
</if>
+ <if test="ids != null and ids.size() > 0">
+ and m.serial_number in
+ <foreach collection="ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
<if test="constructionType != null and constructionType != ''">
<choose>
<when test="constructionType == 'PHASE_ONE_TWO'">
@@ -464,6 +531,7 @@
</when>
</choose>
</if>
+
${params.dataScope}
</where>
</select>
--
Gitblit v1.8.0