From 3f10aa699267f13d8575b92a9634f2c037c1f183 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 26 八月 2024 19:42:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/handler/ImageResourceHandler.java | 40 +++ ycl-server/src/main/java/com/ycl/platform/controller/ImageResourceSecurityController.java | 23 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurityDetail.java | 61 +++- ycl-common/src/main/java/enumeration/general/AlarmCategoryEnum.java | 32 ++ ycl-common/src/main/java/enumeration/general/AlarmLevelEnum.java | 30 ++ ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityDetailMapper.java | 15 + ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java | 8 ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityDetailMapper.xml | 35 ++ ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java | 7 ycl-server/src/main/java/com/ycl/platform/service/impl/ImageResourceSecurityServiceImpl.java | 105 ++++---- ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml | 63 +++-- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurity.java | 2 ycl-common/src/main/java/enumeration/converter/AlarmCategoryConverter.java | 53 ++++ ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java | 65 +++++ ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java | 22 ++ ycl-common/src/main/java/enumeration/converter/AlarmLevelConverter.java | 50 ++++ 16 files changed, 501 insertions(+), 110 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/converter/AlarmCategoryConverter.java b/ycl-common/src/main/java/enumeration/converter/AlarmCategoryConverter.java new file mode 100644 index 0000000..ff132f9 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/converter/AlarmCategoryConverter.java @@ -0,0 +1,53 @@ +package enumeration.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import enumeration.general.AlarmCategoryEnum; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 4:00 + */ +public class AlarmCategoryConverter implements Converter<AlarmCategoryEnum> { + + @Override + public Class<?> supportJavaTypeKey() { + return Converter.super.supportJavaTypeKey(); + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return Converter.super.supportExcelTypeKey(); + } + + @Override + public AlarmCategoryEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + String value = cellData.getStringValue(); + if (AlarmCategoryEnum.SSH.getDesc().equals(value)) { + return AlarmCategoryEnum.SSH; + } + if (AlarmCategoryEnum.TELNET.getDesc().equals(value)) { + return AlarmCategoryEnum.TELNET; + } + if (AlarmCategoryEnum.RDP.getDesc().equals(value)) { + return AlarmCategoryEnum.RDP; + } + if (AlarmCategoryEnum.FTP.getDesc().equals(value)) { + return AlarmCategoryEnum.FTP; + } + if (AlarmCategoryEnum.DATABASE.getDesc().equals(value)) { + return AlarmCategoryEnum.DATABASE; + } + return null; + } + + @Override + public WriteCellData<AlarmCategoryEnum> convertToExcelData(AlarmCategoryEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + return new WriteCellData<>(value.getDesc()); + } + +} diff --git a/ycl-common/src/main/java/enumeration/converter/AlarmLevelConverter.java b/ycl-common/src/main/java/enumeration/converter/AlarmLevelConverter.java new file mode 100644 index 0000000..2784688 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/converter/AlarmLevelConverter.java @@ -0,0 +1,50 @@ +package enumeration.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import enumeration.general.AlarmLevelEnum; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 4:00 + */ +public class AlarmLevelConverter implements Converter<AlarmLevelEnum> { + + @Override + public Class<?> supportJavaTypeKey() { + return Converter.super.supportJavaTypeKey(); + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return Converter.super.supportExcelTypeKey(); + } + + @Override + public AlarmLevelEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String value = cellData.getStringValue(); + if (AlarmLevelEnum.LOW.getDesc().equals(value)) { + return AlarmLevelEnum.LOW; + } + if (AlarmLevelEnum.MIDDLE.getDesc().equals(value)) { + return AlarmLevelEnum.MIDDLE; + } + if (AlarmLevelEnum.HIGH.getDesc().equals(value)) { + return AlarmLevelEnum.HIGH; + } + if (AlarmLevelEnum.VERY_HIGH.getDesc().equals(value)) { + return AlarmLevelEnum.VERY_HIGH; + } + return null; + } + + @Override + public WriteCellData<AlarmLevelEnum> convertToExcelData(AlarmLevelEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return new WriteCellData<>(value.getDesc()); + } + +} diff --git a/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java b/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java index a972243..98cdc28 100644 --- a/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java +++ b/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java @@ -7,14 +7,12 @@ import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import enumeration.general.RuleDeductCategoryEnum; -import lombok.extern.slf4j.Slf4j; /** * 鎵e垎绫诲瀷鏋氫妇瑁呮崲鍣� * * @author gonghl */ -@Slf4j public class RuleDeductCategoryConverter implements Converter<RuleDeductCategoryEnum> { @Override @@ -28,7 +26,7 @@ } @Override - public RuleDeductCategoryEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + public RuleDeductCategoryEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (cellData.getStringValue().equals(RuleDeductCategoryEnum.DEDUCT_POINTS.getDesc())) { return RuleDeductCategoryEnum.DEDUCT_POINTS; } else if (cellData.getStringValue().equals(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY.getDesc())) { @@ -41,7 +39,7 @@ } @Override - public WriteCellData convertToExcelData(RuleDeductCategoryEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { - return new WriteCellData(value.getDesc()); + public WriteCellData<RuleDeductCategoryEnum> convertToExcelData(RuleDeductCategoryEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + return new WriteCellData<>(value.getDesc()); } } \ No newline at end of file diff --git a/ycl-common/src/main/java/enumeration/general/AlarmCategoryEnum.java b/ycl-common/src/main/java/enumeration/general/AlarmCategoryEnum.java new file mode 100644 index 0000000..ff85036 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/AlarmCategoryEnum.java @@ -0,0 +1,32 @@ +package enumeration.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 3:47 + */ +@Getter +public enum AlarmCategoryEnum { + + SSH("1", "SSH寮卞彛浠�", 2), + TELNET("2", "Telnet寮卞彛浠�", 2), + RDP("3", "RDP寮卞彛浠�", 2), + FTP("4", "FTP寮卞彛浠�", 6), + DATABASE("5", "鏁版嵁搴撳急鍙d护", 6); + + @EnumValue + private final String value; + @JsonValue + private final String desc; + private final Integer score; + + AlarmCategoryEnum(String value, String desc, Integer score) { + this.value = value; + this.desc = desc; + this.score = score; + } + +} diff --git a/ycl-common/src/main/java/enumeration/general/AlarmLevelEnum.java b/ycl-common/src/main/java/enumeration/general/AlarmLevelEnum.java new file mode 100644 index 0000000..da16f42 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/AlarmLevelEnum.java @@ -0,0 +1,30 @@ +package enumeration.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 3:47 + */ +@Getter +public enum AlarmLevelEnum { + + LOW("1", "浣庡嵄"), + MIDDLE("2", "涓嵄"), + HIGH("3", "楂樺嵄"), + VERY_HIGH("4", "瓒呭嵄"); + + @EnumValue + private final String value; + @JsonValue + private final String desc; + + AlarmLevelEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurity.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurity.java index 4c905f8..0863c47 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurity.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurity.java @@ -24,6 +24,8 @@ @Excel(name = "閮ㄩ棬id") private Long deptId; + private String deptName; + /** 骞冲彴杩愯鐜� */ @Excel(name = "骞冲彴杩愯鐜�") private BigDecimal platformOnline; diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurityDetail.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurityDetail.java index 3684114..e417a6f 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurityDetail.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ImageResourceSecurityDetail.java @@ -1,10 +1,17 @@ package com.ycl.platform.domain.entity; -import annotation.Excel; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; -import com.ycl.system.entity.BaseEntity; +import enumeration.converter.AlarmCategoryConverter; +import enumeration.converter.AlarmLevelConverter; +import enumeration.general.AlarmCategoryEnum; +import enumeration.general.AlarmLevelEnum; import lombok.Data; +import java.time.LocalDateTime; import java.util.Date; /** @@ -14,37 +21,51 @@ * @date 2024-08-24 */ @Data -public class ImageResourceSecurityDetail extends BaseEntity -{ - private static final long serialVersionUID = 1L; +@ColumnWidth(20) +public class ImageResourceSecurityDetail { - /** $column.columnComment */ + @ExcelIgnore private Long id; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + @ExcelProperty("IP鍦板潃") private String ip; - /** 閮ㄩ棬id */ - @Excel(name = "閮ㄩ棬id") + /** + * 閮ㄩ棬id + */ + @ExcelIgnore private Long deptId; - /** 鎶ヨ绫诲瀷 */ - @Excel(name = "鎶ヨ绫诲瀷") - private String alarmCategory; + @ExcelProperty("閮ㄩ棬鍚嶇О") + @TableField(exist = false) + private String deptName; - /** 鎶ヨ绾у埆 */ - @Excel(name = "鎶ヨ绾у埆") - private Long alarmLevel; + /** + * 鎶ヨ绫诲瀷 + */ + @ExcelProperty(value = "鎶ヨ绫诲瀷", converter = AlarmCategoryConverter.class) + private AlarmCategoryEnum alarmCategory; - /** 鎶ヨ娆℃暟 */ - @Excel(name = "鎶ヨ娆℃暟") + /** + * 鎶ヨ绾у埆 + */ + @ExcelProperty(value = "鎶ヨ绾у埆", converter = AlarmLevelConverter.class) + private AlarmLevelEnum alarmLevel; + + /** + * 鎶ヨ娆℃暟 + */ + @ExcelProperty("鎶ヨ娆℃暟") private Long num; - /** 鎶ヨ鏃堕棿 */ + /** + * 鎶ヨ鏃堕棿 + */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "鎶ヨ鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd") + @ExcelProperty("鎶ヨ鏃堕棿") private Date alarmTime; + @ExcelIgnore + private LocalDateTime createTime; } diff --git a/ycl-server/src/main/java/com/ycl/handler/ImageResourceHandler.java b/ycl-server/src/main/java/com/ycl/handler/ImageResourceHandler.java new file mode 100644 index 0000000..348f114 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/handler/ImageResourceHandler.java @@ -0,0 +1,40 @@ +package com.ycl.handler; + +import com.alibaba.excel.write.handler.SheetWriteHandler; +import com.alibaba.excel.write.handler.context.SheetWriteHandlerContext; +import org.apache.poi.ss.usermodel.DataValidation; +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.apache.poi.ss.usermodel.DataValidationHelper; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddressList; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 1:38 + */ +public class ImageResourceHandler implements SheetWriteHandler { + + @Override + public void afterSheetCreate(SheetWriteHandlerContext context) { + Sheet sheet = context.getWriteSheetHolder().getSheet(); + // 鍖哄煙/鍗曚綅鍚嶇О + CellRangeAddressList cellRangeAddressList3 = new CellRangeAddressList(1, 9999, 1, 1); + DataValidationHelper helper3 = context.getWriteSheetHolder().getSheet().getDataValidationHelper(); + DataValidationConstraint constraint3 = helper3.createExplicitListConstraint(new String[]{"瀵岄『鍘垮叕瀹夊眬", "澶у畨鍖哄叕瀹夊眬", "鑷祦浜曞尯鍏畨灞�", "璐′簳鍖哄叕瀹夊眬", "鑽e幙鍏畨灞�", "鑷础甯傚叕瀹夊眬", "楂樻柊鍖哄叕瀹夊眬", "娌挎哗鍖哄叕瀹夊眬"}); + DataValidation dataValidation3 = helper3.createValidation(constraint3, cellRangeAddressList3); + // 鎶ヨ绫诲瀷 + CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(1, 9999, 2, 2); + DataValidationHelper helper = context.getWriteSheetHolder().getSheet().getDataValidationHelper(); + DataValidationConstraint constraint = helper.createExplicitListConstraint(new String[]{"SSH寮卞彛浠�", "Telnet寮卞彛浠�", "RDP寮卞彛浠�", "FTP寮卞彛浠�", "鏁版嵁搴撳急鍙d护"}); + DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList); + // 鎶ヨ绾у埆 + CellRangeAddressList cellRangeAddressList2 = new CellRangeAddressList(1, 9999, 3, 3); + DataValidationHelper helper2 = context.getWriteSheetHolder().getSheet().getDataValidationHelper(); + DataValidationConstraint constraint2 = helper2.createExplicitListConstraint(new String[]{"浣庡嵄", "涓嵄", "楂樺嵄", "瓒呭嵄"}); + DataValidation dataValidation2 = helper2.createValidation(constraint2, cellRangeAddressList2); + sheet.addValidationData(dataValidation); + sheet.addValidationData(dataValidation2); + sheet.addValidationData(dataValidation3); + } + +} diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/ImageResourceSecurityController.java b/ycl-server/src/main/java/com/ycl/platform/controller/ImageResourceSecurityController.java index 8edd3dd..91d5731 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/ImageResourceSecurityController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/ImageResourceSecurityController.java @@ -6,12 +6,12 @@ import com.ycl.system.AjaxResult; import com.ycl.system.controller.BaseController; import com.ycl.system.page.TableDataInfo; -import com.ycl.utils.poi.ExcelUtil; import enumeration.BusinessType; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -60,4 +60,25 @@ { return toAjax(imageResourceSecurityService.updateImageResourceSecurity(imageResourceSecurity)); } + + /** + * 瀵煎叆妯℃澘 + */ + @PreAuthorize("@ss.hasPermi('platform:security:list')") + @Log(title = "瀵煎叆妯℃澘", businessType = BusinessType.IMPORT) + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + imageResourceSecurityService.importTemplate(response); + } + + /** + * 瀵煎叆鏁版嵁 + */ + @PreAuthorize("@ss.hasPermi('platform:security:list')") + @Log(title = "瀵煎叆", businessType = BusinessType.IMPORT) + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file) { + return toAjax(imageResourceSecurityService.importData(file)); + } + } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityDetailMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityDetailMapper.java index 45e1889..e35795b 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityDetailMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityDetailMapper.java @@ -1,7 +1,9 @@ package com.ycl.platform.mapper; import com.ycl.platform.domain.entity.ImageResourceSecurityDetail; +import org.apache.ibatis.annotations.Select; +import java.util.ArrayList; import java.util.List; /** @@ -59,4 +61,17 @@ * @return 缁撴灉 */ public int deleteImageResourceSecurityDetailByIds(Long[] ids); + + /** + * 鎵归噺鎻掑叆 + * @param list 鏁版嵁 + */ + void saveBatch(ArrayList<ImageResourceSecurityDetail> list); + + /** + * 瀹氭椂浠诲姟鑾峰彇璇︽儏璁$畻 + * @return 鏁版嵁 + */ + @Select("select dept_id, alarm_category, alarm_level, num from t_image_resource_security_detail") + List<ImageResourceSecurityDetail> getList(); } diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java index 4958662..3b433f9 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ImageResourceSecurityMapper.java @@ -2,6 +2,7 @@ import com.ycl.platform.domain.entity.ImageResourceSecurity; +import java.util.ArrayList; import java.util.List; /** @@ -59,4 +60,10 @@ * @return 缁撴灉 */ public int deleteImageResourceSecurityByIds(Long[] ids); + + /** + * 鎵归噺淇濆瓨 + * @param imageResourceSecurities 鏁版嵁闆嗗悎 + */ + void saveBatch(ArrayList<ImageResourceSecurity> imageResourceSecurities); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java b/ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java index 090586b..4303294 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/IImageResourceSecurityService.java @@ -1,7 +1,10 @@ package com.ycl.platform.service; import com.ycl.platform.domain.entity.ImageResourceSecurity; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; +import java.util.ArrayList; import java.util.List; /** @@ -59,4 +62,23 @@ * @return 缁撴灉 */ public int deleteImageResourceSecurityById(Long id); + + /** + * 瀵煎叆妯℃澘 + * @param response 鏂囦欢 + */ + void importTemplate(HttpServletResponse response); + + /** + * 瀵煎叆鏁版嵁 + * @param file 鏁版嵁 + * @return 缁撴灉 + */ + Boolean importData(MultipartFile file); + + /** + * 鎵归噺淇濆瓨 + * @param imageResourceSecurities 鏁版嵁闆嗗悎 + */ + void saveBatch(ArrayList<ImageResourceSecurity> imageResourceSecurities); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ImageResourceSecurityServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ImageResourceSecurityServiceImpl.java index d2fc697..68853c4 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ImageResourceSecurityServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ImageResourceSecurityServiceImpl.java @@ -1,12 +1,24 @@ package com.ycl.platform.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.read.listener.PageReadListener; +import com.ycl.handler.ImageResourceHandler; import com.ycl.platform.domain.entity.ImageResourceSecurity; +import com.ycl.platform.domain.entity.ImageResourceSecurityDetail; +import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper; import com.ycl.platform.mapper.ImageResourceSecurityMapper; import com.ycl.platform.service.IImageResourceSecurityService; +import com.ycl.system.entity.SysDept; +import com.ycl.system.service.ISysDeptService; import com.ycl.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -16,81 +28,68 @@ * @date 2024-08-24 */ @Service -public class ImageResourceSecurityServiceImpl implements IImageResourceSecurityService -{ - @Autowired - private ImageResourceSecurityMapper imageResourceSecurityMapper; +@RequiredArgsConstructor +public class ImageResourceSecurityServiceImpl implements IImageResourceSecurityService { - /** - * 鏌ヨplatform - * - * @param id platform涓婚敭 - * @return platform - */ + private final ImageResourceSecurityMapper imageResourceSecurityMapper; + private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper; + private final ISysDeptService deptService; + @Override - public ImageResourceSecurity selectImageResourceSecurityById(Long id) - { + public ImageResourceSecurity selectImageResourceSecurityById(Long id) { return imageResourceSecurityMapper.selectImageResourceSecurityById(id); } - /** - * 鏌ヨplatform鍒楄〃 - * - * @param imageResourceSecurity platform - * @return platform - */ @Override - public List<ImageResourceSecurity> selectImageResourceSecurityList(ImageResourceSecurity imageResourceSecurity) - { + public List<ImageResourceSecurity> selectImageResourceSecurityList(ImageResourceSecurity imageResourceSecurity) { return imageResourceSecurityMapper.selectImageResourceSecurityList(imageResourceSecurity); } - /** - * 鏂板platform - * - * @param imageResourceSecurity platform - * @return 缁撴灉 - */ @Override - public int insertImageResourceSecurity(ImageResourceSecurity imageResourceSecurity) - { + public int insertImageResourceSecurity(ImageResourceSecurity imageResourceSecurity) { imageResourceSecurity.setCreateTime(DateUtils.getNowDate()); return imageResourceSecurityMapper.insertImageResourceSecurity(imageResourceSecurity); } - /** - * 淇敼platform - * - * @param imageResourceSecurity platform - * @return 缁撴灉 - */ @Override - public int updateImageResourceSecurity(ImageResourceSecurity imageResourceSecurity) - { + public int updateImageResourceSecurity(ImageResourceSecurity imageResourceSecurity) { return imageResourceSecurityMapper.updateImageResourceSecurity(imageResourceSecurity); } - /** - * 鎵归噺鍒犻櫎platform - * - * @param ids 闇�瑕佸垹闄ょ殑platform涓婚敭 - * @return 缁撴灉 - */ @Override - public int deleteImageResourceSecurityByIds(Long[] ids) - { + public int deleteImageResourceSecurityByIds(Long[] ids) { return imageResourceSecurityMapper.deleteImageResourceSecurityByIds(ids); } - /** - * 鍒犻櫎platform淇℃伅 - * - * @param id platform涓婚敭 - * @return 缁撴灉 - */ @Override - public int deleteImageResourceSecurityById(Long id) - { + public int deleteImageResourceSecurityById(Long id) { return imageResourceSecurityMapper.deleteImageResourceSecurityById(id); } + + @Override + @SneakyThrows + public void importTemplate(HttpServletResponse response) { + EasyExcel.write(response.getOutputStream(), ImageResourceSecurityDetail.class).sheet("妯℃澘").registerWriteHandler(new ImageResourceHandler()).doWrite(Collections.emptyList()); + } + + @Override + @SneakyThrows + public Boolean importData(MultipartFile file) { + ArrayList<ImageResourceSecurityDetail> list = new ArrayList<>(); + List<SysDept> sysDept = deptService.selectDeptList(new SysDept()); + EasyExcel.read(file.getInputStream(), ImageResourceSecurityDetail.class, new PageReadListener<ImageResourceSecurityDetail>(dataList -> { + for (ImageResourceSecurityDetail detail : dataList) { + SysDept sysDept1 = sysDept.stream().filter(dept -> dept.getDeptName().equals(detail.getDeptName())).findFirst().orElseThrow(() -> new RuntimeException(detail.getDeptName() + "涓嶅瓨鍦�")); + detail.setDeptId(sysDept1.getDeptId()); + list.add(detail); + } + })).sheet().doRead(); + imageResourceSecurityDetailMapper.saveBatch(list); + return true; + } + + @Override + public void saveBatch(ArrayList<ImageResourceSecurity> imageResourceSecurities) { + imageResourceSecurityMapper.saveBatch(imageResourceSecurities); + } } diff --git a/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java b/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java new file mode 100644 index 0000000..514a042 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java @@ -0,0 +1,65 @@ +package com.ycl.task; + +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.ycl.platform.base.CheckIndex; +import com.ycl.platform.domain.entity.CheckIndexVideo; +import com.ycl.platform.domain.entity.ImageResourceSecurity; +import com.ycl.platform.domain.entity.ImageResourceSecurityDetail; +import com.ycl.platform.mapper.CheckIndexVideoMapper; +import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper; +import com.ycl.platform.service.IImageResourceSecurityService; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * @author gonghl + * @since 2024/8/26 涓嬪崍 4:43 + */ +@Component("ImageResourceSecurityTask") +@RequiredArgsConstructor +public class ImageResourceSecurityTask { + + private final IImageResourceSecurityService imageResourceSecurityService; + private final CheckIndexVideoMapper checkIndexVideoMapper; + private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper; + + @PostConstruct + public void calc() { + ArrayList<ImageResourceSecurity> imageResourceSecurities = new ArrayList<>(); + List<CheckIndexVideo> list = new LambdaQueryChainWrapper<>(checkIndexVideoMapper) + .select(CheckIndexVideo::getPlatformOnline, CheckIndexVideo::getMonitorQualification, CheckIndexVideo::getDeptId) + // .eq(CheckIndex::getCreateTime, LocalDate.now().minusDays(1)) + .orderByDesc(CheckIndex::getCreateTime) + .last("limit 7") + .list(); + List<ImageResourceSecurityDetail> detail = imageResourceSecurityDetailMapper.getList(); + + // 姣忎釜閮ㄩ棬寰幆涓�娆� + list.forEach(checkIndexVideo -> { + ImageResourceSecurity imageResourceSecurity = new ImageResourceSecurity(); + imageResourceSecurity.setDeptId(checkIndexVideo.getDeptId()); + // 鐩存帴鍙栨寚鏍� + imageResourceSecurity.setPlatformOnline(checkIndexVideo.getPlatformOnline()); + imageResourceSecurity.setPropertyAccuracy(checkIndexVideo.getMonitorQualification()); + // 鑾峰彇褰撳墠閮ㄩ棬鐨刣etail杩涜璁$畻 + List<ImageResourceSecurityDetail> detailList = detail.stream().filter(imageResourceSecurityDetail -> Objects.equals(imageResourceSecurityDetail.getDeptId(), checkIndexVideo.getDeptId())).toList(); + // 寰幆detail璁$畻 + detailList.forEach(imageResourceSecurityDetail -> { + int score = 100; + score -= imageResourceSecurityDetail.getAlarmCategory().getScore(); + imageResourceSecurity.setWeakPassword(BigDecimal.valueOf(score)); + }); + // TODO 宸竴涓� + imageResourceSecurities.add(imageResourceSecurity); + }); + imageResourceSecurityService.saveBatch(imageResourceSecurities); + + } + +} diff --git a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityDetailMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityDetailMapper.xml index 7cf6eed..56f3aef 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityDetailMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityDetailMapper.xml @@ -16,7 +16,7 @@ </resultMap> <sql id="selectImageResourceSecurityDetailVo"> - select id, + SELECT id, ip, dept_id, alarm_category, @@ -24,14 +24,24 @@ num, alarm_time, create_time - from t_image_resource_security_detail + FROM t_image_resource_security_detail </sql> - <select id="selectImageResourceSecurityDetailList" resultMap="ImageResourceSecurityDetailResult"> - <include refid="selectImageResourceSecurityDetailVo"/> + <select id="selectImageResourceSecurityDetailList" resultType="com.ycl.platform.domain.entity.ImageResourceSecurityDetail"> + select id, + ip, + a.dept_id, + dept_name, + alarm_category, + alarm_level, + num, + alarm_time, + a.create_time + from t_image_resource_security_detail a + LEFT JOIN sys_dept b ON a.dept_id = b.dept_id AND b.del_flag = 0 <where> <if test="ip != null and ip != ''">and ip = #{ip}</if> - <if test="deptId != null ">and dept_id = #{deptId}</if> + <if test="deptId != null ">and a.dept_id = #{deptId}</if> <if test="alarmCategory != null and alarmCategory != ''">and alarm_category = #{alarmCategory}</if> <if test="alarmLevel != null ">and alarm_level = #{alarmLevel}</if> <if test="num != null ">and num = #{num}</if> @@ -40,7 +50,7 @@ </select> <select id="selectImageResourceSecurityDetailById"> - resultMap="ImageResourceSecurityDetailResult"> + resultMap="ImageResourceSecurityDetailResult"> <include refid="selectImageResourceSecurityDetailVo"/> where id = #{id} </select> @@ -67,6 +77,13 @@ </trim> </insert> + <insert id="saveBatch"> + INSERT INTO t_image_resource_security_detail (ip, dept_id, alarm_category, alarm_level, num, alarm_time, create_time) VALUES + <foreach collection="list" item="item" index="index" separator=","> + (#{item.ip}, #{item.deptId}, #{item.alarmCategory}, #{item.alarmLevel}, #{item.num}, #{item.alarmTime}, NOW()) + </foreach> + </insert> + <update id="updateImageResourceSecurityDetail"> update t_image_resource_security_detail <trim prefix="SET" suffixOverrides=","> @@ -82,9 +99,9 @@ </update> <delete id="deleteImageResourceSecurityDetailById"> - delete - from t_image_resource_security_detail - where id = #{id} + DELETE + FROM t_image_resource_security_detail + WHERE id = #{id} </delete> <delete id="deleteImageResourceSecurityDetailByIds"> diff --git a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml index 74b5a0e..64ce52b 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/ImageResourceSecurityMapper.xml @@ -1,34 +1,44 @@ <?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"> + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ycl.platform.mapper.ImageResourceSecurityMapper"> <resultMap type="com.ycl.platform.domain.entity.ImageResourceSecurity" id="ImageResourceSecurityResult"> - <result property="id" column="id" /> - <result property="deptId" column="dept_id" /> - <result property="platformOnline" column="platform_online" /> - <result property="propertyAccuracy" column="property_accuracy" /> - <result property="weakPassword" column="weak_password" /> - <result property="riskProperty" column="risk_property" /> - <result property="boundaryIntegrity" column="boundary_integrity" /> - <result property="createTime" column="create_time" /> + <result property="id" column="id"/> + <result property="deptId" column="dept_id"/> + <result property="platformOnline" column="platform_online"/> + <result property="propertyAccuracy" column="property_accuracy"/> + <result property="weakPassword" column="weak_password"/> + <result property="riskProperty" column="risk_property"/> + <result property="boundaryIntegrity" column="boundary_integrity"/> + <result property="createTime" column="create_time"/> </resultMap> <sql id="selectImageResourceSecurityVo"> - select id, dept_id, platform_online, property_accuracy, weak_password, risk_property, boundary_integrity, create_time from t_image_resource_security + SELECT id, + dept_id, + platform_online, + property_accuracy, + weak_password, + risk_property, + boundary_integrity, + create_time + FROM t_image_resource_security </sql> - <select id="selectImageResourceSecurityList" resultMap="ImageResourceSecurityResult"> - <include refid="selectImageResourceSecurityVo"/> + <select id="selectImageResourceSecurityList" resultType="com.ycl.platform.domain.entity.ImageResourceSecurity"> + select id, a.dept_id, dept_name, platform_online, property_accuracy, weak_password, risk_property, boundary_integrity from t_image_resource_security a + LEFT JOIN sys_dept b ON a.dept_id = b.dept_id AND b.del_flag = 0 <where> - <if test="deptId != null "> and dept_id = #{deptId}</if> - <if test="platformOnline != null "> and platform_online = #{platformOnline}</if> - <if test="propertyAccuracy != null "> and property_accuracy = #{propertyAccuracy}</if> - <if test="weakPassword != null "> and weak_password = #{weakPassword}</if> - <if test="riskProperty != null "> and risk_property = #{riskProperty}</if> - <if test="boundaryIntegrity != null "> and boundary_integrity = #{boundaryIntegrity}</if> + <if test="platformOnline != null ">and platform_online = #{platformOnline}</if> + <if test="propertyAccuracy != null ">and property_accuracy = #{propertyAccuracy}</if> + <if test="weakPassword != null ">and weak_password = #{weakPassword}</if> + <if test="riskProperty != null ">and risk_property = #{riskProperty}</if> + <if test="boundaryIntegrity != null ">and boundary_integrity = #{boundaryIntegrity}</if> </where> + ORDER BY a.create_time DESC + limit 7 </select> <select id="selectImageResourceSecurityById" resultMap="ImageResourceSecurityResult"> @@ -46,7 +56,7 @@ <if test="riskProperty != null">risk_property,</if> <if test="boundaryIntegrity != null">boundary_integrity,</if> <if test="createTime != null">create_time,</if> - </trim> + </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="deptId != null">#{deptId},</if> <if test="platformOnline != null">#{platformOnline},</if> @@ -55,7 +65,14 @@ <if test="riskProperty != null">#{riskProperty},</if> <if test="boundaryIntegrity != null">#{boundaryIntegrity},</if> <if test="createTime != null">#{createTime},</if> - </trim> + </trim> + </insert> + + <insert id="saveBatch"> + insert into t_image_resource_security (dept_id, platform_online, property_accuracy, weak_password, risk_property, boundary_integrity, create_time) VALUES + <foreach collection="list" item="item" separator=","> + (#{item.deptId}, #{item.platformOnline}, #{item.propertyAccuracy}, #{item.weakPassword}, #{item.riskProperty}, #{item.boundaryIntegrity}, NOW()) + </foreach> </insert> <update id="updateImageResourceSecurity"> @@ -73,7 +90,9 @@ </update> <delete id="deleteImageResourceSecurityById"> - delete from t_image_resource_security where id = #{id} + DELETE + FROM t_image_resource_security + WHERE id = #{id} </delete> <delete id="deleteImageResourceSecurityByIds"> -- Gitblit v1.8.0