|
|
|
@ -10,6 +10,7 @@ import cn.jyjz.flowable.entity.FlowTaskInfo;
|
|
|
|
|
import cn.jyjz.flowable.service.IFlowInstanceService;
|
|
|
|
|
import cn.jyjz.xiaoyao.common.base.language.SystemMessage;
|
|
|
|
|
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
|
|
|
|
|
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
|
|
|
|
|
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
|
|
|
|
|
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
|
|
|
|
|
import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao;
|
|
|
|
@ -439,7 +440,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(approve.getFlowTaskInfoList())) {
|
|
|
|
|
List<FlowTaskInfo> flowTaskInfoList = approve.getFlowTaskInfoList();
|
|
|
|
|
for (FlowTaskInfo flowTaskInfo : flowTaskInfoList) {
|
|
|
|
|
if(!formIds.contains(flowTaskInfo.getFormId())){
|
|
|
|
|
if (!formIds.contains(flowTaskInfo.getFormId())) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// 当前要处理的任务
|
|
|
|
@ -1289,7 +1290,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
* @param tenantId
|
|
|
|
|
* @param pageUtils
|
|
|
|
|
*/
|
|
|
|
|
public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils) {
|
|
|
|
|
public void getMyProcessInstances(User user, String tenantId, Map<String, Object> searchQuery, PageUtils pageUtils, String userSearchId) {
|
|
|
|
|
ParamterPage paramterPage = new ParamterPage();
|
|
|
|
|
paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize());
|
|
|
|
|
paramterPage.setPagesize(pageUtils.getPageSize());
|
|
|
|
@ -1314,6 +1315,15 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
query.put("searchassignee", user.getLoginname());
|
|
|
|
|
query.putAll(searchQuery);
|
|
|
|
|
|
|
|
|
|
if (!userSearchId.isEmpty()) {
|
|
|
|
|
OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId);
|
|
|
|
|
SearchQuery additionalQuery = new SearchQuery();
|
|
|
|
|
for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
|
|
|
|
|
this.formattingSearchChild1(additionalQuery, usersearchchild);
|
|
|
|
|
}
|
|
|
|
|
query.putAll(additionalQuery.getQuery());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Long count = ocrTaskchildPictureService.listmytaskCount(query);
|
|
|
|
|
|
|
|
|
|
query.put("page", paramterPage);
|
|
|
|
@ -1937,5 +1947,130 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
return queryWrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
|
|
|
|
|
switch (usersearchchild.getSearchRelationType()) {
|
|
|
|
|
case "where":
|
|
|
|
|
// 添加 "where" 查询条件
|
|
|
|
|
this.formattingSearchType1(searchQuery, usersearchchild);
|
|
|
|
|
break;
|
|
|
|
|
case "and":
|
|
|
|
|
// 添加 "and" 查询条件
|
|
|
|
|
SearchQuery andQuery = this.formattingSearchType1(new SearchQuery(), usersearchchild);
|
|
|
|
|
searchQuery.setSearchQuery(andQuery);
|
|
|
|
|
break;
|
|
|
|
|
case "or":
|
|
|
|
|
// 添加 "or" 查询条件
|
|
|
|
|
SearchQuery orQuery = this.formattingSearchType1(new SearchQuery(), usersearchchild);
|
|
|
|
|
searchQuery.setSearchQuery(orQuery);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return searchQuery;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) {
|
|
|
|
|
//查询类型 相等true 不相等fase
|
|
|
|
|
boolean queryType = "eq".equals(usersearchchild.getSearchtype());
|
|
|
|
|
|
|
|
|
|
// 1.获取检查数据,确定数据类型
|
|
|
|
|
String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue());
|
|
|
|
|
List<String> arrayData = null; //集合型数据
|
|
|
|
|
List<Integer> sectionInts = null; //纯数字区间型数据
|
|
|
|
|
String[] sections = null; //字符串区间型数据
|
|
|
|
|
DateTime beginTime = null; //日期时间区间型数据
|
|
|
|
|
DateTime endTime = null; //日期时间区间型数据
|
|
|
|
|
|
|
|
|
|
// 2.根据数据类型,解构数据
|
|
|
|
|
switch (valueType) {
|
|
|
|
|
case "array":
|
|
|
|
|
//处理多文件
|
|
|
|
|
String[] datas = usersearchchild.getSearchvalue().split(",");
|
|
|
|
|
arrayData = Arrays.asList(datas);
|
|
|
|
|
break;
|
|
|
|
|
case "section":
|
|
|
|
|
//格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除.
|
|
|
|
|
sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
|
|
|
|
|
//校验是否纯数字,纯数字的话,要转成int,否则比对时会有问题
|
|
|
|
|
sectionInts = new ArrayList<>();
|
|
|
|
|
for (String data : sections) {
|
|
|
|
|
if (data.matches("\\d+")) {
|
|
|
|
|
sectionInts.add(Integer.parseInt(data));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "time":
|
|
|
|
|
//格式化时间数据
|
|
|
|
|
String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-");
|
|
|
|
|
beginTime = DateUtil.parse(times[0], "yyyy/MM/dd");
|
|
|
|
|
endTime = DateUtil.parse(times[1], "yyyy/MM/dd");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 3.根据查询类型 组装查询条件 相等
|
|
|
|
|
switch (valueType) {
|
|
|
|
|
case "array":
|
|
|
|
|
//集合数据
|
|
|
|
|
//相等
|
|
|
|
|
if (queryType) {
|
|
|
|
|
searchQuery.addIn(usersearchchild.getSearchfield(), arrayData);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "section":
|
|
|
|
|
//数字区间查询
|
|
|
|
|
if (sectionInts != null && sectionInts.size() == 2) {
|
|
|
|
|
if (queryType) {
|
|
|
|
|
//相等
|
|
|
|
|
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0));
|
|
|
|
|
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0));
|
|
|
|
|
searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//字符串区间查询
|
|
|
|
|
if (queryType) {
|
|
|
|
|
//相等
|
|
|
|
|
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]);
|
|
|
|
|
searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]);
|
|
|
|
|
searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case "time":
|
|
|
|
|
//时间区间数据
|
|
|
|
|
//相等
|
|
|
|
|
if (queryType) {
|
|
|
|
|
searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), beginTime);
|
|
|
|
|
searchQuery.addLessEqual(usersearchchild.getSearchfield(), endTime);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
searchQuery.addLess(usersearchchild.getSearchfield(), beginTime);
|
|
|
|
|
searchQuery.addGreater(usersearchchild.getSearchfield(), endTime);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
if (queryType) {
|
|
|
|
|
searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
|
|
|
|
|
}
|
|
|
|
|
return searchQuery;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|