From 4ab2cb495ccece311bbd8d0ecb992c7de0bc8500 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 22 七月 2025 11:43:10 +0800
Subject: [PATCH] 审批表打印

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java |   90 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 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..52732ab 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,20 @@
 
 package org.springblade.mdm.flow.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+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 +28,88 @@
 @Service
 @AllArgsConstructor
 public class ApproveRecordService extends BizServiceImpl<ApproveRecordMapper, ApproveRecord> {
-
+	private final ProcessProgRefService processProgRefService;
+	private final FlowCommonService flowCommonService;
 	public List<ApproveRecordVO> listByNcProgramId(Long ncProgramId) {
 		return this.getBaseMapper().listByNcProgramId(ncProgramId);
 	}
+
+	public void saveApproveRecords(Task task, String processInstanceId, String operateResult, String comment) {
+
+		String processDefinitionKey = flowCommonService.getDefinitionKey(processInstanceId);
+
+		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==null? StringUtils.EMPTY:comment);
+				rec.setNcProgramId(refObj.getNcProgramId());
+				rec.setOperateResult(operateResult);//瀹℃壒缁撴灉
+				rec.setOperateTime(DateUtil.now());
+				rec.setProcessInstanceId(processInstanceId);
+				rec.setProcessDefinitionKey(processDefinitionKey);
+				rec.setUserId(AuthUtil.getUserId());
+				rec.setUserNickname(AuthUtil.getNickName());
+
+				save(rec);
+			}
+
+			//妫�鏌cprogram涓簄ull鐨勬暟鎹�
+			updateApproveRecords(processInstanceId,refList);
+		}else{
+			//濡傛灉杩樻病鏈夊叧鑱旂殑绋嬪簭鏁版嵁锛屽垯鎻掑叆涓�涓猵rogramId涓簄ull鐨�
+			ApproveRecord rec = new ApproveRecord();
+			rec.setTaskName(task.getName());
+			rec.setTaskDefinitionId(task.getTaskDefinitionId());
+			;
+			rec.setComment(comment==null? StringUtils.EMPTY:comment);
+			rec.setProcessInstanceId(processInstanceId);
+			rec.setProcessDefinitionKey(processDefinitionKey);
+			rec.setOperateResult(operateResult);
+			rec.setOperateTime(DateUtil.now());
+			rec.setNcProgramId(null);//绌虹殑绋嬪簭id
+			rec.setUserId(AuthUtil.getUserId());
+			rec.setUserNickname(AuthUtil.getNickName());
+
+			save(rec);
+		}
+	}
+
+	/**
+	 * 鏇存柊浠ュ墠鏃犳枃浠舵椂鍊欑殑鏁版嵁銆�
+	 * @param processInstanceId
+	 */
+	void updateApproveRecords(String processInstanceId,List<ProcessProgRef> refList) {
+
+		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