blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/ProduceDivisionMapper.xml
@@ -15,10 +15,11 @@ </resultMap>--> <select id="pageQuery" resultType="org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionViewVO"> select p.id,p.team_leader_id,p.programmer_id,p.checker_id,p.senior_id,l.name team_leader_name,pro.name programmer_name,c.name checker_name,s.name seniorName from mdm_produce_plan p join blade_user l on p.team_leader_id=l.id and l.is_deleted=0 from mdm_produce_division p join blade_user l on p.team_leader_id=l.id and l.is_deleted=0 join blade_user pro on p.programmer_id=pro.id and pro.is_deleted=0 join blade_user c on p.checker_id=c.id and c.is_deleted=0 join blade_user s on p.senior_id=s.id and c.is_deleted=0 where p.is_deleted=0 <if test="name != null and name != ''"> AND (l.account like concat('%',#{name,jdbcType=VARCHAR},'%') or l.name like concat('%',#{name,jdbcType=VARCHAR},'%') blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -51,8 +51,14 @@ if (Func.isEmpty(variables)) { variables = Kv.create(); } // å®æä»»å¡ taskService.complete(taskId, variables); return R.success("æµç¨æäº¤æå"); if(variables.containsKey("assignee")){ //æå®äºä¸ä¸æ¥æ§è¡äºº taskService.complete(taskId, variables); return R.success("æµç¨æäº¤æå"); }else { // 宿任å¡,ç»é»è®¤ç¨æ· return R.fail("请æå®æµç¨ä¸ä¸æ¥å¤ç人"); } } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -5,24 +5,27 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.TaskService; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.flow.core.pojo.entity.BladeFlow; import org.springblade.core.tool.utils.DateUtil; import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO; import org.springblade.mdm.flow.service.FlowBusinessService; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.flow.vo.OvertimeTaskExcelVO; import org.springblade.mdm.flow.vo.TaskTraceVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @Slf4j @RestController @@ -34,16 +37,34 @@ @Autowired private FlowBusinessService businessService; /** * å¾ åä»»å¡å表页 */ @GetMapping("overtime-list") @ApiOperationSupport(order = 3) @Operation(summary = "è¶ æ¶æ¥è¯¢", description = "æ¥è¯¢ææè¶ æ¶ä»»å¡") public R<IPage<BladeFlow>> overtimeList(@Parameter(description = "ä»»å¡å°è¾¾æ¶é´å¼å§") LocalDate createTimeBegin, @Parameter(description = "ä»»å¡å°è¾¾æ¶é´æªæ¢")LocalDate createTimeEnd, @Parameter(description = "æ§è¡äººå") String assigneeName, @Parameter(description = "å ³é®å") String keyword, Query query) { IPage<BladeFlow> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword); public R<IPage<FlowVO>> overtimeList(@Parameter(description = "ä»»å¡å°è¾¾æ¶é´å¼å§") LocalDate createTimeBegin, @Parameter(description = "ä»»å¡å°è¾¾æ¶é´æªæ¢")LocalDate createTimeEnd, @Parameter(description = "æ§è¡äººå") String assigneeName, @Parameter(description = "å ³é®å") String keyword, Query query) { IPage<FlowVO> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword); return R.data(pages); } @GetMapping("overtime-export") @ApiOperationSupport(order = 3) @Operation(summary = "è¶ æ¶å¯¼åº", description = "è¶ æ¶ä»»å¡å¯¼åº") public void overtimeExport(@Parameter(description = "ä»»å¡å°è¾¾æ¶é´å¼å§") LocalDate createTimeBegin, @Parameter(description = "ä»»å¡å°è¾¾æ¶é´æªæ¢")LocalDate createTimeEnd, @Parameter(description = "æ§è¡äººå") String assigneeName, @Parameter(description = "å ³é®å") String keyword, Query query, HttpServletResponse response) { query.setCurrent(1); query.setSize(Integer.MAX_VALUE); IPage<FlowVO> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword); List<OvertimeTaskExcelVO> list = new ArrayList<>(); pages.getRecords().forEach(data ->{ //data.get OvertimeTaskExcelVO excelVO = new OvertimeTaskExcelVO(); BeanUtils.copyProperties(data, excelVO); list.add(excelVO); }); ExcelUtil.export(response, "è¶ æ¶ä»»å¡" + DateUtil.time(), "è¶ æ¶ä»»å¡è¡¨", list, OvertimeTaskExcelVO.class); } @GetMapping("process-trace") public R<List<TaskTraceVO>> processTrace(long processInstanceId){ blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -13,10 +13,8 @@ import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.flow.core.pojo.entity.BladeFlow; import org.springblade.mdm.flow.excution.StartDispatcher; import org.springblade.mdm.flow.service.FlowBusinessService; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.flow.vo.FlowVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -39,8 +37,8 @@ @GetMapping("todo-list") @ApiOperationSupport(order = 3) @Operation(summary = "å¾ åä»»å¡", description = "ä¼ å ¥æµç¨ä¿¡æ¯") public R<IPage<BladeFlow>> todoList(@Parameter(description = "å ³é®å") String keyword, @Parameter(description = "å建æ¶é´å¼å§") LocalDate createTimeBegin, @Parameter(description = "å建æ¶é´æªæ¢") LocalDate createTimeEnd, Query query) { IPage<BladeFlow> pages = businessService.selectTodoPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword); public R<IPage<FlowVO>> todoList(@Parameter(description = "å ³é®å") String keyword, @Parameter(description = "å建æ¶é´å¼å§") LocalDate createTimeBegin, @Parameter(description = "å建æ¶é´æªæ¢") LocalDate createTimeEnd, Query query) { IPage<FlowVO> pages = businessService.selectTodoPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword); return R.data(pages); } @@ -50,8 +48,8 @@ @GetMapping("alltask-list") @ApiOperationSupport(order = 3) @Operation(summary = "ææä»»å¡ï¼fortestï¼", description = "ä¼ å ¥æµç¨ä¿¡æ¯") public R<IPage<BladeFlow>> alltaskList(@Parameter(description = "å ³é®å") String keyword,LocalDate createTimeBegin,LocalDate createTimeEnd, Query query) { IPage<BladeFlow> pages = businessService.selectAllTaskPage(Condition.getPage(query), keyword); public R<IPage<FlowVO>> alltaskList(@Parameter(description = "å ³é®å") String keyword, LocalDate createTimeBegin, LocalDate createTimeEnd, Query query) { IPage<FlowVO> pages = businessService.selectAllTaskPage(Condition.getPage(query), keyword); return R.data(pages); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -1,28 +1,4 @@ /** * BladeX Commercial License Agreement * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. * <p> * Use of this software is governed by the Commercial License Agreement * obtained after purchasing a license from BladeX. * <p> * 1. This software is for development use only under a valid license * from BladeX. * <p> * 2. Redistribution of this software's source code to any third party * without a commercial license is strictly prohibited. * <p> * 3. Licensees may copyright their own code but cannot use segments * from this software for such purposes. Copyright of this software * remains with BladeX. * <p> * Using this software signifies agreement to this License, and the software * must not be used for illegal purposes. * <p> * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is * not liable for any claims arising from secondary or illegal development. * <p> * Author: Chill Zhuang (bladejava@qq.com) */ package org.springblade.mdm.flow.service; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -30,27 +6,20 @@ import org.flowable.engine.HistoryService; import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.*; import org.springblade.flow.core.constant.ProcessConstant; import org.springblade.flow.core.pojo.entity.BladeFlow; import org.springblade.flow.core.utils.TaskUtil; import org.springblade.mdm.flow.entity.MdmFlowProcess; import org.springblade.mdm.flow.util.MdmFlowCache; import org.springblade.mdm.flow.vo.FlowVO; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * æµç¨ä¸å¡å®ç°ç±» @@ -65,49 +34,29 @@ private final HistoryService historyService; public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, LocalDate createTimeBegin,LocalDate createTimeEnd, String keyword) { public IPage<FlowVO> selectTodoPage(IPage<FlowVO> page, LocalDate createTimeBegin, LocalDate createTimeEnd, String keyword) { //String taskUser = TaskUtil.getTaskUser(); String userId = ""+AuthUtil.getUserId(); List<BladeFlow> flowList = new LinkedList<>(); String userId = "" + AuthUtil.getUserId(); List<FlowVO> flowList = new LinkedList<>(); TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(userId).active().includeProcessVariables(); if(Func.isNotEmpty(createTimeBegin)){ if (Func.isNotEmpty(createTimeBegin)) { todoQuery.taskCreatedAfter(DateUtil.toDate(createTimeBegin)); //妿æ¥è¯¢å®ä¾çå¼å§æ¶é´ï¼todoQuery.taskInProgressStartDueAfter() } if(Func.isNotEmpty(createTimeEnd)){ if (Func.isNotEmpty(createTimeEnd)) { todoQuery.taskCreatedBefore(DateUtil.toDate(createTimeEnd)); } if(Func.isNotEmpty(keyword)){ todoQuery.or(); todoQuery.processVariableValueLike("processNo",keyword); todoQuery.processVariableValueLike("machineCode",keyword); todoQuery.processVariableValueLike("machineMode",keyword); todoQuery.processVariableValueLike("processName",keyword); todoQuery.processVariableValueLike("processEdition",keyword); todoQuery.processVariableValueLike("craftEdition",keyword); //TODO å¤ä¸ªå段é½è¦å¹é todoQuery.endOr(); if (Func.isNotEmpty(keyword)) { addKeywordCondition(todoQuery, keyword); } todoQuery.orderByTaskCreateTime().desc(); //List<Task> listt = todoQuery.list(); // å·²ç¾æ¶çä»»å¡.caseVariableValueLike("processNo",keyword) /* TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(userId).active() .includeProcessVariables().orderByTaskCreateTime().desc(); */ // æå»ºåè¡¨æ°æ® BladeFlow bladeFlow = new BladeFlow(); buildFlowTaskList(bladeFlow, flowList, todoQuery, "todo");//FlowEngineConstant.STATUS_TODO FlowVO bladeFlow = new FlowVO(); buildFlowTaskList(bladeFlow, flowList, todoQuery);//FlowEngineConstant.STATUS_TODO , "todo" // è®¡ç®æ»æ° long count = todoQuery.count(); @@ -118,6 +67,21 @@ // è®¾ç½®æ°æ® page.setRecords(flowList); return page; } void addKeywordCondition(TaskQuery todoQuery,String keyword) { if(Func.isNotEmpty(keyword)) { todoQuery.or(); todoQuery.processVariableValueLike("processNo", "%" + keyword + "%"); todoQuery.processVariableValueLike("machineCode", "%" + keyword + "%"); todoQuery.processVariableValueLike("machineMode", "%" + keyword + "%"); todoQuery.processVariableValueLike("processName", "%" + keyword + "%"); todoQuery.processVariableValueLike("processEdition", "%" + keyword + "%"); todoQuery.processVariableValueLike("craftEdition", "%" + keyword + "%"); todoQuery.endOr(); } } /* @Override @@ -258,25 +222,6 @@ return page; } @Override public boolean completeTask(BladeFlow flow) { String taskId = flow.getTaskId(); String processInstanceId = flow.getProcessInstanceId(); String comment = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT); // å¢å è¯è®º if (StringUtil.isNoneBlank(processInstanceId, comment)) { taskService.addComment(taskId, processInstanceId, comment); } // å建åé Map<String, Object> variables = flow.getVariables(); if (variables == null) { variables = Kv.create(); } variables.put(ProcessConstant.PASS_KEY, flow.isPass()); // å®æä»»å¡ taskService.complete(taskId, variables); return true; } */ /** * æå»ºæµç¨ @@ -284,9 +229,8 @@ * @param bladeFlow æµç¨éç¨ç±» * @param flowList æµç¨å表 * @param taskQuery 任塿¥è¯¢ç±» * @param status ç¶æ */ private void buildFlowTaskList(BladeFlow bladeFlow, List<BladeFlow> flowList, TaskQuery taskQuery, String status) { private void buildFlowTaskList(FlowVO bladeFlow, List<FlowVO> flowList, TaskQuery taskQuery) { if (bladeFlow.getCategory() != null) { taskQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory())); } @@ -301,7 +245,7 @@ } List<Task> tasks = taskQuery.list(); tasks.forEach(task -> { BladeFlow flow = new BladeFlow(); FlowVO flow = new FlowVO(); flow.setTaskId(task.getId()); flow.setTaskDefinitionKey(task.getTaskDefinitionKey()); flow.setTaskName(task.getName()); @@ -310,20 +254,15 @@ flow.setClaimTime(task.getClaimTime()); flow.setExecutionId(task.getExecutionId()); flow.setVariables(task.getProcessVariables()); flow.setDueDate(task.getDueDate()); flow.setProcessDefinitionId(task.getProcessDefinitionId()); //flow.setProcessDefinitionName(task.getprocessd); //flow.setProcessDefinitionKey(processDefinition.getKey()); //flow.setProcessDefinitionVersion(processDefinition.getVersion()); flow.setProcessInstanceId(task.getProcessInstanceId()); /* HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId()); if (Func.isNotEmpty(historicProcessInstance)) { String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); flow.setBusinessTable(businessKey[0]); flow.setBusinessId(businessKey[1]); }*/ MdmFlowProcess processDefinition = MdmFlowCache.getProcessDefinition(task.getProcessDefinitionId()); @@ -335,8 +274,7 @@ flow.setProcessDefinitionVersion(processDefinition.getVersion()); flow.setProcessInstanceId(task.getProcessInstanceId()); //flow.setStatus(status); /* */ flowList.add(flow); }); } @@ -351,33 +289,20 @@ return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); } public IPage<BladeFlow> selectAllTaskPage(IPage<BladeFlow> page, String keyword) { public IPage<FlowVO> selectAllTaskPage(IPage<FlowVO> page, String keyword) { List<BladeFlow> flowList = new LinkedList<>(); List<FlowVO> flowList = new LinkedList<>(); TaskQuery todoQuery = taskService.createTaskQuery().active().includeProcessVariables(); if(Func.isNotEmpty(keyword)){ todoQuery.or(); todoQuery.processVariableValueLike("processNo",keyword); todoQuery.processVariableValueLike("machineCode",keyword); todoQuery.processVariableValueLike("machineMode",keyword); todoQuery.processVariableValueLike("processName",keyword); todoQuery.processVariableValueLike("processEdition",keyword); todoQuery.processVariableValueLike("craftEdition",keyword); //TODO å¤ä¸ªå段é½è¦å¹é todoQuery.endOr(); } addKeywordCondition(todoQuery, keyword); todoQuery.orderByTaskCreateTime().desc(); // æå»ºåè¡¨æ°æ® BladeFlow bladeFlow = new BladeFlow(); buildFlowTaskList(bladeFlow, flowList, todoQuery, "todo");//FlowEngineConstant.STATUS_TODO FlowVO bladeFlow = new FlowVO(); buildFlowTaskList(bladeFlow, flowList, todoQuery);//FlowEngineConstant.STATUS_TODO // è®¡ç®æ»æ° long count = todoQuery.count(); @@ -392,13 +317,13 @@ /** * è¶ æ¶ä»»å¡æ¥è¯¢ * @param page * @param keyword * @return * @param page åé¡µä¿¡æ¯ * @param keyword å ³é®å * @return åé¡µæ°æ® */ public IPage<BladeFlow> selectOvertimePage(IPage<BladeFlow> page,LocalDate createTimeBegin,LocalDate createTimeEnd, String assigneeName,String keyword) { public IPage<FlowVO> selectOvertimePage(IPage<FlowVO> page, LocalDate createTimeBegin, LocalDate createTimeEnd, String assigneeName, String keyword) { List<BladeFlow> flowList = new LinkedList<>(); List<FlowVO> flowList = new LinkedList<>(); Date now = new Date(); TaskQuery todoQuery = taskService.createTaskQuery().taskDueBefore(now).active().includeProcessVariables(); if(Func.isNotEmpty(createTimeBegin)) { @@ -411,27 +336,14 @@ if(Func.isNotEmpty(keyword)) { todoQuery.taskVariableValueLike("assigneeName", "%"+assigneeName+"%"); } if(Func.isNotEmpty(keyword)){ todoQuery.or(); keyword = "%"+keyword+"%"; todoQuery.processVariableValueLike("processNo",keyword); todoQuery.processVariableValueLike("machineCode",keyword); todoQuery.processVariableValueLike("machineMode",keyword); todoQuery.processVariableValueLike("processName",keyword); todoQuery.processVariableValueLike("processEdition",keyword); todoQuery.processVariableValueLike("craftEdition",keyword); //TODO å¤ä¸ªå段é½è¦å¹é todoQuery.endOr(); } addKeywordCondition(todoQuery, keyword); todoQuery.orderByTaskCreateTime().desc(); // æå»ºåè¡¨æ°æ® BladeFlow bladeFlow = new BladeFlow(); buildFlowTaskList(bladeFlow, flowList, todoQuery, "todo");//FlowEngineConstant.STATUS_TODO FlowVO bladeFlow = new FlowVO(); buildFlowTaskList(bladeFlow, flowList, todoQuery);//FlowEngineConstant.STATUS_TODO // è®¡ç®æ»æ° long count = todoQuery.count(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/dispatch/CureProgramCheckTask.java
@@ -14,6 +14,6 @@ String hasCuredProgram = (String)execution.getVariable("hasCuredProgram"); NcProgram ncProgram = (NcProgram)execution.getVariable("curedNcProgram"); System.out.println("æ§è¡æå¡ä»»å¡"); System.out.println("æ§è¡åºåç¨åºä»»å¡æå¡"); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,195 @@ /** * BladeX Commercial License Agreement * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. * <p> * Use of this software is governed by the Commercial License Agreement * obtained after purchasing a license from BladeX. * <p> * 1. This software is for development use only under a valid license * from BladeX. * <p> * 2. Redistribution of this software's source code to any third party * without a commercial license is strictly prohibited. * <p> * 3. Licensees may copyright their own code but cannot use segments * from this software for such purposes. Copyright of this software * remains with BladeX. * <p> * Using this software signifies agreement to this License, and the software * must not be used for illegal purposes. * <p> * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is * not liable for any claims arising from secondary or illegal development. * <p> * Author: Chill Zhuang (bladejava@qq.com) */ package org.springblade.mdm.flow.vo; import lombok.Data; import org.springblade.flow.core.constant.ProcessConstant; import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.Map; /** * mdm工使µéç¨å®ä½ç±» * * @author yangys */ @Data public class FlowVO implements Serializable { @Serial private static final long serialVersionUID = 1L; /** * ä»»å¡ç¼å· */ private String taskId; /** * ä»»å¡åç§° */ private String taskName; /** * ä»»å¡å®ä¹Key */ private String taskDefinitionKey; /** * 任塿§è¡äººç¼å· */ private String assignee; /** * 任塿§è¡äººåç§° */ private String assigneeName; /** * æµç¨åç±» */ private String category; /** * æµç¨åç±»å */ private String categoryName; /** * å建æ¶é´ */ private Date createTime; /** * ç»ææ¶é´ */ private Date endTime; /** * ç¾æ¶æ¶é´ */ private Date claimTime; /** * åå²ä»»å¡ç»ææ¶é´ */ private Date historyTaskEndTime; /** * æ§è¡ID */ private String executionId; /** * æµç¨å®ä¾ID */ private String processInstanceId; /** * æµç¨ID */ private String processDefinitionId; /** * æµç¨æ è¯ */ private String processDefinitionKey; /** * æµç¨å */ private String processDefinitionName; /** * æµç¨çæ¬ */ private int processDefinitionVersion; /** * æµç¨è¯´æ */ private String processDefinitionDesc; /** * æµç¨ç®å¾å */ private String processDefinitionDiagramResName; /** * æµç¨éå½å */ private String processDefinitionResName; /** * åå²ä»»å¡æµç¨å®ä¾ID æ¥çæµç¨å¾ä¼ç¨å° */ private String historyProcessInstanceId; /** * æµç¨å®ä¾æ¯å¦ç»æ */ private String processIsFinished; /** * å岿´»å¨ID */ private String historyActivityId; /** * å岿´»å¨æµç¨ */ private String historyActivityName; /** * å岿´»å¨èæ¶ */ private String historyActivityDurationTime; /** * ä¸å¡ç»å®Table */ private String businessTable; /** * ä¸å¡ç»å®ID */ private String businessId; /** * ä»»å¡ç¶æ */ private String status; /** * ä»»å¡æè§ */ private String comment; /** * æ¯å¦éè¿ */ private boolean isPass; /** * æ¯å¦éè¿ä»£å· */ private String flag; /** * å¼å§æ¥è¯¢æ¥æ */ private Date beginDate; /** * ç»ææ¥è¯¢æ¥æ */ private Date endDate; /** * æµç¨åæ° */ private Map<String, Object> variables; /** * è¦æ±å®æçæ¶é´ï¼è¶ æ¶æ¶é´ï¼ */ private Date dueDate; /** * è·åæ¯å¦éè¿ */ public boolean isPass() { return ProcessConstant.PASS_ALIAS.equals(flag) || ProcessConstant.PASS_COMMENT.equals(comment); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/OvertimeTaskExcelVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package org.springblade.mdm.flow.vo; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.time.LocalDateTime; import java.util.Date; @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class OvertimeTaskExcelVO { @ExcelProperty("æ§è¡äººå") private String assigneeName; @ExcelProperty("ä»»å¡åç§°") private String processDefinitionName; @ExcelProperty("ä»»å¡èç¹") private String taskName; @ExcelProperty("ä»»å¡å°è¾¾æ¶é´") private LocalDateTime time; @ExcelProperty("è¦æ±å®ææ¶é´") private Date dueDate; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package org.springblade.mdm.program.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.mdm.program.service.NcProgramService; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; /** * ç¨åºèç¹ * * @author yangys */ @NonDS @RestController @RequestMapping("/program/ncfile") @AllArgsConstructor @Tag(name = "æ°æ§ç¨åº", description = "æ°æ§ç¨åº") @Slf4j public class NcProgramController { private final NcProgramService ncProgramService; @PostMapping("/upload") @Operation(summary = "ä¸ä¼ ", description = "ä¸ä¼ ç¨åº/éä»¶æä»¶") public R<Boolean> upload(@RequestParam MultipartFile file,Long nodeId, @RequestParam String category) { ncProgramService.uploadNcFile(file,nodeId,category); return R.<Boolean>status(true); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -36,6 +36,8 @@ import org.springblade.mdm.program.entity.NcProgram; import org.springblade.mdm.program.vo.DncSendBackData; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -69,4 +71,7 @@ return this.getBaseMapper().getCuredNcProgram(partNo,machine.getMachineGroupCode()); } public void uploadNcFile(MultipartFile file,Long nodeId, String category) { } } blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -4,9 +4,9 @@ <startEvent id="start" name="å¼å§"/> <sequenceFlow id="sid-c1619263-d1ff-4106-9315-f9ab9a3bee71" sourceRef="start" targetRef="teamLeaderTask"/> <userTask id="teamLeaderTask" name="ä¸ä¸ç»é¿" flowable:assignee="${teamLeader}"/> <userTask id="programmingTask" name="ç¼å¶" flowable:assignee="${programmer}"/> <userTask id="check" name="æ ¡å¯¹" flowable:assignee="${checker}"/> <userTask id="approveTask" name="é«å¸å®¡æ¹" flowable:assignee="${senior}"/> <userTask id="programmingTask" name="ç¼å¶" flowable:assignee="${assignee}"/> <userTask id="check" name="æ ¡å¯¹" flowable:assignee="${assignee}"/> <userTask id="approveTask" name="é«å¸å®¡æ¹" flowable:assignee="${assignee}"/> <endEvent id="approveEnd" name="审æ¹å®æ"/> <sequenceFlow id="programingToCheck" sourceRef="programmingTask" targetRef="check" name="ç¼å¶å®æç»æ ¡å¯¹"> <conditionExpression xsi:type="tFormalExpression">${approve=='Y'}</conditionExpression> @@ -24,30 +24,30 @@ <conditionExpression xsi:type="tFormalExpression">${approve=='Y'}</conditionExpression> </sequenceFlow> <serviceTask id="cureCheckServiceTask" flowable:exclusive="true" name="åºåç¨åºæ£æ¥æå¡ä»»å¡" flowable:expression="cureProgramCheckTask.execute(execution)"/> <userTask id="sid-015ac835-1083-489a-9496-97dbb9432d09" name="æ£æ¥ç¨åºæ¯å¦å¯ç¨"/> <userTask id="sid-015ac835-1083-489a-9496-97dbb9432d09" name="æ£æ¥ç¨åºæ¯å¦å¯ç¨" flowable:assignee="${assignee}"/> <sequenceFlow id="sid-46ccac64-2d48-4933-88a6-f2941ae131dd" sourceRef="teamLeaderTask" targetRef="programmingTask"> <conditionExpression xsi:type="tFormalExpression">hasCuredProgram==âN'</conditionExpression> <conditionExpression xsi:type="tFormalExpression">${approve=='Y' && hasCuredProgram=='N'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-af92e6ab-bc80-43ed-8b09-1d3ec54cc9e7" sourceRef="teamLeaderTask" targetRef="cureCheckServiceTask"> <conditionExpression xsi:type="tFormalExpression">hasCuredProgram==âY'</conditionExpression> <conditionExpression xsi:type="tFormalExpression">${approve=='Y' && hasCuredProgram=='Y'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-353381d5-35c7-47b0-bf5b-2bafe865ab5e" sourceRef="cureCheckServiceTask" targetRef="sid-015ac835-1083-489a-9496-97dbb9432d09"/> <sequenceFlow id="sid-d144dad0-dc94-4a2b-96d6-9d8451b05ec1" sourceRef="sid-015ac835-1083-489a-9496-97dbb9432d09" targetRef="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" name="åºåç¨åºå¯ç¨"> <conditionExpression>approve=='Y'</conditionExpression> <conditionExpression>${approve=='Y'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-d4133565-1a45-4bb6-b603-9b9e4db1cdbb" sourceRef="approveTask" targetRef="check"> <conditionExpression>{approve=='N'}</conditionExpression> <conditionExpression>${approve=='N'}</conditionExpression> </sequenceFlow> <exclusiveGateway id="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" name="å¯ç¨ç¨åºæµè½¬ç½å ³"/> <sequenceFlow id="sid-b15dcf6a-a48c-4e01-b6bc-5c2a74ca817e" sourceRef="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" targetRef="check" name="å·¥åºç次ä¸è´å¹¶ä¸å¯ç¨"> <conditionExpression xsi:type="tFormalExpression">processEditionEqual=='Y'</conditionExpression> <conditionExpression xsi:type="tFormalExpression">${processEditionEqual=='Y'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-6249886b-7c4a-4904-9b0b-cf743932be9f" sourceRef="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" targetRef="emptyUpgradeProcessEdtionServiceTask"> <conditionExpression xsi:type="tFormalExpression">processEditionEqual=='N'</conditionExpression> <conditionExpression xsi:type="tFormalExpression">${processEditionEqual=='N'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-598e1dbe-85b3-40d0-89c8-bd2580ecbfc5" sourceRef="emptyUpgradeProcessEdtionServiceTask" targetRef="check"/> <sequenceFlow id="sid-80b50f96-7601-4ba2-8c32-968923170d25" sourceRef="sid-015ac835-1083-489a-9496-97dbb9432d09" targetRef="programmingTask"> <conditionExpression>approve=='N'</conditionExpression> <conditionExpression>${approve=='N'}</conditionExpression> </sequenceFlow> <serviceTask id="emptyUpgradeProcessEdtionServiceTask" flowable:exclusive="true" name="空åç" flowable:expression="programEmptyUpgradeProcessEdtionTask.execute(execution)"/> </process> doc/sql/mdm/mdm.mysql.all.create.sql
ÎļþÃû´Ó doc/sql/mdm/mdm.all.create.sql ÐÞ¸Ä @@ -86,6 +86,7 @@ `code` varchar(100) NOT NULL COMMENT 'ç¨åºç¼å·', `name` varchar(100) NOT NULL COMMENT 'ç¨åºåç§°', `package_name` varchar(100) NOT NULL COMMENT 'ç¨åºå å', `url` varchar(400) NOT NULL COMMENT 'æä»¶å°å', `machine_code` bigint DEFAULT NULL COMMENT '设å¤ç¼å·/æºåºç¼å·', `part_no` varchar(100) NOT NULL COMMENT 'é¶ç»ä»¶ç¼å·', `is_cured` int DEFAULT NULL COMMENT 'æ¯å¦åºå,1æ¯;0å¦',