44fda5fa3787c78e74d62f9713dd36abdeadcac8..0ecd5acd3b9f320a487c68df2ea6234b4dacb12c
2 天以前 yangys
增加流程查询接口
0ecd5a 对比 | 目录
2 天以前 yangys
上传接口调整
d9919b 对比 | 目录
已修改7个文件
197 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/sql/mdm/mdm.mysql.all.create.sql 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -8,6 +8,7 @@
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.history.HistoricTaskInstance;
@@ -43,7 +44,8 @@
    @Autowired
    private HistoryService historyService;
    @Autowired
    private RuntimeService runtimeService;
    @GetMapping("overtime-list")
    @ApiOperationSupport(order = 3)
@@ -94,5 +96,25 @@
        return R.data(result);
    }
    @GetMapping("search-list")
    @ApiOperationSupport(order = 3)
    @Operation(summary = "流程查询", description = "查询进行中的所有流程")
    public R<IPage<FlowVO>> overtimeList(@Parameter(description = "任务到达时间开始") LocalDate createTimeBegin, @Parameter(description = "任务到达时间截止")LocalDate createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) {
        IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword);
        return R.data(pages);
    }
    @PostMapping("delete-instance")
    @Operation(summary = "流程删除", description = "删除id指定的流程实例")
    public R<Void> deleteInstance(@Parameter(description = "任务到达时间开始") String processInstancesId) {
        try {
            runtimeService.deleteProcessInstance(processInstancesId, "流程查询-删除");
        } catch (Exception e) {
            log.error("删除流程失败",e);
            return R.fail(e.getMessage());
        }
        return R.success();
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -419,4 +419,44 @@
        page.setRecords(flowList);
        return page;
    }
    /**
     * 流程查询 功能 的分页
     * @param page
     * @param createTimeBegin
     * @param createTimeEnd
     * @param assigneeName
     * @param keyword
     * @return
     */
    public IPage<FlowVO> selectSearchPage(IPage<FlowVO> page, LocalDate createTimeBegin, LocalDate createTimeEnd, String keyword) {
        List<FlowVO> flowList = new LinkedList<>();
        Date now = new Date();
        TaskQuery taskQuery = taskService.createTaskQuery().active().includeProcessVariables();
        if(Func.isNotEmpty(createTimeBegin)) {
            taskQuery.taskCreatedAfter(DateUtil.toDate(createTimeBegin));
        }
        if(Func.isNotEmpty(createTimeEnd)) {
            taskQuery.taskCreatedBefore(DateUtil.toDate(createTimeEnd.plusDays(1)));
        }
        addKeywordCondition(taskQuery, keyword);
        taskQuery.orderByTaskCreateTime().desc();
        // 构建列表数据
        FlowVO bladeFlow = new FlowVO();
        buildFlowTaskList(bladeFlow, flowList, taskQuery);//FlowEngineConstant.STATUS_TODO
        // 计算总数
        long count = taskQuery.count();
        // 设置页数
        page.setSize(count);
        // 设置总数
        page.setTotal(count);
        // 设置数据
        page.setRecords(flowList);
        return page;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
@@ -141,6 +141,12 @@
        return R.data(approveRecordService.listByNcProgramId(ncProgramId));
    }
    @GetMapping("/history-by-bindnodeid")
    @Operation(summary = "根据绑定节点id获取历史列表", description = "程序历史列表,仅‘程序包’字典值70的数据。用于显示程序的‘历史版本’")
    public R<List<NcProgramVO>> historyByBindNodeId(@Parameter(description="节点ID(nodeType=70的节点id)")@RequestParam Long bindNodeId) {
        return R.data(ncProgramService.historyByBindNode(bindNodeId));
    }
    /*
    @PostMapping("/send")
    @Operation(summary = "程序下发", description = "工控网数控程序下发(发送到机床配置的下发目录),根据id")
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
@@ -64,4 +64,22 @@
    }
    @PostMapping("/export-approve-table")
    @Operation(summary = "导出审批表", description = "导出审批表excel")
    public void exportApproveTaable(@RequestBody @Parameter(description = "审批表id数组") IdsVO vo, HttpServletResponse response) {
        if(vo.getIds() == null || vo.getIds().length == 0) {
            throw new ServiceException("未选择文件导出");
        }
        try {
            String filename = "todncexp-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
            response.setHeader("Content-Disposition", "attachment; filename="+filename);
            response.setContentType("application/octet-stream");
            ncProgramExportDNCService.exportDnc(vo.getIds(),response.getOutputStream());
        } catch (IOException e) {
            log.error("导出DNC异常", e);
            throw new RuntimeException(e);
        }
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java
@@ -103,6 +103,23 @@
                            log.warn("文件名无法匹配到数控程序,{}",filePath);
                            return;
                        }
                        //保存文件到css,避免后续不同部署节点拿不到文件
                        String ossName;
                        String url;
                        try(FileInputStream fins = new FileInputStream(filePath.toFile());){
                            BladeFile bfile = ossTemplate.putFile(programName, fins);
                            ossName = bfile.getName();
                            url = bfile.getLink();
                        }
                        prog.setOssName(ossName);
                        prog.setUrl(url);
                        //TODO,是否删除原来的文件?
                        ncProgramService.updateById(prog);
                        cureFlowService.startOne(prog);//启动一个程序的固化流程
                        /*
                        DncBackFile backFile = new DncBackFile();
                        backFile.setNcProgramId(prog.getId());
                        //保存文件到css,避免后续不同部署节点拿不到文件
@@ -112,6 +129,8 @@
                            backFile.setUrl(bfile.getLink());
                        }
                        dncBackFileService.save(backFile);
                         */
                    }else{
                        log.warn("文件传输中,后续再操作:{}",filePath);
                    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -364,4 +364,21 @@
        return this.count(wrapper)>0;
    }
    /**
     * 显示程序的历史记录列表
     * @param bindNodeId
     * @return
     */
    public List<NcProgramVO> historyByBindNode(Long bindNodeId) {
        NcProgram program = this.getByBindNodeId(bindNodeId);
        List<NcProgram> list = this.lambdaQuery().eq(NcProgram::getName,program.getName())
            .eq(NcProgram::getNcNodeId,program.getNcNodeId()).orderByDesc(NcProgram::getCreateTime).list();
        return list.stream().map(p -> {
            NcProgramVO vo = new NcProgramVO();
            BeanUtils.copyProperties(p,vo);
            return vo;}).toList();
    }
}
doc/sql/mdm/mdm.mysql.all.create.sql
@@ -89,24 +89,6 @@
   PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='程序节点目录';
