yangys
2025-08-22 95e63522959ff8c21381ee2a5dc85b9d44cf2949
补充流程fix
已重命名1个文件
已修改5个文件
116 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -11,6 +11,10 @@
    public static final String TRY_PROCESS_KEY = "dispatch";
    /**
     * ç¨‹åºè¡¥å……流程KEY
     */
    public static final String APPEND_PROCESS_KEY = "program-append";
    /**
     * å›ºåŒ–流程KEY
     */
    public static final String CURE_PROCESS_KEY = "program-cure";
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -56,7 +56,7 @@
        Map<String, Object> vars = new HashMap<>();
        ProduceDivision div = flowCommonService.putDefaultAssignees(vars,startVO.getDrawingNo(),null);
        vars.put(FlowContants.ASSIGNEE,div.getTeamLeaderId());//第一个用户组长
        vars.put(FlowContants.TITLE,startVO.getTitle());
        //机床编号
@@ -116,11 +116,16 @@
        String businessKey = "0";//业务表key
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
        ProcessInstance inst;
        if(startVO.isTemporaryFlow()){
            vars.put(FlowContants.ASSIGNEE,div.getProgrammerId());//第一个用户编制上传文件
            inst = runtimeService.startProcessInstanceByKey(FlowContants.APPEND_PROCESS_KEY,businessKey,vars);
        }else{
            vars.put(FlowContants.ASSIGNEE,div.getTeamLeaderId());//第一个用户组长
            inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
        }
        if(curedProgramPackage != null) {//存在已固化程序,复制原来的程序文件。
            copyFlowProgramFiles(curedProgramPackage.getId(),inst.getProcessInstanceId());
            curedProgramPackage.setProcessInstanceId(inst.getProcessInstanceId());
            ncNodeService.updateById(curedProgramPackage);
        }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
ÎļþÃû´Ó blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/TempFinishDataHandler.java ÐÞ¸Ä
@@ -1,19 +1,14 @@
package org.springblade.mdm.flow.excution.dispatch;
package org.springblade.mdm.flow.excution.append;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.FlowProgramProperties;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeAutoCreateService;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.utils.EntityUtil;
@@ -24,40 +19,47 @@
import java.util.List;
/**
 * ä¸´æ—¶æ´¾å·¥å®¡æ‰¹é€šè¿‡æ‰§è¡Œçš„事件,功能:建立临时节点,插入审批完成记录
 * ç¨‹åºè¡¥å……流程(临时流程) å®¡æ‰¹é€šè¿‡æ‰§è¡Œçš„事件
 */
