yangys
2025-08-07 a0881c9a8dbff2bf7f3e10255b998b9529c7aef3
优化代码
已添加1个文件
已修改7个文件
111 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java 4 ●●●● 补丁 | 查看 | 原始文档 | 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/NcProgramApprovedService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -51,13 +51,6 @@
    private final FlowProgramFileService flowProgramFileService;
    /**
     * å›ºåŒ–流程的key
     */
    private static final String PROCESS_KEY = "program-cure";
    @Transactional
    public void startCure(List<NcNode> programPackageList, Map<Long,List<NcNode>> allFlowProgramFiles) {
        //根据分组启动流程,并插入关联表
@@ -71,7 +64,7 @@
     * @param programPackage ç¨‹åºåŒ…名 èŠ‚ç‚¹å®žä½“
     */
    public void startOne(NcNode programPackage,List<NcNode> programNodes) {
        Map<String, Object> vars = null;
        Map<String, Object> vars = new HashMap<>();
        //该程序在计划任务时 èŽ·å–ç¼–åˆ¶ï¼Œæ ¡å¯¹ï¼Œå®¡æ‰¹çš„äººå‘˜ï¼Œä½œä¸ºé»˜è®¤ç”¨æˆ·ï¼Œå…¶ä¸­ç¼–åˆ¶æ—¶ç¬¬ä¸€ä¸ªå›ºå®šçš„ç”¨æˆ·
        if(programPackage.getProcessInstanceId() != null) {
            //获取审批用户
@@ -79,13 +72,21 @@
                .processInstanceId(programPackage.getProcessInstanceId()).includeProcessVariables()
                .singleResult();
            if(instance != null) {//使用任务派工流程的变量
                vars = new HashMap<>(instance.getProcessVariables());
                vars.remove("proessInstanceId");
                Map<String, Object> oldVars = instance.getProcessVariables();
                //机床编号
                vars.put(FlowContants.MACHINE_CODE,oldVars.get(FlowContants.MACHINE_CODE));
                //机床型号
                vars.put(FlowContants.MACHINE_MODE,oldVars.get(FlowContants.MACHINE_MODE));
                vars.put(FlowContants.PROCESS_NO,oldVars.get(FlowContants.PROCESS_NO));
                vars.put(FlowContants.PROCESS_NAME,oldVars.get(FlowContants.PROCESS_NAME));
                vars.put(FlowContants.PROCESS_EDITION,oldVars.get(FlowContants.PROCESS_EDITION));
                vars.put(FlowContants.CRAFT_EDITION, oldVars.get(FlowContants.CRAFT_EDITION));
                vars.put(FlowContants.DRAWING_NO,oldVars.get(FlowContants.DRAWING_NO));
                vars.put(FlowContants.DRAWING_NO_EDITION,oldVars.get(FlowContants.DRAWING_NO_EDITION));
                vars.put(FlowContants.PRODUCT_MODEL,oldVars.get(FlowContants.PRODUCT_MODEL));
            }
        }
        if(vars == null){
            vars = new HashMap<>();
        }
        //查找历史实际的审批人
@@ -100,7 +101,8 @@
        vars.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
        vars.put(FlowContants.TITLE,programPackage.getName()+"-固化");//自动增加标题
        ProcessInstance inst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
        ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.CURE_PROCESS_KEY,businessKey,vars);
        //更新程序包名节点的流程实例id
        programPackage.setProcessInstanceId(inst.getProcessInstanceId());
@@ -152,9 +154,10 @@
        }
        vars.put("programmer",programmer);
        vars.put("checker",checker);
        vars.put("senior",senior);
        vars.put(FlowContants.PROGRAMMER,programmer);
        vars.put(FlowContants.CHECKER,checker);
        vars.put(FlowContants.SENIOR,senior);
        vars.put(FlowContants.ASSIGNEE,programmer);
    }
    /**
     * å°†ç¨‹åºæŒ‰ç…§æœºå™¨ä»£ç åˆ†ç»„
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -15,6 +15,7 @@
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -68,6 +69,12 @@
        //移动到固化树下的机床节点下层
        String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
        //更新机床 ä¸‹å±žèŠ‚ç‚¹çš„æ•°æ® ä¸ºæ—§ç‰ˆæœ¬ï¼Œé”å®š(最新版本=0,lock=1)
        this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, newParentIds)
            .in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
            .set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
        for(NcNode hisNode : historyNodes){
            if(!hisNode.getId().equals(pkgNode.getId())){
                hisNode.setIsLastEdition(0);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -26,5 +26,6 @@
                and a.create_time &lt;= #{query.createTimeEnd}
            </if>
        </where>
        order by a.create_time desc
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -103,7 +103,7 @@
                    //目录,才是程序包,
                    //查询数据库,对应上才能确认时有效的程序包
                    String packageName = StringUtils.removeEnd(entryName,"/");
                    NcNode programPackageNode = ncNodeService.getLastEditionProgramPackage(packageName);
                    NcNode programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);
                    //List<NcNode> pkgList = ncNodeService.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNode::getName, packageName).eq(NcNode::getIsLastEdition,1).list();
                    //if(!pkgList.isEmpty()) {
                        //NcNode programPackageNode = pkgList.get(0);
@@ -180,7 +180,7 @@
            for(String dir : dirList){
                String programPackageName = StringUtils.removeEnd(dir,"/");
                NcNode oriProgramPkg = this.ncNodeService.getLastEditionProgramPackage(programPackageName);
                NcNode oriProgramPkg = this.ncNodeService.getLastEditionTryingProgramPackage(programPackageName);
                if(oriProgramPkg == null){
                    log.warn("文件夹未发现匹配的程序包名{}",dir);
                    continue;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -101,7 +101,6 @@
    public List<NcNodeVO> searchList(NcNodeQueryVO queryVO) {
        //1.根据关进字和节点类型查询初始列表,查询的原始列表,需要hasChild字段,所以使用mapper.xml
        List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO);
        //List<NcNode> list = this.lambdaQuery().eq(NcNode::getNodeType, queryVO.getNodeType()).like(NcNode::getName, queryVO.getName()).list();
        if ("10".equals(queryVO.getNodeType())) {
            //搜索的根级别,直接返回
            return oriList;
@@ -181,13 +180,14 @@
    }
    /**
     * èŽ·å–â€œç¨‹åºåŒ…åâ€çš„æœ€æ–°ç‰ˆæœ¬
     * èŽ·å–â€œç¨‹åºåŒ…åâ€è¯•åˆ‡çš„æœ€æ–°ç‰ˆæœ¬
     * @param name èŠ‚ç‚¹åç§°
     * @return æœ€æ–°ç‰ˆæœ¬ç¨‹åºæŠ¥åèŠ‚ç‚¹
     */
    public NcNode getLastEditionProgramPackage(String name){
    public NcNode getLastEditionTryingProgramPackage(String name){
        List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
            .eq(NcNode::getName, name).eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
            .eq(NcNode::getName, name).eq(NcNode::getIsCured,0).likeRight(NcNode::getParentIds,"0,1,")
            .eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
        if(pkgList.isEmpty()){
            return null;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
@@ -26,6 +26,7 @@
import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
import org.springblade.mdm.utils.CustomBinaryWriter;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -55,12 +56,9 @@
     * @param query æŸ¥è¯¢å‚æ•°
     * @return
     */
    @Transactional(readOnly = true)
    public IPage<NcProgramExportDncPageVO> exportDncPageQuery(NcProgramExportDncQueryVO query) {
        IPage<NcProgramExportDncPageVO> page = this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
        return page;
        return this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package org.springblade.mdm.test;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.service.NcNodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/test/")
@Tag(name = "测试", description = "测试")
public class MyTestController {
    @Autowired
    private NcNodeService service;
    /**
     * æ–°å¢ž
     */
    @GetMapping("/like")
    @Operation(summary = "like", description = "like")
    public R<Object> like() {
        try {
            List<NcNode> nodes = service.lambdaQuery()
                .likeRight(NcNode::getParentIds,"0,2,").list();
            return R.data(nodes);
        }catch (Exception e) {
            log.error("同步失败", e);;
            return R.fail(e.getMessage());
        }
    }
}
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -2,8 +2,7 @@
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
  <process id="program-cure" name="固化流程" isExecutable="true">
    <startEvent id="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7"/>
    <userTask id="cureProgramTask" name="固化编制" flowable:assignee="${programmer}"/>
    <userTask id="cureProgramTask" name="固化编制" flowable:assignee="${assignee}"/>
    <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="cureProgramTask"/>
    <endEvent id="end" name="固化结束"/>
    <userTask id="seniorApproveTask" name="高师审核" flowable:assignee="${assignee}"/>