yangys
2025-06-10 741b33442af1b7c727fe305a641acaedf7b83d63
计划表account改为id
已修改3个文件
已添加12个文件
518 ■■■■■ 文件已修改
blade-service/blade-mdm/pom.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/vo/MachineSaveVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/controller/ProducePlanController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/entity/ProducePlan.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/mapper/ProducePlanMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/mapper/ProducePlanMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/service/ProducePlanService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/vo/ProducePlanVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/vo/ProducePlanViewVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/AutoAssignUsersService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/sql/flowable/flowable.mysql.all.upper.create.sql 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/pom.xml
@@ -42,6 +42,11 @@
            <groupId>org.springblade</groupId>
            <artifactId>blade-flow-api</artifactId>
        </dependency>
        <!-- å·¥ä½œæµ -->
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-flowable</artifactId>
        </dependency>
        <!--Oss-->
        <dependency>
            <groupId>org.springblade</groupId>
@@ -57,6 +62,11 @@
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-flow-api</artifactId>
        </dependency>
        <!--<dependency>
            <groupId>org.springblade</groupId>
            <artifactId>blade-starter-transaction</artifactId>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/vo/MachineSaveVO.java
@@ -1,5 +1,6 @@
package org.springblade.mdm.basesetting.machine.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.mdm.commons.vo.BaseVO;
@@ -43,8 +44,10 @@
     */
    private String progSendDir;
    /**
     * ç¨‹åºå›žä¼ ç›®å½•',
     * ',
     */
    @Schema(description = "程序回传目录")
    private String progReceiveDir;
    @Schema(description = "备注")
    private String remark;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/controller/ProducePlanController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package org.springblade.mdm.basesetting.produceplan.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.MachineService;
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.mdm.basesetting.produceplan.service.ProducePlanService;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanVO;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanViewVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping("/produceplan")
@Tag(name = "主制计划表", description = "主制计划表")
public class ProducePlanController {
    @Autowired
    private ProducePlanService service;
    /**
     * æ–°å¢ž
     */
    @PostMapping("/save")
    @Operation(summary = "新增", description = "主制计划表")
    public R<Boolean> save(@RequestBody ProducePlanVO vo) {
        service.savePlan(vo);
        return R.<Boolean>status(true);
    }
    /**
     * ä¿®æ”¹
     */
    @Operation(summary = "修改", description = "主制计划表")
    @PostMapping("/update")
    public R<Boolean> update(@RequestBody ProducePlanVO vo) {
        return R.<Boolean>status(service.updatePlan(vo));
    }
    /**
     * åˆ é™¤
     */
    @Operation(summary = "删除", description = "删除")
    @PostMapping("/remove")
    public R<Void> remove(@RequestParam String ids) {
        try {
            return R.status(service.removeBatchByIds(Func.toLongList(ids)));
        } catch (Exception e) {
            log.error("删除异常",e);
            return R.fail(e.getMessage());
        }
    }
    /**
     * åˆ†é¡µ
     */
    @Operation(summary = "分页查询", description = "姓名")
    @GetMapping("/page")
    public R<IPage<ProducePlanViewVO>> page(String name, Query query) {
        IPage<ProducePlanViewVO> pages = service.pageQuery(name,query);
        return R.data(pages);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/entity/ProducePlan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package org.springblade.mdm.basesetting.produceplan.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
/**
 * ä¸»åˆ¶è®¡åˆ’表
 */
@Setter
@Getter
@TableName("mdm_produce_plan")
public class ProducePlan extends BizEntity {
    /**
     * ä¸“业组长id
     */
    private Long teamLeaderId;
    /**
     * ç¼–制工艺员id
     */
    private Long programmerId;
    /**
     * æ ¡å¯¹å·¥è‰ºå‘˜id
     */
    private Long checkerId;
    /**
     * é«˜å¸ˆid
     */
    private Long seniorId;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/mapper/ProducePlanMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.springblade.mdm.basesetting.produceplan.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.mapper.BladeMapper;
import org.springblade.mdm.basesetting.produceplan.entity.ProducePlan;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanVO;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanViewVO;
public interface ProducePlanMapper extends BladeMapper<ProducePlan> {
    IPage<ProducePlanViewVO> pageQuery(@Param("page")IPage<ProducePlan> page,@Param("name")String name);
    //pageMachine
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/mapper/ProducePlanMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.mdm.basesetting.produceplan.mapper.ProducePlanMapper">
<!--
    &lt;!&ndash; é€šç”¨æŸ¥è¯¢æ˜ å°„结果 &ndash;&gt;
    <resultMap id="BaseResultMap" type="org.springblade.mdm.basesetting.machine.entity.Machine">
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="name" property="name"/>
        <result column="status" property="status"/>
        <result column="createTime" property="create_time"/>
        <result column="updateTime" property="update_time"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>-->
    <select id="pageQuery" resultType="org.springblade.mdm.basesetting.produceplan.vo.ProducePlanViewVO">
        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
                                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
        <if test="name != null and name != ''">
            AND (l.account like concat('%',#{name,jdbcType=VARCHAR},'%') or l.name like
            concat('%',#{name,jdbcType=VARCHAR},'%')
            or pro.account like concat('%',#{name,jdbcType=VARCHAR},'%') or pro.name like
            concat('%',#{name,jdbcType=VARCHAR},'%')
            or c.account like concat('%',#{name,jdbcType=VARCHAR},'%') or c.name like
            concat('%',#{name,jdbcType=VARCHAR},'%')
            or s.account like concat('%',#{name,jdbcType=VARCHAR},'%') or s.name like
            concat('%',#{name,jdbcType=VARCHAR},'%')
            )
        </if>
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/service/ProducePlanService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package org.springblade.mdm.basesetting.produceplan.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.entity.MachineSpec;
import org.springblade.mdm.basesetting.machine.mapper.MachineMapper;
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.mdm.basesetting.produceplan.entity.ProducePlan;
import org.springblade.mdm.basesetting.produceplan.mapper.ProducePlanMapper;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanVO;
import org.springblade.mdm.basesetting.produceplan.vo.ProducePlanViewVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class ProducePlanService extends BizServiceImpl<ProducePlanMapper, ProducePlan> {
    @Transactional
    public void savePlan(ProducePlanVO vo){
        //TODO
        ProducePlan plan = new ProducePlan();
        BeanUtil.copyProperties(vo, plan);
        this.save(plan);
    }
    public boolean updatePlan(ProducePlanVO vo) {
        ProducePlan plan = this.getById(vo.getId());
        plan.setTeamLeaderId(vo.getTeamLeaderId());
        plan.setProgrammerId(vo.getProgrammerId());
        plan.setCheckerId(vo.getCheckerId());
        plan.setSeniorId(vo.getSeniorId());
        return this.updateById(plan);
    }
    /**
     * æŸ¥è¯¢åˆ†é¡µ
     * @param query æŸ¥è¯¢å‚æ•°
     * @return åˆ†é¡µæ•°æ®
     */
    public IPage<ProducePlanViewVO> pageQuery(String name, Query query) {
        LambdaQueryWrapper<ProducePlan> queryWrapper = new LambdaQueryWrapper<>();
    /*    queryWrapper.or(StringUtils.isNotEmpty(name),qw ->{
            qw.like(ProducePlan::getTeamLeaderId,name).or().like(ProducePlan::getProgrammer,name).or().like(ProducePlan::getChecker,name);
        });*/
        //queryWrapper.eq(StringUtils.isNotEmpty(name), ProducePlan::getTeamLeader, query.getMachineGroupId());
        return this.getBaseMapper().pageQuery(Condition.getPage(query),name);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/vo/ProducePlanVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package org.springblade.mdm.basesetting.produceplan.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
import org.springblade.mdm.commons.vo.BaseVO;
/**
 * ä¸»åˆ¶è®¡åˆ’表
 */
@Setter
@Getter
public class ProducePlanVO extends BaseVO {
    /**
     * ä¸“业组长id
     */
    private Long teamLeaderId;
    /**
     * ç¼–制工艺员id
     */
    private Long programmerId;
    /**
     * æ ¡å¯¹å·¥è‰ºå‘˜id
     */
    private Long checkerId;
    /**
     * é«˜å¸ˆid
     */
    private Long seniorId;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/produceplan/vo/ProducePlanViewVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package org.springblade.mdm.basesetting.produceplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.mdm.commons.vo.BaseVO;
/**
 * ä¸»åˆ¶è®¡åˆ’表
 */
@Setter
@Getter
public class ProducePlanViewVO extends BaseVO {
    @Schema(description = "专业组长id")
    private Long teamLeaderId;
    private String teamLeaderName;
    @Schema(description = "编制工艺员id")
    private Long programmerId;
    /**
     * æ ¡å¯¹å·¥è‰ºå‘˜è´¦å·
     */
    @Schema(description = "校对工艺员id")
    private Long checkerId;
    @Schema(description = "校对工艺员姓名")
    private String checkerName;
    /**
     * é«˜å¸ˆid
     */
    private String seniorId;
    @Schema(description = "高师姓名")
    private String seniorName;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package org.springblade.mdm.flow.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.TaskService;
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.mdm.basesetting.machine.vo.MachineSaveVO;
import org.springblade.mdm.flow.excution.StartDispatcher;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/flow/dispatch")
@Tag(name = "派工流程", description = "派工流程")
public class DispatchController {
    @Autowired
    private StartDispatcher dispatcher;
    @Autowired
    private TaskService taskService;
    /**
     * æ–°å¢ž
     */
    @PostMapping("/start")
    @Operation(summary = "启动派工流程", description = "启动派工流程")
    public R<Boolean> save(@RequestBody TaskAssignVO startVO) {
        dispatcher.start(startVO);
        return R.<Boolean>status(true);
    }
    @PostMapping("completeTask")
    public R<Void> completeTask(String taskId, String processInstanceId, String comment, @RequestBody Map<String, Object> variables) {
        // å¢žåŠ è¯„è®º
        if (StringUtil.isNoneBlank(processInstanceId, comment)) {
            taskService.addComment(taskId, processInstanceId, comment);
        }
        // éžç©ºåˆ¤æ–­
        if (Func.isEmpty(variables)) {
            variables = Kv.create();
        }
        // å®Œæˆä»»åŠ¡
        taskService.complete(taskId, variables);
        return R.success("流程提交成功");
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/AutoAssignUsersService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.springblade.mdm.flow.excution;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
 * èŽ·å–è‡ªåŠ¨åŒ¹é…çš„ä¸“ä¸šç»„é•¿ï¼Œç¼–åˆ¶äººå‘˜ï¼Œæ•™ç ”å‘˜ï¼Œå’Œé«˜å¸ˆ
 */
@Service
public class AutoAssignUsersService {
    public Map<String,Object> autoAssignUsers(long productPlanId){
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("teamLeader","zuzhang1");
        result.put("programmer","gongyiyuan1");
        result.put("checker","gongyiyuan2");
        result.put("senior","gaoshi1");
        return result;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package org.springblade.mdm.flow.excution;
import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.IdentityService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.flow.core.feign.IFlowClient;
import org.springblade.flow.core.pojo.entity.BladeFlow;
import org.springblade.flow.core.utils.TaskUtil;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.flowable.engine.RuntimeService;
import java.util.HashMap;
import java.util.Map;
@Service("startDispatcher")
public class StartDispatcher  {
    @Autowired
    private IFlowClient flowClient;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private AutoAssignUsersService autoAssignUsersService;
    @Autowired
    private IdentityService identityService;
    private static final String PROCESS_KEY = "dispatch";
    public void start(TaskAssignVO startVO){
        Map<String,Object> preAssignee = autoAssignUsersService.autoAssignUsers(startVO.getProducePlanId());
        Map<String, Object> vars = new HashMap<>(preAssignee);
        String businessKey = "0";//业务表key
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance pinst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
        //R<BladeFlow> flowR = flowClient.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
        //R<BladeFlow> flowR = flowClient.startProcessInstanceById(PROCESS_KEY,businessKey,vars);
        int a=1;
        a =2;
        //log.info()
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package org.springblade.mdm.flow.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@Schema(description = "任务派工")
public class TaskAssignVO {
    @Schema(description = "工序号")
    private String processNo;
    @Schema(description = "工序名称")
    private String processName;
    @Schema(description = "工序版次")
    private String processEdition;
    @Schema(description = "工艺版次")
    private String craftEdition;
    @Schema(description = "设备编号")
    private String machineCode;
    @Schema(description = "设备型号")
    private String machineMode;
    @Schema(description = "计划开工时间")
    private LocalDateTime planStartTime;
    @Schema(description = "主制计划表ID")
    private long producePlanId;
}
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<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="dispatch" name="任务派工" isExecutable="true">
    <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}"/>
    <sequenceFlow id="sid-ac678e85-9f7b-4e8d-903f-2591ea7721ab" sourceRef="teamLeaderTask" targetRef="programmingTask"/>
    <userTask id="check" name="校对" flowable:assignee="${checker}"/>
    <sequenceFlow id="sid-6c33a84d-d03e-47f6-87c1-8e676b25e572" sourceRef="programmingTask" targetRef="check"/>
    <userTask id="approveTask" name="高师审批"/>
    <sequenceFlow id="sid-2e73fc3f-6802-4a94-984c-e1b9a50f8489" sourceRef="check" targetRef="approveTask"/>
    <endEvent id="approveEnd" name="审批完成"/>
    <sequenceFlow id="sid-1a414739-a80f-4436-8d7a-e7b65fae8233" sourceRef="approveTask" targetRef="approveEnd"/>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_dispatch">
    <bpmndi:BPMNPlane bpmnElement="dispatch" id="BPMNPlane_dispatch">
      <bpmndi:BPMNShape id="shape-bb4d1b10-12af-4d57-851f-308a54aca93c" bpmnElement="start">
        <omgdc:Bounds x="-320.0" y="-100.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-5783eb04-78a8-4bde-b8bb-c12d28f07609" bpmnElement="sid-c1619263-d1ff-4106-9315-f9ab9a3bee71">
        <omgdi:waypoint x="-290.0" y="-92.5"/>
        <omgdi:waypoint x="-185.0" y="-75.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-720b1ec1-043e-4a8a-bc4d-c50cf01678d7" bpmnElement="teamLeaderTask">
        <omgdc:Bounds x="-185.0" y="-115.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-b1baea86-1882-4c5c-886f-44e3d9be3746" bpmnElement="programmingTask">
        <omgdc:Bounds x="-20.0" y="-115.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-0079d499-1c0d-4745-9886-40df39794833" bpmnElement="sid-ac678e85-9f7b-4e8d-903f-2591ea7721ab">
        <omgdi:waypoint x="-85.0" y="-75.0"/>
        <omgdi:waypoint x="-20.0" y="-75.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-9237838e-5de2-4db7-8d46-3f4a69de7e6e" bpmnElement="check">
        <omgdc:Bounds x="105.0" y="-115.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-72007fd8-6ed8-402f-8bbc-81bd6c856fa7" bpmnElement="sid-6c33a84d-d03e-47f6-87c1-8e676b25e572">
        <omgdi:waypoint x="80.0" y="-55.0"/>
        <omgdi:waypoint x="105.0" y="-95.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-a42e90ff-9c82-4d5b-8f5b-0804754e89a6" bpmnElement="approveTask">
        <omgdc:Bounds x="15.0" y="16.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-7fe1281a-3bbf-4308-90a5-cbf70aa019dd" bpmnElement="sid-2e73fc3f-6802-4a94-984c-e1b9a50f8489">
        <omgdi:waypoint x="130.0" y="-35.0"/>
        <omgdi:waypoint x="90.0" y="16.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-f14acaf6-9747-4d52-87a1-d4c5b8f3d166" bpmnElement="approveEnd">
        <omgdc:Bounds x="205.0" y="41.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-9cb8c108-2b94-4e39-b7ed-93ff0d86fe73" bpmnElement="sid-1a414739-a80f-4436-8d7a-e7b65fae8233">
        <omgdi:waypoint x="115.0" y="56.0"/>
        <omgdi:waypoint x="205.0" y="56.0"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>
doc/sql/flowable/flowable.mysql.all.upper.create.sql
@@ -1613,10 +1613,10 @@
COMMIT;
-- ----------------------------
-- Table structure for act_re_model
-- Table structure for ACT_RE_MODEL
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RE_MODEL`;
CREATE TABLE `act_re_model`  (
CREATE TABLE `ACT_RE_MODEL`  (
  `ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
  `REV_` int NULL DEFAULT NULL,
  `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL,
@@ -1640,7 +1640,7 @@
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin;
-- ----------------------------
-- Records of act_re_model
-- Records of ACT_RE_MODEL
-- ----------------------------
BEGIN;
COMMIT;