yangys
2025-09-04 86079d1c2bd7981165487e6e08d2399b80687f6e
工控网导出使用实际编程人匹配
已修改6个文件
149 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
@@ -27,5 +27,7 @@
     */
    private String roleId;
    private String deptId;
    private transient boolean manager = false;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
@@ -1,18 +1,24 @@
package org.springblade.mdm.basesetting.producedivision.service;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
import org.springblade.mdm.basesetting.producedivision.entity.MdmRole;
import org.springblade.mdm.basesetting.producedivision.entity.MdmUser;
import org.springblade.mdm.basesetting.producedivision.mapper.MdmUserMapper;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@Service
public class MdmUserService extends ServiceImpl<MdmUserMapper, MdmUser> {
@@ -20,6 +26,8 @@
    private ParamService paramService;
    @Autowired
    private MdmRoleService roleService;
    @Autowired
    private MdmDeptService deptService;
    public Long getUserIdByName(String name) {
        List<MdmUser> users = this.lambdaQuery().eq(MdmUser::getName, name).eq(MdmUser::getStatus, 1).orderByDesc(MdmUser::getCreateTime).list();
        Long userId = null;
@@ -30,6 +38,10 @@
        return userId;
    }
    /**
     * 所有审批用户列表
     * @return
     */
    public List<MdmUser> listByDeptAndRoleAlias() {
        List<String> approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),',');
        List<MdmUser> approveUserList = userListByRoleAlias(approveRoleAliasList);
