From f379dade90ec59e08c037cba4917308e3dfdb928 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 08 七月 2025 17:02:06 +0800
Subject: [PATCH] 调整审批记录的保存方式

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java |   78 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 1 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
index ae3d979..5160903 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
@@ -1,12 +1,19 @@
 
 package org.springblade.mdm.flow.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.flowable.task.api.Task;
 import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.mdm.flow.entity.ApproveRecord;
 import org.springblade.mdm.flow.mapper.ApproveRecordMapper;
 import org.springblade.mdm.flow.vo.ApproveRecordVO;
+import org.springblade.mdm.program.entity.ProcessProgRef;
+import org.springblade.mdm.program.service.ProcessProgRefService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -20,8 +27,77 @@
 @Service
 @AllArgsConstructor
 public class ApproveRecordService extends BizServiceImpl<ApproveRecordMapper, ApproveRecord> {
-
+	private final ProcessProgRefService processProgRefService;
 	public List<ApproveRecordVO> listByNcProgramId(Long ncProgramId) {
 		return this.getBaseMapper().listByNcProgramId(ncProgramId);
 	}
+
+	public void saveApproveRecords(Task task, String processInstanceId, String operateResult, String comment) {
+		LambdaQueryWrapper<ProcessProgRef> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(ProcessProgRef::getProcessInstanceId, processInstanceId);
+		List<ProcessProgRef> refList =  processProgRefService.list(queryWrapper);
+		if(!refList.isEmpty()) {
+			for (ProcessProgRef refObj : refList) {
+				ApproveRecord rec = new ApproveRecord();
+				rec.setTaskName(task.getName());
+				rec.setComment(comment);
+				rec.setNcProgramId(refObj.getNcProgramId());
+				rec.setOperateResult(operateResult);//瀹℃壒缁撴灉
+				rec.setOperateTime(DateUtil.now());
+				rec.setProcessInstanceId(processInstanceId);
+				rec.setUserId(AuthUtil.getUserId());
+				rec.setUserNickname(AuthUtil.getNickName());
+
+				save(rec);
+			}
+
+			//妫�鏌cprogram涓簄ull鐨勬暟鎹�
+			updateApproveRecords(processInstanceId);
+		}else{
+			//濡傛灉杩樻病鏈夊叧鑱旂殑绋嬪簭鏁版嵁锛屽垯鎻掑叆涓�涓猵rogramId涓簄ull鐨�
+			ApproveRecord rec = new ApproveRecord();
+			rec.setTaskName(task.getName());
+			rec.setProcessInstanceId(processInstanceId);
+			rec.setOperateResult(operateResult);
+			rec.setOperateTime(DateUtil.now());
+			rec.setNcProgramId(null);//绌虹殑绋嬪簭id
+			rec.setUserId(AuthUtil.getUserId());
+			rec.setUserNickname(AuthUtil.getNickName());
+
+			save(rec);
+		}
+	}
+
+	void updateApproveRecords(String processInstanceId) {
+		LambdaQueryWrapper<ProcessProgRef> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(ProcessProgRef::getProcessInstanceId, processInstanceId).isNull(ProcessProgRef::getNcProgramId);
+		List<ProcessProgRef> refList =  processProgRefService.list(queryWrapper);
+		if(refList.isEmpty()) {
+			return;
+		}
+		List<ApproveRecord> records = this.lambdaQuery().isNull(ApproveRecord::getNcProgramId).eq(ApproveRecord::getProcessInstanceId, processInstanceId).list();
+		if(records.isEmpty()) {
+			return;
+		}
+
+		for(ApproveRecord record:records) {
+
+			for(int j=0;j< refList.size();j++) {
+				ProcessProgRef refObj = refList.get(j);
+
+				ApproveRecord record2 = new ApproveRecord();
+				BeanUtils.copyProperties(record, record2);
+				record2.setNcProgramId(refObj.getNcProgramId());
+
+				if(j>0){
+					record2.setId(null);
+					save(record2);
+				}else{
+					updateById(record2);
+				}
+			}
+
+		}
+
+	}
 }

--
Gitblit v1.9.3