From e5d1fb3d5ce9468b92e79825bbcb38f05ea73aff Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 12 十月 2026 18:12:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java | 14 +
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewFileSeqMapper.xml | 40 ++++
cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml | 13 +
basic-server/src/main/java/com/ruoyi/basic/event/StandardMethodSavedEvent.java | 27 ++
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewMapper.java | 3
cnas-process/src/main/java/com/ruoyi/process/listener/StandardMethodSearchNewListener.java | 82 ++++++++
ruoyi-admin/src/main/resources/application.yml | 74 -------
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java | 9
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java | 22 ++
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java | 8
ruoyi-admin/src/main/resources/application-xjxj.yml | 150 +++++++++++++++
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewFileSeqMapper.java | 18 +
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java | 4
ruoyi-admin/src/main/resources/application-druid.yml | 54 +++++
basic-server/src/main/resources/mapper/StandardMethodMapper.xml | 3
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java | 50 +++-
16 files changed, 484 insertions(+), 87 deletions(-)
diff --git a/basic-server/src/main/java/com/ruoyi/basic/event/StandardMethodSavedEvent.java b/basic-server/src/main/java/com/ruoyi/basic/event/StandardMethodSavedEvent.java
new file mode 100644
index 0000000..0a3a329
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/event/StandardMethodSavedEvent.java
@@ -0,0 +1,27 @@
+package com.ruoyi.basic.event;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/** 鏍囧噯缁存姢淇濆瓨浜嬩欢銆� */
+@Data
+@AllArgsConstructor
+@Schema(description = "鏍囧噯缁存姢淇濆瓨浜嬩欢")
+public class StandardMethodSavedEvent {
+
+ @Schema(description = "鏍囧噯鏂规硶ID")
+ private Integer standardMethodId;
+
+ @Schema(description = "鏍囧噯缂栧彿")
+ private String code;
+
+ @Schema(description = "鏍囧噯鎻忚堪")
+ private String name;
+
+ @Schema(description = "鏄惁鏌ユ柊锛�0鍚︼紝1鏄級")
+ private Integer needSearchNew;
+
+ @Schema(description = "鏄惁涓虹紪杈戞搷浣�")
+ private boolean edit;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java
index ebb426b..ab699a7 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java
@@ -15,27 +15,33 @@
*/
@TableName(value ="standard_method")
@Data
+@Schema(description = "鏍囧噯鏂规硶")
public class StandardMethod implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
+ @Schema(description = "鏍囧噯鏂规硶ID")
private Integer id;
+ @Schema(description = "棰嗗煙")
private String field;
@Schema(description = "妫�楠屽璞�")
private String structureTestObjectId;
/** 鏍囧噯搴撲竴绾ц涓欼D锛堜粎鎺ュ彛浜や簰锛屼笉钀絪tandard_method琛級 */
+ @Schema(description = "鏍囧噯搴撲竴绾ц涓欼D")
@TableField(exist = false)
private List<Integer> industryIds;
/** 宸茬粦瀹氳涓氬悕绉帮紙鍒楄〃灞曠ず锛� */
+ @Schema(description = "宸茬粦瀹氳涓氬悕绉�")
@TableField(exist = false)
private String industryNames;
/** 闄勪欢鏁伴噺锛堝垪琛ㄥ睍绀猴級 */
+ @Schema(description = "闄勪欢鏁伴噺")
@TableField(exist = false)
private Integer attachmentCount;
@@ -69,6 +75,9 @@
@Schema(description = "鏄惁鍚敤")
private Integer isUse;
+ @Schema(description = "鏄惁鏌ユ柊锛�0鍚︼紝1鏄級")
+ private Integer needSearchNew;
+
@Schema(description = "鍒涘缓浜篿d")
@TableField(fill = FieldFill.INSERT)
private Integer createUser;
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
index f14bb35..f38131e 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
@@ -8,6 +8,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.pojo.StandardMethodList;
+import com.ruoyi.basic.event.StandardMethodSavedEvent;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.basic.mapper.StandardMethodMapper;
import com.ruoyi.basic.mapper.StandardProductListMapper;
@@ -31,6 +32,7 @@
import com.ruoyi.basic.utils.StandardTreePath;
import com.ruoyi.basic.utils.StandardTreePathParser;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -66,6 +68,7 @@
private LaboratoryMapper laboratoryMapper;
private StandardTreeMapper standardTreeMapper;
private StandardTreeTemplateBindingMapper standardTreeTemplateBindingMapper;
+ private final ApplicationEventPublisher eventPublisher;
@Value("${file.path}")
private String filePath;
@@ -86,7 +89,8 @@
StandardMethodAttachmentMapper standardMethodAttachmentMapper,
LaboratoryMapper laboratoryMapper,
StandardTreeMapper standardTreeMapper,
- StandardTreeTemplateBindingMapper standardTreeTemplateBindingMapper) {
+ StandardTreeTemplateBindingMapper standardTreeTemplateBindingMapper,
+ ApplicationEventPublisher eventPublisher) {
this.standardMethodMapper = standardMethodMapper;
this.standardProductListMapper = standardProductListMapper;
this.standardProductListService = standardProductListService;
@@ -97,6 +101,7 @@
this.laboratoryMapper = laboratoryMapper;
this.standardTreeMapper = standardTreeMapper;
this.standardTreeTemplateBindingMapper = standardTreeTemplateBindingMapper;
+ this.eventPublisher = eventPublisher;
}
@Override
@@ -117,8 +122,12 @@
@Transactional(rollbackFor = Exception.class)
public Integer addStandardMethod(StandardMethod standardMethod) {
standardMethod.setStructureTestObjectId(null);
+ if (standardMethod.getNeedSearchNew() == null) {
+ standardMethod.setNeedSearchNew(0);
+ }
standardMethodMapper.insert(standardMethod);
syncIndustries(standardMethod, Collections.<Integer>emptySet());
+ publishSavedEvent(standardMethod, false);
return standardMethod.getId();
}
@@ -149,11 +158,22 @@
if (!oldStandardMethod.getCode().equals(standardMethod.getCode())) {
CompletableFuture.supplyAsync(() -> replaceMethod(oldStandardMethod.getCode(), standardMethod.getCode()));
}
+ if (standardMethod.getNeedSearchNew() == null) {
+ standardMethod.setNeedSearchNew(oldStandardMethod.getNeedSearchNew() == null
+ ? 0 : oldStandardMethod.getNeedSearchNew());
+ }
int i = standardMethodMapper.updateById(standardMethod);
syncIndustries(standardMethod, new LinkedHashSet<>(selectIndustryIds(oldStandardMethod.getId())));
+ publishSavedEvent(standardMethodMapper.selectById(standardMethod.getId()), true);
return i;
}
+ private void publishSavedEvent(StandardMethod standardMethod, boolean edit) {
+ eventPublisher.publishEvent(new StandardMethodSavedEvent(
+ standardMethod.getId(), standardMethod.getCode(), standardMethod.getName(),
+ standardMethod.getNeedSearchNew(), edit));
+ }
+
private List<Integer> selectIndustryIds(Integer methodId) {
List<StandardMethodIndustry> list = standardMethodIndustryMapper.selectList(
Wrappers.<StandardMethodIndustry>lambdaQuery()
diff --git a/basic-server/src/main/resources/mapper/StandardMethodMapper.xml b/basic-server/src/main/resources/mapper/StandardMethodMapper.xml
index b48f4d0..82bfa6c 100644
--- a/basic-server/src/main/resources/mapper/StandardMethodMapper.xml
+++ b/basic-server/src/main/resources/mapper/StandardMethodMapper.xml
@@ -13,6 +13,7 @@
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUser" column="update_user" jdbcType="INTEGER"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="needSearchNew" column="need_search_new" jdbcType="INTEGER"/>
</resultMap>
<select id="selectStandardMethodList" resultType="com.ruoyi.basic.pojo.StandardMethod">
@@ -30,6 +31,7 @@
sm.field,
sm.name_en,
sm.is_use,
+ sm.need_search_new,
sm.qualification_id,
COALESCE((SELECT GROUP_CONCAT(l.laboratory_name ORDER BY COALESCE(l.sort, 0), l.id SEPARATOR '銆�')
FROM standard_method_industry smi JOIN laboratory l ON l.id = smi.industry_id
@@ -59,6 +61,7 @@
sm.field,
sm.name_en,
sm.is_use,
+ sm.need_search_new,
sm.qualification_id
from standard_method sm
left join user u1 on sm.create_user = u1.id
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 70e3cb5..dc137e8 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
@@ -55,7 +55,7 @@
@Operation(summary = "淇敼鏍囧噯鏌ユ柊")
@PostMapping("/updateMethodSearchNew")
public Result updateMethodSearchNew(@RequestBody ProcessMethodSearchNew processMethodSearchNew ) {
- return Result.success(processMethodSearchNewService.updateById(processMethodSearchNew));
+ return Result.success(processMethodSearchNewService.updateMethodSearchNew(processMethodSearchNew));
}
/**
@@ -67,6 +67,12 @@
return Result.success(processMethodSearchNewService.pageMethodSearchNew(page, processMethodSearchNew));
}
+ @Operation(summary = "鑷姩褰掓。璁板綍鍒楄〃")
+ @GetMapping("/pageAutoArchived")
+ public Result<IPage<ProcessMethodSearchNew>> pageAutoArchived(ProcessMethodSearchNew processMethodSearchNew, Page page) {
+ return Result.success(processMethodSearchNewService.pageAutoArchived(page, processMethodSearchNew));
+ }
+
@Operation(summary = "鏍囧噯鏌ユ柊瀵煎嚭")
@GetMapping("/exportMethodSearchNew")
public void exportMethodSearchNew(Integer archivedId, HttpServletResponse response) throws Exception {
diff --git a/cnas-process/src/main/java/com/ruoyi/process/listener/StandardMethodSearchNewListener.java b/cnas-process/src/main/java/com/ruoyi/process/listener/StandardMethodSearchNewListener.java
new file mode 100644
index 0000000..0ce0eee
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/listener/StandardMethodSearchNewListener.java
@@ -0,0 +1,82 @@
+package com.ruoyi.process.listener;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.basic.event.StandardMethodSavedEvent;
+import com.ruoyi.basic.mapper.StandardMethodMapper;
+import com.ruoyi.basic.pojo.StandardMethod;
+import com.ruoyi.process.mapper.ProcessMethodSearchNewFileSeqMapper;
+import com.ruoyi.process.mapper.ProcessMethodSearchNewMapper;
+import com.ruoyi.process.pojo.ProcessMethodSearchNew;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+
+/** 鏍规嵁鏍囧噯缁存姢淇濆瓨鍔ㄤ綔鍚屾鐢熸垚銆佸綊妗f爣鍑嗘煡鏂拌褰曘�� */
+@Component
+@RequiredArgsConstructor
+public class StandardMethodSearchNewListener {
+
+ private static final ZoneId CHINA_ZONE = ZoneId.of("Asia/Shanghai");
+ private static final DateTimeFormatter FILE_DATE = DateTimeFormatter.BASIC_ISO_DATE;
+
+ private final StandardMethodMapper standardMethodMapper;
+ private final ProcessMethodSearchNewMapper searchNewMapper;
+ private final ProcessMethodSearchNewFileSeqMapper fileSeqMapper;
+
+ @EventListener
+ public void onStandardMethodSaved(StandardMethodSavedEvent event) {
+ if (!Integer.valueOf(1).equals(event.getNeedSearchNew())) {
+ return;
+ }
+
+ StandardMethod standard = standardMethodMapper.selectOne(Wrappers.<StandardMethod>lambdaQuery()
+ .eq(StandardMethod::getId, event.getStandardMethodId())
+ .last("FOR UPDATE"));
+ if (standard == null) {
+ return;
+ }
+
+ ProcessMethodSearchNew current = searchNewMapper.selectOne(Wrappers.<ProcessMethodSearchNew>lambdaQuery()
+ .eq(ProcessMethodSearchNew::getCurrentAutoStandardId, event.getStandardMethodId())
+ .last("FOR UPDATE"));
+ if (!event.isEdit() && current != null) {
+ return;
+ }
+
+ LocalDateTime now = LocalDateTime.now(CHINA_ZONE);
+ if (current != null) {
+ searchNewMapper.update(null, Wrappers.<ProcessMethodSearchNew>lambdaUpdate()
+ .eq(ProcessMethodSearchNew::getMethodSearchNewId, current.getMethodSearchNewId())
+ .set(ProcessMethodSearchNew::getIsNewStandard, 0)
+ .set(ProcessMethodSearchNew::getIsAutoArchived, 1)
+ .set(ProcessMethodSearchNew::getCurrentAutoStandardId, null)
+ .set(ProcessMethodSearchNew::getAutoArchivedTime, now));
+ }
+
+ ProcessMethodSearchNew created = new ProcessMethodSearchNew();
+ created.setMethodName(event.getName());
+ created.setStandardNo(event.getCode());
+ created.setFileNo(nextFileNo(now.toLocalDate()));
+ created.setIsNewStandard(1);
+ created.setSearchNewSource(null);
+ created.setStandardMethodId(event.getStandardMethodId());
+ created.setCurrentAutoStandardId(event.getStandardMethodId());
+ created.setIsAutoArchived(0);
+ searchNewMapper.insert(created);
+ }
+
+ private String nextFileNo(LocalDate date) {
+ String prefix = date.format(FILE_DATE);
+ fileSeqMapper.insertIfAbsent(date);
+ Integer stored = fileSeqMapper.selectForUpdate(date);
+ Integer existing = fileSeqMapper.selectMaxExisting(prefix);
+ int next = Math.max(stored == null ? 0 : stored, existing == null ? 0 : existing) + 1;
+ fileSeqMapper.updateValue(date, next);
+ return prefix + String.format("%03d", next);
+ }
+}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewFileSeqMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewFileSeqMapper.java
new file mode 100644
index 0000000..ea4019e
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewFileSeqMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.process.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+
+@Mapper
+public interface ProcessMethodSearchNewFileSeqMapper {
+
+ int insertIfAbsent(@Param("seqDate") LocalDate seqDate);
+
+ Integer selectForUpdate(@Param("seqDate") LocalDate seqDate);
+
+ Integer selectMaxExisting(@Param("prefix") String prefix);
+
+ int updateValue(@Param("seqDate") LocalDate seqDate, @Param("value") Integer value);
+}
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 e82cfc7..c415bca 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,5 +28,8 @@
*/
IPage<ProcessMethodSearchNew> pageMethodSearchNew(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessMethodSearchNewBackupsDto> processMethodSearchNewDtoQueryWrapper, @Param("beginDate") String beginDate, @Param("endDate") String endDate);
+ IPage<ProcessMethodSearchNew> pageAutoArchived(@Param("page") Page page,
+ @Param("ew") QueryWrapper<ProcessMethodSearchNew> queryWrapper);
+
}
diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java
index a5aaec6..0d19b3d 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessMethodSearchNew.java
@@ -19,6 +19,7 @@
public class ProcessMethodSearchNew {
@TableId(type = IdType.AUTO)
+ @Schema(description = "鏍囧噯鏌ユ柊璁板綍ID")
private Integer methodSearchNewId;
@Schema(description = "鏍囧噯鏂规硶楠岃瘉id")
@@ -48,6 +49,19 @@
@Schema(description = "澶囨敞,0浣滃簾, 1鏇挎崲")
private Integer remark;
+ @Schema(description = "鏉ユ簮鏍囧噯缁存姢ID锛岃嚜鍔ㄧ敓鎴愯褰曚娇鐢�")
+ private Integer standardMethodId;
+
+ @Schema(description = "褰撳墠鑷姩璁板綍瀵瑰簲鐨勬爣鍑嗙淮鎶D锛涘綊妗e悗涓虹┖")
+ private Integer currentAutoStandardId;
+
+ @Schema(description = "鏄惁鑷姩褰掓。锛�0鍚︼紝1鏄級")
+ private Integer isAutoArchived;
+
+ @Schema(description = "鑷姩褰掓。鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime autoArchivedTime;
+
@Schema(description = "鍒涘缓浜�")
@TableField(fill = FieldFill.INSERT)
private Integer createUser;
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 3aa46ce..9e6f120 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
@@ -28,6 +28,8 @@
*/
boolean addMethodSearchNew(List<ProcessMethodSearchNew> processMethodSearchNewList);
+ boolean updateMethodSearchNew(ProcessMethodSearchNew processMethodSearchNew);
+
/**
* 鏍囧噯鏌ユ柊鍒楄〃
* @param processMethodSearchNew
@@ -35,6 +37,8 @@
*/
IPage<ProcessMethodSearchNew> pageMethodSearchNew(Page page, ProcessMethodSearchNewBackupsDto processMethodSearchNew);
+ IPage<ProcessMethodSearchNew> pageAutoArchived(Page page, ProcessMethodSearchNew processMethodSearchNew);
+
/**
* 鏍囧噯鏌ユ柊瀵煎嚭
* @param archivedId
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 b257cff..c7f13bb 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
@@ -73,10 +73,36 @@
public boolean addMethodSearchNew(List<ProcessMethodSearchNew> processMethodSearchNewList) {
for (ProcessMethodSearchNew processMethodSearchNew : processMethodSearchNewList) {
processMethodSearchNew.setIsNewStandard(1);
+ processMethodSearchNew.setIsAutoArchived(0);
+ processMethodSearchNew.setStandardMethodId(null);
+ processMethodSearchNew.setCurrentAutoStandardId(null);
+ processMethodSearchNew.setAutoArchivedTime(null);
}
// 鏂板
this.saveBatch(processMethodSearchNewList);
return true;
+ }
+
+ @Override
+ public boolean updateMethodSearchNew(ProcessMethodSearchNew processMethodSearchNew) {
+ ProcessMethodSearchNew old = getById(processMethodSearchNew.getMethodSearchNewId());
+ if (old == null) {
+ throw new ErrorException("鏍囧噯鏌ユ柊璁板綍涓嶅瓨鍦�");
+ }
+ if (Integer.valueOf(1).equals(old.getIsAutoArchived())) {
+ throw new ErrorException("鑷姩褰掓。璁板綍涓嶅厑璁镐慨鏀�");
+ }
+ return update(Wrappers.<ProcessMethodSearchNew>lambdaUpdate()
+ .eq(ProcessMethodSearchNew::getMethodSearchNewId, old.getMethodSearchNewId())
+ .set(ProcessMethodSearchNew::getVerifyId, processMethodSearchNew.getVerifyId())
+ .set(ProcessMethodSearchNew::getMethodName, processMethodSearchNew.getMethodName())
+ .set(ProcessMethodSearchNew::getStandardNo, processMethodSearchNew.getStandardNo())
+ .set(ProcessMethodSearchNew::getFileNo, processMethodSearchNew.getFileNo())
+ .set(ProcessMethodSearchNew::getNewMethodName, processMethodSearchNew.getNewMethodName())
+ .set(ProcessMethodSearchNew::getNewStandardNo, processMethodSearchNew.getNewStandardNo())
+ .set(ProcessMethodSearchNew::getSearchNewSource, processMethodSearchNew.getSearchNewSource())
+ .set(ProcessMethodSearchNew::getRemark, processMethodSearchNew.getRemark())
+ .set(ProcessMethodSearchNew::getIsNewStandard, 1));
}
/**
@@ -92,6 +118,12 @@
processMethodSearchNew.setBeginDate(null);
processMethodSearchNew.setEndDate(null);
return baseMapper.pageMethodSearchNew(page, QueryWrappers.queryWrappers(processMethodSearchNew), beginDate, endDate);
+ }
+
+ @Override
+ public IPage<ProcessMethodSearchNew> pageAutoArchived(Page page, ProcessMethodSearchNew processMethodSearchNew) {
+ processMethodSearchNew.setIsAutoArchived(null);
+ return baseMapper.pageAutoArchived(page, QueryWrappers.queryWrappers(processMethodSearchNew));
}
/**
@@ -136,7 +168,7 @@
searchNewBackupsDto.setRemarkString("浣滃簾");
}
}
- switch (methodSearchNew.getSearchNewSource()) {
+ if (methodSearchNew.getSearchNewSource() != null) switch (methodSearchNew.getSearchNewSource()) {
case 0:
searchNewBackupsDto.setStandardNet("鈭�");
break;
@@ -257,20 +289,14 @@
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);
- }
- }
+ searchNew.setIsNewStandard(1);
+ searchNew.setIsAutoArchived(0);
// 鏌ユ柊璁板綍
if (StringUtils.isNotBlank(searchNewDto.getStandardNet())) {
searchNew.setSearchNewSource(0);
} else if (StringUtils.isNotBlank(searchNewDto.getInformationOffices())) {
searchNew.setSearchNewSource(1);
- } else if (StringUtils.isNotBlank(searchNewDto.getIsNewStandardString())) {
+ } else if (StringUtils.isNotBlank(searchNewDto.getStandardBookstore())) {
searchNew.setSearchNewSource(2);
} else if (StringUtils.isNotBlank(searchNewDto.getOther())) {
searchNew.setSearchNewSource(3);
@@ -309,12 +335,14 @@
processMethodSearchNewArchivedMapper.insert(archived);
// 鏌ヨ鎵�鏈夌殑鏍囧噯鏌ユ柊
- List<ProcessMethodSearchNew> searchNewList = this.list();
+ List<ProcessMethodSearchNew> searchNewList = this.list(Wrappers.<ProcessMethodSearchNew>lambdaQuery()
+ .eq(ProcessMethodSearchNew::getIsAutoArchived, 0));
// 鏂板澶嶅埗
List<ProcessMethodSearchNewBackups> methodSearchNewBackups = searchNewList.stream().map(processMethodSearchNew -> {
ProcessMethodSearchNewBackups backups = new ProcessMethodSearchNewBackups();
BeanUtils.copyProperties(processMethodSearchNew, backups);
+ backups.setIsNewStandard(0);
backups.setArchivedId(archived.getArchivedId());
return backups;
}).collect(Collectors.toList());
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewFileSeqMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewFileSeqMapper.xml
new file mode 100644
index 0000000..39116e2
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewFileSeqMapper.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.process.mapper.ProcessMethodSearchNewFileSeqMapper">
+
+ <insert id="insertIfAbsent">
+ INSERT IGNORE INTO cnas_process_method_search_new_file_seq
+ (seq_date, sequence_value)
+ VALUES
+ (#{seqDate}, 0)
+ </insert>
+
+ <select id="selectForUpdate" resultType="java.lang.Integer">
+ SELECT sequence_value
+ FROM cnas_process_method_search_new_file_seq
+ WHERE seq_date = #{seqDate}
+ FOR UPDATE
+ </select>
+
+ <select id="selectMaxExisting" resultType="java.lang.Integer">
+ SELECT COALESCE(MAX(seq_value), 0)
+ FROM (
+ SELECT CAST(SUBSTRING(file_no, 9) AS UNSIGNED) AS seq_value
+ FROM cnas_process_method_search_new
+ WHERE file_no REGEXP CONCAT('^', #{prefix}, '[0-9]+$')
+ UNION ALL
+ SELECT CAST(SUBSTRING(file_no, 9) AS UNSIGNED) AS seq_value
+ FROM cnas_process_method_search_new_backups
+ WHERE file_no REGEXP CONCAT('^', #{prefix}, '[0-9]+$')
+ ) numbers
+ </select>
+
+ <update id="updateValue">
+ UPDATE cnas_process_method_search_new_file_seq
+ SET sequence_value = #{value}
+ WHERE seq_date = #{seqDate}
+ </update>
+
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
index 7be9498..d446e4d 100644
--- a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
@@ -8,6 +8,7 @@
from (select *
from cnas_process_method_search_new
<where>
+ and is_auto_archived = 0
<if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
and create_time between #{beginDate} and #{endDate}
</if>
@@ -18,4 +19,16 @@
${ew.customSqlSegment}
</if>
</select>
+
+ <select id="pageAutoArchived" resultType="com.ruoyi.process.pojo.ProcessMethodSearchNew">
+ select *
+ from (
+ select * from cnas_process_method_search_new
+ where is_auto_archived = 1
+ order by auto_archived_time desc, method_search_new_id desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
</mapper>
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index e0e9109..d36a314 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,7 +6,7 @@
druid:
# 涓诲簱鏁版嵁婧�
master:
- url: jdbc:mysql://192.168.0.24:3307/lims-xjxj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://127.0.0.1:3307/lims-xjxj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 浠庡簱鏁版嵁婧�
@@ -60,6 +60,56 @@
config:
multi-statement-allow: true
+ # Redis 杩炴帴閰嶇疆
+ data:
+ redis:
+ host: 127.0.0.1
+ port: 6379
+ database: 0
+ password:
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ name: RuoYi
+ version: 3.9.2
+ copyrightYear: 2026
+ profile: D:/ruoyi/uploadPath
+ addressEnabled: false
+
+# 鐢ㄦ埛瀵嗙爜閰嶇疆
+user:
+ password:
+ maxRetryCount: 5
+ lockTime: 10
+
+# 浠ょ墝閰嶇疆
+token:
+ header: Authorization
+ secret: awertgbadrtawetfgfbsdfawerghbfdsftreagd
+ expireTime: 450
+
+# 闃茬洍閾鹃厤缃�
+referer:
+ enabled: false
+ allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip
+
+# XSS 杩囨护閰嶇疆
+xss:
+ enabled: true
+ excludes: /system/notice
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
# 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
file:
path: D:\椤圭洰鏂囦欢瀛樺偍\image
@@ -67,4 +117,4 @@
allowed: png,jpg,jpeg,gif
# 鎶ュ憡 word 瀛樺偍璺緞
-wordUrl: D:\椤圭洰鏂囦欢瀛樺偍\word
\ No newline at end of file
+wordUrl: D:\椤圭洰鏂囦欢瀛樺偍\word
diff --git a/ruoyi-admin/src/main/resources/application-xjxj.yml b/ruoyi-admin/src/main/resources/application-xjxj.yml
new file mode 100644
index 0000000..33f720b
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/application-xjxj.yml
@@ -0,0 +1,150 @@
+# 瑁呭娴嬭瘯搴撻厤缃�
+
+# 鏁版嵁婧愰厤缃�
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://172.17.0.1:11101/lims-xjxj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+
+ # redis 閰嶇疆
+ data:
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 11102
+ # 鏁版嵁搴撶储寮�
+ database: 6
+ # 瀵嗙爜
+ password:
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# mybatis-plus閰嶇疆
+mybatis-plus:
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+# 鏃ュ織閰嶇疆
+logging:
+ file-location: /center-lims/Java
+ level:
+ root: info
+ com.ruoyi: debug
+ org.springframework.web: debug
+ org.springframework.security: info
+ org.mybatis: debug
+ com.baomidou.mybatisplus: debug
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ name: RuoYi
+ version: 3.9.2
+ copyrightYear: 2026
+ profile: D:/ruoyi/uploadPath
+ addressEnabled: false
+
+# 鐢ㄦ埛瀵嗙爜閰嶇疆
+user:
+ password:
+ maxRetryCount: 5
+ lockTime: 10
+
+# 浠ょ墝閰嶇疆
+token:
+ header: Authorization
+ secret: awertgbadrtawetfgfbsdfawerghbfdsftreagd
+ expireTime: 450
+
+# 闃茬洍閾鹃厤缃�
+referer:
+ enabled: false
+ allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip
+
+# XSS 杩囨护閰嶇疆
+xss:
+ enabled: true
+ excludes: /system/notice
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+
+# 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
+file:
+ path: /center-lims/Work/img
+ # 涓婁紶鏂囦欢鍏佽鐨勬墿灞曞悕
+ allowed: png,jpg,jpeg,gif
+# 鎶ュ憡鍦板潃
+wordUrl: /center-lims/Work/word
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 6818aec..a5af357 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -1,20 +1,7 @@
-# 椤圭洰鐩稿叧閰嶇疆
-ruoyi:
- # 鍚嶇О
- name: RuoYi
- # 鐗堟湰
- version: 3.9.2
- # 鐗堟潈骞翠唤
- copyrightYear: 2026
- # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
- profile: D:/ruoyi/uploadPath
- # 鑾峰彇ip鍦板潃寮�鍏�
- addressEnabled: false
-
# 寮�鍙戠幆澧冮厤缃�
server:
- # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
- port: 8002
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080锛屾湇鍔″櫒鏂拌仛鍚庣涓�9509
+ port: 9509
servlet:
# 搴旂敤鐨勮闂矾寰�
context-path: /
@@ -34,14 +21,6 @@
level:
com.ruoyi: debug
org.springframework: warn
-
-# 鐢ㄦ埛閰嶇疆
-user:
- password:
- # 瀵嗙爜鏈�澶ч敊璇鏁�
- maxRetryCount: 5
- # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
- lockTime: 10
# Spring閰嶇疆
spring:
@@ -70,39 +49,6 @@
restart:
# 鐑儴缃插紑鍏�
enabled: true
- data:
- # redis 閰嶇疆
- redis:
- # 鍦板潃
- host: 192.168.0.24
- # 绔彛锛岄粯璁や负6379
- port: 6379
- # 鏁版嵁搴撶储寮�
- database: 0
- # 瀵嗙爜
- password:
- # 杩炴帴瓒呮椂鏃堕棿
- timeout: 10s
- lettuce:
- pool:
- # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
- min-idle: 0
- # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
- max-idle: 8
- # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
- max-active: 8
- # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
- max-wait: -1ms
-
-# token閰嶇疆
-token:
- # 浠ょ墝鑷畾涔夋爣璇�
- header: Authorization
- # 浠ょ墝瀵嗛挜
- secret: abcdefghijklmnopqrstuvwxyz
- # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
- expireTime: 30
-
# MyBatis-Plus閰嶇疆
mybatis-plus:
# 鎼滅储鎸囧畾鍖呭埆鍚�
@@ -136,19 +82,3 @@
display-name: '娴嬭瘯妯″潡'
paths-to-match: '/**'
packages-to-scan: com.ruoyi
-
-# 闃茬洍閾鹃厤缃�
-referer:
- # 闃茬洍閾惧紑鍏�
- enabled: false
- # 鍏佽鐨勫煙鍚嶅垪琛�
- allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip
-
-# 闃叉XSS鏀诲嚮
-xss:
- # 杩囨护寮�鍏�
- enabled: true
- # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
- excludes: /system/notice
- # 鍖归厤閾炬帴
- urlPatterns: /system/*,/monitor/*,/tool/*
--
Gitblit v1.9.3