cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.data.Pictures; import com.ruoyi.common.utils.DateImageUtil; import com.ruoyi.framework.exception.ErrorException; @@ -21,6 +22,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; @@ -86,10 +88,24 @@ detailedDto.setIndex(index); index++; } // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/risk-factor-identification-risk.docx"); String finalExamineUrl = examineUrl; String finalRatifyUrl = ratifyUrl; File file = new File(imgUrl + File.separator + writeUrl); File examine = new File(imgUrl + File.separator + finalExamineUrl); File ratify = new File(imgUrl + File.separator + finalRatifyUrl); if(!file.exists()){ throw new ErrorException("æ¾ä¸å°æ£éªäººçç¾å"); } if(!examine.exists()){ throw new ErrorException("æ¾ä¸å°å¤æ ¸äººçç¾å"); } if(!ratify.exists()){ throw new ErrorException("æ¾ä¸å°æ¹å人çç¾å"); } // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/risk-factor-identification-risk.docx"); Configure configure = Configure.builder() .bind("trainingDetailedList", new HackLoopTableRenderPolicy()) .build(); cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
@@ -27,6 +27,7 @@ import com.ruoyi.personnel.service.PersonTrainingDetailedService; import com.ruoyi.personnel.service.PersonTrainingRecordService; import com.ruoyi.system.mapper.UserMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -214,7 +215,7 @@ @Override public void outOfFocusPreservation(PersonTrainingRecord personTrainingRecord) { int userId = SecurityUtils.getUserId().intValue(); int userId = Integer.parseInt(SecurityUtils.getUserId().toString()); // å¹è®éè¿äºï¼å¹è®è¯¾æ¶è®¡å ¥å°å½å¤©çè¾ å©å·¥æ¶ (è¾ å©å·¥æ¶ ä»¥å æ ¸åå·¥æ¶é½æ·»å ) baseMapper.updateById(personTrainingRecord); PersonTrainingDetailed personTrainingDetailed = personTrainingDetailedMapper.selectById(personTrainingRecord.getCourseId()); @@ -224,71 +225,94 @@ if(StringUtils.isEmpty(trainingDateTwo)) { throw new ErrorException("没æè®¾ç½®å¹è®æ¥ææ æ³æ·»å è¾ å©å·¥æ¶"); } AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber("401"); // æ¯å¦ä»¥åæ·»å è¿äº List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectList(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>() .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId()) .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent()) .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId) .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject,auxiliaryWorkingHoursDay.getAuxiliaryProject()) .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00")); // å¦æææ°æ® åæ ¼å°±ä¸åå¤ç ä¸åæ ¼å°±å é¤ if(CollectionUtils.isNotEmpty(auxiliaryWorkingHoursDays)) { if(personTrainingRecord.getExaminationResults().equals("ä¸åæ ¼")) { auxiliaryWorkingHoursDayMapper.delete(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>() .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId()) .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent()) .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId) .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, auxiliaryWorkingHoursDay.getAuxiliaryProject()) .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00")); } } // å¦ææ¯æ£æµåç人就ä¸ç¨å User user = userMapper.selectById(personTrainingRecord.getUserId()); if(user.getDepartLimsId().contains("22")) { return; } // ä¸è课45åé å·¥æ¶60åé BigDecimal minute = BigDecimal.valueOf(classHour).multiply(new BigDecimal("45")); // å ·ä½åé BigDecimal divide = minute.divide(new BigDecimal("60"),4, RoundingMode.HALF_UP); // å·¥æ¶ // æ·»å æ°æ® AuxiliaryWorkingHoursDay a = new AuxiliaryWorkingHoursDay(); a.setNameUser(personTrainingRecord.getUserId()); // å§åid // 项ç®åç§° a.setRemarks(personTrainingDetailed.getTrainingContent()); // è¾ å©è¯´æ a.setNumber("401"); // ç¼å· a.setAuxiliaryProject(auxiliaryWorkingHoursDay.getAuxiliaryProject()); // è¾ å©é¡¹ç®åç§° a.setNonproductiveTime(Double.parseDouble(divide.toString())); // è¾ å©å·¥æ¶ a.setApprovedWorkingHour(auxiliaryWorkingHoursDay.getApprovedWorkingHour()); // æ ¸åå·¥æ¶ a.setAmount(Double.parseDouble(divide.toString())); // æ°é String year = trainingDateTwo.split("-")[0]; a.setYear(year); // å¹´ a.setCreateTime(LocalDateTime.now()); a.setUpdateTime(LocalDateTime.now()); a.setCreateUser(userId); // å建人id a.setUpdateUser(userId); // ä¿®æ¹äººid a.setState("å·²æäº¤"); // ç¶æ a.setDateTime(trainingDateTwo + " 00:00:00"); // æ¥æ // è·åå½åæ¥æ LocalDate today = LocalDate.now(); // è·åå½åæ¥æç卿¬¡ï¼ä¸å¹´ä¸ç第å å¨ï¼ TemporalField weekOfYear = WeekFields.of(Locale.getDefault()).weekOfYear(); int weekNumber = today.get(weekOfYear); // è·åå½åæ¥æçææï¼ä¸å¨ä¸ç第å å¤©ï¼ DayOfWeek dayOfWeek = today.getDayOfWeek(); int dayOfWeekNumber = dayOfWeek.getValue(); LocalDate now = LocalDate.now(); LocalTime parse = LocalTime.parse("00:00:00"); LocalDateTime of = LocalDateTime.of(now, parse); PerformanceShift performanceShift = shiftMapper.selectOne(new LambdaQueryWrapper<PerformanceShift>().eq(PerformanceShift::getWorkTime, of) .eq(PerformanceShift::getUserId, personTrainingRecord.getUserId())); if(Objects.nonNull(performanceShift)) { a.setShift(performanceShift.getShift()); // çæ¬¡ } a.setWeek(weekNumber+""); // 卿¬¡ a.setWeekDay(dayOfWeekNumber == 7 ? 0+"" : dayOfWeekNumber+""); // ææ // æ¯å¦éè¿ if(personTrainingRecord.getExaminationResults().equals("åæ ¼") && CollectionUtils.isEmpty(auxiliaryWorkingHoursDays)) { // å¦ææ¯æ£æµåç人就ä¸ç¨å User user = userMapper.selectById(personTrainingRecord.getUserId()); if(user.getDepartLimsId().contains("22")) { return; } // ä¸è课45åé å·¥æ¶60åé BigDecimal minute = BigDecimal.valueOf(classHour).multiply(new BigDecimal("45")); // å ·ä½åé BigDecimal divide = minute.divide(new BigDecimal("60"),4, RoundingMode.HALF_UP); // å·¥æ¶ // æ·»å æ°æ® AuxiliaryWorkingHoursDay a = new AuxiliaryWorkingHoursDay(); a.setNameUser(personTrainingRecord.getUserId()); // å§åid // 项ç®åç§° a.setRemarks(personTrainingDetailed.getTrainingContent()); // è¾ å©è¯´æ a.setNumber("401"); // ç¼å· AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber("401"); a.setAuxiliaryProject(auxiliaryWorkingHoursDay.getAuxiliaryProject()); // è¾ å©é¡¹ç®åç§° a.setNonproductiveTime(Double.parseDouble(divide.toString())); // è¾ å©å·¥æ¶ a.setApprovedWorkingHour(auxiliaryWorkingHoursDay.getApprovedWorkingHour()); // æ ¸åå·¥æ¶ a.setAmount(Double.parseDouble(divide.toString())); // æ°é String year = trainingDateTwo.split("-")[0]; a.setYear(year); // å¹´ a.setCreateTime(LocalDateTime.now()); a.setUpdateTime(LocalDateTime.now()); a.setCreateUser(userId); // å建人id a.setUpdateUser(userId); // ä¿®æ¹äººid a.setState("å·²æäº¤"); // ç¶æ a.setDateTime(trainingDateTwo + " 00:00:00"); // æ¥æ // è·åå½åæ¥æ LocalDate today = LocalDate.now(); // è·åå½åæ¥æç卿¬¡ï¼ä¸å¹´ä¸ç第å å¨ï¼ TemporalField weekOfYear = WeekFields.of(Locale.getDefault()).weekOfYear(); int weekNumber = today.get(weekOfYear); // è·åå½åæ¥æçææï¼ä¸å¨ä¸ç第å å¤©ï¼ DayOfWeek dayOfWeek = today.getDayOfWeek(); int dayOfWeekNumber = dayOfWeek.getValue(); LocalDate now = LocalDate.now(); LocalTime parse = LocalTime.parse("00:00:00"); LocalDateTime of = LocalDateTime.of(now, parse); PerformanceShift performanceShift = shiftMapper.selectOne(new LambdaQueryWrapper<PerformanceShift>().eq(PerformanceShift::getWorkTime, of) .eq(PerformanceShift::getUserId, personTrainingRecord.getUserId())); if(Objects.nonNull(performanceShift)) { a.setShift(performanceShift.getShift()); // çæ¬¡ } a.setWeek(weekNumber+""); // 卿¬¡ a.setWeekDay(dayOfWeekNumber == 7 ? 0+"" : dayOfWeekNumber+""); // ææ auxiliaryWorkingHoursDayMapper.insert(a); } // å¹è®è®²å¸ä¹è¦å ä¸ç¸åºçå·¥æ¶ String trainingLecturerId = personTrainingDetailed.getTrainingLecturerId(); String[] split = trainingLecturerId.split(","); for (String name : split) { if(StringUtils.isNotEmpty(name)) { User user1 = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getName, name)).get(0); if(user1.getDepartLimsId().contains("22")) { continue; } // æ·»å è¿äºå°±ä¸åæ·»å List<AuxiliaryWorkingHoursDay> list = auxiliaryWorkingHoursDayMapper.selectList(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>() .eq(AuxiliaryWorkingHoursDay::getNameUser, user1.getId()) .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, auxiliaryWorkingHoursDay.getAuxiliaryProject()) .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00")); if(CollectionUtils.isNotEmpty(list)) { continue; } AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay1 = new AuxiliaryWorkingHoursDay(); // ç¨äºæ·»å å¹è®è®²å¸ BeanUtils.copyProperties(a,auxiliaryWorkingHoursDay1); auxiliaryWorkingHoursDay1.setNameUser(user1.getId()); auxiliaryWorkingHoursDay1.setId(null); auxiliaryWorkingHoursDayMapper.insert(auxiliaryWorkingHoursDay1); } } } } cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
@@ -84,7 +84,8 @@ @ApiOperation(value = "å¯¼å ¥æ 忥æ°") @PostMapping("/importMethodSearchNew") public Result importMethodSearchNew(MultipartFile file) { return Result.success(processMethodSearchNewService.importMethodSearchNew(file)); processMethodSearchNewService.importMethodSearchNew(file); return Result.success(); } /** @@ -93,7 +94,7 @@ * @return */ @ApiOperation(value = "å 餿 忥æ°") @DeleteMapping("/deleteById") @GetMapping("/deleteById") public Result deleteByMethodSearchNewId(@RequestParam("methodSearchNewId")Integer methodSearchNewId) { processMethodSearchNewService.removeById(methodSearchNewId); return Result.success("å 餿å"); cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java
@@ -40,6 +40,6 @@ private Integer total; @ApiModelProperty("å æ¯") private BigDecimal proportion; private String proportion; } cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewDto.java
@@ -59,4 +59,6 @@ @ExcelProperty(value = {"åºå·", "åºå·"}, index = 0) @ApiModelProperty("åºå·") private Integer index; private Boolean isThisYear; } cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewExcel.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,56 @@ package com.ruoyi.process.dto; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ProcessMethodSearchNewExcel { @ExcelProperty(value = {"æ ååç§°", "æ ååç§°"}, index = 1) private String methodName; @ExcelProperty(value = {"æ åå·", "æ åå·"}, index = 2) @ApiModelProperty("æ åå·") private String standardNo; @ExcelProperty(value = {"æä»¶ç¼å·", "æä»¶ç¼å·"}, index = 3) @ApiModelProperty("æä»¶ç¼å·") private String fileNo; @ExcelProperty(value = "æ¯å¦æ¯æ´æ°æ å", index = 4) @ApiModelProperty("æ¯å¦ææ´æ°æ å") private String isNewStandardString; @ExcelProperty(value = {"æ°æ ååç§°", "æ°æ ååç§°"}, index = 5) @ApiModelProperty("æ°æ ååç§°") private String newMethodName; @ExcelProperty(value = {"æ°æ åå·", "æ°æ åå·"}, index =6) @ApiModelProperty("æ°æ åå·") private String newStandardNo; @ExcelProperty(value = {"æ¥æ°è®°å½æ¥æº", "æ åç½"}, index = 7) @ApiModelProperty("æ åç½") private String standardNet; @ExcelProperty(value = {"æ¥æ°è®°å½æ¥æº", "å§ææ æ¥æ"}, index = 8) @ApiModelProperty("å§ææ æ¥æ") private String informationOffices; @ExcelProperty(value = {"æ¥æ°è®°å½æ¥æº", "æ å书åº"}, index = 9) @ApiModelProperty("æ å书åº") private String standardBookstore; @ExcelProperty(value = {"æ¥æ°è®°å½æ¥æº", "å ¶ä»"}, index = 10) @ApiModelProperty("å ¶ä»") private String other; @ExcelProperty(value = {"夿³¨", "夿³¨"}, index = 11) @ApiModelProperty("夿³¨") private String remarkString; @ExcelProperty(value = {"åºå·", "åºå·"}, index = 0) @ApiModelProperty("åºå·") private String index; } cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewImport.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.ruoyi.process.dto; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.ruoyi.process.service.impl.ProcessMethodSearchNewServiceImpl; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.List; @Slf4j public class ProcessMethodSearchNewImport extends AnalysisEventListener<ProcessMethodSearchNewExcel> { private static final int BATCH_COUNT = 500; private static List<ProcessMethodSearchNewExcel> list = new ArrayList<>(); private ProcessMethodSearchNewServiceImpl service; public ProcessMethodSearchNewImport(ProcessMethodSearchNewServiceImpl service) { this.service = service; } @Override public void invoke(ProcessMethodSearchNewExcel processMethodSearchNewExcel, AnalysisContext analysisContext) { log.info("è§£æå°ä¸æ¡æ°æ®:{}", processMethodSearchNewExcel); if(list.size() > BATCH_COUNT) { save(list); list.clear(); } else { list.add(processMethodSearchNewExcel); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { log.info("æææ°æ®è§£æå®æï¼:{}æ¡æ°æ®", list.size()); save(list); } public void save(List<ProcessMethodSearchNewExcel> list) { log.info("{}æ¡æ°æ®ï¼å¼å§å卿°æ®åºï¼", list.size()); service.save(list); log.info("å卿°æ®åºæåï¼"); } } cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java
@@ -28,7 +28,7 @@ * @param endDate * @return */ IPage<ProcessMethodSearchNew> pageMethodSearchNew(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessMethodSearchNewDto> processMethodSearchNewDtoQueryWrapper, @Param("beginDate") String beginDate, @Param("endDate") String endDate); IPage<ProcessMethodSearchNew> pageMethodSearchNew(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessMethodSearchNew> processMethodSearchNewDtoQueryWrapper, @Param("beginDate") String beginDate, @Param("endDate") String endDate); /** * æ¥è¯¢æ åæ¥è¯¢ cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java
@@ -70,5 +70,5 @@ @ApiModelProperty("å æ¯") @TableField(select = false,exist = false) private BigDecimal proportion; private String proportion; } cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java
@@ -44,6 +44,6 @@ * @param file * @return */ boolean importMethodSearchNew(MultipartFile file); void importMethodSearchNew(MultipartFile file); } cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java
@@ -153,7 +153,7 @@ + (distributionDetail.getTesting() != null ? distributionDetail.getTesting() : 0); distributionDetail.setTotal(total); // å æ¯ distributionDetail.setProportion(calculatePercentage(total, sum)); distributionDetail.setProportion(calculatePercentage(total, sum)+"%"); } // æ·»å æåä¸è¡å æ¯å¯¹è±¡ InconsistentDistributionProportionDto proportionDto = new InconsistentDistributionProportionDto(); @@ -199,6 +199,7 @@ public void exportInconsistentDistribution(Integer distributionId, HttpServletResponse response) { InconsistentDistributionDto inconsistentDistributionOne = getInconsistentDistributionOne(distributionId); // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/inconsistent-distribution.docx"); Configure configure = Configure.builder() cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java
@@ -1,23 +1,26 @@ package com.ruoyi.process.service.impl; import cn.hutool.core.util.NumberUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.util.FileUtils; import com.alibaba.excel.util.ListUtils; import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.process.dto.ProcessMethodSearchNewDto; import com.ruoyi.process.dto.ProcessMethodSearchNewExcel; import com.ruoyi.process.dto.ProcessMethodSearchNewImport; import com.ruoyi.process.mapper.ProcessMethodSearchNewMapper; import com.ruoyi.process.pojo.ProcessMethodSearchNew; import com.ruoyi.process.service.ProcessMethodSearchNewService; import com.ruoyi.process.utils.UserUtils; import org.apache.poi.hslf.util.LocaleDateFormat; import org.springframework.beans.BeanUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -30,10 +33,13 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.security.MessageDigest; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; /** @@ -45,6 +51,7 @@ @Service public class ProcessMethodSearchNewServiceImpl extends ServiceImpl<ProcessMethodSearchNewMapper, ProcessMethodSearchNew> implements ProcessMethodSearchNewService { private final Set<String> importedFileHashes = ConcurrentHashMap.newKeySet(); /** * æ°å¢æ åæ¥æ° * @@ -87,7 +94,16 @@ String endDate = processMethodSearchNew.getEndDate(); processMethodSearchNew.setBeginDate(null); processMethodSearchNew.setEndDate(null); return baseMapper.pageMethodSearchNew(page, QueryWrappers.queryWrappers(processMethodSearchNew), beginDate, endDate); // åå²è®°å½çè¯ å°±è¦å æ¶é´ if(!processMethodSearchNew.getIsThisYear()) { LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now().getYear(), 1, 1, 0, 0, 0); endDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(localDateTime); } ProcessMethodSearchNew processMethodSearchNew1 = new ProcessMethodSearchNew(); BeanUtils.copyProperties(processMethodSearchNew, processMethodSearchNew1); return baseMapper.pageMethodSearchNew(page, QueryWrappers.queryWrappers(processMethodSearchNew1), beginDate, endDate); } /** @@ -139,20 +155,23 @@ methodSearchNew.setRemarkString("ä½åº"); } } switch (methodSearchNew.getSearchNewSource()) { case 0: methodSearchNew.setStandardNet("â"); break; case 1: methodSearchNew.setInformationOffices("â"); break; case 2: methodSearchNew.setStandardBookstore("â"); break; case 3: methodSearchNew.setOther("â"); break; if(Objects.nonNull(methodSearchNew.getSearchNewSource())) { switch (methodSearchNew.getSearchNewSource()) { case 0: methodSearchNew.setStandardNet("â"); break; case 1: methodSearchNew.setInformationOffices("â"); break; case 2: methodSearchNew.setStandardBookstore("â"); break; case 3: methodSearchNew.setOther("â"); break; default: break; } } methodSearchNew.setIndex(index); index++; @@ -236,63 +255,78 @@ * @return */ @Override public boolean importMethodSearchNew(MultipartFile file) { List<ProcessMethodSearchNewDto> searchNewDtoList = new ArrayList<>(); public void importMethodSearchNew(MultipartFile file) { try { // excelè§£æ EasyExcel.read(file.getInputStream(), ProcessMethodSearchNewDto.class, new AnalysisEventListener<ProcessMethodSearchNewDto>() { @Override public void invoke(ProcessMethodSearchNewDto searchNewDto, AnalysisContext analysisContext) { searchNewDtoList.add(searchNewDto); } // 1. è®¡ç®æä»¶ç MD5 åå¸å¼ String fileHash = calculateFileHash(file); @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 2. æ£æ¥æ¯å¦å·²åå¨ç¸åæä»¶ if (!importedFileHashes.add(fileHash)) { return; // å·²åå¨ï¼ç´æ¥è·³è¿ } // 3. 读åå¹¶å¤çæä»¶ try (InputStream inputStream = file.getInputStream()) { EasyExcel.read(inputStream, ProcessMethodSearchNewExcel.class, new ProcessMethodSearchNewImport(this)) .sheet() .doRead(); } } }).sheet().doRead(); // æ ¼å¼åæ¥æ°å¯¹è±¡ List<ProcessMethodSearchNew> collect = searchNewDtoList.stream().map(searchNewDto -> { ProcessMethodSearchNew searchNew = new ProcessMethodSearchNew(); BeanUtils.copyProperties(searchNewDto, searchNew); // æ¯å¦æ¯æ´æ° if (StringUtils.isNotBlank(searchNewDto.getIsNewStandardString())) { if (searchNewDto.getIsNewStandardString().equals("æ¯")) { searchNew.setIsNewStandard(1); } else { searchNew.setIsNewStandard(0); } } // æ¥æ°è®°å½ if (StringUtils.isNotBlank(searchNewDto.getStandardNet())) { searchNew.setSearchNewSource(0); } else if (StringUtils.isNotBlank(searchNewDto.getInformationOffices())) { searchNew.setSearchNewSource(1); } else if (StringUtils.isNotBlank(searchNewDto.getIsNewStandardString())) { searchNew.setSearchNewSource(2); } else if (StringUtils.isNotBlank(searchNewDto.getOther())) { searchNew.setSearchNewSource(3); } // 夿³¨ if (StringUtils.isNotBlank(searchNewDto.getRemarkString())) { if (searchNewDto.getRemarkString().equals("æ¿æ¢")) { searchNew.setRemark(1); } else if (searchNewDto.getRemarkString().equals("ä½åº")) { searchNew.setRemark(0); } } return searchNew; }).collect(Collectors.toList()); this.saveBatch(collect); } catch (IOException e) { // 4. è®°å½æä»¶åå¸å¼ï¼æ è®°ä¸ºå·²å¯¼å ¥ï¼ importedFileHashes.add(fileHash); } catch (Exception e) { throw new RuntimeException(e); } return true; } public void save (List<ProcessMethodSearchNewExcel> list) { if(CollectionUtils.isNotEmpty(list)) { for (ProcessMethodSearchNewExcel a : list) { if(NumberUtil.isNumber(a.getIndex())) { ProcessMethodSearchNew processMethodSearchNew = new ProcessMethodSearchNew(); BeanUtils.copyProperties(a, processMethodSearchNew); processMethodSearchNew.setIsNewStandard(a.getIsNewStandardString() == "æ¯" ? 1 : 0); // æ¯å¦æ¯æ°æ å // æ¥æ°è®°å½ 0 æ åç½ 1 å§ææ æ¥ 2 æ åæ° 3 å ¶ä» if(StringUtils.isNotEmpty(a.getStandardNet())) { processMethodSearchNew.setSearchNewSource(0); } else if(StringUtils.isNotEmpty(a.getInformationOffices())) { processMethodSearchNew.setSearchNewSource(1); } else if(StringUtils.isNotEmpty(a.getStandardBookstore())) { processMethodSearchNew.setSearchNewSource(2); } else if(StringUtils.isNotEmpty(a.getOther())) { processMethodSearchNew.setSearchNewSource(3); } // ç¼å¶äºº baseMapper.insert(processMethodSearchNew); } } } } // è®¡ç®æä»¶ç MD5 åå¸å¼ private String calculateFileHash(MultipartFile file) throws Exception { try (InputStream is = file.getInputStream()) { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { md.update(buffer, 0, bytesRead); } byte[] hashBytes = md.digest(); // å°åèæ°ç»è½¬æ¢ä¸ºåå è¿å¶å符串 return bytesToHex(hashBytes); } } private static String bytesToHex(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } } cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
@@ -28,10 +28,7 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -77,9 +74,11 @@ List<ProcessReport> processReports = processReportMapper.getIds(ids); for (ProcessReport processReport : processReports) { List<String> name = new ArrayList<>(); for (String s : processReport.getSignatory().split(",")) { User user = userMapper.selectById(Integer.parseInt(s)); name.add(user.getName()); if(StringUtils.isNotEmpty(processReport.getSignatory())) { for (String s : processReport.getSignatory().split(",")) { User user = userMapper.selectById(Integer.parseInt(s)); name.add(user.getName()); } } String signatoryName = name.stream().collect(Collectors.joining(",")); processReport.setSignatoryName(signatoryName); @@ -293,7 +292,11 @@ } else if (j == 6) { try{ textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendTime()+""); String text = ""; if(Objects.nonNull(processReports.get((i-1) + (index1 - 1) * 20).getSendTime())) { text = processReports.get((i-1) + (index1 - 1) * 20).getSendTime() + ""; } textRenderData.setText(text); } catch (Exception e) { textRenderData.setText(""); } cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
@@ -11,6 +11,9 @@ <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''"> and create_time between #{beginDate} and #{endDate} </if> <if test="endDate != '' and endDate != null"> and create_time < #{endDate} </if> </where> order by create_time desc ) a