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