From f7ba5f3fb17abf09b6bd3980c46761c2431a4c31 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 12 十月 2026 10:26:27 +0800
Subject: [PATCH] feat(search-new): 标准维护保存时自动同步生成并归档查新记录
---
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 ++++++++++++++++
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 +
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewFileSeqMapper.java | 18 +++
cnas-process/src/main/java/com/ruoyi/process/service/ProcessMethodSearchNewService.java | 4
basic-server/src/main/resources/mapper/StandardMethodMapper.xml | 3
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodSearchNewServiceImpl.java | 50 +++++++--
13 files changed, 280 insertions(+), 13 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>
--
Gitblit v1.9.3