| | |
| | | <version>${bladex.project.version}</version> |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.vci.ubcs</groupId> |
| | | <artifactId>ubcs-util-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.vci.ubcs</groupId> |
| | | <artifactId>ubcs-user-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | |
| | | </project> |
| | |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.AllArgsConstructor; |
| | | import org.flowable.engine.RepositoryService; |
| | | import org.flowable.engine.RuntimeService; |
| | | import org.flowable.engine.TaskService; |
| | | import org.flowable.engine.repository.Deployment; |
| | | import org.flowable.engine.runtime.ProcessInstance; |
| | | import org.flowable.task.api.Task; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æµç¨äºå¡éç¨æ¥å£ |
| | | * |
| | |
| | | variables = Kv.create(); |
| | | } |
| | | variables.put(ProcessConstant.PASS_KEY, flow.isPass()); |
| | | variables.put("yn","y"); |
| | | // å®æä»»å¡ |
| | | taskService.complete(taskId, variables); |
| | | return true; |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
| | | import com.vci.ubcs.flow.core.utils.TaskUtil; |
| | | import com.vci.ubcs.flow.engine.entity.FlowModel; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import com.vci.ubcs.flow.engine.service.FlowTaskUserService; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.launch.constant.FlowConstant; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.Func; |
| | |
| | | @RestController |
| | | @RequestMapping("model") |
| | | @AllArgsConstructor |
| | | //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) |
| | | //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)t |
| | | public class FlowModelController { |
| | | |
| | | private final FlowEngineService flowEngineService; |
| | |
| | | IPage<FlowModel> pages = flowEngineService.page(Condition.getPage(query), Condition.getQueryWrapper(flow, FlowModel.class) |
| | | .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated") |
| | | .orderByDesc("last_updated")); |
| | | |
| | | flowEngineService.getNodeByFlowableKey("process_t"); |
| | | return R.data(pages); |
| | | } |
| | | |
| | |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.flowable.bpmn.model.FlowElement; |
| | | import org.flowable.bpmn.model.SubProcess; |
| | | import org.flowable.bpmn.model.UserTask; |
| | | import org.flowable.engine.*; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æµç¨éç¨æ§å¶å¨ |
| | |
| | | |
| | | private static final String IMAGE_NAME = "image"; |
| | | private final FlowEngineService flowEngineService; |
| | | |
| | | private final RepositoryService repositoryService; |
| | | private final RuntimeService runtimeService; |
| | | private final HistoryService historyService; |
| | | private final TaskService taskService; |
| | | private final ProcessEngine processEngine; |
| | | |
| | | /** |
| | | * è·åæµè½¬åå²å表 |
| | |
| | | */ |
| | | @GetMapping(value = "model-view") |
| | | public R modelView(String processDefinitionId, String processInstanceId) { |
| | | |
| | | //test |
| | | //List<Map<String,String>> xml = flowEngineService.getXMLByFlowableName("process_t"); |
| | | flowEngineService.updateAssignee(null); |
| | | //test end |
| | | |
| | | return R.data(flowEngineService.modelView(processDefinitionId, processInstanceId)); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.ubcs.flow.engine.controller; |
| | | |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import com.vci.ubcs.flow.engine.service.FlowTaskUserService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | |
| | | /** |
| | | * æµç¨taskå®¡æ¹æ§å¶ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @NonDS |
| | | @RestController |
| | | @RequestMapping("taskUser") |
| | | @AllArgsConstructor |
| | | public class FlowTaskUserController { |
| | | |
| | | private final FlowTaskUserService taskUserService; |
| | | |
| | | /** |
| | | * æµç¨task审æ¹äººåå表 |
| | | * @return |
| | | */ |
| | | @GetMapping("list") |
| | | public R<FlowTaskUserC> list() { |
| | | return R.data(taskUserService.getUser()); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ãä¿®æ¹ä»»å¡å¤ç人å |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | @PostMapping("su") |
| | | public R<String> saveUser(@RequestBody FlowTaskUserC flowTaskUserC) { |
| | | taskUserService.saveOrUpdateUser(flowTaskUserC); |
| | | return R.success("ä¿åæå"); |
| | | } |
| | | |
| | | /** |
| | | * å é¤ä»»å¡å¤ç人å |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | @PostMapping("du") |
| | | public R<String> deleteUser(@RequestBody FlowTaskUserC flowTaskUserC) { |
| | | taskUserService.deleteUser(flowTaskUserC.getName()); |
| | | return R.success("å 餿å"); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.ubcs.flow.engine.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessTemplate; |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import com.vci.ubcs.flow.engine.service.ProcessStageAttrService; |
| | | import com.vci.ubcs.flow.engine.service.ProcessTemplateService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | *æµç¨æ¨¡æ¿ãæµç¨é¶æ®µæ§å¶ processTemplate processStage |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @NonDS |
| | | @RestController |
| | | @RequestMapping("processTS") |
| | | @AllArgsConstructor |
| | | public class ProcessTSController { |
| | | |
| | | private final FlowEngineService flowEngineService; |
| | | private final ProcessTemplateService processTemplateService; |
| | | private final ProcessStageAttrService processStageAttrService; |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿å页 |
| | | */ |
| | | @GetMapping("/tlist") |
| | | public R<IPage<ProcessTemplate>> tlist(@RequestParam Map<String, Object> flow, Query query) { |
| | | IPage<ProcessTemplate> pages = processTemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(flow, ProcessTemplate.class) |
| | | .select("id,model_key modelKey,model_name modelName,button_Type_Key buttonTypeKey,button_Type_value buttonTypeValue") |
| | | .orderByDesc("last_updated")); |
| | | return R.data(pages); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿ç¨é屿§ |
| | | * @return |
| | | */ |
| | | @PostMapping("tt") |
| | | public R<List<Map<String,String>>> processTemplateType() { |
| | | return R.data(processTemplateService.processTemplateType()); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿æ°å¢ãä¿®æ¹ |
| | | * @param processTemplate |
| | | * @return |
| | | */ |
| | | @PostMapping("tsou") |
| | | public R<ProcessTemplate> processTemplateSaveOrUpdate(@RequestBody ProcessTemplate processTemplate) { |
| | | processTemplateService.saveOrUpdateUser(processTemplate); |
| | | return R.success("ä¿åæå"); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿å é¤ |
| | | * @param processTemplate |
| | | * @return |
| | | */ |
| | | @DeleteMapping("dt") |
| | | public R<ProcessTemplate> deleteProcessTemplate(ProcessTemplate processTemplate) { |
| | | processTemplateService.deleteProcessTemplate(processTemplate.getId()); |
| | | return R.success("å 餿å"); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µï¼è¿ä¸ªæµç¨çå个èç¹ |
| | | */ |
| | | @GetMapping("/sslist") |
| | | public R<List<Map<String,String>>> sslist(@RequestParam String modelKey) { |
| | | return R.data(flowEngineService.getNodeByFlowableKey(modelKey)); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µï¼è¿ä¸ªæµç¨,è¿ä¸ªèç¹ï¼ç»å®ç屿§ |
| | | */ |
| | | @GetMapping("/ssslist") |
| | | public R<List<ProcessStageAttr>> ssslist(@RequestParam String templateId,@RequestParam String modelKey,@RequestParam String taskId) { |
| | | Map<String, Object> m = new HashMap<>(); |
| | | m.put("template_id", templateId); |
| | | m.put("task_id", taskId); |
| | | m.put("model_key", modelKey); |
| | | QueryWrapper q = Condition.getQueryWrapper(m, ProcessStageAttr.class) |
| | | .select("attr_id attrId,attr_name attrName,attr_group attrGroup"); |
| | | return R.data(processStageAttrService.list(q)); |
| | | } |
| | | |
| | | /** |
| | | * 模æ¿é¶æ®µå±æ§æ°å¢ãä¿®æ¹ |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | @PostMapping("sasou") |
| | | public R<ProcessTemplate> stageAttributeSaveOrUpdate(@RequestBody FlowTaskUserC flowTaskUserC) { |
| | | processStageAttrService.saveOrUpdateUser(flowTaskUserC); |
| | | return R.success("ä¿åæå"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.vci.ubcs.flow.core.utils.TaskUtil; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * æµç¨æ¯ä¸ä¸ªèç¹å®¡æ ¸äºº |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Data |
| | | @TableName("ACT_DE_TASK_USER") |
| | | public class FlowTaskUser implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | private String id; |
| | | private String name;//ä¿åçè¿ä¸ªæ¶èåç§° |
| | | private String modelKey; |
| | | private String classifyId; |
| | | private String templateId; |
| | | private String taskId;//æµç¨taskid |
| | | private String taskName; |
| | | private String userId; |
| | | private String userName; |
| | | private String description; |
| | | private Date created; |
| | | private Date lastUpdated; |
| | | private String createdBy; |
| | | private String lastUpdatedBy; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.entity; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨èç¹å®¡æ ¸äººæ¶è |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Data |
| | | public class FlowTaskUserC implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | private String createdBy; |
| | | private String name;//ä¿åçè¿ä¸ªæ¶èåç§° |
| | | private String modelKey; |
| | | private String classifyId; |
| | | private String templateId; |
| | | private String taskId;//é¶æ®µidï¼å°±æ¯æµç¨taskid |
| | | private String taskName;//é¶æ®µåç§° |
| | | private List<FlowTaskUser> flowTaskUsers;//æ¯ä¸ªèç¹æ¶è人 |
| | | private List<ProcessStageAttr> processStageAttr;//æµç¨é¶æ®µä¿åç屿§ |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Data |
| | | @TableName("ACT_DE_PROCESS_STAGE_ATTR") |
| | | public class ProcessStageAttr implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | private String id; |
| | | private String modelKey; |
| | | private String classifyId; |
| | | private String templateId; |
| | | private String taskId;//é¶æ®µidï¼å°±æ¯æµç¨taskid |
| | | private String taskName;//é¶æ®µåç§° |
| | | private String attrOid;//屿§è¿æ¡æ°æ®çid |
| | | private String attrId;//屿§è¿æ¡æ°æ®çoid |
| | | private String attrName;//屿§ä¸æåç§° |
| | | private String attrGroup;//屿§åç» |
| | | private String description; |
| | | private Date created; |
| | | private Date lastUpdated; |
| | | private String createdBy; |
| | | private String lastUpdatedBy; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Data |
| | | @TableName("ACT_DE_PROCESS_TEMPLATE") |
| | | public class ProcessTemplate implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | private String id; |
| | | private String templateId;//å½å模æ¿id |
| | | private String modelKey;//æµç¨æ¨¡åkey,é¨ç½²key |
| | | private String modelName;//é¨ç½²æµç¨åç§° |
| | | private String buttonTypeKey;//åºç¨æé®,ProcessTemplateTypeEnumçkey |
| | | private String buttonTypeValue;//åºç¨æé®,ProcessTemplateTypeEnumçvalue |
| | | private String description; |
| | | private Date created; |
| | | private Date lastUpdated; |
| | | private String createdBy; |
| | | private String lastUpdatedBy; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.vci.ubcs.flow.engine.entity.FlowModel; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @return |
| | | */ |
| | | List<FlowModel> findByParentModelId(String parentModelId); |
| | | |
| | | /** |
| | | * ä¿®æ¹å¤ç人 |
| | | * @param u |
| | | * @return |
| | | */ |
| | | void updateAssignee(@Param(value="u") String u); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.vci.ubcs.flow.engine.entity.FlowModel; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µå®¡æ ¸äººå |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface FlowTaskUserMapper extends BaseMapper<FlowTaskUser> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface ProcessStageAttrMapper extends BaseMapper<ProcessStageAttr> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessTemplate; |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface ProcessTemplateMapper extends BaseMapper<ProcessTemplate> { |
| | | |
| | | } |
| | |
| | | import com.vci.ubcs.flow.engine.entity.FlowModel; |
| | | import com.vci.ubcs.flow.engine.entity.FlowProcess; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.w3c.dom.Document; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | |
| | | * @return |
| | | */ |
| | | byte[] getModelEditorXML(FlowModel model); |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨æ¨¡åkeyè·åXMLä¸èç¹é
ç½®çå¤ç人,读åèç¹åç§°åé
ç½®çå¼ï¼æµç¨æ¨¡åkeyå·²ç»éå¶ä¸éå¤ |
| | | * |
| | | * @param key |
| | | * @return |
| | | */ |
| | | List<Map<String,String>> getNodeByFlowableKey(String key); |
| | | |
| | | /** |
| | | * ä¿®æ¹æµç¨å¤ç人 |
| | | */ |
| | | void updateAssignee(String u); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.vci.ubcs.flow.core.entity.BladeFlow; |
| | | import com.vci.ubcs.flow.engine.entity.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * FlowService |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface FlowTaskUserService extends IService<FlowTaskUser> { |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç»é人对è¿ä¸ªæµç¨çtaskUser |
| | | * @return |
| | | */ |
| | | FlowTaskUserC getUser(); |
| | | |
| | | /** |
| | | * æ°å¢/ä¿®æ¹æµç¨èç¹å®¡æ ¸äººé
ç½®ãå¹¶ä¸ä¿®æ¹æµç¨xmlé¨ç½²æä»¶ |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); |
| | | |
| | | /** |
| | | * å 餿µç¨å®¡æ ¸äººå |
| | | * @param name |
| | | */ |
| | | void deleteUser(String name); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µæå¡ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface ProcessStageAttrService extends IService<ProcessStageAttr> { |
| | | |
| | | /** |
| | | * æ°å¢/ä¿®æ¹æµç¨é¶æ®µ |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessTemplate; |
| | | import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿æå¡ |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | public interface ProcessTemplateService extends IService<ProcessTemplate> { |
| | | |
| | | /** |
| | | * æ°å¢/ä¿®æ¹æµç¨æ¨¡æ¿ |
| | | * @param processTemplate |
| | | * @return |
| | | */ |
| | | void saveOrUpdateUser(ProcessTemplate processTemplate); |
| | | |
| | | /** |
| | | * å 餿µç¨æ¨¡æ¿ |
| | | * @param id |
| | | * @return |
| | | */ |
| | | void deleteProcessTemplate(String id); |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿ç¨é |
| | | * @return |
| | | */ |
| | | List<Map<String,String>> processTemplateType(); |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | |
| | | import com.vci.ubcs.system.user.entity.User; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.collections4.MapUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.flowable.bpmn.converter.BpmnXMLConverter; |
| | | import org.flowable.bpmn.model.BpmnModel; |
| | | import org.flowable.bpmn.model.*; |
| | | import org.flowable.bpmn.model.Process; |
| | | import org.flowable.common.engine.impl.util.IoUtil; |
| | | import org.flowable.common.engine.impl.util.io.StringStreamSource; |
| | |
| | | import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; |
| | | import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; |
| | | import org.flowable.engine.repository.Deployment; |
| | | import org.flowable.engine.repository.DeploymentQuery; |
| | | import org.flowable.engine.repository.ProcessDefinition; |
| | | import org.flowable.engine.repository.ProcessDefinitionQuery; |
| | | import org.flowable.engine.runtime.ProcessInstance; |
| | |
| | | import org.flowable.engine.task.Comment; |
| | | import org.flowable.image.ProcessDiagramGenerator; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.FileUtil; |
| | |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.w3c.dom.*; |
| | | import org.xml.sax.InputSource; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.xml.parsers.DocumentBuilder; |
| | | import javax.xml.parsers.DocumentBuilderFactory; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.io.StringReader; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private final HistoryService historyService; |
| | | private final TaskService taskService; |
| | | private final ProcessEngine processEngine; |
| | | |
| | | /** |
| | | * æ°æ®æä½å¯¹è±¡ |
| | | */ |
| | | @Resource |
| | | private FlowMapper flowMapper; |
| | | |
| | | @Override |
| | | public IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel) { |
| | |
| | | |
| | | @Override |
| | | public boolean deployModel(String modelId, String category, List<String> tenantIdList) { |
| | | |
| | | FlowModel model = this.getById(modelId); |
| | | if (model == null) { |
| | | throw new ServiceException("æªæ¾å°æ¨¡å id: " + modelId); |
| | |
| | | |
| | | @Override |
| | | public FlowModel submitModel(FlowModel model) { |
| | | |
| | | //éªè¯éå¤key |
| | | if(StringUtils.isEmpty(model.getId())&&getFlowModelByKey(model.getModelKey())!=null){ |
| | | throw new ServiceException("you cannot definition repetition æµç¨key!"); |
| | | } |
| | | |
| | | FlowModel flowModel = new FlowModel(); |
| | | flowModel.setId(model.getId()); |
| | | flowModel.setVersion(Func.toInt(model.getVersion(), 0) + 1); |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨æ¨¡åkeyè·åXMLä¸èç¹é
ç½®çå¤ç人 |
| | | * |
| | | * @param key |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map<String,String>> getNodeByFlowableKey(String key){ |
| | | String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId(); |
| | | BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); |
| | | Process process = bpmnModel.getProcesses().get(0);//åªæä¸ä¸ª |
| | | |
| | | List<Map<String,String>> ll = new ArrayList<>(); |
| | | if (CollectionUtils.isNotEmpty(process.getFlowElements())) { |
| | | for (FlowElement flowElement : process.getFlowElements()) { |
| | | if (flowElement instanceof UserTask) { |
| | | Map<String,String> mi = new HashMap<>(); |
| | | mi.put("taskId",flowElement.getId()); |
| | | mi.put("taskName",flowElement.getName()); |
| | | ll.add(mi); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return ll; |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹æµç¨å¤ç人 |
| | | */ |
| | | @Override |
| | | public void updateAssignee(String u){ |
| | | |
| | | flowMapper.updateAssignee(u); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦å·²å®ç» |
| | | * |
| | | * @param processInstanceId æµç¨å®ä¾id |
| | |
| | | return historyService.createHistoricProcessInstanceQuery().finished() |
| | | .processInstanceId(processInstanceId).count() > 0; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * xml转bpmn json |
| | |
| | | } |
| | | } |
| | | |
| | | public FlowModel getFlowModelByKey(String key){ |
| | | Map kv = new HashMap(); |
| | | kv.put("model_key",key); |
| | | return baseMapper.selectOne(Condition.getQueryWrapper(kv, FlowModel.class)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.node.ObjectNode; |
| | | import com.vci.ubcs.flow.core.entity.BladeFlow; |
| | | import com.vci.ubcs.flow.core.enums.FlowModeEnum; |
| | | import com.vci.ubcs.flow.core.utils.TaskUtil; |
| | | import com.vci.ubcs.flow.engine.constant.FlowEngineConstant; |
| | | import com.vci.ubcs.flow.engine.entity.*; |
| | | import com.vci.ubcs.flow.engine.mapper.FlowMapper; |
| | | import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import com.vci.ubcs.flow.engine.service.FlowTaskUserService; |
| | | import com.vci.ubcs.flow.engine.utils.FlowCache; |
| | | import com.vci.ubcs.system.user.cache.UserCache; |
| | | import com.vci.ubcs.system.user.entity.User; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.flowable.bpmn.converter.BpmnXMLConverter; |
| | | import org.flowable.bpmn.model.BpmnModel; |
| | | import org.flowable.bpmn.model.Process; |
| | | import org.flowable.common.engine.impl.util.IoUtil; |
| | | import org.flowable.common.engine.impl.util.io.StringStreamSource; |
| | | import org.flowable.editor.language.json.converter.BpmnJsonConverter; |
| | | import org.flowable.engine.*; |
| | | import org.flowable.engine.history.HistoricActivityInstance; |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; |
| | | import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; |
| | | import org.flowable.engine.repository.Deployment; |
| | | import org.flowable.engine.repository.ProcessDefinition; |
| | | import org.flowable.engine.repository.ProcessDefinitionQuery; |
| | | import org.flowable.engine.runtime.ProcessInstance; |
| | | import org.flowable.engine.runtime.ProcessInstanceQuery; |
| | | import org.flowable.engine.task.Comment; |
| | | import org.flowable.image.ProcessDiagramGenerator; |
| | | import org.springblade.core.launch.constant.FlowConstant; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.FileUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.w3c.dom.Document; |
| | | import org.w3c.dom.Element; |
| | | import org.w3c.dom.NodeList; |
| | | import org.xml.sax.InputSource; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.xml.parsers.DocumentBuilder; |
| | | import javax.xml.parsers.DocumentBuilderFactory; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.io.StringReader; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 工使µæå¡å®ç°ç±» |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class FlowTaskUserServiceImpl extends ServiceImpl<FlowTaskUserMapper, FlowTaskUser> implements FlowTaskUserService { |
| | | |
| | | private FlowEngineService flowEngineService; |
| | | private FlowTaskUserMapper flowTaskUserMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç»é人对è¿ä¸ªæµç¨çtaskUser |
| | | * @return |
| | | */ |
| | | @Override |
| | | public FlowTaskUserC getUser(){ |
| | | QueryWrapper<FlowTaskUser> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("CREATED_BY", AuthUtil.getUserId()); |
| | | List<FlowTaskUser> flowTaskUsers = baseMapper.selectList(queryWrapper); |
| | | FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); |
| | | if(flowTaskUsers.size()==0){ |
| | | return flowTaskUserCR; |
| | | } |
| | | flowTaskUserCR.setName(flowTaskUsers.get(0).getName());//æ¶èåç§° |
| | | flowTaskUserCR.setFlowTaskUsers(flowTaskUsers); |
| | | return flowTaskUserCR; |
| | | } |
| | | |
| | | @Override |
| | | public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ |
| | | List<FlowTaskUser> flowTaskUsers = flowTaskUserC.getFlowTaskUsers(); |
| | | String name = flowTaskUserC.getName();//æ¶èåç§° |
| | | |
| | | //æ°å¢æ
åµä¸éªè¯æ¶èåç§°ä¸éå¤ |
| | | if(flowTaskUsers.get(0).getId()!=null) { |
| | | Map<String, Object> m = new HashMap<>(); |
| | | m.put("name", name); |
| | | QueryWrapper q = Condition.getQueryWrapper(m, FlowTaskUser.class) |
| | | .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated"); |
| | | if(flowTaskUserMapper.selectCount(q)>0){ |
| | | throw new ServiceException("æ¶èåç§°å·²ç»åå¨!"); |
| | | } |
| | | } |
| | | for (FlowTaskUser flowTaskUseri:flowTaskUsers){ |
| | | flowTaskUseri.setName(name); |
| | | } |
| | | //æ°å¢ãä¿®æ¹ |
| | | this.saveOrUpdateBatch(flowTaskUsers); |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void deleteUser(String name){ |
| | | Map<String, Object> m = new HashMap<>(); |
| | | m.put("name", name); |
| | | m.put("created_by", AuthUtil.getUserId()); |
| | | baseMapper.deleteByMap(m); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; |
| | | import com.vci.ubcs.flow.engine.mapper.ProcessStageAttrMapper; |
| | | import com.vci.ubcs.flow.engine.service.ProcessStageAttrService; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æµç¨é¶æ®µæå¡å®ç°ç±» |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ProcessStageAttrServiceImpl extends ServiceImpl<ProcessStageAttrMapper, ProcessStageAttr> implements ProcessStageAttrService { |
| | | |
| | | /** |
| | | * æ°å¢/ä¿®æ¹æµç¨é¶æ®µ |
| | | * @param flowTaskUserC |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ |
| | | List<ProcessStageAttr> processStageAttrs = flowTaskUserC.getProcessStageAttr(); |
| | | String modelKey = flowTaskUserC.getModelKey(); |
| | | String templateId = flowTaskUserC.getTemplateId(); |
| | | String taskId = flowTaskUserC.getTaskId(); |
| | | String taskName = flowTaskUserC.getTaskName(); |
| | | |
| | | //ç´æ¥å é¤ä»¥åç |
| | | Map<String, Object> m = new HashMap<>(); |
| | | m.put("template_id", templateId); |
| | | m.put("model_key", modelKey); |
| | | m.put("task_id", taskId); |
| | | QueryWrapper q = Condition.getQueryWrapper(m, FlowTaskUser.class) |
| | | .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated"); |
| | | int i = baseMapper.deleteByMap(m); |
| | | System.out.println("å é¤ç屿§ä¸ªæ°: "+i); |
| | | |
| | | List<ProcessStageAttr> processStages = flowTaskUserC.getProcessStageAttr(); |
| | | for (ProcessStageAttr processStageAttr:processStages){ |
| | | processStageAttr.setModelKey(modelKey); |
| | | processStageAttr.setTemplateId(templateId); |
| | | processStageAttr.setTaskId(taskId); |
| | | processStageAttr.setTaskName(taskName); |
| | | } |
| | | if(processStages.size()!=0) { |
| | | this.saveOrUpdateBatch(processStages); |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package com.vci.ubcs.flow.engine.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vci.ubcs.flow.core.utils.TaskUtil; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUser; |
| | | import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; |
| | | import com.vci.ubcs.flow.engine.entity.ProcessTemplate; |
| | | import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; |
| | | import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper; |
| | | import com.vci.ubcs.flow.engine.service.FlowEngineService; |
| | | import com.vci.ubcs.flow.engine.service.FlowTaskUserService; |
| | | import com.vci.ubcs.flow.engine.service.ProcessTemplateService; |
| | | import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.core.launch.constant.FlowConstant; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿æå¡å®ç°ç±» |
| | | * |
| | | * @author wang1 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ProcessTemplateServiceImpl extends ServiceImpl<ProcessTemplateMapper, ProcessTemplate> implements ProcessTemplateService { |
| | | |
| | | |
| | | /** |
| | | * æ°å¢/ä¿®æ¹æµç¨æ¨¡æ¿ |
| | | * @param processTemplate |
| | | * @return |
| | | */ |
| | | public void saveOrUpdateUser(ProcessTemplate processTemplate){ |
| | | //æ ¡éªè¿ä¸ªæ¨¡æ¿ä¸ï¼ä¸ç±»æé®åªè½æä¸ä¸ªæ¨¡æ¿ |
| | | QueryWrapper<ProcessTemplate> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("button_type_key", processTemplate.getButtonTypeKey()); |
| | | if(StringUtils.isNotEmpty(processTemplate.getId())) {//ä¿®æ¹çæ¶å,idä¸ºç©ºå°±æ¯æ°å¢ |
| | | queryWrapper.ne("id", processTemplate.getId()); |
| | | } |
| | | if(baseMapper.selectOne(queryWrapper)!=null){ |
| | | throw new ServiceException(processTemplate.getButtonTypeValue()+"åè½å·²ç»é
ç½®äºæµç¨!"); |
| | | } |
| | | if(StringUtils.isEmpty(processTemplate.getButtonTypeValue())){ |
| | | processTemplate.setButtonTypeValue(ProcessTemplateTypeEnum.getTextByValue(processTemplate.getButtonTypeKey())); |
| | | } |
| | | //æ°å¢æè
ä¿®æ¹ |
| | | if(StringUtils.isEmpty(processTemplate.getId())){ |
| | | processTemplate.setCreated(Calendar.getInstance().getTime()); |
| | | processTemplate.setCreatedBy(TaskUtil.getTaskUser()); |
| | | processTemplate.setLastUpdated(Calendar.getInstance().getTime()); |
| | | processTemplate.setLastUpdatedBy(TaskUtil.getTaskUser()); |
| | | } |
| | | this.saveOrUpdate(processTemplate); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * å 餿µç¨æ¨¡æ¿ |
| | | * @param id |
| | | * @return |
| | | */ |
| | | public void deleteProcessTemplate(String id){ |
| | | baseMapper.deleteById(id); |
| | | } |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿ç¨é |
| | | * @return |
| | | */ |
| | | public List<Map<String,String>> processTemplateType(){ |
| | | ProcessTemplateTypeEnum[] es = ProcessTemplateTypeEnum.values(); |
| | | List<Map<String,String>> ll = new ArrayList<>(); |
| | | for (ProcessTemplateTypeEnum p:es){ |
| | | Map<String,String> mi = new HashMap<>(); |
| | | String value = p.getValue(); |
| | | String text = p.getText(); |
| | | mi.put("codee",value); |
| | | mi.put("namee",text); |
| | | ll.add(mi); |
| | | } |
| | | return ll; |
| | | } |
| | | } |
| | |
| | | where modelrelation.parent_model_id = #{_parameter} |
| | | </select> |
| | | |
| | | <update id="updateAssignee" parameterType="java.lang.String" > |
| | | ${u} |
| | | </update> |
| | | |
| | | </mapper> |
| | |
| | | * ç¼ç è§åï¼æå¡å¯å¨å |
| | | */ |
| | | APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"ä¸»æ°æ®"), |
| | | APPLICATION_FLOW_NAME(AppConstant.APPLICATION_FLOW_NAME,"ubcs-flow"), |
| | | ; |
| | | |
| | | /** |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.ubcs.starter.web.enumpck; |
| | | |
| | | |
| | | /** |
| | | * æµç¨æ¨¡æ¿åºç¨æé®ç±»å |
| | | * @author wang1 |
| | | */ |
| | | public enum ProcessTemplateTypeEnum implements BaseEnum { |
| | | |
| | | /** |
| | | * åå¸ |
| | | */ |
| | | PUBLIC("PUBLIC","åå¸"), |
| | | |
| | | /** |
| | | * åæ´ |
| | | */ |
| | | EDIT("EDIT","åæ´"), |
| | | |
| | | /** |
| | | * åç¨ |
| | | */ |
| | | ENABLE("ENABLE","åç¨"), |
| | | |
| | | /** |
| | | * å¯ç¨ |
| | | */ |
| | | DISABLE("DISABLE","å¯ç¨"); |
| | | |
| | | /** |
| | | * æä¸¾çå¼ |
| | | */ |
| | | private String value; |
| | | |
| | | /** |
| | | * æä¸¾æ¾ç¤ºææ¬ |
| | | */ |
| | | private String text; |
| | | |
| | | /** |
| | | * è·åæä¸¾å¼ |
| | | * |
| | | * @return æä¸¾å¼ |
| | | */ |
| | | @Override |
| | | public String getValue() { |
| | | return value; |
| | | } |
| | | |
| | | /** |
| | | * 设置æä¸¾å¼ |
| | | * |
| | | * @param value æä¸¾å¼ |
| | | */ |
| | | public void setValue(String value) { |
| | | this.value = value; |
| | | } |
| | | |
| | | /** |
| | | * è·åæä¸¾æ¾ç¤ºææ¬ |
| | | * |
| | | * @return æ¾ç¤ºææ¬ |
| | | */ |
| | | @Override |
| | | public String getText() { |
| | | return text; |
| | | } |
| | | |
| | | /** |
| | | * 设置æ¾ç¤ºææ¬ |
| | | * |
| | | * @param text æ¾ç¤ºææ¬ |
| | | */ |
| | | public void setText(String text) { |
| | | this.text = text; |
| | | } |
| | | |
| | | /** |
| | | * æé 彿° |
| | | * |
| | | * @param value å¼ |
| | | * @param text æ¾ç¤ºææ¬ |
| | | */ |
| | | private ProcessTemplateTypeEnum(String value, String text) { |
| | | this.value = value; |
| | | this.text = text; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åç§°è·å对åºçæä¸¾å¼ |
| | | * |
| | | * @param text åç§° |
| | | * @return æä¸¾å¼ |
| | | */ |
| | | public static String getValueByText(String text) { |
| | | for (ProcessTemplateTypeEnum wenum : ProcessTemplateTypeEnum.values()) { |
| | | if (wenum.getText().equalsIgnoreCase(text)) { |
| | | return wenum.getValue(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æä¸¾å¼è·ååç§° |
| | | * |
| | | * @param value æä¸¾å¼ |
| | | * @return åç§° |
| | | */ |
| | | public static String getTextByValue(String value) { |
| | | for (ProcessTemplateTypeEnum wenum : ProcessTemplateTypeEnum.values()) { |
| | | if (wenum.getValue().equalsIgnoreCase(value)) { |
| | | return wenum.getText(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æä¸¾å¼è·åæä¸¾å¯¹è±¡ |
| | | * |
| | | * @param value æä¸¾å¼ |
| | | * @return æä¸¾å¯¹è±¡ï¼ä¸å卿¶åè¿ånull |
| | | */ |
| | | public static ProcessTemplateTypeEnum forValue(String value) { |
| | | for (ProcessTemplateTypeEnum wenum : ProcessTemplateTypeEnum.values()) { |
| | | if (wenum.getValue().equalsIgnoreCase(value)) { |
| | | return wenum; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.vci.workflow.constant; |
| | | |
| | | public class FlowConstant { |
| | | |
| | | public static final String MAPPER_SCAN = "com.dragon.*.dao.*"; |
| | | |
| | | /** |
| | | * æäº¤äººçåéåç§° |
| | | */ |
| | | public static final String FLOW_SUBMITTER_VAR = "initiator"; |
| | | /** |
| | | * æäº¤äººèç¹åç§° |
| | | */ |
| | | public static final String FLOW_SUBMITTER = "æäº¤äºº"; |
| | | /** |
| | | * èªå¨è·³è¿èç¹è®¾ç½®å±æ§ |
| | | */ |
| | | public static final String FLOWABLE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED"; |
| | | /** |
| | | * æèµ·ç¶æ |
| | | */ |
| | | public static final int SUSPENSION_STATE = 2; |
| | | /** |
| | | * æ¿æ´»ç¶æ |
| | | */ |
| | | public static final int ACTIVATE_STATE = 1; |
| | | //åå ç¾ |
| | | public static final String AFTER_ADDSIGN = "after"; |
| | | //åå ç¾ |
| | | public static final String BEFORE_ADDSIGN = "before"; |
| | | |
| | | } |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.validation.Valid; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ç¨æ·å¯ç çç¥å
³è(UserPwdstrategy)表æ§å¶å± |
| | |
| | | regex = "^"+regex+"{"+strategy.getRequiredType()+",}$"; |
| | | boolean result = RegexUtil.find(regex, newPassword1); |
| | | if(!result){ |
| | | throw new ServiceException(resException); |
| | | //throw new ServiceException(resException); |
| | | } |
| | | //ä¿®æ¹å¯ç åæ¶ï¼æ¹åç¨æ·ä¿¡æ¯ä¸çå¯ç ä¿®æ¹ç¶æå段,å¯ç ä¿®æ¹æ¶é´ |
| | | return this.update(Wrappers.<User>update().lambda() |