|
|
|
@ -1,5 +1,7 @@
|
|
|
|
|
package cn.jyjz.flowable.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.jyjz.flowable.common.SystemConstantsOa;
|
|
|
|
|
import cn.jyjz.flowable.config.CustomProcessDiagramGenerator;
|
|
|
|
|
import cn.jyjz.flowable.domain.vo.*;
|
|
|
|
@ -31,9 +33,10 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.UserFinal;
|
|
|
|
|
import cn.jyjz.xiaoyao.oa.from.service.*;
|
|
|
|
|
|
|
|
|
|
import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.dataobject.*;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
|
|
|
|
|
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
|
@ -100,6 +103,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
private IRunFlowableActinstDao runFlowableActinstDao;
|
|
|
|
|
@Resource
|
|
|
|
|
private IHisFlowableActinstDao hisFlowableActinstDao;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private OcrUsersearchService ocrUsersearchService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
|
|
|
|
|
|
|
|
|
@ -1047,7 +1054,33 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
pageUtils.setTotalCount(count.intValue());
|
|
|
|
|
pageUtils.setList(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public IPage<OcrTaskchildPicture> queryPageByUserSearchId(Integer pageNo, Integer pageSize, String userSearchId) {
|
|
|
|
|
OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId);
|
|
|
|
|
|
|
|
|
|
QueryWrapper<OcrTaskchildPicture> queryWrapper = new QueryWrapper();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
|
|
|
|
|
this.formattingSearchChild(queryWrapper, usersearchchild);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//分页查询并组装子集数据
|
|
|
|
|
Page<OcrTaskchildPicture> page = new Page<>(pageNo, pageSize);
|
|
|
|
|
// IPage<OcrTaskchildPicture> pageList = this.page(page, queryWrapper);
|
|
|
|
|
// for (OcrTaskchildPicture ocrPicture1 : pageList.getRecords()) {
|
|
|
|
|
// if (org.apache.commons.lang3.StringUtils.isNotBlank(ocrPicture1.getPictureclassid())) {
|
|
|
|
|
// OcrPictureclass ocrPictureclass = ocrPictureclassService.getById(ocrPicture1.getPictureclassid());
|
|
|
|
|
// ocrPicture1.setOcrPictureclass(ocrPictureclass);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return pageList;
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询我发起的流程实例
|
|
|
|
|
*
|
|
|
|
@ -1593,4 +1626,132 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
|
|
|
|
|
return ResultVoUtil.success(flowableccMybatisDao.repetitionTask());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 格式化筛选关系
|
|
|
|
|
*
|
|
|
|
|
* @param queryWrapper
|
|
|
|
|
* @param usersearchchild
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private QueryWrapper<OcrTaskchildPicture> formattingSearchChild(QueryWrapper<OcrTaskchildPicture> queryWrapper, OcrUsersearchchild usersearchchild) {
|
|
|
|
|
switch (usersearchchild.getSearchRelationType()) {
|
|
|
|
|
case "where":
|
|
|
|
|
this.formattingSearchType(queryWrapper, usersearchchild);
|
|
|
|
|
break;
|
|
|
|
|
case "and":
|
|
|
|
|
queryWrapper.and(wrapper -> this.formattingSearchType(wrapper, usersearchchild));
|
|
|
|
|
break;
|
|
|
|
|
case "or":
|
|
|
|
|
queryWrapper.or(wrapper -> this.formattingSearchType(wrapper, usersearchchild));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return queryWrapper;
|
|
|
|
|
}
|
|
|
|
|
return queryWrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 格式化查询类型
|
|
|
|
|
*
|
|
|
|
|
* @param queryWrapper
|
|
|
|
|
* @param usersearchchild
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private QueryWrapper<OcrTaskchildPicture> formattingSearchType(QueryWrapper<OcrTaskchildPicture> queryWrapper, 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) {
|
|
|
|
|
queryWrapper.in(usersearchchild.getSearchfield(), arrayData);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
queryWrapper.notIn(usersearchchild.getSearchfield(), arrayData);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "section":
|
|
|
|
|
//数字区间查询
|
|
|
|
|
if (sectionInts != null && sectionInts.size() == 2) {
|
|
|
|
|
if (queryType) {
|
|
|
|
|
//相等
|
|
|
|
|
queryWrapper.between(usersearchchild.getSearchfield(), sectionInts.get(0), sectionInts.get(1));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
queryWrapper.notBetween(usersearchchild.getSearchfield(), sectionInts.get(0), sectionInts.get(1));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//字符串区间查询
|
|
|
|
|
if (queryType) {
|
|
|
|
|
//相等
|
|
|
|
|
queryWrapper.between(usersearchchild.getSearchfield(), sections[0], sections[1]);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
queryWrapper.notBetween(usersearchchild.getSearchfield(), sections[0], sections[1]);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "time":
|
|
|
|
|
//时间区间数据
|
|
|
|
|
//相等
|
|
|
|
|
if (queryType) {
|
|
|
|
|
queryWrapper.between(usersearchchild.getSearchfield(), beginTime.getTime(), endTime.getTime());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//不相等
|
|
|
|
|
queryWrapper.notBetween(usersearchchild.getSearchfield(), beginTime.getTime(), endTime.getTime());
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
if (queryType) {
|
|
|
|
|
queryWrapper.eq(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
queryWrapper.ne(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue());
|
|
|
|
|
}
|
|
|
|
|
return queryWrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|