1.修改发起工单时缓存为空报错问题

main
yitonglei 3 years ago
parent 075abef752
commit ea02bbfdda
  1. 124
      .idea/uiDesigner.xml
  2. 33
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/controller/AutoStartProcessController.java
  3. 3
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/IAutoStartModelService.java
  4. 14
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java
  5. 18
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/vo/AutoStartModelVO.java
  6. 27
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -10,9 +10,11 @@ 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.springblade.system.entity.AuthClient;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@ -27,16 +29,25 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/autoProcess")
@Api(value = "自动启动的工作流的原型信息", tags = "自动启动的工作流的原型信息")
public class AutoStartProcessController extends BladeController {
private final IAutoStartModelService autoStartModelService;
// /**
// * 分页
// */
// @GetMapping("/list")
// @ApiOperationSupport(order = 1)
// @ApiOperation(value = "分页", notes = "传入autoStartModel")
// public R<IPage<AuthClient>> list(AuthClient authClient, Query query) {
// IPage<AuthClient> pages = clientService.page(Condition.getPage(query), Condition.getQueryWrapper(authClient));
// return R.data(pages);
// }
/**
* 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "分页", notes = "传入autoStartModel")
public R<IPage<AutoStartModel>> list(AutoStartModel model, Query query) {
IPage<AutoStartModel> page = autoStartModelService.page(Condition.getPage(query), Condition.getQueryWrapper(model));
return R.data(page);
}
@GetMapping("/detail")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "详情", notes = "详情")
public R detail(@RequestParam String id){
return null;
}
}

@ -1,6 +1,7 @@
package org.springblade.plugin.workbench.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.tool.api.R;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import java.util.List;
@ -13,4 +14,6 @@ import java.util.Map;
*/
public interface IAutoStartModelService extends IService<AutoStartModel> {
List<Map<String,Object>> bladeManMadeVariabList();
R getOne(String id);
}

@ -1,10 +1,12 @@
package org.springblade.plugin.workbench.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.flowable.engine.HistoryService;
import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.plugin.workbench.entity.AutoStartModel;
import org.springblade.plugin.workbench.mapper.BladeManMadeMapper;
import org.springblade.plugin.workbench.service.IAutoStartModelService;
@ -44,4 +46,16 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
return maps;
}
@Override
public R getOne(String id) {
LambdaQueryWrapper<AutoStartModel> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(AutoStartModel::getId, id);
AutoStartModel autoStartModel = baseMapper.selectOne(queryWrapper);
return R.data(autoStartModel);
}
}

@ -0,0 +1,18 @@
package org.springblade.plugin.workbench.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @Description
* @Author ytl
* @Date 2023/2/22 0022 15:23
*/
@Data
@ApiModel(value = "WfCopyVO对象", description = "流程抄送")
public class AutoStartModelVO implements Serializable {
private static final long serialVersionUID = 1L;
}

@ -179,14 +179,17 @@ public class WfProcessService implements IWfProcessService {
//判断该手动发起任务是否已经发起过,或者时不重复任务
if(StringUtils.equals(variables.get("$chongfumoshi").toString(),"不重复")){
System.out.println("发起不重复任务-----");
// 启动流程
identityService.setAuthenticatedUserId(userId);
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, definition.getKey(), variables);
return handleProcessInstance(processInstance, variables);
}else if(this.isNewProcess(variables) && Func.isEmpty(variables.get("forcestart"))){
System.out.println("提醒是否要手动发起重复任务-----");
return "类似任务已经发起过,是否要强制发起";
}else{
System.out.println("手动发起任务-------1");
//如果是技术员发起的一般任务,直接指定assignee = 公司
if(Func.equals(createRoleName, WfProcessConstant.COMMENT_ROLE_NAME) && Func.equals(variables.get("$renwudengji"), WfProcessConstant.COMMENT_TASK_LEVEL)){
variables.put("assignee",variables.get("yunweigongsi"));
@ -196,6 +199,7 @@ public class WfProcessService implements IWfProcessService {
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, definition.getKey(), variables);
System.out.println("手动发起任务-------2");
//将新增的流程实例id保存到blade_flow_man_made
AutoStartModel autoStartModel = new AutoStartModel();
autoStartModel.setProcInstId(processInstance.getId());
@ -211,7 +215,7 @@ public class WfProcessService implements IWfProcessService {
autoStartModel.setTaskType(Long.valueOf(variables.get("renwuzhonglei").toString()));
autoStartModel.setTaskLevel(Long.valueOf(variables.get("renwudengji").toString()));
autoStartModel.setRepeatMode(Long.valueOf(variables.get("chongfumoshi").toString()));
System.out.println("手动发起任务-------3");
autoStartModelService.save(autoStartModel);
FlowCache.clearBladeManMadeCache();
return handleProcessInstance(processInstance, variables);
@ -223,14 +227,21 @@ public class WfProcessService implements IWfProcessService {
private boolean isNewProcess(Map<String, Object> variables){
boolean b = false;
if(autoStartModelService.list().size() ==0){
b = false;
return b;
}
List<Map<String, Object>> processInstanceVariable = FlowCache.getProcessInstanceVariable();
for(Map<String,Object> hi : processInstanceVariable){
boolean noEqual = this.isNoEqual(variables, hi);
if(noEqual){//有不相等的,直接下一次循环判断
continue;
}else{//没有不相等的,说明有重复的,结束循环,返回b=true
b = true;
break;
System.out.println(processInstanceVariable.size() + "-----------------------------");
if (processInstanceVariable.size() > 0) {
for(Map<String,Object> hi : processInstanceVariable){
boolean noEqual = this.isNoEqual(variables, hi);
if(noEqual){//有不相等的,直接下一次循环判断
continue;
}else{//没有不相等的,说明有重复的,结束循环,返回b=true
b = true;
break;
}
}
}

Loading…
Cancel
Save