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));