/**流程实例与节点关联表,记录创建时机:用户在程序编制节点手动关联*/
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 '所属租户',
  `process_instance_id` varchar(64) NOT NULL COMMENT '流程实例id',
  `nc_program_id` bigint DEFAULT NULL COMMENT '数控程序id',
  `process_definition_key` varchar(100) DEFAULT NULL COMMENT '流程定义key',
  `status` int DEFAULT NULL COMMENT '业务状态',
  `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
  `is_deleted` int DEFAULT NULL,
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `create_user` bigint DEFAULT NULL COMMENT '创建人',
  `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='流程实例与程序关联表';
DROP TABLE IF EXISTS `mdm_nc_program`;
CREATE TABLE `mdm_nc_program` (
  `id` bigint NOT NULL,
@@ -132,6 +114,7 @@
  `is_last_edition` int NOT NULL COMMENT '是否最新版次,1:最新版次;0:历史版次,主要取该字段=1的数据,0是历史版次',
  `is_locked` int DEFAULT NULL COMMENT '锁定状态,1:锁定;0:正常',
  `is_test` int DEFAULT NULL COMMENT '是否测试程序,1:是;0:否',
  `version_number` int DEFAULT NULL COMMENT '版本号',
  `task_assign_time` datetime DEFAULT NULL COMMENT '程序的任务下发的时间(用于检查是否为重复的任务)',
  `status` int DEFAULT NULL COMMENT '业务状态',
  `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
@@ -142,6 +125,25 @@
  `update_user` bigint DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数控程序';
/**流程实例与数控程序关联表,记录创建时机:用户在程序编制节点手动关联*/
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 '所属租户',
    `process_instance_id` varchar(64) NOT NULL COMMENT '流程实例id',
    `nc_program_id` bigint DEFAULT NULL COMMENT '数控程序id',
    `process_definition_key` varchar(100) DEFAULT NULL COMMENT '流程定义key',
    `status` int DEFAULT NULL COMMENT '业务状态',
    `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
    `is_deleted` int DEFAULT NULL,
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `create_user` bigint DEFAULT NULL COMMENT '创建人',
    `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='流程实例与程序关联表';
/**
  流程审批记录表,审批过程中记录
@@ -204,16 +206,13 @@
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数控程序交换记录';
DROP TABLE IF EXISTS `mdm_machine_back_file`;
CREATE TABLE `mdm_machine_back_file` (
    `id` bigint NOT NULL,
    `tenant_id` varchar(6) DEFAULT NULL COMMENT '所属租户',
    `program_id` bigint NOT NULL COMMENT '程序编码',
    `machine_code` varchar(100) DEFAULT NULL COMMENT '所属机床代码',
    `nc_program_id` bigint NOT NULL COMMENT '程序编码',
    `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
    `oss_name` varchar(100) NULL COMMENT 'oss中的文件名',
    `status` int DEFAULT NULL COMMENT '业务状态',
    `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
    `is_deleted` int DEFAULT NULL,
@@ -226,3 +225,31 @@
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='机床回传文件';
DROP TABLE IF EXISTS `mdm_dnc_back_file`;
CREATE TABLE `mdm_dnc_back_file` (
     `id` bigint NOT NULL,
     `tenant_id` varchar(6) DEFAULT NULL COMMENT '所属租户',
     `nc_program_id` bigint NOT NULL COMMENT '程序编码',
     `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
     `oss_name` varchar(100) NULL COMMENT 'oss中的文件名',
     `url` varchar(400) NOT NULL COMMENT '文件地址',
     `status` int DEFAULT NULL COMMENT '业务状态',
     `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
     `is_deleted` int DEFAULT NULL,
     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
     `create_user` bigint DEFAULT NULL COMMENT '创建人',
     `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='机床回传文件';
DROP TABLE IF EXISTS `mdm_file_locks`;
CREATE TABLE `mdm_file_locks` (
     `lock_id` int NOT NULL COMMENT '锁定id,固定1',
     `locked_by` varchar(100)  DEFAULT NULL COMMENT '锁定id',
     `lock_time` datetime DEFAULT NULL COMMENT '锁定时间',
     PRIMARY KEY (`lock_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='文件监控锁定表';