yangys
2025-08-09 86947cb8428af1a322bb59961f567296fdfaad93
机床按机构查询功能开发
已修改13个文件
155 ■■■■ 文件已修改
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/mapper/MachineMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/vo/MachineQueryVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
@@ -26,8 +26,10 @@
package org.springblade.system.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.system.pojo.entity.*;
import org.springblade.system.pojo.vo.DeptVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -53,6 +55,7 @@
    String DEPT_NAME = API_PREFIX + "/dept-name";
    String DEPT_NAMES = API_PREFIX + "/dept-names";
    String DEPT_CHILD = API_PREFIX + "/dept-child";
    String DEPT_TREE = API_PREFIX + "/dept-tree";
    String POST = API_PREFIX + "/post";
    String POST_IDS = API_PREFIX + "/post-ids";
    String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
@@ -89,6 +92,8 @@
    @GetMapping(DEPT)
    R<Dept> getDept(@RequestParam("id") Long id);
    @GetMapping(DEPT_TREE)
    R<List<DeptVO>> deptTree(String tenantId);
    /**
     * 获取部门id
     *
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
@@ -27,6 +27,7 @@
import org.springblade.core.tool.api.R;
import org.springblade.system.pojo.entity.*;
import org.springblade.system.pojo.vo.DeptVO;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -50,6 +51,11 @@
    }
    @Override
    public R<List<DeptVO>> deptTree(String tenantId) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<String> getDeptIds(String tenantId, String deptNames) {
        return R.fail("获取数据失败");
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/MachineService.java
@@ -5,6 +5,7 @@
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.entity.Machine;
@@ -12,6 +13,9 @@
import org.springblade.mdm.basesetting.machine.vo.MachineQueryVO;
import org.springblade.mdm.basesetting.machine.vo.MachineSaveVO;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.pojo.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -23,7 +27,8 @@
@Service
public class MachineService extends BizServiceImpl<MachineMapper, Machine> {
    @Autowired
    private ISysClient sysClient;
    @Transactional
    public void saveMachine(MachineSaveVO vo){
        checkMachine(vo);
@@ -105,12 +110,14 @@
     */
    public IPage<MachineVO> pageQuery(MachineQueryVO query) {
        LambdaQueryWrapper<Machine> queryWrapper = new LambdaQueryWrapper<>();
        //queryWrapper.eq(query.getMachineGroupCode()!=null, Machine::getMachineGroupCode, query.getMachineGroupCode());
        //String keys = query.getKeyword();
        if (query.getDeptId() != null) {
            R<Dept> rs = sysClient.getDept(query.getDeptId());
            if(rs.isSuccess()){
                query.setDeptAncestors(rs.getData().getAncestors()+","+rs.getData().getId());
            }
        }
        IPage<MachineVO> page = this.getBaseMapper().pageQuery(Condition.getPage(query), query);
        //queryWrapper.and(StringUtils.isNotEmpty(keys), wrapper -> wrapper.like(Machine::getCode, keys).or().like(Machine::getName, keys));
        IPage<MachineVO> page = this.getBaseMapper().pageQuery(Condition.getPage(query),query);
        return page;
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/mapper/MachineMapper.xml
@@ -24,6 +24,9 @@
        <if test="query.keyword!=null and query.keyword!=''">
            and (m.code like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%') or m.name like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%'))
        </if>
        <if test="query.deptId!=null">
            and (m.owner_dept=${query.deptId} or m.owner_dept in (select id from blade_dept where ancestors like CONCAT(#{query.deptAncestors},'%')))
        </if>
        order by m.update_time desc,m.code asc
    </select>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/vo/MachineQueryVO.java
@@ -17,5 +17,8 @@
    private String keyword;
    @Schema(description = "机床组code")
    private String machineGroupCode;
    @Schema(description = "机构id")
    private Long deptId;
    @Schema(description = "机构父节点")
    private String deptAncestors;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -70,6 +70,11 @@
     * 是否有固化程序
     */
    public static final String HAS_CURED_PROGRAM = "hasCuredProgram";
    /**
     * 固化程序包名的id
     */
    public static final String CURED_NODE_ID = "curedNodeId";
    /**
     * 工序名称
     */
@@ -84,6 +89,8 @@
     */
    public static final String IS_PROCESS_EDITION_SAME = "isProcessEditionSame";
    /**
     * 是否在有效期内的key
     */
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
@@ -9,7 +9,9 @@
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.FlowProgramProperties;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeService;
@@ -33,7 +35,8 @@
    private ApproveRecordService approveRecordService;
    @Autowired
    private FlowProgramFileService flowProgramFileService;
    @Autowired
    private FlowCommonService flowCommonService;
    @Autowired
    private NcNodeService ncNodeService;
    /**
@@ -45,23 +48,32 @@
        String instId = execution.getProcessInstanceId();
        log.info("事件名称{},instid={}" , execution.getEventName(),instId);
        updateFlowProgramFile(instId);
        //将关联表中的数据插入审批表
        NcNode packageNode = ncNodeService.getByProcessInstanceId(instId);
        updateApproveRecordNodeId(packageNode);
        //execution.getEventName()
        //NcNode packageNode = ncNodeService.getByProcessInstanceId(instId);
        FlowProgramProperties props = flowCommonService.getProgramProperties(instId);
        String programName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
        NcNode packageNode = ncNodeService.getProgramPackageByName(programName);
        addApproveTable(packageNode);
        updateApproveRecordNodeId(instId,packageNode.getId());
        log.info("流程已完成in DispatchFinishListener");
    }
    void updateFlowProgramFile(String instId){
        List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
        if(!programFiles.isEmpty()) {
            FlowProgramFile pf = programFiles.get(0);
    //void updateFlowProgramFile(String instId){
    void addApproveTable(NcNode packageNode){
        //List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
        //if(!programFiles.isEmpty()) {
            //FlowProgramFile pf = programFiles.get(0);
            NcProgramApproved approved = new NcProgramApproved();
            approved.setProgramName(pf.getProgramName());
            //approved.setProgramName(pf.getProgramName());
            approved.setProgramName(packageNode.getName());
            approved.setNcNodeId(packageNode.getId());//程序包节点id
            approvedService.save(approved);
            /*
            NcNode pkgNode = ncNodeService.getProgramPackageByName(pf.getProgramName());
            if(pkgNode!=null) {
                approved.setNcNodeId(pkgNode.getId());//程序包节点id
@@ -71,13 +83,14 @@
            }
        }else{
            log.warn("没有程序文件");
        }
        }*/
    }
    void updateApproveRecordNodeId(NcNode pkgNode){
    void updateApproveRecordNodeId(String processInstanceId,Long nodeId){
        //更新审批记录的ncNodeId
        approveRecordService.lambdaUpdate()
            .eq(ApproveRecord::getProcessInstanceId, pkgNode.getProcessInstanceId())
            .set(ApproveRecord::getNcNodeId,pkgNode.getId()).update();
            .eq(ApproveRecord::getProcessInstanceId, processInstanceId)
            .set(ApproveRecord::getNcNodeId,nodeId).update();
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -39,7 +39,7 @@
    /**
     * 启动派工流程
     * @param startVO
     * @param startVO 表单数据
     * @return 流程实例id
     */
    @Transactional
@@ -67,13 +67,14 @@
        String programPkgName = NcNodeService.genProgramName(startVO.getDrawingNo(),startVO.getProcessNo());
        NcNode programPkg = ncNodeService.getLastEditionCuredProgramPackage(programPkgName);
        NcNode curedProgramPackage = ncNodeService.getLastEditionCuredProgramPackage(programPkgName);
        //设置是否有固化程序标记
        vars.put(FlowContants.HAS_CURED_PROGRAM,programPkg != null ? FlowContants.Y:FlowContants.N);
        vars.put(FlowContants.HAS_CURED_PROGRAM,curedProgramPackage != null ? FlowContants.Y:FlowContants.N);
        //工序版次是否一致,是否在有效期内
        if(programPkg != null){
            vars.put(FlowContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(programPkg.getProcessEdition(),startVO.getProcessEdition()) ? "Y":"N");
            vars.put(FlowContants.VALIDITY_PERIOD, programPkg.withinValidityPeriod() ? FlowContants.Y:FlowContants.N);
        if(curedProgramPackage != null){
            vars.put(FlowContants.CURED_NODE_ID,curedProgramPackage.getId());
            vars.put(FlowContants.IS_PROCESS_EDITION_SAME, StringUtils.equals(curedProgramPackage.getProcessEdition(),startVO.getProcessEdition()) ? "Y":"N");
            vars.put(FlowContants.VALIDITY_PERIOD, curedProgramPackage.withinValidityPeriod() ? FlowContants.Y:FlowContants.N);
        }else{
            vars.put(FlowContants.IS_PROCESS_EDITION_SAME, FlowContants.Y);
            vars.put(FlowContants.VALIDITY_PERIOD, FlowContants.Y);
@@ -83,12 +84,8 @@
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
        if(programPkg != null) {//存在已固化程序,复制原来的程序文件。创建节点仍然在编程人员提交以后
            //programPkg.setIsLastEdition(0);
            //this.ncNodeService.updateById(programPkg);
            //cloneNodes(programPkg,inst.getProcessInstanceId());
            copyFlowProgramFiles(programPkg.getProcessInstanceId(),inst.getProcessInstanceId());
        if(curedProgramPackage != null) {//存在已固化程序,复制原来的程序文件。创建节点仍然在编程人员提交以后
            copyFlowProgramFiles(curedProgramPackage.getProcessInstanceId(),inst.getProcessInstanceId());
        }
        return inst.getProcessInstanceId();
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java
@@ -7,12 +7,14 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.pojo.entity.Dept;
import org.springblade.system.pojo.entity.Dict;
import org.springblade.system.pojo.vo.DeptVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -49,6 +51,18 @@
    }
    @GetMapping("/dept/tree")
    @ApiOperationSupport(order = 2)
    @Operation(summary = "部门树")
    public R<List<DeptVO>> deptTree(BladeUser bladeUser) {
        try {
            return sysClient.deptTree(bladeUser.getTenantId());
        }catch (Exception e){
            return R.fail(e.getMessage());
        }
    }
    @Operation(summary = "字典列表")
    @GetMapping("/dict/dictionary")
    public R<List<Dict>> dictionary(@Parameter(description = "字典编码") String code) {
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
@@ -33,7 +33,7 @@
@RestController
@RequestMapping("/program/exchange")
@AllArgsConstructor
@Tag(name = "导出DNC", description = "涉密网程序导出DNC")
@Tag(name = "导出工控网", description = "涉密网程序导出给工控网")
@Slf4j
public class NcProgramExportDNCController {
@@ -53,7 +53,7 @@
            throw new ServiceException("未选择文件导出");
        }
        try {
            String filename = "todncexp-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
            String filename = "programexp-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
            response.setHeader("Content-Disposition", "attachment; filename="+filename);
            response.setContentType("application/octet-stream");
            ncProgramExportDNCService.exportDnc(vo.getIds(),response.getOutputStream());
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -44,12 +44,15 @@
    <sequenceFlow id="sid-d4133565-1a45-4bb6-b603-9b9e4db1cdbb" sourceRef="approveTask" targetRef="check">
      <conditionExpression>${approve=='N'}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-80b50f96-7601-4ba2-8c32-968923170d25" sourceRef="confirmIsUseableTask" targetRef="programmingTask">
    <sequenceFlow id="sid-80b50f96-7601-4ba2-8c32-968923170d25" sourceRef="confirmIsUseableTask" targetRef="programmingTask" name="不可用">
      <conditionExpression>${approve=='N'}</conditionExpression>
    </sequenceFlow>
    <endEvent id="sid-59124fa5-62ee-4ba5-8bd9-cafc65aa5fcf" name="组长结束"/>
    <sequenceFlow id="sid-1ef405f8-c119-4225-b41c-fb0aa978e42c" sourceRef="teamLeaderTask" targetRef="sid-59124fa5-62ee-4ba5-8bd9-cafc65aa5fcf">
      <conditionExpression>${approve=='N'}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-b33e5cdc-e56b-4a8f-8956-2a3bb4f7e57a" sourceRef="confirmIsUseableTask" targetRef="teamLeaderTask" name="驳回">
      <conditionExpression>${approve=='R'}</conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_dispatch">
@@ -127,6 +130,10 @@
        <omgdi:waypoint x="-262.5" y="-76.25001"/>
        <omgdi:waypoint x="-297.5" y="-35.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-d08bab4f-6549-4732-9791-7be8d3fcbbfe" bpmnElement="sid-b33e5cdc-e56b-4a8f-8956-2a3bb4f7e57a">
        <omgdi:waypoint x="-107.5" y="37.500004"/>
        <omgdi:waypoint x="-210.0" y="-60.000008"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
@@ -109,7 +109,7 @@
    /**
     * 懒加载列表
     */
    @PreAuth(menu = "dept")
    //@PreAuth(menu = "dept")
    @GetMapping("/lazy-list")
    @Parameters({
        @Parameter(name = "deptName", description = "部门名称", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@@ -125,7 +125,7 @@
    /**
     * 获取部门树形结构
     */
    @PreAuth(menu = "dept")
    //@PreAuth(menu = "dept")
    @GetMapping("/tree")
    @ApiOperationSupport(order = 4)
    @Operation(summary = "树形结构", description = "树形结构")
@@ -137,7 +137,7 @@
    /**
     * 懒加载获取部门树形结构
     */
    @PreAuth(menu = "dept")
    //@PreAuth(menu = "dept")
    @GetMapping("/lazy-tree")
    @ApiOperationSupport(order = 5)
    @Operation(summary = "懒加载树形结构", description = "树形结构")
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
@@ -25,10 +25,15 @@
 */
package org.springblade.system.feign;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import lombok.AllArgsConstructor;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.pojo.entity.*;
import org.springblade.system.pojo.vo.DeptVO;
import org.springblade.system.service.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -79,7 +84,11 @@
    public R<String> getDeptIds(String tenantId, String deptNames) {
        return R.data(deptService.getDeptIds(tenantId, deptNames));
    }
    @Override
    public R<List<DeptVO>> deptTree(String tenantId) {
        List<DeptVO> tree = deptService.tree(tenantId);
        return R.data(tree);
    }
    @Override
    public R<String> getDeptIdsByFuzzy(String tenantId, String deptNames) {
        return R.data(deptService.getDeptIdsByFuzzy(tenantId, deptNames));