yangys
2025-07-08 ffd5abc74eea1f6ee6433ac11e401aaa57bcc4ab
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,86 @@
@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);
         }
         //检查ncprogram为null的数据
         updateApproveRecords(processInstanceId,refList);
      }else{
         //如果还没有关联的程序数据,则插入一个programId为null的
         ApproveRecord rec = new ApproveRecord();
         rec.setTaskName(task.getName());
         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);
            }
         }
      }
   }
}