@@ -55,4 +67,45 @@
        return userList;
    }
    /**
     * 审批用户树
     * @return 根节点列表
     */
    public List<ProgramNodeVO> flowUserTree() {
        List<ProgramNodeVO> rootNodeVOS = new ArrayList<>();
        List<MdmUser> users = listByDeptAndRoleAlias();
        Map<String,List<MdmUser>> userMap = users.stream().collect(Collectors.groupingBy(MdmUser::getDeptId));
        List<Long> deptIds = new ArrayList<>();
        userMap.keySet().stream().forEach(deptId -> {
            deptIds.addAll(Func.toLongList(deptId));
        });
        List<MdmDept> deptList = deptService.lambdaQuery().in(MdmDept::getId,deptIds).list();
        for(MdmDept dept : deptList) {
            String strDeptId = String.valueOf(dept.getId());
            ProgramNodeVO deptNode = new ProgramNodeVO();
            deptNode.setId(strDeptId);
            deptNode.setName(dept.getDeptName());
            deptNode.setNodeType("dept");
            deptNode.setChildren(new ArrayList<>());
            userMap.forEach((k, usersInDept) -> {
                if(k.contains(strDeptId)){
                    for(MdmUser u : usersInDept) {
                        ProgramNodeVO userNode = new ProgramNodeVO();
                        userNode.setId(String.valueOf(u.getId()));
                        userNode.setName(u.getName());
                        userNode.setNodeType("user");
                        deptNode.getChildren().add(userNode);
                    }
                }
            });
            rootNodeVOS.add(deptNode);
        }
        return rootNodeVOS;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -19,6 +19,7 @@
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowTransferService;
import org.springblade.mdm.flow.vo.FlowVO;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
import org.springblade.system.feign.IUserSearchClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
@@ -105,16 +106,22 @@
    }
    /**
     * 待办任务列表页
     * 处理人下拉数据
     */
    @GetMapping("flow-user-list")
    @ApiOperationSupport(order = 3)
    @Operation(summary = "用户下拉数据", description = "用户下拉数据")
    @Operation(summary = "处理人下拉数据", description = "处理人下拉数据")
    public R<List<MdmUser>> flowUserList(@Parameter(description = "部门ID") String deptId, String taskId) {
        return R.data(mdmUserService.listByDeptAndRoleAlias());
    }
    @GetMapping("flow-user-tree")
    @ApiOperationSupport(order = 3)
    @Operation(summary = "处理人下拉数据-树形", description = "处理人下拉数据")
    public R<List<ProgramNodeVO>> flowUserTree(@Parameter(description = "部门ID") String deptId, String taskId) {
        return R.data(mdmUserService.flowUserTree());
    }
    /**
     * 上一步审批人查询
     */
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -38,7 +38,6 @@
     */
    public void handleData(FlowProgramProperties props) {
        // 执行业务逻辑
        String instId = props.getProcessInstanceId();
        NcNode packageNode;
        if(FlowContants.Y.equals(props.getHasCuredProgram())){
            //有固化
@@ -124,7 +123,7 @@
        approved.setProgramName(packageNode.getName());
        approved.setNcNodeId(packageNode.getId());//程序包节点id
        approved.setTitle(props.getTitle());
        approved.setProgrammerId(props.getProgrammerId());
        approved.setProgrammerId(props.getActProgrammerId());
        approved.setProcessInstanceId(props.getProcessInstanceId());
        approvedService.save(approved);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -14,6 +14,7 @@
import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.constants.FlowVariableContants;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.service.NodeDeptQueryService;
import org.springblade.system.feign.IUserClient;
@@ -56,40 +57,7 @@
        Map<String, Object> vars = runtimeService.getVariables(processInstanceId);
        this.copyFlowPropertiesFromMap(programProperties, vars);
        /*
        programProperties.setTitle(String.valueOf(vars.get(FlowContants.TITLE)));
        programProperties.setIsTempFlow(Func.toStr(vars.get(FlowContants.IS_TEMP_FLOW)));
        programProperties.setDrawingNo(String.valueOf(vars.get(FlowContants.DRAWING_NO)));
        programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowContants.DRAWING_NO_EDITION)));
        programProperties.setProductModel(String.valueOf(vars.get(FlowContants.PRODUCT_MODEL)));
        programProperties.setProcessNo(String.valueOf(vars.get(FlowContants.PROCESS_NO)));
        programProperties.setProcessEdition(String.valueOf(vars.get(FlowContants.PROCESS_EDITION)));//工序版次
        programProperties.setProcessName(String.valueOf(vars.get(FlowContants.PROCESS_NAME)));
        programProperties.setMachineCode(String.valueOf(vars.get(FlowContants.MACHINE_CODE)));
        programProperties.setMachineMode(String.valueOf(vars.get(FlowContants.MACHINE_MODE)));
        //数据处理名称为版次以前,零件号加工序号:YZL4-1100-01-50 零组件号:YZL4-1100-01 工序号 50
        programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION)));
        programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowContants.HAS_CURED_PROGRAM)));
        programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowContants.IS_PROCESS_EDITION_SAME)));
        if(vars.containsKey(FlowContants.DEVIATION)) {
            programProperties.setDeviation(String.valueOf(vars.get(FlowContants.DEVIATION)));
        }
        if(vars.containsKey(FlowContants.CURED_NODE_ID)){
            programProperties.setCuredNodeId(Func.toLong(vars.get(FlowContants.CURED_NODE_ID)));
        }
        if(vars.containsKey(FlowContants.NODE_ID)){
            programProperties.setNodeId(Func.toLong(vars.get(FlowContants.NODE_ID)));
        }
        programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowContants.CURE_PROGRAM_USEABLE)));
        programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowContants.TEAM_LEADER)));
        programProperties.setProgrammerId(Func.toLong(vars.get(FlowContants.PROGRAMMER)));
        programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER)));
        programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR)));
        */
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
            .processInstanceId(processInstanceId)
            .singleResult();
@@ -107,40 +75,7 @@
        Map<String, Object> vars =historicInstance.getProcessVariables();
        this.copyFlowPropertiesFromMap(programProperties,vars);
        /*
        programProperties.setTitle(String.valueOf(vars.get(FlowContants.TITLE)));
        programProperties.setIsTempFlow(Func.toStr(vars.get(FlowContants.IS_TEMP_FLOW)));
        programProperties.setDrawingNo(String.valueOf(vars.get(FlowContants.DRAWING_NO)));
        programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowContants.DRAWING_NO_EDITION)));
        programProperties.setProductModel(String.valueOf(vars.get(FlowContants.PRODUCT_MODEL)));
        programProperties.setProcessNo(String.valueOf(vars.get(FlowContants.PROCESS_NO)));
        programProperties.setProcessEdition(String.valueOf(vars.get(FlowContants.PROCESS_EDITION)));//工序版次
        programProperties.setProcessName(String.valueOf(vars.get(FlowContants.PROCESS_NAME)));
        programProperties.setMachineCode(String.valueOf(vars.get(FlowContants.MACHINE_CODE)));
        programProperties.setMachineMode(String.valueOf(vars.get(FlowContants.MACHINE_MODE)));
        //数据处理名称为版次以前,零件号加工序号:YZL4-1100-01-50 零组件号:YZL4-1100-01 工序号 50
        programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION)));
        programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowContants.HAS_CURED_PROGRAM)));
        programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowContants.IS_PROCESS_EDITION_SAME)));
        if(vars.containsKey(FlowContants.DEVIATION)) {
            programProperties.setDeviation(String.valueOf(vars.get(FlowContants.DEVIATION)));
        }
        if(vars.containsKey(FlowContants.CURED_NODE_ID)){
            programProperties.setCuredNodeId(Func.toLong(vars.get(FlowContants.CURED_NODE_ID)));
        }
        if(vars.containsKey(FlowContants.NODE_ID)){
            programProperties.setNodeId(Func.toLong(vars.get(FlowContants.NODE_ID)));
        }
        programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowContants.CURE_PROGRAM_USEABLE)));
        programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowContants.TEAM_LEADER)));
        programProperties.setProgrammerId(Func.toLong(vars.get(FlowContants.PROGRAMMER)));
        programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER)));
        programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR)));
        */
        programProperties.setProcessDefinitionKey(historicInstance.getProcessDefinitionKey());
        return programProperties;
    }
@@ -180,6 +115,7 @@
        programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER)));
        programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR)));
        programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableContants.ACT_PROGRAMMER)));
    }
    /**
     * 流程是否在进行
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -67,12 +67,16 @@
    @Schema(description = "专业组长id")
    private Long teamLeaderId;
    @Schema(description = "编程员id")
    @Schema(description = "默认编程员id")
    private Long programmerId;
    @Schema(description = "校对员id")
    @Schema(description = "默认校对员id")
    private Long checkerId;
    @Schema(description = "审核高师ID")
    @Schema(description = "默认审核高师ID")
    private Long seniorId;
    @Schema(description = "实际编程员id")
    private Long actProgrammerId;
    @Schema(description = "是否临时流程:Y/N")
    private String isTempFlow;
}