| | |
| | | |
| | | 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; |
| | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |