包头bug修改
This commit is contained in:
parent
4e372d7841
commit
e790288bfc
146
src/main/java/com/wflow/controller/CustomController.java
Normal file
146
src/main/java/com/wflow/controller/CustomController.java
Normal file
@ -0,0 +1,146 @@
|
||||
package com.wflow.controller;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wflow.bean.entity.WflowModelHistorys;
|
||||
import com.wflow.bean.entity.WflowModels;
|
||||
import com.wflow.mapper.WflowModelHistorysMapper;
|
||||
import com.wflow.mapper.WflowModelsMapper;
|
||||
import com.wflow.service.CustomListenService;
|
||||
import com.wflow.utils.R;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 自定义接口
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("wflow/custom")
|
||||
@Slf4j
|
||||
public class CustomController {
|
||||
|
||||
//捕获node分组
|
||||
Pattern nodePattern = Pattern.compile("(node_\\d{12})");
|
||||
//捕获field分组
|
||||
Pattern fieldPattern = Pattern.compile("(field\\d{13})");
|
||||
@Autowired
|
||||
private CustomListenService customListenService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private WflowModelsMapper wflowModelsMapper;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private WflowModelHistorysMapper wflowModelHistorysMapper;
|
||||
|
||||
/**
|
||||
* 随机生成数字
|
||||
*
|
||||
* @param num 位数
|
||||
* @return
|
||||
*/
|
||||
private static String getRandomNum(int num) {
|
||||
Random random = new Random();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
int digit = random.nextInt(10);
|
||||
sb.append(digit);
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存抄送人单位和时间(在抄送流程后面配置触发器使用),这是工程质量控制点检查、检测通知单
|
||||
*
|
||||
* @param instanceId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("saveCcmeAndDate")
|
||||
public Object saveCcmeAndDate(@RequestParam String instanceId, @RequestParam String ccMeField, @RequestParam String dateField) {
|
||||
customListenService.saveCcmeAndDate(instanceId, ccMeField, dateField);
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制一个流程
|
||||
*/
|
||||
@PostMapping("copyProcess")
|
||||
public Object copyProcess(@RequestBody HashMap<String, Object> param) {
|
||||
String fromCode = MapUtil.getStr(param, "fromCode");
|
||||
String toCode = MapUtil.getStr(param, "toCode");
|
||||
WflowModels fromMode = wflowModelsMapper.selectOne(new LambdaQueryWrapper<WflowModels>()
|
||||
.eq(WflowModels::getFormId, fromCode));
|
||||
log.info("fromMode:{}", JSON.toJSONString(fromMode));
|
||||
List<WflowModelHistorys> historys = wflowModelHistorysMapper.selectList(new LambdaQueryWrapper<WflowModelHistorys>()
|
||||
.eq(WflowModelHistorys::getFormId, toCode));
|
||||
Optional<WflowModelHistorys> first = historys.stream().sorted((o1, o2) -> o2.getVersion().compareTo(o1.getVersion())).findFirst();
|
||||
String formItems = fromMode.getFormItems();
|
||||
String formConfig = fromMode.getFormConfig();
|
||||
String process = fromMode.getProcess();
|
||||
String processConfig = fromMode.getProcessConfig();
|
||||
WflowModelHistorys toModel = first.get();
|
||||
log.info("oldToModel:{}", JSON.toJSONString(toModel));
|
||||
Set<String> fields = getMatcherSet(formItems, fieldPattern);
|
||||
fields.addAll(getMatcherSet(formConfig, fieldPattern));
|
||||
fields.addAll(getMatcherSet(process, fieldPattern));
|
||||
fields.addAll(getMatcherSet(processConfig, fieldPattern));
|
||||
Set<String> nodes = getMatcherSet(formItems, nodePattern);
|
||||
nodes.addAll(getMatcherSet(formConfig, nodePattern));
|
||||
nodes.addAll(getMatcherSet(process, nodePattern));
|
||||
nodes.addAll(getMatcherSet(processConfig, nodePattern));
|
||||
StringBuilder fieldSb = new StringBuilder();
|
||||
StringBuilder nodeSb = new StringBuilder();
|
||||
for (String field : fields) {
|
||||
String randomNum = getRandomNum(13);
|
||||
String replacement = "field" + randomNum;
|
||||
formItems = formItems.replace(field, replacement);
|
||||
formConfig = formConfig.replace(field, replacement);
|
||||
process = process.replace(field, replacement);
|
||||
processConfig = processConfig.replace(field, replacement);
|
||||
fieldSb.append(field).append("=>").append(replacement).append("#");
|
||||
}
|
||||
for (String node : nodes) {
|
||||
String randomNum = getRandomNum(12);
|
||||
String replacement = "node" + "_" + randomNum;
|
||||
formItems = formItems.replace(node, replacement);
|
||||
formConfig = formConfig.replace(node, replacement);
|
||||
process = process.replace(node, replacement);
|
||||
processConfig = processConfig.replace(node, replacement);
|
||||
nodeSb.append(node).append("=>").append(replacement).append("#");
|
||||
}
|
||||
toModel.setFormItems(formItems);
|
||||
toModel.setFormConfig(formConfig);
|
||||
toModel.setProcess(process);
|
||||
toModel.setProcessConfig(processConfig);
|
||||
log.info("newToModel:{}", JSON.toJSONString(toModel));
|
||||
log.info("变化FIELD:{}", fieldSb.toString());
|
||||
log.info("变化NODE:{}", nodeSb.toString());
|
||||
wflowModelHistorysMapper.updateById(toModel);
|
||||
return R.ok("成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取匹配的字符串列表
|
||||
*
|
||||
* @param str
|
||||
* @param pattern
|
||||
* @return
|
||||
*/
|
||||
private Set<String> getMatcherSet(String str, Pattern pattern) {
|
||||
Set<String> fields = new HashSet<>();
|
||||
Matcher matcher = pattern.matcher(str);
|
||||
while (matcher.find()) {
|
||||
String idValue = matcher.group(1);
|
||||
fields.add(idValue);
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
}
|
||||
@ -1,33 +0,0 @@
|
||||
package com.wflow.controller;
|
||||
|
||||
import com.wflow.service.CustomListenService;
|
||||
import com.wflow.utils.R;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author : willian fu
|
||||
* @date : 2023/11/26
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("wflow/custom")
|
||||
public class CustomListenController {
|
||||
|
||||
@Autowired
|
||||
private CustomListenService customListenService;
|
||||
|
||||
/**
|
||||
* 保存抄送人单位和时间(在抄送流程后面配置触发器使用),这是工程质量控制点检查、检测通知单
|
||||
*
|
||||
* @param instanceId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("saveCcmeAndDate")
|
||||
public Object saveCcmeAndDate(@RequestParam String instanceId, @RequestParam String ccMeField, @RequestParam String dateField) {
|
||||
customListenService.saveCcmeAndDate(instanceId, ccMeField, dateField);
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
}
|
||||
@ -64,7 +64,7 @@ public class ProcessInstanceController {
|
||||
* @param pageNo 页码
|
||||
* @param code 表单流程ID(流程定义KEY)
|
||||
* @param finished 流程是否已经结束
|
||||
* @param customStatus 1待催办2已办结3审批进行中4审批被撤销5审批被驳回
|
||||
* @param customStatus 1待催办2已办结3审批进行中4审批被撤销5审批被驳回6审批通过
|
||||
* @return 列表数据
|
||||
*/
|
||||
@OperLog(operModul = "审批管理",operType = "获取系统待我处理的流程",operDesc = "获取系统待我处理的流程")
|
||||
|
||||
@ -437,10 +437,11 @@ public class ProcessInstanceServiceImpl implements ProcessInstanceService {
|
||||
instanceQuery.or().processInstanceBusinessStatusLike("PRE%").endOr();
|
||||
}
|
||||
Executor.builder()
|
||||
//customStatus 1待催办2已办结3审批进行中4审批被撤销5审批被驳回
|
||||
//customStatus 1待催办2已办结3审批进行中4审批被撤销5审批被驳回6审批通过
|
||||
.ifTrueNext(Objects.equals(customStatus, 1), instanceQuery::unfinished)
|
||||
.ifTrueNext(Objects.equals(customStatus, 3), instanceQuery::unfinished)
|
||||
.ifNotBlankNext(Objects.equals(customStatus, 5) ? ProcessStatus.REFUSE.toString() : null, instanceQuery::processInstanceBusinessStatus)
|
||||
.ifNotBlankNext(Objects.equals(customStatus, 6) ? ProcessStatus.PRE_PASS.toString() : null, instanceQuery::processInstanceBusinessStatus)
|
||||
.ifNotBlankNext(startUser, instanceQuery::startedBy)
|
||||
.ifNotBlankNext(code, instanceQuery::processDefinitionKey)
|
||||
.ifTrueNext(null != startTimes && startTimes.length > 1, () -> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user