@Slf4j
@Component("tempDispatchFinishDataHandler")
public class TempFinishDataHandler  implements FinishDataHandler{
    @Autowired
    private NcProgramApprovedService approvedService;
@Component("appendFinishListener")
public class AppendFinishListener {
    @Autowired
    private FlowProgramFileService flowProgramFileService;
    @Autowired
    private NcProgramApprovedService approvedService;
    @Autowired
    private FlowCommonService flowCommonService;
    @Autowired
    private NcNodeService ncNodeService;
    /**
     * åœ¨æµç¨‹ç»“束时自动调用,由
     * @param props æµç¨‹å±žæ€§
     * åœ¨æµç¨‹ç»“束时自动调用,(配置在审批结束事件的executelistener中了)
     * @param execution æ‰§è¡Œå¯¹è±¡
     */
    public void handleData(FlowProgramProperties props ) {
    public void handle(DelegateExecution execution) {
        // æ‰§è¡Œä¸šåŠ¡é€»è¾‘
        String instId = execution.getProcessInstanceId();
        log.info("事件名称{},instid={}" , execution.getEventName(),instId);
        FlowProgramProperties props = flowCommonService.getProgramProperties(instId);
        String programName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
        //临时流程,不处理树,只处理文件.由于导出是基于节点的,这里创建临时节点,不在树立展示
        //临时流程,不处理树,只处理文件
        NcNode tempPkgNode = new NcNode();
        tempPkgNode.setNodeType(NcNode.TYPE_PROGRAM_PACKAGE);
        tempPkgNode.setIsLastEdition(0);
        tempPkgNode.setIsLastEdition(1);
        tempPkgNode.setProcessNo(props.getProcessNo());
        tempPkgNode.setMachineCode(props.getMachineCode());
        tempPkgNode.setProcessName(props.getProcessName());
        tempPkgNode.setProcessEdition(props.getProcessEdition());
        tempPkgNode.setDrawingNoEdition(props.getDrawingNoEdition());
        tempPkgNode.setName(programName);
        tempPkgNode.setParentIds("0,4");
        tempPkgNode.setIsLocked(0);
        tempPkgNode.setCraftEdition(props.getCraftEdition());
        tempPkgNode.setDrawingNo(props.getDrawingNo());
        tempPkgNode.setProcessInstanceId(props.getProcessInstanceId());
        tempPkgNode.setProcessInstanceId(instId);
        ncNodeService.save(tempPkgNode);
        List<FlowProgramFile> newFlowFileList = flowProgramFileService.listByProcessInstanceId(props.getProcessInstanceId());
@@ -68,19 +70,18 @@
            tempProgramNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
            tempProgramNode.setName(newFlowFile.getName());
            BeanUtils.copyProperties(tempPkgNode,tempProgramNode);
            tempProgramNode.setParentId(tempPkgNode.getId());
            tempProgramNode.setIsLastEdition(1);//导出时需要使用最新节点
            tempProgramNode.setParentIds(tempPkgNode.getParentIds()+","+tempPkgNode.getId());
            tempProgramNode.setProcessInstanceId(props.getProcessInstanceId());
            tempProgramNode.setFlowProgramFileId(newFlowFile.getId());
            ncNodeService.save(tempProgramNode);
        }
        addApproveTable(tempPkgNode,props);
        log.info("流程已完成in DispatchFinishListener");
    }
        addApproveTable(tempPkgNode,props);
        log.info("程序补充流程已完成in AppendFinishListener");
    }
    /**
     * ä¿å­˜å®¡æ‰¹å®Œæˆçš„记录
@@ -97,5 +98,4 @@
        approvedService.save(approved);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DataHandlerHelper.java
@@ -9,8 +9,7 @@
public class DataHandlerHelper {
    @Autowired
    private NormalFinishDataHandler normalFinishDataHandler;
    @Autowired
    private TempFinishDataHandler tempFinishDataHandler;
    /**
     * æ ¹æ®æµç¨‹å±žæ€§ï¼ŒèŽ·å–æ•°æ®å¤„ç†å™¨
@@ -18,10 +17,6 @@
     * @return
     */
    public FinishDataHandler getDataHandler(FlowProgramProperties props){
        if(FlowContants.Y.equals(props.getIsTempFlow())){
            return normalFinishDataHandler;
        }else {
            return normalFinishDataHandler;
        }
        return normalFinishDataHandler;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java
@@ -59,46 +59,7 @@
        FinishDataHandler dataHandler = dataHandlerHelper.getDataHandler(props);
        dataHandler.handleData(props);
        /*
        String programName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
        if(FlowContants.N.equals(props.getIsTempFlow())) {
            createProgramNodes(props);
            //TODO åç¦»å•,和已经固化的程序,没有处理
            NcNode packageNode = ncNodeService.getProgramPackageByName(programName);
            addApproveTable(packageNode,props);
            updateApproveRecordNodeId(instId, packageNode.getId());
        }else{
            //临时流程,不处理树,只处理文件
            NcNode tempPkgNode = new NcNode();
            tempPkgNode.setNodeType(NcNode.TYPE_PROGRAM_PACKAGE);
            tempPkgNode.setIsLastEdition(0);
            tempPkgNode.setProcessNo(props.getProcessNo());
            tempPkgNode.setMachineCode(props.getMachineCode());
            tempPkgNode.setProcessName(props.getProcessName());
            tempPkgNode.setProcessEdition(props.getProcessEdition());
            tempPkgNode.setName(programName);
            tempPkgNode.setParentIds("0,4");
            tempPkgNode.setIsLocked(0);
            tempPkgNode.setCraftEdition(props.getCraftEdition());
            tempPkgNode.setDrawingNo(props.getDrawingNo());
            ncNodeService.save(tempPkgNode);
            List<FlowProgramFile> newFlowFileList = flowProgramFileService.listByProcessInstanceId(props.getProcessInstanceId());
            for(FlowProgramFile newFlowFile : newFlowFileList) {
                NcNode tempProgramNode = new NcNode();
                tempProgramNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
                tempProgramNode.setName(newFlowFile.getName());
                BeanUtils.copyProperties(tempPkgNode,tempProgramNode);
                tempProgramNode.setParentId(tempPkgNode.getId());
                tempProgramNode.setParentIds(tempPkgNode.getParentIds()+","+tempPkgNode.getId());
                tempProgramNode.setProcessInstanceId(props.getProcessInstanceId());
                tempProgramNode.setFlowProgramFileId(newFlowFile.getId());
            }
        }
        */
        log.info("流程已完成in DispatchFinishListener");
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
@@ -120,8 +120,9 @@
            <if test="status != null and status != ''">
               and
                (
                1=1
                <if test='status.contains("1")'>
                    n.parent_ids LIKE '0,1,%'
                   or n.parent_ids LIKE '0,1,%'
                </if>
                <if test='status.contains("2")'>
                    or n.parent_ids LIKE '0,2,%'