Browse Source

Merge remote-tracking branch 'origin/master'

tags/24080901
niohe·erbao 1 year ago
parent
commit
105b78288f
16 changed files with 178 additions and 108 deletions
  1. +28
    -0
      pgsql/nd_wlfow_org_models.sql
  2. +28
    -0
      pgsql/nd_wlfow_org_models_historys.sql
  3. +3
    -0
      pgsql/wflow_model_historys.sql
  4. +8
    -5
      pgsql/wflow_models.sql
  5. +10
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/common/helper/RegionCacheHelper.java
  6. +11
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/common/helper/impl/RegionsCacheHelperImpl.java
  7. +8
    -8
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java
  8. +2
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/Meeting.java
  9. +8
    -8
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/req/MeetingListReq.java
  10. +24
    -36
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/MeetingByManagerVO.java
  11. +26
    -20
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/MeetingManageHelper.java
  12. +8
    -19
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java
  13. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingServiceImpl.java
  14. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/task/ExpertInviteTask.java
  15. +1
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java
  16. +11
    -7
      pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java

+ 28
- 0
pgsql/nd_wlfow_org_models.sql View File

@@ -0,0 +1,28 @@
DROP TABLE IF EXISTS nd_wflow_org_models;
CREATE TABLE nd_wflow_org_models (
process_def_id varchar(40),
process_def_name varchar(255),
deploy_id varchar(255),
version int4 NOT NULL DEFAULT 1,
org_code varchar(50),
org_name varchar(255),
settings text,
group_id int8,
form_items text,
process text,
remark varchar(125),
sort int4 not null default 0,
is_delete BOOL not null default false,
is_stop BOOL not null default false,
created timestamp,
updated timestamp,
type varchar(125),
CONSTRAINT "nd_wflow_org_models_pri" PRIMARY KEY ("process_def_id")
);

comment on column nd_wflow_org_models.process_def_id is '流程配置id';
comment on column nd_wflow_org_models.process_def_name is '流程配置名字';
comment on column nd_wflow_org_models.version is '版本号';
comment on column nd_wflow_org_models.process is '流程内容';
comment on column nd_wflow_org_models.remark is '备注';
comment on column nd_wflow_org_models.type is '类型 DEFAULT默认 SEAL盖章 OTHER其它';

+ 28
- 0
pgsql/nd_wlfow_org_models_historys.sql View File

@@ -0,0 +1,28 @@
DROP TABLE IF EXISTS nd_wflow_org_model_historys;
CREATE TABLE nd_wflow_org_model_historys (
id bigserial,
process_def_id varchar(40),
process_def_name varchar(255),
deploy_id varchar(255),
version int4 NOT NULL DEFAULT 1,
org_code varchar(50),
org_name varchar(255),
settings text,
group_id int8,
form_items text,
process text,
remark varchar(125),
sort int4 not null default 0,
is_delete BOOL not null default false,
is_stop BOOL not null default false,
created timestamp,
updated timestamp,
type varchar(125),
CONSTRAINT "nd_wflow_org_model_historys_pri" PRIMARY KEY ("id")
);
comment on column nd_wflow_org_models.process_def_id is '流程配置id';
comment on column nd_wflow_org_models.process_def_name is '流程配置名字';
comment on column nd_wflow_org_models.version is '版本号';
comment on column nd_wflow_org_models.process is '流程内容';
comment on column nd_wflow_org_models.remark is '备注';
comment on column nd_wflow_org_models.type is '类型 DEFAULT默认 SEAL盖章 OTHER其它';

+ 3
- 0
pgsql/wflow_model_historys.sql View File

@@ -12,6 +12,9 @@ CREATE TABLE wflow_model_historys (
process json NOT NULL,
remark varchar(255),
created timestamp NULL DEFAULT NULL,
region_code varchar(50),
process_type int4,
node_map text,
CONSTRAINT "wflow_model_historys_pri" PRIMARY KEY ("id")
)
CREATE UNIQUE INDEX form_id_uk ON wflow_model_historys(form_id,version);

