From 059b188fd49c5127b75a38408d12e26d2363fbab Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期二, 18 三月 2025 19:07:27 +0800
Subject: [PATCH] cans问题修复1.0
---
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml | 3
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java | 19 +-
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java | 2
cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java | 2
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java | 20 ++
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewImport.java | 46 +++++
cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java | 3
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java | 5
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewDto.java | 2
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java | 2
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java | 124 +++++++++------
cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewExcel.java | 56 +++++++
cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java | 2
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java | 176 +++++++++++++--------
14 files changed, 324 insertions(+), 138 deletions(-)
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java
index 7c598f3..e97a623 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRiskAssessmentResultsServiceImpl.java
+++ b/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();
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
index ec097a3..c5c29bc 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
+++ b/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); // 鍒涘缓浜篿d
+ a.setUpdateUser(userId); // 淇敼浜篿d
+ 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); // 鍒涘缓浜篿d
- a.setUpdateUser(userId); // 淇敼浜篿d
- 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);
+ }
+ }
}
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
index 84ac8ca..47222a7 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
+++ b/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("鍒犻櫎鎴愬姛");
diff --git a/cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java b/cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java
index a606db5..51dc16c 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/dto/InconsistentDistributionProportionDto.java
+++ b/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;
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewDto.java b/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewDto.java
index 20bd254..e44a2be 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewDto.java
+++ b/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;
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewExcel.java b/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewExcel.java
new file mode 100644
index 0000000..766e711
--- /dev/null
+++ b/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;
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewImport.java b/cnas-process/src/main/java/com/ruoyi/process/dto/ProcessMethodSearchNewImport.java
new file mode 100644
index 0000000..3679079
--- /dev/null
+++ b/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("瑙f瀽鍒颁竴鏉℃暟鎹�:{}", 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("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
+ }
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java
index 33d00cd..77a5935 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java
+++ b/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);
/**
* 鏌ヨ鏍囧噯鏌ヨ
diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java
index 40bb846..22048b4 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/pojo/InconsistentDistributionDetail.java
+++ b/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;
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java b/cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java
index e940d5b..919cb6f 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java
+++ b/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);
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java
index 5be07ef..fd2f592 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InconsistentDistributionServiceImpl.java
+++ b/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()
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java
index 591f9c0..ad70719 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java
+++ b/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瑙f瀽
- 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();
}
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
index 0f78c44..c4e3f70 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
+++ b/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("");
}
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
index 3727524..4cfedee 100644
--- a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
+++ b/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
--
Gitblit v1.9.3