yangys
2025-06-30 5db0642d9f3a75e21be27529cee060fa3bb91f48
流程与程序关联表插入数据
已修改5个文件
已添加7个文件
223 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package org.springblade.mdm.flow.excution;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.history.HistoricProcessInstance;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * æ´¾å·¥å®¡æ‰¹å®Œæˆæ‰§è¡Œçš„事件,功能:插入审批表数据
 */
@Slf4j
@Component("dispatchFinishListener")
public class DispatchFinishListener {
    @Autowired
    RuntimeService runtimeService;
    @Autowired
    ProcessProgRefService processProgRefService;
    @Autowired
    NcProgramApprovedService approvedService;
    public void handle(DelegateExecution execution) {
        String instId = execution.getProcessInstanceId();
        log.info("{},instid={}" , runtimeService,instId);
        //将关联表中的数据插入审批表
        LambdaQueryWrapper<ProcessProgRef> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(ProcessProgRef::getProcessInstanceId, instId);
        List<ProcessProgRef> reflist = processProgRefService.list(wrapper);
        for (ProcessProgRef ref : reflist) {
            NcProgramApproved approved = new NcProgramApproved();
            approved.setNcProgramId(ref.getNcProgramId());
            approvedService.save(approved);
        }
        // æ‰§è¡Œä¸šåŠ¡é€»è¾‘
        System.out.println("流程已完成");
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
@@ -1,13 +1,21 @@
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.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -21,11 +29,18 @@
@RestController
@RequestMapping("/program/exchange")
@AllArgsConstructor
@Tag(name = "导出DNC", description = "涉密网沉痼导出DNC")
@Tag(name = "导出DNC", description = "涉密网程序导出DNC")
@Slf4j
public class NcProgramExportDNCController {
    private final NcProgramService ncProgramService;
    private final NcProgramApprovedService ncProgramApprovedService;
    @Operation(summary = "程序导出DNC分页查询", description = "分页查询,供用户选择数据")
    @GetMapping("/export-dnc-page")
    public R<IPage<NcProgramExportDncPageVO>> page(NcProgramExportDncQueryVO query) {
        //IPage<NcProgramVO> pages = ncProgramService.pageQuery(query);
        return R.data(ncProgramApprovedService.exportDncPageQuery(query));
    }
    @PostMapping("/export-dnc")
    @Operation(summary = "数控程序导出dnc", description = "数控程序导出到工控网")
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
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_nc_program_approved")
public class NcProgramApproved extends BizEntity {
    /*
     * æ‰€å±žèŠ‚ç‚¹id,必须未“程序包名"的节点
     */
    private long ncProgramId;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
@@ -18,6 +18,6 @@
    /**
     * å¯¹è±¡å­˜å‚¨ä¸­çš„名称
     */
    private Long programId;
    private Long ncProgramId;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.springblade.mdm.program.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.mapper.BladeMapper;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.vo.*;
public interface NcProgramApprovedMapper extends BladeMapper<NcProgramApproved> {
    IPage<NcProgramExportDncPageVO> exportDncPageQuery(@Param("page")IPage<NcProgramExportDncPageVO> page, @Param("query") NcProgramExportDncQueryVO query);
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
<?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.NcProgramApprovedMapper">
    <resultMap id="BaseResultMap" type="org.springblade.mdm.program.entity.NcProgramApproved">
        <id column="id" property="id"/>
        <result column="status" property="status"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <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,a.create_time,p.process_name 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!=''">
                and p.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
            </if>
            <if test="query.passTimeBegin!=null">
                and a.create_time &gt;= #{query.passTimeBegin}
            </if>
            <if test="query.passTimeEnd!=null">
                and a.create_time &lt;= #{query.passTimeEnd}
            </if>
        </where>
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml
@@ -44,7 +44,7 @@
    </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
        select id,nc_node_id,name,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>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package org.springblade.mdm.program.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.mapper.NcProgramApprovedMapper;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
import org.springframework.stereotype.Service;
/**
 * ä¸‹å‘/回传程序统计
 *
 * @author yangys
 */
@Slf4j
@Service
@AllArgsConstructor
public class NcProgramApprovedService extends BizServiceImpl<NcProgramApprovedMapper, NcProgramApproved> {
    /**
     * åˆ†é¡µæŸ¥è¯¢
     * @param query æŸ¥è¯¢å‚æ•°
     * @return
     */
    public IPage<NcProgramExportDncPageVO> exportDncPageQuery(NcProgramExportDncQueryVO query) {
        IPage<NcProgramExportDncPageVO> page = this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
        return page;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
@@ -86,7 +86,7 @@
        for (Long programId : programIds) {
            ProcessProgRef entity = new ProcessProgRef();
            entity.setProcessInstanceId(processInstanceId);
            entity.setProgramId(programId);
            entity.setNcProgramId(programId);
            entities.add(entity);
        }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.springblade.mdm.program.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.mdm.commons.vo.BaseVO;
/**
 * NC程序VO
 */
@Setter
@Getter
public class NcProgramExportDncPageVO extends BaseVO {
    @Schema(description = "程序名称")
    private String name;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package org.springblade.mdm.program.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.support.Query;
import java.util.Date;
/**
 * åˆ†é¡µæ‹†çº¿å‘¢
 */
@Schema(description = "机床回传文件查询对象")
@Setter
@Getter
public class NcProgramExportDncQueryVO extends Query {
    @Schema(description = "程序名称")
    private String name;
    @Schema(description = "通过时间开始")
    private Date passTimeBegin;
    @Schema(description = "通过时间截止")
    private Date passTimeEnd;
}
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -7,7 +7,11 @@
    <userTask id="programmingTask" name="编制" flowable:assignee="${assignee}"/>
    <userTask id="check" name="校对" flowable:assignee="${assignee}"/>
    <userTask id="approveTask" name="高师审批" flowable:assignee="${assignee}"/>
    <endEvent id="approveEnd" name="审批完成"/>
    <endEvent id="approveEnd" name="审批完成">
      <extensionElements>
        <flowable:executionListener expression="${dispatchFinishListener.handle(execution)}" event="end"/>
      </extensionElements>
    </endEvent>
    <sequenceFlow id="programingToCheck" sourceRef="programmingTask" targetRef="check" name="编制完成给校对">
      <conditionExpression xsi:type="tFormalExpression">${approve=='Y'}</conditionExpression>
    </sequenceFlow>