+ 8
- 5
pgsql/wflow_models.sql View File

@@ -1,20 +1,23 @@
DROP TABLE IF EXISTS wflow_models;
CREATE TABLE wflow_models (
form_id varchar(40),
form_id varchar(40),
process_def_id varchar(40),
deploy_id varchar(40),
version int4 NOT NULL DEFAULT 1,
form_name varchar(50),
logo json,
settings json,
logo text,
settings text,
group_id int8,
form_items json NOT NULL,
process json NOT NULL,
form_items text NOT NULL,
process text NOT NULL,
remark varchar(125),
sort int4 NOT NULL,
is_delete BOOL,
is_stop BOOL,
created timestamp,
updated timestamp,
region_code varchar(50),
process_type int4,
node_map text,
CONSTRAINT "wflow_models_pri" PRIMARY KEY ("form_id")
)

+ 10
- 0
pmapi/src/main/java/com/ningdatech/pmapi/common/helper/RegionCacheHelper.java View File

@@ -54,6 +54,16 @@ public interface RegionCacheHelper {
List<RegionDTO> listParents(String code, int level);

/**
* 根据传入的地区code与level获取所有子区域集合
*
* @param code 地域编码
* @param level 地域层级
* @return 所有子区域(包含自己)
* @author WendyYang
**/
List<RegionDTO> listChildren(String code, int level);

/**
* 获取当前区域所有的子区域(包括自己)
*
* @param code 区域编码


+ 11
- 0
pmapi/src/main/java/com/ningdatech/pmapi/common/helper/impl/RegionsCacheHelperImpl.java View File

@@ -170,4 +170,15 @@ public class RegionsCacheHelperImpl extends AbstractRegionCacheHelper implements
return result;
}

@Override
public List<RegionDTO> listChildren(String code, int level) {
RegionDTO curr = getByCodeAndLevel(code, level);
if (curr.getParentCode().equals(curr.getRegionCode())) {
return Collections.singletonList(curr);
}
return all().stream()
.filter(w -> StrUtils.split(w.getRegionCodePath()).contains(code))
.collect(Collectors.toList());
}

}

+ 8
- 8
pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java View File

@@ -52,16 +52,16 @@ public class MeetingController {
return meetingManage.expertCountOnChange(po);
}

@ApiOperation("专家抽取员会议列表")
@GetMapping("/meetingListByManager")
@WebLog(value = "专家抽取员事务列表")
public PageVo<MeetingByManagerVO> meetingListByManager(MeetingListReq po) {
return meetingManage.meetingListByManager(po);
@ApiOperation("管理员会议列表")
@GetMapping("/manager/meetingList")
@WebLog(value = "管理员会议列表")
public PageVo<MeetingByManagerVO> meetingListByManager(MeetingListReq req) {
return meetingManage.meetingListByManager(req);
}

@ApiOperation("履职记录 | 专家会议列表")
@GetMapping("/meetingListByExpert")
@WebLog(value = "履职记录 | 专家会议列表")
@ApiOperation("专家会议列表")
@GetMapping("/expert/meetingList")
@WebLog(value = "专家会议列表")
public PageVo<MeetingByManagerVO> meetingListByExpert(MeetingListReq po) {
return meetingManage.meetingListByExpert(po);
}


+ 2
- 2
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/Meeting.java View File

@@ -62,8 +62,8 @@ public class Meeting implements Serializable {

private Integer status;

@ApiModelProperty("是否停止随机邀请")
private Boolean inviteStopped;
@ApiModelProperty("抽取状态")
private Boolean inviteStatus;

@ApiModelProperty("是否确认名单")
private Boolean confirmedRoster;


+ 8
- 8
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/req/MeetingListReq.java View File

@@ -22,28 +22,28 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true)
public class MeetingListReq extends PagePo {

@ApiModelProperty("事务名称")
@ApiModelProperty("会议名称")
private String name;

@ApiModelProperty("事务开始时间")
@ApiModelProperty("会议开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;

@ApiModelProperty("事务结束时间")
@ApiModelProperty("会议结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;

@ApiModelProperty("地点")
private String address;

@ApiModelProperty("事务状态:1 未完成、2 已完成、3 已取消\n" +
"专家参与状态:1 待参加、2 已参加、3 已请假")
private Integer status;

@ApiModelProperty("事务类型")
private String type;
@ApiModelProperty("会议类型")
private String meetingType;

@ApiModelProperty("专家ID")
private Long expertId;

@ApiModelProperty("项目名称")
private String projectName;

}

+ 24
- 36
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/MeetingByManagerVO.java View File

@@ -26,51 +26,39 @@ public class MeetingByManagerVO {
public MeetingByManagerVO() {
}

@ApiModelProperty("事务ID")
private Long id;
@ApiModelProperty("会议ID")
private Long meetingId;

@ApiModelProperty("事务状态")
private Integer status;

@ApiModelProperty("会议参加状态:1 待参加、2 已参加、3 已请假")
private Integer attendStatus;

@ApiModelProperty("事务名称")
private String name;

@ApiModelProperty("联系人")
private String connecter;

@ApiModelProperty("联系方式")
private String contact;

@ApiModelProperty("会议地址详情")
private String meetingAddress;

@ApiModelProperty("事务类型编码")
private String dateType;

@ApiModelProperty("事务类型名称")
private String dateTypeName;

@ApiModelProperty("事务开始时间")
@ApiModelProperty("会议开始时间")
@JSONField(format = "yyyy-MM-dd HH:mm")
private LocalDateTime startTime;

@ApiModelProperty("事务结束时间")
@ApiModelProperty("会议结束时间")
@JSONField(format = "yyyy-MM-dd HH:mm")
private LocalDateTime endTime;

@ApiModelProperty("邀请人数")
private Integer inviteCount;
@ApiModelProperty("会议状态")
private Integer status;

@ApiModelProperty("抽取类型")
private Integer inviteType;

@ApiModelProperty("抽取状态")
private Boolean inviteStatus;

@ApiModelProperty("名单确认状态")
private Boolean confirmedRoster;

@ApiModelProperty("会议参加状态:1 待参加、2 已参加、3 已请假")
private Integer attendStatus;

@ApiModelProperty("确认人数")
private Integer confirmCount;
@ApiModelProperty("会议名称")
private String meetingName;

@ApiModelProperty("是否进行了专家抽取:true 是、false 否")
private Boolean invited;
@ApiModelProperty("会议类型编码")
private String meetingType;

@ApiModelProperty("抽取单位")
private String holdOrg;
@ApiModelProperty("会议类型名称")
private String meetingTypeName;

}

+ 26
- 20
pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/MeetingManageHelper.java View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.pmapi.common.util.BizUtils;
import com.ningdatech.pmapi.common.util.StrUtils;
import com.ningdatech.pmapi.expert.constant.ExpertAccountStatusEnum;
import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;
import com.ningdatech.pmapi.expert.service.ExpertInfoService;
@@ -24,14 +25,12 @@ import com.ningdatech.pmapi.meeting.service.IExpertInviteAvoidRuleService;
import com.ningdatech.pmapi.meeting.service.IExpertInviteRuleService;
import com.ningdatech.pmapi.meeting.service.IMeetingExpertService;
import com.ningdatech.pmapi.meta.helper.DictionaryCache;
import com.ningdatech.pmapi.meta.model.dto.DictionaryDTO;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.*;

/**
* <p>
@@ -73,32 +72,39 @@ public class MeetingManageHelper {
}

public MeetingByManagerVO buildByMeeting(Meeting meeting) {
DictionaryDTO dict = dictionaryCache.getByCode(meeting.getType());
return MeetingByManagerVO.builder()
.id(meeting.getId())
.dateTypeName(dictionaryCache.getByCode(meeting.getType()).getName())
.meetingAddress(meeting.getMeetingAddress())
.name(meeting.getName())
.meetingId(meeting.getId())
.meetingTypeName(dict == null ? "" : dict.getName())
.meetingName(meeting.getName())
.startTime(meeting.getStartTime())
.endTime(meeting.getEndTime())
.connecter(meeting.getConnecter())
.contact(meeting.getContact())
.inviteType(meeting.getInviteType())
.confirmedRoster(meeting.getConfirmedRoster())
.inviteStatus(meeting.getInviteStatus())
.status(meeting.getStatus())
.holdOrg(meeting.getHoldOrg())
.build();
}

public void buildMeetingQuery(LambdaQueryWrapper<Meeting> query, MeetingListReq po) {
if (StrUtil.isNotBlank(po.getName())) {
query.like(Meeting::getName, po.getName());
public void buildMeetingQuery(LambdaQueryWrapper<Meeting> query, MeetingListReq req) {
if (StrUtil.isNotBlank(req.getName())) {
query.like(Meeting::getName, req.getName());
}
if (StrUtil.isNotBlank(po.getType())) {
query.eq(Meeting::getType, po.getType());
if (StrUtil.isNotBlank(req.getMeetingType())) {
query.eq(Meeting::getType, req.getMeetingType());
}
if (po.getStartTime() != null) {
query.ge(Meeting::getStartTime, po.getStartTime());
if (req.getStartTime() != null) {
query.ge(Meeting::getStartTime, req.getStartTime());
}
if (po.getEndTime() != null) {
query.le(Meeting::getEndTime, po.getEndTime());
if (req.getEndTime() != null) {
query.le(Meeting::getEndTime, req.getEndTime());
}
if (StrUtils.isNotBlank(req.getProjectName())) {
String projectName = "%" + req.getProjectName() + "%";
query.and(q1 -> q1.exists("select 1 from nd_project np inner join meeting_inner_project mip on mip.project_id = np.id" +
" where mip.meeting_id = meeting.id and np.project_name like {0}", projectName)
.or(q2 -> q2.exists("select 1 from meeting_outer_project mop where mop.meeting_id = meeting.id" +
"and mop.project_name like {0}", projectName)));
}
}



+ 8
- 19
pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java View File

@@ -111,7 +111,7 @@ public class MeetingManage {
meeting.setHoldOrgCode(userDetail.getOrganizationCode());
meeting.setRegionCode(userDetail.getRegionCode());
meeting.setCreator(userDetail.getUsername());
meeting.setInviteStopped(Boolean.FALSE);
meeting.setInviteStatus(Boolean.FALSE);
meeting.setConfirmedRoster(Boolean.FALSE);
meeting.setInviteType(inviteRule.getInviteType());
meetingService.save(meeting);
@@ -166,7 +166,7 @@ public class MeetingManage {
expertInviteManage.expertRandomInviteByMeetingCreate(meeting, randomRules, avoidInfo);
expertInviteTask.addInviteExpertTaskByMeetingCreate(meeting.getId(), 5);
LambdaUpdateWrapper<Meeting> update = Wrappers.lambdaUpdate(Meeting.class);
update.set(Meeting::getInviteStopped, false);
update.set(Meeting::getInviteStatus, false);
update.eq(Meeting::getId, meeting.getId());
meetingService.update(update);
// 回避规则
@@ -271,37 +271,26 @@ public class MeetingManage {
/**
* 管理员会议列表
*
* @param po 查询参数
* @param req 查询参数
* @return 会议列表
* @author WendyYang
*/
public PageVo<MeetingByManagerVO> meetingListByManager(MeetingListReq po) {
public PageVo<MeetingByManagerVO> meetingListByManager(MeetingListReq req) {
LambdaQueryWrapper<Meeting> query = new LambdaQueryWrapper<Meeting>()
.orderByDesc(Meeting::getCreateOn);
// 补充逻辑 如果拥有超级管理员权限可以看到所有事务
if (!permissionCheckHelper.isSuperAdmin()) {
query.eq(Meeting::getCreateBy, LoginUserUtil.getUserId());
}
query.eq(po.getStatus() != null, Meeting::getStatus, po.getStatus());
meetingManageHelper.buildMeetingQuery(query, po);
Page<Meeting> page = meetingService.page(po.page(), query);
query.eq(req.getStatus() != null, Meeting::getStatus, req.getStatus());
meetingManageHelper.buildMeetingQuery(query, req);
Page<Meeting> page = meetingService.page(req.page(), query);
if (page.getTotal() == 0) {
return PageVo.empty();
}
PageVo<MeetingByManagerVO> result = new PageVo<>(new ArrayList<>(), page.getTotal());
Map<Long, CountConfirmByMeetingIdDTO> countConfirmMap = new HashMap<>(16);
List<Long> meetingIds = CollUtils.fieldList(page.getRecords(), Meeting::getId);
countConfirmMap.putAll(meetingExpertService.countConfirmedByMeetingIds(meetingIds));
page.getRecords().forEach(meeting -> {
MeetingByManagerVO item = meetingManageHelper.buildByMeeting(meeting);
CountConfirmByMeetingIdDTO confirm = countConfirmMap.get(meeting.getId());
if (confirm == null) {
item.setInviteCount(0);
item.setConfirmCount(0);
} else {
item.setInviteCount(confirm.getTotal());
item.setConfirmCount(confirm.getConfirmed());
}
result.getRecords().add(item);
});
return result;
@@ -354,7 +343,7 @@ public class MeetingManage {
throw BizException.wrap("该会议信息不存在");
}
ExpertInviteDetailVO result = new ExpertInviteDetailVO();
result.setInvitedStopped(meeting.getInviteStopped());
result.setInvitedStopped(meeting.getInviteStatus());
result.setConfirmedRoster(meeting.getConfirmedRoster());
List<MeetingExpert> experts = meetingExpertService.listByMeetingId(meetingId);
if (experts.isEmpty()) {


+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingServiceImpl.java View File

@@ -27,7 +27,7 @@ public class MeetingServiceImpl extends ServiceImpl<MeetingMapper, Meeting> impl
public void stopRandomInvite(Long meetingId) {
Meeting meeting = new Meeting();
meeting.setId(meetingId);
meeting.setInviteStopped(Boolean.TRUE);
meeting.setInviteStatus(Boolean.TRUE);
baseMapper.updateById(meeting);
}



+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/meeting/task/ExpertInviteTask.java View File

@@ -156,7 +156,7 @@ public class ExpertInviteTask {
addInviteExpertTask(meetingId, false, properties.getInviteDelay());
log.info("重置会议的随机抽取状态:{}", meetingId);
LambdaUpdateWrapper<Meeting> update = Wrappers.lambdaUpdate(Meeting.class);
update.set(Meeting::getInviteStopped, false);
update.set(Meeting::getInviteStatus, false);
update.set(Meeting::getUpdateBy, LoginUserUtil.getUserId());
update.set(Meeting::getUpdateOn, LocalDateTime.now());
update.eq(Meeting::getId, meetingId);


+ 1
- 1
pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java View File

@@ -24,7 +24,7 @@ public abstract class AbstractDictionaryCache implements InitializingBean, Dicti
@Autowired
private IMetaDictionaryService iMetaDictionaryService;

protected Map<String, DictionaryDTO> dictionaryMap;
protected Map<String, DictionaryDTO> dictionaryMap = new ConcurrentHashMap<>();
protected LoadingCache<String, List<DictionaryDTO>> dictionaryCacheHelper;

@Override


+ 11
- 7
pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/InitProcessTask.java View File

@@ -3,12 +3,15 @@ package com.ningdatech.pmapi.scheduler.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Maps;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.pmapi.common.constant.RegionConst;
import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum;
import com.ningdatech.pmapi.common.helper.RegionCacheHelper;
import com.ningdatech.pmapi.scheduler.contants.TaskContant;
import com.ningdatech.pmapi.sys.model.dto.RegionDTO;
import com.ningdatech.pmapi.sys.model.entity.Region;
import com.ningdatech.pmapi.sys.service.IRegionService;
import com.wflow.bean.dto.WflowModelHistorysDto;
@@ -45,16 +48,16 @@ public class InitProcessTask {

private final WflowFormsService formsService;

@Scheduled(cron = "0 22 17 30 1 ?")
private final RegionCacheHelper regionCacheHelper;

@Scheduled(cron = "0 31 15 07 3 ?")
public void doTask() throws UnknownHostException {
if (TaskContant.Host.HOST_ZPF.equals(InetAddress.getLocalHost().getHostName())) {
log.info("=========== 初始化丽水二期 系统表单和流程配置 ======== 任务开始");
StopWatch stopWatch = new StopWatch();
stopWatch.start();
//1.查出丽水市下的 区县 分别去初始化 表单和流程配置数据
List<Region> regions = regionService.list(Wrappers.lambdaQuery(Region.class)
.eq(Region::getDeleted,Boolean.FALSE)
.eq(Region::getParentCode, RegionConst.RC_LS));
List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_LS, RegionConst.RL_COUNTY);

if(CollUtil.isEmpty(regions)){
throw new BizException("丽水地区数据为空 任务结束!");
@@ -62,7 +65,7 @@ public class InitProcessTask {

Map<String, WflowForms> formsMap = Maps.newConcurrentMap();
//2.首先插入表单默认配置
for(Region region : regions){
for(RegionDTO region : regions){
log.info("当前初始化的是 【{}】 表单信息",region.getRegionName());

WflowForms existsForm = formsService.getOne(Wrappers.lambdaQuery(WflowForms.class)
@@ -90,7 +93,7 @@ public class InitProcessTask {
}

//3.接着插入流程默认配置
for(Region region : regions){
for(RegionDTO region : regions){
log.info("当前初始化的是 【{}】 流程配置",region.getRegionName());

if(processModelService.count(Wrappers.lambdaQuery(WflowModels.class)
@@ -116,7 +119,8 @@ public class InitProcessTask {
models.setFormName(formName);
models.setProcessType(processType);
models.setRegionCode(region.getRegionCode());
ProcessNode processNode = new ProcessNode();
String process = "{\"children\":{\"children\":{},\"id\":\"node_039152532706\",\"name\":\"审批人\",\"parentId\":\"root\",\"props\":{\"mode\":\"AND\",\"role\":[],\"refuse\":{\"type\":\"TO_END\",\"target\":\"\"},\"assignedOrg\":[{\"orgName\":\"数转办\",\"orgCode\":\"GO_3bc86256687a4884ae410af00682b762\",\"type\":\"DEFAULT\",\"processDefId\":\"\"}],\"sign\":false,\"assignedType\":\"ASSIGN_ORG\",\"assignedDept\":[]},\"type\":\"SUB\"},\"id\":\"root\",\"name\":\"发起人\",\"props\":{\"formPerms\":[],\"assignedUser\":[]},\"type\":\"ROOT\"}";
ProcessNode processNode = JSON.parseObject(process,ProcessNode.class);
models.setProcess(processNode);
models.setSettings("{\"sign\":false,\"admin\":[],\"notify\":{},\"commiter\":[]}");
models.setFormItems("[]");


Loading…
Cancel
Save