yangys
2025-06-30 5f0956f6a5bf753d8e0c0e6a7c530c65af1edf82
流程与程序关联表插入数据
已修改10个文件
已添加4个文件
226 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/ProcessProgRefMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/ProcessProgRefMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/sql/mdm/mdm.mysql.all.create.sql 12 ●●●● 补丁 | 查看 | 原始文档 | 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.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.TaskService;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -12,6 +13,7 @@
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.mdm.flow.excution.StartDispatcher;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -30,7 +32,8 @@
    private StartDispatcher dispatcher;
    @Autowired
    private TaskService taskService;
    @Autowired
    private ProcessProgRefService processProgRefService;
    /**
     * æ–°å¢ž
     */
@@ -43,7 +46,7 @@
    @Operation(summary = "完成任务", description = "流向下一个节点")
    @PostMapping("completeTask")
    public R<Void> completeTask(String taskId, String processInstanceId, String comment, @Parameter(name = "variables", description = "任务变量") @RequestBody Map<String, Object> variables) {
    public R<Void> completeTask(String taskId, String processInstanceId, String comment,@Parameter(description = "对应的程序id,逗号分隔") String programIds, @Parameter(name = "variables", description = "任务变量") @RequestBody Map<String, Object> variables) {
        // å¢žåŠ è¯„è®º
        if (StringUtil.isNoneBlank(processInstanceId, comment)) {
            taskService.addComment(taskId, processInstanceId, comment);
@@ -52,6 +55,10 @@
        if (Func.isEmpty(variables)) {
            variables = Kv.create();
        }
        if(StringUtils.isNotEmpty(programIds)) {
            processProgRefService.addRelations(processInstanceId,Func.toLongList(programIds));
        }
        //加入审批用户
        variables.put("approveUserNickName",AuthUtil.getNickName());
        if(variables.containsKey("assignee")){
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -69,13 +69,13 @@
        return R.data(list);
    }
    /*
    @Operation(summary = "程序分页查询", description = "用于在编制节点选择流程对应的程序")
    @GetMapping("/programpickpage")
    public R<IPage<NcNodeProgramVO>> page(NcNodeProgramQueryVO query) {
        IPage<NcNodeProgramVO> pages = ncNodeService.programPageQuery(query);
        return R.data(pages);
    }
*/
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
@@ -1,6 +1,7 @@
package org.springblade.mdm.program.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -10,6 +11,7 @@
import org.springblade.core.tool.api.R;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramUploadVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import org.springframework.web.bind.annotation.*;
@@ -76,4 +78,11 @@
        ncProgramService.upgradeProcessEdition(id,newProcessEdition);
        return R.<Boolean>status(true);
    }
    @Operation(summary = "程序分页查询", description = "用于在编制节点选择流程对应的程序")
    @GetMapping("/programpickpage")
    public R<IPage<NcProgramVO>> page(NcNodeProgramQueryVO query) {
        IPage<NcProgramVO> pages = ncProgramService.pageQuery(query);
        return R.data(pages);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package org.springblade.mdm.program.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
import java.time.LocalDateTime;
@Setter
@Getter
@TableName("mdm_process_prog_ref")
public class ProcessProgRef extends BizEntity {
    /**
     * æ–‡ä»¶å
     */
    private String processInstanceId;
    /**
     * å¯¹è±¡å­˜å‚¨ä¸­çš„名称
     */
    private Long programId;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java
@@ -14,7 +14,7 @@
public interface NcNodeMapper extends BladeMapper<NcNode> {
    List<NcNodeVO> lazyList(Long parentId);
    IPage<NcNodeProgramVO> programPageQuery(@Param("page")IPage<NcNodeProgramVO> page, @Param("query") NcNodeProgramQueryVO query);
    /**
     * æ ¹æ®åç§°èŽ·å–æœ€æ–°çš„ç¨‹åºåŒ…èŠ‚ç‚¹
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
@@ -45,14 +45,7 @@
        parent_id = n.id and is_deleted = 0
        ) AS "has_children" from mdm_nc_node n where is_deleted=0 and parent_id=#{parentId}
    </select>
    <select id="programPageQuery" resultType="org.springblade.mdm.program.vo.NcNodeProgramVO">
        select id,parent_id,machine_code,drawing_no,drawing_no_edition,part_no,process_name,craft_edition from mdm_nc_node n
        <where>
            <if test="query.name!=null and query.name!=''">
                and n.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
            </if>
        </where>
    </select>
    <!--获取 æœ€æ–°ç‰ˆæœ¬çš„程序(即程序包名 èŠ‚ç‚¹ node_type=60)-->
    <select id="getLastProgramNode" resultType="org.springblade.mdm.program.entity.NcNode">
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java
@@ -8,6 +8,9 @@
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcNodeProgramVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import java.util.List;
@@ -21,10 +24,5 @@
     */
    List<NcProgram> getCuredNcProgram( @Param("partNo")String partNo,@Param("machineGroupCode")String machineGroupCode);
    /**
     * æ ¹æ®ç¨‹åºåç§°ï¼ŒèŽ·å–æœ€æ–°çš„ç¨‹åºå®žä½“
     * @param name ç¨‹åºåç§°
     * @return nc程序
     */
    //NcProgram getLastNcProgram(String name);
    IPage<NcProgramVO> pageQuery(@Param("page")IPage<NcNodeProgramVO> page, @Param("query") NcNodeProgramQueryVO query);
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml
@@ -42,6 +42,17 @@
        and machine_code in (select code from mdm_machine where machine_group_code=#{machineGroupCode})
        order by create_time desc
    </select>
    <select id="pageQuery" resultType="org.springblade.mdm.program.vo.NcProgramVO">
        select id,nc_node_id,machine_code,part_no,part_no_edition,process_name,craft_edition from mdm_nc_program p
        where is_deleted=0 and is_last_edition=1 and (category='program' or category='subprogram')
        <where>
            <if test="query.name!=null and query.name!=''">
                and p.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
            </if>
        </where>
    </select>
    <!--
    <select id="getLastNcProgram" resultType="org.springblade.mdm.program.entity.NcProgram">
        select <include refid="all_columns"/> from mdm_nc_program
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/ProcessProgRefMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package org.springblade.mdm.program.mapper;
import org.springblade.core.mp.mapper.BladeMapper;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.vo.NcNodeVO;
import java.util.List;
public interface ProcessProgRefMapper extends BladeMapper<ProcessProgRef> {
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/ProcessProgRefMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.mdm.program.mapper.ProcessProgRefMapper">
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -82,14 +82,6 @@
        return baseMapper.lazyList(parentId);
    }
    /**
     * ç¨‹åºèŠ‚ç‚¹
     * @param query
     * @return
     */
    public IPage<NcNodeProgramVO> programPageQuery(NcNodeProgramQueryVO query) {
        return this.getBaseMapper().programPageQuery(Condition.getPage(query),query);
    }
    /**
     * æŸ¥è¯¢çŽ°æœ‰å›ºåŒ–çš„ç¨‹åºï¼Œæš‚å®šæ¡ä»¶ï¼šé›¶ç»„ä»¶å·ç›¸åŒï¼Œä¸”æ˜¯åŒä¸€æœºåºŠç»„
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -25,6 +25,7 @@
 */
package org.springblade.mdm.program.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
@@ -32,6 +33,7 @@
import org.apache.commons.io.IOUtils;
import org.flowable.engine.*;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.mdm.basesetting.machine.MachineService;
@@ -42,6 +44,7 @@
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.mapper.ProgramSeqMapper;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramUploadVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import org.springblade.mdm.utils.FileContentUtil;
@@ -183,4 +186,13 @@
        this.save(newVerProg);
    }
    /**
     * åˆ†é¡µæŸ¥è¯¢ï¼Œç”¨äºŽå®¡æ‰¹æ—¶é€‰æ‹©ç¨‹åº
     * @param query
     * @return
     */
    public IPage<NcProgramVO> pageQuery(NcNodeProgramQueryVO query) {
        return this.getBaseMapper().pageQuery(Condition.getPage(query),query);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
/**
 * BladeX Commercial License Agreement
 * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
 * <p>
 * Use of this software is governed by the Commercial License Agreement
 * obtained after purchasing a license from BladeX.
 * <p>
 * 1. This software is for development use only under a valid license
 * from BladeX.
 * <p>
 * 2. Redistribution of this software's source code to any third party
 * without a commercial license is strictly prohibited.
 * <p>
 * 3. Licensees may copyright their own code but cannot use segments
 * from this software for such purposes. Copyright of this software
 * remains with BladeX.
 * <p>
 * Using this software signifies agreement to this License, and the software
 * must not be used for illegal purposes.
 * <p>
 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
 * not liable for any claims arising from secondary or illegal development.
 * <p>
 * Author: Chill Zhuang (bladejava@qq.com)
 */
package org.springblade.mdm.program.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.oss.OssTemplate;
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.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.entity.ProgramSeq;
import org.springblade.mdm.program.mapper.NcProgramMapper;
import org.springblade.mdm.program.mapper.ProcessProgRefMapper;
import org.springblade.mdm.program.mapper.ProgramSeqMapper;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramUploadVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import org.springblade.mdm.utils.FileContentUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
/**
 * å·¥ä½œæµæœåŠ¡å®žçŽ°ç±»
 *
 * @author Chill
 */
@Slf4j
@Service
@AllArgsConstructor
public class ProcessProgRefService extends BizServiceImpl<ProcessProgRefMapper, ProcessProgRef> {
    /**
     * æŸ¥è¯¢çŽ°æœ‰å›ºåŒ–çš„ç¨‹åºï¼Œæš‚å®šæ¡ä»¶ï¼šé›¶ç»„ä»¶å·ç›¸åŒï¼Œä¸”æ˜¯åŒä¸€æœºåºŠç»„
     * @param processInstanceId æµç¨‹å®žä¾‹id
     * @param programIds ç¨‹åºid
     * @return
     */
    @Transactional
    public void addRelations(String processInstanceId, List<Long> programIds) {
        if(programIds == null || programIds.isEmpty()) {
            return;
        }
        this.lambdaUpdate().eq(ProcessProgRef::getProcessInstanceId, processInstanceId).remove();
        List<ProcessProgRef> entities = new ArrayList<>();
        for (Long programId : programIds) {
            ProcessProgRef entity = new ProcessProgRef();
            entity.setProcessInstanceId(processInstanceId);
            entity.setProgramId(programId);
            entities.add(entity);
        }
        this.saveBatch(entities);
    }
}
doc/sql/mdm/mdm.mysql.all.create.sql
@@ -87,12 +87,12 @@
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='程序节点目录';
/**流程实例与节点关联表,记录创建时机:用户在程序编制节点手动关联*/
DROP TABLE IF EXISTS `mdm_process_node_ref`;
CREATE TABLE `mdm_process_node_ref` (
DROP TABLE IF EXISTS `mdm_process_prog_ref`;
CREATE TABLE `mdm_process_prog_ref` (
  `id` bigint NOT NULL,
  `tenant_id` varchar(6) DEFAULT NULL COMMENT '所属租户',
  `nc_node_id` bigint DEFAULT NULL COMMENT '节点id,对应 ç¨‹åºåŒ…名 èŠ‚ç‚¹id',
  `process_instance_id` varchar(100) NOT NULL COMMENT '流程实例id',
  `process_instance_id` varchar(64) NOT NULL COMMENT '流程实例id',
  `nc_program_id` bigint DEFAULT NULL COMMENT '数控程序id',
  `status` int DEFAULT NULL COMMENT '业务状态',
  `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
  `is_deleted` int DEFAULT NULL,
@@ -101,14 +101,14 @@
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `update_user` bigint DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程实例与节点关联表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='流程实例与程序关联表';
DROP TABLE IF EXISTS `mdm_nc_program`;
CREATE TABLE `mdm_nc_program` (
  `id` bigint NOT NULL,
  `tenant_id` varchar(6) DEFAULT NULL COMMENT '所属租户',
  `nc_node_id` bigint DEFAULT NULL COMMENT '所属节点id,应该属于某个数控程序节点',
  `code` varchar(100) NOT NULL COMMENT '程序编号',
  `code` varchar(100) NULL COMMENT '程序编号',
  `name` varchar(100) NOT NULL COMMENT '程序名称',
  `oss_name` varchar(100) NULL COMMENT 'oss中的文件名',
  `category` varchar(2) NULL COMMENT '文件分类',