From b5df1cee65f3e9dcf554efcd3f1642a8c79d1e76 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 30 九月 2024 02:12:24 +0800 Subject: [PATCH] 点位监测更换对象+存入mongo+提取utils --- ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java | 244 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 190 insertions(+), 54 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java index a379aa6..3210871 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java @@ -1,21 +1,28 @@ package com.ycl.platform.service.impl; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; 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.service.impl.ServiceImpl; import com.ycl.dataListener.CurrencyDataListener; -import com.ycl.platform.base.BaseSelect; +import com.ycl.platform.base.AbsVo; +import com.ycl.platform.domain.entity.ReportAuditingRecord; import com.ycl.platform.domain.entity.YwPeople; import com.ycl.platform.domain.entity.YwPoint; -import com.ycl.platform.domain.entity.YwUnit; +import com.ycl.platform.domain.excel.PointExport; import com.ycl.platform.domain.form.BatchEditPointForm; import com.ycl.platform.domain.form.YwPointForm; import com.ycl.platform.domain.query.YwPointQuery; +import com.ycl.platform.domain.result.BaseResult; +import com.ycl.platform.domain.vo.CheckTagVO; +import com.ycl.platform.domain.vo.DynamicColumnVO; +import com.ycl.platform.domain.vo.ReportAuditingRecordVO; import com.ycl.platform.domain.vo.YwPointVO; -import com.ycl.platform.domain.excel.PointExport; -import com.ycl.platform.domain.excel.PointSelectHandler; +import com.ycl.platform.mapper.DynamicColumnMapper; +import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.platform.mapper.YwPeopleMapper; import com.ycl.platform.mapper.YwPointMapper; import com.ycl.platform.service.YwPointService; @@ -23,6 +30,7 @@ import com.ycl.system.Result; import com.ycl.system.mapper.SysDeptMapper; import com.ycl.system.page.PageUtil; +import com.ycl.thread.PointImportCallable; import com.ycl.utils.DateUtils; import com.ycl.utils.SecurityUtils; import jakarta.servlet.http.HttpServletResponse; @@ -36,9 +44,10 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.concurrent.*; import java.util.function.Consumer; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -52,18 +61,22 @@ public class YwPointServiceImpl extends ServiceImpl<YwPointMapper, YwPoint> implements YwPointService { private final SysDeptMapper sysDeptMapper; - private final YwUnitService unitService; - private final YwPeopleMapper ywPeopleMapper; + private final TMonitorMapper monitorMapper; + private final DynamicColumnMapper dynamicColumnMapper; /** * 娣诲姞 + * * @param form * @return */ @Override public Result add(YwPointForm form) { YwPoint entity = YwPointForm.getEntityByForm(form, null); - if(baseMapper.insert(entity) > 0) { + Date now = new Date(); + entity.setCreateTime(now); + entity.setUpdateTime(now); + if (baseMapper.insert(entity) > 0) { return Result.ok("娣诲姞鎴愬姛"); } return Result.error("娣诲姞澶辫触"); @@ -76,6 +89,9 @@ .forEach(form -> { YwPoint entity = YwPointForm.getEntityByForm(form, null); entity.setStatus("鏈紑濮�"); + Date now = new Date(); + entity.setCreateTime(now); + entity.setUpdateTime(now); baseMapper.insert(entity); }); return Result.ok("娣诲姞鎴愬姛"); @@ -88,6 +104,7 @@ new LambdaUpdateChainWrapper<>(baseMapper) .in(YwPoint::getId, form.getIds()) .set(YwPoint::getUnitId, form.getUnitId()) + .set(YwPoint::getUpdateTime, new Date()) .update(); } else { new LambdaUpdateChainWrapper<>(baseMapper) @@ -95,6 +112,7 @@ .set(YwPoint::getUnitId, form.getUnitId()) .set(YwPoint::getStartTime, null) .set(YwPoint::getEndTime, null) + .set(YwPoint::getUpdateTime, new Date()) .update(); } return Result.ok("淇敼鎴愬姛"); @@ -102,6 +120,7 @@ /** * 淇敼 + * * @param form * @return */ @@ -110,19 +129,21 @@ YwPoint entity = baseMapper.selectById(form.getId()); Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); - entity.setPointTag(form.getPointTag().stream().collect(Collectors.joining(","))); + Date now = new Date(); + entity.setUpdateTime(now); baseMapper.updateById(entity); return Result.ok("淇敼鎴愬姛"); } /** * 鎵归噺鍒犻櫎 + * * @param ids * @return */ @Override public Result remove(List<String> ids) { - if(baseMapper.deleteBatchIds(ids) > 0) { + if (baseMapper.deleteBatchIds(ids) > 0) { return Result.ok("鍒犻櫎鎴愬姛"); } return Result.error("鍒犻櫎澶辫触"); @@ -130,12 +151,13 @@ /** * id鍒犻櫎 + * * @param id * @return */ @Override public Result removeById(String id) { - if(baseMapper.deleteById(id) > 0) { + if (baseMapper.deleteById(id) > 0) { return Result.ok("鍒犻櫎鎴愬姛"); } return Result.error("鍒犻櫎澶辫触"); @@ -143,6 +165,7 @@ /** * 鍒嗛〉鏌ヨ + * * @param query * @return */ @@ -150,16 +173,12 @@ public Result page(YwPointQuery query) { IPage<YwPointVO> page = PageUtil.getPage(query, YwPointVO.class); baseMapper.page(page, query); - page.getRecords().stream().forEach(point -> { - if (StringUtils.hasText(point.getPointTagString())) { - point.setPointTags(point.getPointTagString().split(",")); - } - }); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 鏍规嵁id鏌ユ壘 + * * @param id * @return */ @@ -168,9 +187,6 @@ YwPoint entity = baseMapper.selectById(id); Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); YwPointVO vo = YwPointVO.getVoByEntity(entity, null); - if (StringUtils.hasText(entity.getPointTag())) { - vo.setPointTags(entity.getPointTag().split(",")); - } if (Objects.nonNull(entity.getDeptId())) { vo.setDeptIds(sysDeptMapper.selectParents(entity.getDeptId())); } @@ -179,6 +195,7 @@ /** * 鍒楄〃 + * * @return */ @Override @@ -194,25 +211,13 @@ @Override public Result select(String keyword) { - Long userId = SecurityUtils.getUserId(); - // 鑾峰彇褰撳墠杩愮淮浜哄憳鐨勮繍缁村崟浣� - YwPeople people = new LambdaQueryChainWrapper<>(ywPeopleMapper) - .eq(YwPeople::getUserId, userId) - .one(); - Integer unitId = null; - if (Objects.nonNull(people)) { - unitId = people.getBelongUnit(); - } - - List<YwPoint> list = new LambdaQueryChainWrapper<>(baseMapper) - .eq(YwPoint::getUnitId, unitId) - .like(YwPoint::getPointName, keyword) - .list(); - List<BaseSelect> data = list.stream().map(item -> { - BaseSelect baseSelect = new BaseSelect(); - baseSelect.setId(item.getId()); - baseSelect.setValue(item.getPointName()); - return baseSelect; + Integer unitId = SecurityUtils.getUnitId(); + List<YwPoint> list = baseMapper.select(keyword, unitId); + List data = list.stream().map(item -> { + Map map = new HashMap<String, Object>(); + map.put("id", item.getSerialNumber()); + map.put("value", item.getPointName()); + return map; }).collect(Collectors.toList()); return Result.ok().data(data); } @@ -222,6 +227,7 @@ return new LambdaUpdateChainWrapper<>(baseMapper) .in(YwPoint::getSerialNumber, serialNumberList) .set(YwPoint::getRecovery, recovery) + .set(YwPoint::getUpdateTime, new Date()) .set(recovery == 0, YwPoint::getRecoveryTime, DateUtils.getNowDate()) .update(); } @@ -235,19 +241,87 @@ public void export(YwPointQuery query, HttpServletResponse response) throws IOException { // 瀵煎嚭鏁版嵁 List<PointExport> exportData = baseMapper.export(query); + //鑾峰彇鍔ㄦ�佸垪鏁版嵁 + List<String> dynamicsHeaders = dynamicColumnMapper.getHeader("t_yw_point"); + List<DynamicColumnVO> dynamics = dynamicColumnMapper.getData(); + Map<Integer, List<DynamicColumnVO>> dynamicMap = new HashMap<>(); + if (!CollectionUtils.isEmpty(dynamics)) { + dynamicMap = dynamics.stream().filter(vo ->vo.getId()!=null).collect(Collectors.groupingBy(AbsVo::getId)); + } + //瀹氫箟琛ㄥご鍒楄〃 + LinkedHashSet<String> headers = new LinkedHashSet<>(); + headers.add("鐐逛綅鍚嶇О(鍙慨鏀�)"); + headers.add("鍥芥爣鐮�(涓嶅彲淇敼)"); + headers.add("鐐逛綅IP(鍙慨鏀�)"); + headers.add("鏄惁鐪佸巺鏍囩(鍙慨鏀�)"); + headers.add("鏄惁閲嶇偣鎸囨尌鍥惧儚(鍙慨鏀�)"); + headers.add("鏄惁閮ㄧ骇鏍囩(鍙慨鏀�)"); + List<String> headersList = new LinkedList<>(); + if (!CollectionUtils.isEmpty(dynamicsHeaders)) { + //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷� + headersList.addAll(dynamicsHeaders); + headers.addAll(headersList); + } + // 瀹氫箟鏁版嵁 + List<List<Object>> data = new ArrayList<>(); + for (PointExport export : exportData) { + List<Object> list = new ArrayList<>(); + //闇�瑕佷繚璇侀『搴忎竴鑷� + list.add(export.getPointName()); + list.add(export.getSerialNumber()); + list.add(export.getPointIP()); + list.add(export.getProvinceTagString()); + list.add(export.getImportantCommandImageTagString()); + list.add(export.getDeptTag()); + for (String header : headersList) { + //鍒涘缓涓�涓彉閲忚褰曟壘娌℃壘鍒拌繖涓猦eader + boolean flag = false; + List<DynamicColumnVO> columnVOS = dynamicMap.get(export.getId()); + if (!CollectionUtils.isEmpty(columnVOS)) { + for (DynamicColumnVO columnVO : columnVOS) { + if (header.equals(columnVO.getLabelValue())) { + list.add(columnVO.getColumnValue()); + flag = true; + } + } + } + //娌℃壘鍒扮敤绌轰覆鍗犱綅 + if (!flag) list.add(""); + } + data.add(list); + } - EasyExcel.write(response.getOutputStream(), PointExport.class) - .sheet("鐐逛綅鏇存崲杩愮淮鍗曚綅") - .doWrite(exportData); + List<List<String>> headList = new ArrayList<>(); + for (String header : headers) { + headList.add(Collections.singletonList(header)); + } + + EasyExcel.write(response.getOutputStream()) + .head(headList) // 璁剧疆琛ㄥご + .sheet("鐐逛綅鏇存崲杩愮淮鍗曚綅") // 璁剧疆sheet鍚嶇О + .doWrite(data); // 鍐欏叆鏁版嵁 + } + + + @Override + public Result importData(MultipartFile file, Integer unitId, Date startTime, Date endTime, Boolean + needUpdateUnit) throws IOException { + Consumer<List<PointExport>> consumer = (dataList) -> { + try { + this.updatePoint(dataList, unitId, startTime, endTime, needUpdateUnit); + } catch (ExecutionException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }; + EasyExcel.read(file.getInputStream(), PointExport.class, new CurrencyDataListener(consumer)).headRowNumber(1).doReadAll(); + return Result.ok(); } @Override - public Result importData(MultipartFile file, Integer unitId) throws IOException { - Consumer<List<PointExport>> consumer = (dataList) -> { - this.updatePoint(dataList, unitId); - }; - EasyExcel.read(file.getInputStream(), PointExport.class , new CurrencyDataListener(consumer)).headRowNumber(1).doReadAll(); - return Result.ok(); + public ReportAuditingRecordVO getReportResult(String serialNumber, String reportType) { + return baseMapper.getReportResult(serialNumber, reportType); } /** @@ -256,15 +330,77 @@ * @param dataList * @param unitId */ - private void updatePoint(List<PointExport> dataList, Integer unitId) { + @Transactional(rollbackFor = Exception.class) + public void updatePoint(List<PointExport> dataList, Integer unitId, Date startTime, Date endTime, Boolean + needUpdateUnit) throws ExecutionException, InterruptedException { if (CollectionUtils.isEmpty(dataList)) { throw new RuntimeException("瀵煎叆鏁版嵁涓嶈兘涓虹┖"); } - List<String> pointList = dataList.stream().map(PointExport::getSerialNumber).collect(Collectors.toList()); - new LambdaUpdateChainWrapper<>(baseMapper) - .in(YwPoint::getSerialNumber, pointList) - .set(YwPoint::getUnitId, unitId) - .update(); + List<YwPoint> pointList = dataList.stream().map(item -> { + YwPoint point = new YwPoint(); + point.setImportantCommandImageTag("鏄�".equals(item.getImportantCommandImageTagString())); + point.setProvinceTag("鏄�".equals(item.getProvinceTagString())); + point.setDeptTag("鏄�".equals(item.getDeptTag())); + if (needUpdateUnit) { + if (Objects.nonNull(unitId)) { + point.setUnitId(Long.valueOf(unitId)); + } + point.setStartTime(startTime); + point.setEndTime(endTime); + } else { + point.setUnitId(null); + point.setStartTime(null); + point.setEndTime(null); + } + + point.setPointName(item.getPointName()); + point.setSerialNumber(item.getSerialNumber()); + return point; + }).collect(Collectors.toList()); + this.waitAllFinishAndGetResult(pointList); + } + + public void waitAllFinishAndGetResult(List<YwPoint> dataList) throws + InterruptedException, ExecutionException { + int start = 0; + Date startTime = new Date(); + while (true) { + if (dataList.size() < start + 800) { + List<YwPoint> list = dataList.subList(start, dataList.size() - 1); + this.baseMapper.updatePoint(list); + break; + } else { + List<YwPoint> list = dataList.subList(start, start + 800); + this.baseMapper.updatePoint(list); + start += 800; + } + } + Date endTime = new Date(); + log.error("鎬诲叡鑰楁椂锛�" + (endTime.getTime() - startTime.getTime())); + } + + @Override + public <T extends BaseResult> void setDeviceTagByGB(List<T> dataList) { + List<String> gbList = dataList.stream().map(BaseResult::getNo).collect(Collectors.toList()); + List<CheckTagVO> pointList = baseMapper.getTagsByGB(gbList); + Map<String, CheckTagVO> pointMap = pointList.stream().collect(Collectors.toMap(CheckTagVO::getNo, item -> item)); + for (BaseResult data : dataList) { + CheckTagVO tag = pointMap.get(data.getNo()); + if (Objects.nonNull(tag)) { + BeanUtils.copyProperties(tag, data); + } + } + } + + @Override + public <T extends BaseResult> void setNew(List<T> dataList) { + List<String> gbList = dataList.stream().map(BaseResult::getNo).collect(Collectors.toList()); + Map<String, BaseResult> pointMap = dataList.stream().collect(Collectors.toMap(BaseResult::getNo, item -> item)); + List<String> dbGBList = monitorMapper.getGBbyGB(gbList); + for (String s : gbList) { + BaseResult baseResult = pointMap.get(s); + baseResult.setNewDevice(!dbGBList.contains(s)); + } } } -- Gitblit v1.8.0