yangys
2025-07-08 ccb7770bd95e4730f128b975b36c045ec611672f
调整审批记录的保存方式
已修改8个文件
已添加1个文件
94 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -4,6 +4,7 @@
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.TaskService;
@@ -17,6 +18,7 @@
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.excution.StartDispatcher;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.service.ProcessProgRefService;
@@ -32,19 +34,19 @@
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/flow/dispatch")
@Tag(name = "派工流程", description = "派工流程")
public class DispatchController {
    @Autowired
    private StartDispatcher dispatcher;
    @Autowired
    private TaskService taskService;
    @Autowired
    private ProcessProgRefService processProgRefService;
    private final StartDispatcher dispatcher;
    @Autowired
    private final TaskService taskService;
    private final ProcessProgRefService processProgRefService;
    private ApproveRecordService approveRecordService;
    private final FlowCommonService flowCommonService;
    /**
     * æ–°å¢ž
     */
@@ -98,9 +100,6 @@
            .taskId(taskId)
            .singleResult();
        approveRecordService.saveApproveRecords(task,processInstanceId,operateResult,comment);
        List<Long> programIdList = new ArrayList<>();
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
@@ -19,6 +19,11 @@
    private String processInstanceId;
    /**
     * æµç¨‹å®šä¹‰key
     */
    private String processDefinitionKey;
    /**
     * ä»»åŠ¡åç§°
     */
    private String taskName;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -33,7 +33,7 @@
    private final ProcessProgRefService processProgRefService;
    private final NcProgramService ncProgramService;
    private static final String PROCESS_KEY = "dispatch";
    public static final String PROCESS_KEY = "dispatch";
    /**
     * å¯åŠ¨æ´¾å·¥æµç¨‹
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
@@ -4,6 +4,7 @@
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;
@@ -28,11 +29,15 @@
@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);
@@ -40,11 +45,12 @@
            for (ProcessProgRef refObj : refList) {
                ApproveRecord rec = new ApproveRecord();
                rec.setTaskName(task.getName());
                rec.setComment(comment);
                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());
@@ -57,7 +63,9 @@
            //如果还没有关联的程序数据,则插入一个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
@@ -68,6 +76,10 @@
        }
    }
    /**
     * æ›´æ–°ä»¥å‰æ— æ–‡ä»¶æ—¶å€™çš„æ•°æ®ã€‚
     * @param processInstanceId
     */
    void updateApproveRecords(String processInstanceId) {
        LambdaQueryWrapper<ProcessProgRef> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ProcessProgRef::getProcessInstanceId, processInstanceId).isNull(ProcessProgRef::getNcProgramId);
@@ -89,10 +101,10 @@
                BeanUtils.copyProperties(record, record2);
                record2.setNcProgramId(refObj.getNcProgramId());
                if(j>0){
                if(j>0){//后续数据需要新增数据
                    record2.setId(null);
                    save(record2);
                }else{
                }else{//第一条是更新原纪录
                    updateById(record2);
                }
            }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.springblade.mdm.flow.service;
import lombok.AllArgsConstructor;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Service;
@AllArgsConstructor
@Service
public class FlowCommonService {
    private final RuntimeService runtimeService;
    /**
     * æ ¹æ®æµç¨‹å®žä¾‹id获取definitionKey
     * @param processInstanceId
     * @return
     */
    public String getDefinitionKey(String processInstanceId){
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
            .processInstanceId(processInstanceId)
            .singleResult();
        return processInstance.getProcessDefinitionKey();
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
@@ -23,4 +23,8 @@
     */
    private Long ncProgramId;
    /**
     * æµç¨‹å®šä¹‰key
     */
    private String processDefinitionKey;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -11,7 +11,7 @@
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="exportDncPageQuery" resultType="org.springblade.mdm.program.vo.NcProgramExportDncPageVO">
        select a.id,a.nc_program_id,p.name,p.nc_node_id,p.part_no,p.part_no_edition,p.process_name,a.create_time from mdm_nc_program_approved a inner join mdm_nc_program p on a.nc_program_id=p.id
        select a.id,a.nc_program_id,p.name,p.nc_node_id,p.drawing_no,p.drawing_no_edition,p.process_name,a.create_time from mdm_nc_program_approved a inner join mdm_nc_program p on a.nc_program_id=p.id
        where a.is_deleted=0
        <where>
            <if test="query.name!=null and query.name!=''">
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
@@ -37,6 +37,8 @@
import org.springblade.core.oss.model.BladeFile;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.flow.excution.StartDispatcher;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.ProcessProgRef;
@@ -69,7 +71,7 @@
@Service
@AllArgsConstructor
public class ProcessProgRefService extends BizServiceImpl<ProcessProgRefMapper, ProcessProgRef> {
    private final FlowCommonService flowCommonService;
    /**
     * æŸ¥è¯¢çŽ°æœ‰å›ºåŒ–çš„ç¨‹åºï¼Œæš‚å®šæ¡ä»¶ï¼šé›¶ç»„ä»¶å·ç›¸åŒï¼Œä¸”æ˜¯åŒä¸€æœºåºŠç»„
     * @param processInstanceId æµç¨‹å®žä¾‹id
@@ -82,13 +84,14 @@
            return;
        }
        String processDefinationKey = flowCommonService.getDefinitionKey(processInstanceId);
        this.lambdaUpdate().eq(ProcessProgRef::getProcessInstanceId, processInstanceId).remove();
        List<ProcessProgRef> entities = new ArrayList<>();
        for (Long programId : programIds) {
            ProcessProgRef entity = new ProcessProgRef();
            entity.setProcessInstanceId(processInstanceId);
            entity.setNcProgramId(programId);
            entity.setProcessDefinitionKey(processDefinationKey);
            entities.add(entity);
        }
        this.saveBatch(entities);
@@ -109,7 +112,8 @@
     */
    public ProcessProgRef lastDispatchDataByNcProgramId(Long ncProgramId) {
        LambdaQueryWrapper<ProcessProgRef> query = Wrappers.lambdaQuery();
        query.eq(ProcessProgRef::getNcProgramId, ncProgramId).orderByDesc(ProcessProgRef::getCreateTime).last("LIMIT 10");;
        query.eq(ProcessProgRef::getNcProgramId, ncProgramId).eq(ProcessProgRef::getProcessDefinitionKey, StartDispatcher.PROCESS_KEY).orderByDesc(ProcessProgRef::getCreateTime).last("LIMIT 1");;
        List<ProcessProgRef> list = this.list(query);
        return list.isEmpty() ? null : list.get(0);
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -11,18 +11,18 @@
      <conditionExpression>${approve=='Y'}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-504610fe-2b87-4df4-8f42-f10c8bf3ce01" sourceRef="seniorApproveTask" targetRef="cureOKOperateTask">
      <conditionExpression>${approve=='Y'</conditionExpression>
      <conditionExpression>${approve=='Y'}</conditionExpression>
    </sequenceFlow>
    <userTask id="cureCheckTask" name="固化校对" flowable:assignee="${assignee}"/>
    <sequenceFlow id="sid-b4ad2b36-5fcc-4449-924b-55b0425b1278" sourceRef="cureCheckTask" targetRef="cureProgramTask">
      <conditionExpression>${approve=='N'</conditionExpression>
      <conditionExpression>${approve=='N'}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-f626de1f-b668-49b8-bd06-6e8039abf2fc" sourceRef="cureCheckTask" targetRef="seniorApproveTask">
      <conditionExpression>${approve=='Y'</conditionExpression>
      <conditionExpression>${approve=='Y'}</conditionExpression>
    </sequenceFlow>
    <endEvent id="cureProgramingNoEnd" name="固化编制结束"/>
    <sequenceFlow id="sid-a3a0654d-e9fd-4814-a1bd-384dce8a3b7a" sourceRef="cureProgramTask" targetRef="cureProgramingNoEnd">
      <conditionExpression>${approve=='N'</conditionExpression>
      <conditionExpression>${approve=='N'}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-c04cc547-0baf-4514-8056-54b1612cdefd" sourceRef="seniorApproveTask" targetRef="cureCheckTask">
      <conditionExpression>${approve=='N'}</conditionExpression>