diff --git a/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html b/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
index e650d5c..038e6cc 100644
--- a/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
+++ b/htmlweb/web/backstage/oa/ocr/prevailcloudlog/list.html
@@ -5,7 +5,7 @@
数据拉取日志
-
+
<#include "/head/headlist.html" />
@@ -141,6 +141,7 @@
},
{width: 80, valign: "middle", field: 'responseParam', title: '响应参数', sortable: true},
{width: 80, valign: "middle", field: 'requestParam', title: '请求参数', sortable: true},
+ {width: 80, valign: "middle", field: 'time', title: '重试次数', sortable: true},
{
width:200,
field: 'id',
@@ -148,9 +149,8 @@
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
- console.log(toolbar);
if (toolbar.text === '修改' && oData.status !== 100) {
- listOperation = listOperation + " " + "重试" + " ";
+ listOperation = listOperation + " " + "重试" + " ";
}
});
return listOperation;
@@ -167,7 +167,7 @@
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
- function updateData(jframeid,str){
+ function updateData(jframeid,str,id){
$(document).ready(function() {
// Encode the parameter string to be URL-safe
// Make an AJAX GET request
@@ -175,14 +175,17 @@
url: '${ctx}/test/api/pullPictureByParameter', // Replace with your server endpoint
type: 'GET',
headers: {"logintoken": parent.getLoginToken()},
- data: { parameterString: str },
+ data: { parameterString: str, id },
success: function(response) {
- console.log(response);
- toastr.success('Request was successful!');
+ if (response || "success" === response) {
+ refreshTable();
+ toastr.success('Request was successful!');
+ } else {
+ toastr.error('Request was failed!');
+ }
},
error: function(xhr, status, error) {
- console.log(error);
- toastr.error('Request was failed!');
+ toastr.error('Request has exception!');
}
});
});
diff --git a/jyjz-system/jyjz-system-admin/src/main/java/cn/jyjz/xiaoyao/admin/dataobject/Department.java b/jyjz-system/jyjz-system-admin/src/main/java/cn/jyjz/xiaoyao/admin/dataobject/Department.java
index 4b3311b..dffb497 100644
--- a/jyjz-system/jyjz-system-admin/src/main/java/cn/jyjz/xiaoyao/admin/dataobject/Department.java
+++ b/jyjz-system/jyjz-system-admin/src/main/java/cn/jyjz/xiaoyao/admin/dataobject/Department.java
@@ -20,8 +20,8 @@ import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
-
-
+
+
@Data
@Builder
@@ -130,35 +130,35 @@ public class Department implements BaseDto,java.io.Serializable {
@Schema(description = "更新时间")
@TableField(value="UPDATETIME")
private Long updatetime;
-
+
@Schema(description = "对应的Service名,主要是spring的service名")
@TableField(value="SERVICENAME")
- private String servicename;
-
+ private String servicename ="taskchildPictureService";
+
@Schema(description = "内置表单,使用flowable表单,0:使用本地数据,1:使用flowable表单,3:外置表单,4:其他自定义表单")
@TableField(value="BUILTFORM")
private Integer builtform;
-
+
@Schema(description = "表单地址,用户展示用户表单使用")
@TableField(value="FORMURL")
private String formurl;
-
+
@Schema(description = "表单详情")
@TableField(value="FORMDETAIL")
private String formdetail;
-
+
@Schema(description = "表单分类")
@TableField(value="FORMTYPE")
private String formtype;
-
+
@Schema(description = "流程定义id")
@TableField(value="PROCESSDEFINITIONID")
private String processdefinitionid;
-
+
@Schema(description = "公司类型,0:租户,1:主体")
@TableField(value="TYPEDEPT")
private Integer typedept;
-
+
@Schema(description = "对应的工作流编码,与工作流中的命名空间对应")
@TableField(value="CATEGORY")
private String category;
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java
index d96a82e..8921735 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java
@@ -501,7 +501,7 @@ public class FlowTaskController extends BaseController {
Map query = searchQuery.getQuery();
- flowTaskService.getFinalProcessInstances(query, pageUtils,user);
+ flowTaskService.getFinalProcessInstances(query, pageUtils, user);
return ResultVoUtil.success(pageUtils);
}
@@ -682,9 +682,120 @@ public class FlowTaskController extends BaseController {
@GetMapping("/repetitionTask")
@ResponseBody
public ResultVo repetitionTask(HttpServletRequest request,
- @RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
+ @RequestParam(value = "type", required = false, defaultValue = "0") Integer type,
+ @RequestParam(name = "izupuser", defaultValue = "", required = false) String izupuser,
+ @RequestParam(name = "taskName", defaultValue = "", required = false) String taskName,
+ @RequestParam(name = "izproject", defaultValue = "", required = false) String izproject,
+ @RequestParam(name = "izplan", defaultValue = "", required = false) String izplan,
+ @RequestParam(name = "izstatus", defaultValue = "", required = false) String izstatus,
+ @RequestParam(name = "iztaskrrom", defaultValue = "", required = false) String iztaskrrom,
+ @RequestParam(name = "izuptime", defaultValue = "", required = false) String izuptime,
+ @RequestParam(name = "isFail", defaultValue = "false", required = false) String isFail) {
+ SearchQuery searchQuery = new SearchQuery();
+ if (org.springframework.util.StringUtils.hasText(izupuser)) {
+ if (izupuser.contains(",")) {
+ String[] userIds = izupuser.split(",");
+ List arrayData = Arrays.asList(userIds);
+ searchQuery.addIn("fromuserid", arrayData);
+ } else {
+ searchQuery.addEqual("fromuserid", izupuser);
+ }
+ }
+ if (StringUtils.isNotBlank(taskName)) {
+ searchQuery.addLike("fromtaskname", taskName);
+ }
+ if (org.springframework.util.StringUtils.hasText(izproject)) {
+ if (izproject.contains(",")) {
+ String[] projectIds = izproject.split(","); // 以逗号拆分字符串
+ List arrayData = Arrays.asList(projectIds);
+ SearchQueryForm searchQueryForm = new SearchQueryForm();
+ searchQuery.addIn("fromprojectname", arrayData);
+ } else {
+ searchQuery.addEqual("fromprojectname", izproject);
+ }
+ }
+ if (org.springframework.util.StringUtils.hasText(izplan)) {
+ if (izplan.contains(",")) {
+ String[] planIds = izplan.split(","); // 以逗号拆分字符串
+ List arrayData = Arrays.asList(planIds);
+ SearchQueryForm searchQueryForm = new SearchQueryForm();
+ searchQuery.addIn("fromplanid", arrayData);
+ } else {
+ searchQuery.addEqual("fromplanid", izplan);
+ }
+ }
+ if (org.springframework.util.StringUtils.hasText(izstatus)) {
+ if (izstatus.contains(",")) {
+ String[] statusIds = izstatus.split(","); // 以逗号拆分字符串
+ List arrayData = Arrays.asList(statusIds);
+ searchQuery.addIn("states", arrayData);
+ } else {
+ searchQuery.addEqual("states", izstatus);
+ }
+ }
+ if (Boolean.parseBoolean(isFail)) {
+ searchQuery.addEqual("isFail", "1");
+ }
+ if (org.springframework.util.StringUtils.hasText(iztaskrrom)) {
+ if (iztaskrrom.contains(",")) {
+ String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串
+ List arrayData = Arrays.asList(taskrromIds);
+ searchQuery.addIn("fromsourceid", arrayData);
+ } else {
+ searchQuery.addEqual("fromsourceid", iztaskrrom);
+ }
+ }
+
+ if (org.springframework.util.StringUtils.hasText(izuptime)) {
+ String[] dateRange = izuptime.split("-");
+ if (dateRange.length == 2) {
+ try {
+ SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+
+ // 解析开始时间
+ Long startTimeStamp = sdfInput.parse(dateRange[0].trim() + " 00:00:00").getTime();
+
+ // 解析结束时间
+ Long endTimeStamp = sdfInput.parse(dateRange[1].trim() + " 23:59:59").getTime();
+
+ // 如果开始时间不为空,则将其放入查询条件中
+ if (startTimeStamp != null) {
+ searchQuery.addGreater("fromuptimeStart", startTimeStamp);
+ }
+ // 如果结束时间不为空,则将其放入查询条件中
+ if (endTimeStamp != null) {
+ searchQuery.addLess("fromuptimeEnd", endTimeStamp);
+ }
+ } catch (ParseException e) {
+ // 处理日期解析异常
+ e.printStackTrace();
+ }
+ }
+ }
+ //租户主键,由前端页面传送
String tenantId = request.getHeader("X-Tenant-Id");
- return flowTaskService.repetitionTask(type,tenantId);
+
+ if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) {
+ return ResultVoUtil.error("租户主键不能为空");
+ }
+ User user = this.userService.getSessionUser(request);
+ if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
+ } else {
+ searchQuery.addEqual("thisLoginUserid", user.getLoginname());
+ }
+ searchQuery.addEqual("tenantid", tenantId);
+ String searchId = request.getParameter("searchId");
+
+ if (StringUtils.isNotBlank(searchId)) {
+ List list = usersearchchildService.list(new LambdaQueryWrapper().eq(OcrUsersearchchild::getUsersearchid, searchId).orderByAsc(OcrUsersearchchild::getOrderNum));
+ for (OcrUsersearchchild userSearch : list) {
+ disSearchQuery(searchQuery, userSearch);
+ }
+ }
+
+ Map query = searchQuery.getQuery();
+
+ return flowTaskService.repetitionTask(type, tenantId,query);
}
/**
@@ -701,9 +812,9 @@ public class FlowTaskController extends BaseController {
public ResultVo repetitionTaskList(HttpServletRequest request,
@RequestParam(name = "pageNo") Integer pageNo,
@RequestParam(name = "pageSize") Integer pageSize,
- @RequestParam(value = "type",required = false,defaultValue = "1") Integer type) {
+ @RequestParam(value = "type", required = false, defaultValue = "1") Integer type) {
String tenantId = request.getHeader("X-Tenant-Id");
- Page result = flowTaskService.repetitionTaskList(pageNo, pageSize,type,tenantId);
+ Page result = flowTaskService.repetitionTaskList(pageNo, pageSize, type, tenantId);
return ResultVoUtil.success(result);
}
@@ -719,14 +830,14 @@ public class FlowTaskController extends BaseController {
@GetMapping("/retryPrevailCloud")
@ResponseBody
public ResultVo retryPrevailCloud(HttpServletRequest request,
- @RequestParam(name = "formId") String formId) {
+ @RequestParam(name = "formId") String formId) {
String tenantId = request.getHeader("X-Tenant-Id");
Boolean result = null;
try {
- result = flowTaskService.retryPrevailCloud(tenantId,formId);
+ result = flowTaskService.retryPrevailCloud(tenantId, formId);
} catch (Exception e) {
log.error(e.getMessage());
- result =false;
+ result = false;
}
return ResultVoUtil.success(result);
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java
index 49d61f2..ce565ab 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java
@@ -193,7 +193,7 @@ public interface IFlowTaskService {
*
* @return
*/
- ResultVo repetitionTask(Integer type, String tenantId);
+ ResultVo repetitionTask(Integer type, String tenantId, Map query);
Page repetitionTaskList(Integer pageNo, Integer pageSize, Integer type, String tenantId);
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java
index b2ace86..0167655 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java
@@ -16,6 +16,9 @@ import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.oa.from.service.UserViewapproeService;
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
+import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
+import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics;
import org.flowable.bpmn.model.UserTask;
@@ -46,15 +49,16 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
private IFlowTaskService flowTaskService;
@Resource
private UserViewapproeService userViewApproeService;
+ @Resource
+ private OcrTaskchildPictureService ocrTaskchildPictureService;
@Override
- public boolean startProcessInstanceById(String procDefId, Map variables, HttpServletRequest request, String formid, String servicename,String deptid) {
+ public boolean startProcessInstanceById(String procDefId, Map variables, HttpServletRequest request, String formid, String servicename, String deptid) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
iFormCustomService = SpringUtils.getBean(servicename);
}
-
if (StringUtils.isBlank(formid)) {
//表单主键
formid = iFormCustomService.saveForm(request);
@@ -87,24 +91,27 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
-
+
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
- if(null != userTask){
+ if (null != userTask) {
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
- List loginnames = flowTaskService.getAssignee(userTask,userName);
- if(null != loginnames && !loginnames.isEmpty()){
- variables.put("persons",loginnames);
+ List loginnames = flowTaskService.getAssignee(userTask, userName);
+ if (null != loginnames && !loginnames.isEmpty()) {
+ variables.put("persons", loginnames);
}
}
}
-
- processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
+ processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
+ OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getById(formid);
+ taskchildPicture.setProcessdefinitionid(processInstance.getProcessDefinitionId());
+ taskchildPicture.setProcessinstanceid(processInstance.getProcessInstanceId());
+ ocrTaskchildPictureService.updateById(taskchildPicture);
if (null != iFormCustomService) {
- FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),deptid);
+ FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(), deptid);
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
@@ -145,7 +152,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
}
@Override
- public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename,String depti) {
+ public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename, String depti) {
IFormCustomService iFormCustomService = null;
if (StringUtils.isNotBlank(servicename)) {
@@ -173,24 +180,24 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
try {
variables.put("businessKey", businessKey);
-
+
//获取下一个节点
UserTask userTask = this.flowTaskService.getNextTasks(procDefId);
- if(null != userTask){
+ if (null != userTask) {
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
// 会签节点
if (Objects.nonNull(multiInstance)) {
- List loginnames = flowTaskService.getAssignee(userTask,userName);
- if(null != loginnames && !loginnames.isEmpty()){
- variables.put("persons",loginnames);
+ List loginnames = flowTaskService.getAssignee(userTask, userName);
+ if (null != loginnames && !loginnames.isEmpty()) {
+ variables.put("persons", loginnames);
}
}
}
-
+
processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables);
if (null != iFormCustomService) {
- FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(),depti);
+ FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId(), depti);
if (null == flowTaskCompleteVO) {
throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey);
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java
index 422cb95..710828e 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java
@@ -40,7 +40,6 @@ import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -49,6 +48,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.SneakyThrows;
import org.apache.commons.lang3.ObjectUtils;
import org.flowable.bpmn.constants.BpmnXMLConstants;
import org.flowable.bpmn.model.*;
@@ -71,12 +71,14 @@ import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
+import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@@ -123,6 +125,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
private OcrPrevailCloudLogService prevailCloudLogService;
@Resource
private PrevailCloudApi prevailCloudApi;
+ @Autowired
+ private OcrContractorTaskService contractorTaskService;
@Override
public void myTodoTaskList(PageUtils vo, HttpServletRequest request) {
@@ -838,6 +842,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*
* @param processInstanceId
*/
+ @SneakyThrows
public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId, String deptid) {
FlowTaskCompleteVO flowTaskCompleteVO = null;
@@ -902,7 +907,30 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
List candidateUsers = userTask.getCandidateUsers();
if (null != candidateUsers && !candidateUsers.isEmpty()) {
Random rand = new Random();
- taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
+ OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper().eq(OcrTaskchildPicture::getProcessinstanceid, processInstanceId).eq(OcrTaskchildPicture::getProcessdefinitionid, processDefinitionId));
+ OcrPicture first = ocrPictureService.getOne(new LambdaQueryWrapper().eq(OcrPicture::getId, taskchildPicture.getPictureid()));
+ List contractorList = contractorTaskService.list(new LambdaQueryWrapper().eq(OcrContractorTask::getTenantId, taskchildPicture.getTenantid()));
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractorList)) {
+ Class extends OcrPicture> aClass = first.getClass();
+ Field field = aClass.getDeclaredField(contractorList.get(0).getField());
+ field.setAccessible(true);
+ String fieldValue = (String) field.get(first);
+ log.info("厂商名称------{}",fieldValue);
+ List collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
+ List assigneeList = new ArrayList<>();
+ for (String str : candidateUsers) {
+ if (collect.contains(str)) {
+ assigneeList.add(str);
+ }
+ }
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) {
+ taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size())));
+ }else {
+ taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
+ }
+ } else {
+ taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
+ }
}
//得到候选组
@@ -1963,8 +1991,9 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
@Override
- public ResultVo repetitionTask(Integer type, String tenantId) {
- List repeatedContentVoList = flowableccMybatisDao.repetitionTask(type, tenantId);
+ public ResultVo repetitionTask(Integer type, String tenantId, Map query) {
+ query.put("type", type);
+ List repeatedContentVoList = flowableccMybatisDao.repetitionTaskNew(query);
List formIdsToUpdate = new ArrayList<>();
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(repeatedContentVoList)) {
List checkDescribeHis = new ArrayList<>();
@@ -1998,15 +2027,16 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
}
}
- ocrCheckDescribeHisService.saveOrUpdateBatch(checkDescribeHis);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("PICTUREID", formIdsToUpdate)
- .eq("is_repeated_nodules", 0);
- OcrTaskchildPicture updateEntity = new OcrTaskchildPicture();
- updateEntity.setIsRepeatedNodules(1);
- ocrTaskchildPictureService.update(updateEntity, updateWrapper);
-
+ if (!CollectionUtils.isEmpty(checkDescribeHis)) {
+ ocrCheckDescribeHisService.saveOrUpdateBatch(checkDescribeHis);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("PICTUREID", formIdsToUpdate)
+ .eq("is_repeated_nodules", 0);
+ OcrTaskchildPicture updateEntity = new OcrTaskchildPicture();
+ updateEntity.setIsRepeatedNodules(1);
+ ocrTaskchildPictureService.update(updateEntity, updateWrapper);
+ }
}
return ResultVoUtil.success(repeatedContentVoList);
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/dataDao/FlowableccMybatisDao.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/dataDao/FlowableccMybatisDao.java
index 7b2ef3c..7bf22f2 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/dataDao/FlowableccMybatisDao.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/oa/from/dataDao/FlowableccMybatisDao.java
@@ -40,7 +40,7 @@ public interface FlowableccMybatisDao extends BaseMapper {
*/
List selectUserByFromid(String fromid);
- List repetitionTask(@Param("type") Integer type, @Param("tenantId") String tenantId);
+ List repetitionTaskNew(Map query);
Page repetitionTaskList(Page page, @Param("type") Integer type, @Param("tenantId") String tenantId);
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/PrevailCloudApi.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/PrevailCloudApi.java
index 5281658..b018fe5 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/PrevailCloudApi.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/PrevailCloudApi.java
@@ -17,13 +17,15 @@ public interface PrevailCloudApi {
/**
* 根据参数拉取,某个业务主体的任务数据
+ *
* @param pictureSourceParameter
* @return
*/
- ApiPage pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception;
+ ApiPage pullPictureSource(PictureSourceParameter pictureSourceParameter, boolean isRetry) throws Exception;
/**
* 根据参数,拉取某个业务主体,全量业务数据
+ *
* @param pictureSourceParameter
* @return
*/
@@ -33,6 +35,7 @@ public interface PrevailCloudApi {
/**
* 根据租户id 拉取对应业务主体信息
+ *
* @param tenantNo
*/
void pullAccountInfo(long tenantNo) throws Exception;
@@ -44,7 +47,7 @@ public interface PrevailCloudApi {
List getAllPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter);
- List getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter);
+ List getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter, boolean isRetry);
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/impl/PrevailCloudApiImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/impl/PrevailCloudApiImpl.java
index 0034a3e..d9cf963 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/impl/PrevailCloudApiImpl.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/api/impl/PrevailCloudApiImpl.java
@@ -56,7 +56,7 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
private OcrPrevailCloudLogService prevailCloudLogService;
@Override
- public ApiPage pullPictureSource(PictureSourceParameter pictureSourceParameter) throws Exception {
+ public ApiPage pullPictureSource(PictureSourceParameter pictureSourceParameter, boolean isRetry) throws Exception {
//1.检查api配置是否正常
if (!apiConfig.checkConfig()) {
return null;
@@ -105,7 +105,7 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
ApiPage apiPage = JSONUtil.toBean(data, ApiPage.class);
//日志增加拉取数量
prevailCloudLog.setResponseParam(prevailCloudLog.getResponseParam()+",拉取数量:"+apiPage.getTotal());
- if(apiPage.getTotal()==0){
+ if(!isRetry && apiPage.getTotal()==0){
prevailCloudLogService.save(prevailCloudLog);
return null;
}
@@ -116,7 +116,11 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
resultApiPage.setPageSize(apiPage.getPageSize());
resultApiPage.setTotal(apiPage.getTotal());
resultApiPage.setRecords(listResult);
- prevailCloudLogService.save(prevailCloudLog);
+
+ if (!isRetry) {
+ prevailCloudLogService.save(prevailCloudLog);
+ }
+
return resultApiPage;
} else {
logger.debug("请求图片接口数据失败,参数:{},返回值:{}", json, responseJsonStr);
@@ -307,7 +311,7 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
ApiPage apiPage = null;
List result = Lists.newArrayListWithCapacity(pictureSourceParameter.getPageSize());
try {
- apiPage = this.pullPictureSource(pictureSourceParameter);
+ apiPage = this.pullPictureSource(pictureSourceParameter, false);
} catch (Exception e) {
e.printStackTrace();
}
@@ -330,10 +334,10 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
}
@Override
- public List getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter) {
+ public List getPictureSourceResultApiPage(PictureSourceParameter pictureSourceParameter, boolean isRetry) {
ApiPage apiPage = null;
try {
- apiPage = this.pullPictureSource(pictureSourceParameter);
+ apiPage = this.pullPictureSource(pictureSourceParameter, isRetry);
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
index 8e9d85d..7aa54a8 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/PrevailCloudApiController.java
@@ -13,22 +13,21 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.thread.PullAllPictureSourceThread;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
+import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant;
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.util.RequestParameterFormat;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
-import lombok.extern.flogger.Flogger;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import sun.nio.ch.ThreadPool;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -38,7 +37,11 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
/**
* 无量云api控制器
@@ -70,7 +73,7 @@ public class PrevailCloudApiController {
/**
* 用于执行全量拉取的定长线程池
*/
- private ExecutorService pictureSourceAllPool = new ThreadPoolExecutor(
+ private ExecutorService pictureSourceAllPool = new ThreadPoolExecutor(
1,
1,
3,
@@ -87,32 +90,33 @@ public class PrevailCloudApiController {
/**
* 拉取无量云全量任务数据,根据业务主体
+ *
* @param request
* @return
*/
@GetMapping("pullPictureAllByAccountNo")
- public String pullPictureAllByAccountNo(HttpServletRequest request){
+ public String pullPictureAllByAccountNo(HttpServletRequest request) {
//检查是否已有全量拉取在执行
- if(pictureSourceAllPullMsg.isLock()){
+ if (pictureSourceAllPullMsg.isLock()) {
return pictureSourceAllPullMsg.getMsg();
}
//1.定义参数
String beginStr = request.getParameter("beginStr");
- if(StringUtils.isBlank(beginStr)){
+ if (StringUtils.isBlank(beginStr)) {
return "开始时间不能为空";
}
String endStr = request.getParameter("endStr");
- if(StringUtils.isBlank(endStr)){
+ if (StringUtils.isBlank(endStr)) {
return "结束时间不能为空";
}
String tenantNoStr = request.getParameter("tenantNo");
- if(StringUtils.isBlank(tenantNoStr)){
+ if (StringUtils.isBlank(tenantNoStr)) {
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
- if(StringUtils.isBlank(accountNoStr)){
+ if (StringUtils.isBlank(accountNoStr)) {
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(tenantNoStr);
@@ -125,8 +129,8 @@ public class PrevailCloudApiController {
//3.调用线程
pictureSourceAllPool.execute(
- new PullAllPictureSourceThread(tenantNo,accountNo,startDate
- ,endDate,pictureSourceAllPullMsg,prevailCloudApi,apiConfig)
+ new PullAllPictureSourceThread(tenantNo, accountNo, startDate
+ , endDate, pictureSourceAllPullMsg, prevailCloudApi, apiConfig)
);
return "执行开始";
}
@@ -159,7 +163,7 @@ public class PrevailCloudApiController {
DateTime dateTime = DateUtil.parse(beginStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime = DateUtil.parse("2024-03-31 07:00:000","yyyy-MM-dd HH:mm:ss");
Instant binstant = dateTime.toInstant();
- DateTime dateTime1 = DateUtil.parse(endStr+" 23:59:59","yyyy-MM-dd HH:mm:ss");
+ DateTime dateTime1 = DateUtil.parse(endStr + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime1 = DateUtil.parse("2024-03-31 09:00:00","yyyy-MM-dd HH:mm:ss");
Instant einstant = dateTime1.toInstant();
pictureSourceParameter.setStartTime(Date.from(binstant));
@@ -169,7 +173,7 @@ public class PrevailCloudApiController {
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
try {
- ApiPage apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
+ ApiPage apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter, false);
if (apiPage == null) {
return "获取数据为空!";
}
@@ -251,7 +255,7 @@ public class PrevailCloudApiController {
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
- List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
+ List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter, false);
if (CollectionUtils.isEmpty(resultList)) {
continue;
}
@@ -279,11 +283,23 @@ public class PrevailCloudApiController {
}
@GetMapping("/pullPictureByParameter")
- public Boolean pullPictureByParameter(String parameterString) {
+ public Boolean pullPictureByParameter(String parameterString, Long id) {
+ OcrPrevailCloudLog byId = ocrPrevailCloudLogService.getById(id);
+ if (byId == null) {
+ return false;
+ }
+
PictureSourceParameter pictureSourceParameter = RequestParameterFormat.fromString(parameterString);
- List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
+ List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter, true);
if (CollectionUtils.isEmpty(resultList)) {
- return false;
+ //更新日志
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .status(100)
+ .id(id)
+ .time(byId.getTime() + 1)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ return true;
}
for (PictureSourceResult pictureSourceResult : resultList) {
@@ -299,7 +315,7 @@ public class PrevailCloudApiController {
//赋值默认参数
pictureSourceResult.setRequestParam(pictureSourceParameter);
//将可以处理数据放入处理队列中
- TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
+ TaskQueue.pictureDisposePushDataUpdateLog(pictureSourceResult, id, ocrPictureService, ocrPrevailCloudLogService);
}
return true;
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrContractorTaskMapper.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrContractorTaskMapper.java
new file mode 100644
index 0000000..aba8475
--- /dev/null
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrContractorTaskMapper.java
@@ -0,0 +1,13 @@
+package cn.jyjz.xiaoyao.ocr.dataDao;
+
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * ClassName: $className$.java
+ * Description:
+ * Author: scl.
+ * Date: 2024/6/23 上午11:20
+ */
+public interface OcrContractorTaskMapper extends BaseMapper {
+}
\ No newline at end of file
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrContractorTask.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrContractorTask.java
new file mode 100644
index 0000000..8901259
--- /dev/null
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrContractorTask.java
@@ -0,0 +1,60 @@
+package cn.jyjz.xiaoyao.ocr.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * ClassName: $className$.java
+ * Description:
+ * Author: scl.
+ * Date: 2024/6/23 上午11:20
+ */
+/**
+ * 厂商任务审批人关联表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "ocr_contractor_task")
+public class OcrContractorTask {
+ /**
+ * 自增id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 服务厂商
+ */
+ @TableField(value = "contractor")
+ private String contractor;
+
+ /**
+ * 租户id
+ */
+ @TableField(value = "tenant_id")
+ private Long tenantId;
+
+ /**
+ * 审批用户账号
+ */
+ @TableField(value = "task_user_assignee")
+ private String taskUserAssignee;
+
+ /**
+ * 审批用户名称
+ */
+ @TableField(value = "task_user_name")
+ private String taskUserName;
+
+ /**
+ * 厂商字段名
+ */
+ @TableField(value = "field")
+ private String field;
+}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
index 070821c..1d24d75 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPrevailCloudLog.java
@@ -113,4 +113,10 @@ public class OcrPrevailCloudLog {
*/
@TableField(value = "redundance")
private String redundance;
+
+ /**
+ * 重试次数
+ */
+ @TableField(value = "time")
+ private Integer time = 0;
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrContractorTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrContractorTaskService.java
new file mode 100644
index 0000000..512fbda
--- /dev/null
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrContractorTaskService.java
@@ -0,0 +1,14 @@
+package cn.jyjz.xiaoyao.ocr.service;
+
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+ /**
+ * ClassName: $className$.java
+ * Description:
+ * Author: scl.
+ * Date: 2024/6/23 上午11:20
+ */
+public interface OcrContractorTaskService extends IService{
+
+
+}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrContractorTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrContractorTaskServiceImpl.java
new file mode 100644
index 0000000..1ede56b
--- /dev/null
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrContractorTaskServiceImpl.java
@@ -0,0 +1,19 @@
+package cn.jyjz.xiaoyao.ocr.service.impl;
+
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
+import cn.jyjz.xiaoyao.ocr.dataDao.OcrContractorTaskMapper;
+import cn.jyjz.xiaoyao.ocr.service.OcrContractorTaskService;
+/**
+ * ClassName: $className$.java
+ * Description:
+ * Author: scl.
+ * Date: 2024/6/23 上午11:20
+ */
+@Service
+public class OcrContractorTaskServiceImpl extends ServiceImpl implements OcrContractorTaskService{
+
+}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java
index 0237501..7311a22 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java
@@ -19,18 +19,11 @@ import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao;
-import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
-import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureDuplicateHis;
-import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureInfo;
-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.dto.ApproveNodeDto;
import cn.jyjz.xiaoyao.ocr.dto.FlowResultDto;
import cn.jyjz.xiaoyao.ocr.dto.UserapproveDto;
-import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService;
-import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService;
-import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
-import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
+import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.vo.OaUserApproveVo;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo;
import cn.jyjz.xiaoyao.ocr.vo.PictureDetailVo;
@@ -97,6 +90,9 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper);
+ List pictureList = ocrPictureService.listByIds(list.stream().map(OcrTaskchildPicture::getPictureid).collect(Collectors.toList()));
//目前没有做其他信息返回,如果需要再做修改
for (OcrTaskchildPicture ocrTaskchildPicture : list) {
+
//判断审批人是否为当前登录用户
if (ocrTaskchildPicture.getAssignee().contains(userToken.getLoginname()) &&
(ocrTaskchildPicture.getStates().intValue() != SystemConstantsOa.OA_STATUS_TYPE_END
@@ -346,7 +344,9 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl result = ocrtaskchildpicturemybatisdao.getPackageSimilarityList(page, checkDuplicateId, pictureId, oderType, oderName);
//历史数据,因为没有审核记录所以需要填补最终状态.
for (OcrTaskChildPictureVo record : result.getRecords()) {
- if((record.getStates()==3 || record.getStates()==5)&&
- (record.getHistoryStates()==null || record.getHistoryStates()==1)){
+ if ((record.getStates() == 3 || record.getStates() == 5) &&
+ (record.getHistoryStates() == null || record.getHistoryStates() == 1)) {
int historyStates = 1;
- if(record.getStates()==3){
+ if (record.getStates() == 3) {
historyStates = 2;
- }else if(record.getStates()==5){
+ } else if (record.getStates() == 5) {
historyStates = 3;
}
record.setHistoryStates(historyStates);
@@ -821,11 +821,11 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl assigneeList = new ArrayList<>();
OcrTaskchildPicture model = this.ocrTaskchildPictureService.selectDtoById(Long.parseLong(fromid));
+ OcrPicture first = pictureService.getOne(new LambdaQueryWrapper().eq(OcrPicture::getId, model.getPictureid()));
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(first.getField5())) {
+ List contractorList = contractorTaskService.list(new LambdaQueryWrapper().eq(OcrContractorTask::getContractor, first.getField5()).eq(OcrContractorTask::getTenantId, model.getTenantid()));
+ if (CollectionUtils.isNotEmpty(contractorList)) {
+ List collect = contractorList.stream().map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
+ for (String str : assignees) {
+ if (collect.contains(str)) {
+ assigneeList.add(str);
+ }
+ }
+ }
+ }
+ if (CollectionUtils.isNotEmpty(assigneeList)) {
+ assignee = String.join(",", assigneeList);
+ assignees = assignee.split(",");
+ }
model.setProcessinstanceid(processInstanceId);
model.setProcessdefinitionid(processdefinitionid);
model.setDeploymentid(deploymentid);
model.setAssignee(assignee);
- if(ObjectUtils.isNotEmpty(task)){
+ if (ObjectUtils.isNotEmpty(task)) {
model.setTaskname(task.getName());
model.setTaskId(taskId);
}
+ //todo
model.setStates(SystemConstantsOa.OA_STATUS_TYPE_ING);
//查询审批人姓名
- String[] assignees = assignee.split(",");
StringBuffer stringBuffer = new StringBuffer();
for (String tempAssign : assignees) {
User user = userService.findByLoginname(tempAssign);
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
index 29a11c5..139c6d9 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java
@@ -48,11 +48,11 @@ public class TaskQueue {
if (ocrPicture != null) {
OcrTaskchildPicture taskchildPicture = ocrPictureService.getOcrTaskChildPictureByPictureId(ocrPicture.getId().toString());
if (taskchildPicture != null && pictureSourceResult.getTaskStatus() != null
- && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates()==3)) {
- if(taskchildPicture.getStates() == 5){
+ && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates() == 3)) {
+ if (taskchildPicture.getStates() == 5) {
String result = ocrPictureService.getPictureApproveResult(ocrPicture.getId());
pictureSourceResult.setComment(result);
- }else{
+ } else {
pictureSourceResult.setComment("ocr审批全部通过,由无量云发起了重置审批流程的操作。");
}
ocrPictureService.deletePictureInfo(ocrPicture.getId());
@@ -68,6 +68,7 @@ public class TaskQueue {
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
.status(100)
+ .time(0)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
resultSet.add(String.valueOf(taskId));
@@ -79,6 +80,7 @@ public class TaskQueue {
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
.status(500)
+ .time(0)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
return false;
@@ -86,6 +88,67 @@ public class TaskQueue {
return true;
}
+ /**
+ * [重试]无量云接口数据处理 push 队列值bi
+ *
+ * @param pictureSourceResult //三方拉取 获取到的图片对象
+ * @return
+ */
+ public static boolean pictureDisposePushDataUpdateLog(PictureSourceResult pictureSourceResult, Long id, OcrPictureService ocrPictureService, OcrPrevailCloudLogService ocrPrevailCloudLogService) {
+ OcrPrevailCloudLog byId = ocrPrevailCloudLogService.getById(id);
+ if (byId == null) {
+ return false;
+ }
+
+ try {
+ Long taskId = pictureSourceResult.getTaskId();
+ OcrPicture ocrPicture = ocrPictureService.selectByRemark(String.valueOf(taskId));
+ if (ocrPicture != null) {
+ OcrTaskchildPicture taskchildPicture = ocrPictureService.getOcrTaskChildPictureByPictureId(ocrPicture.getId().toString());
+ if (taskchildPicture != null && pictureSourceResult.getTaskStatus() != null
+ && (pictureSourceResult.getTaskStatus() == 6 || pictureSourceResult.getTaskStatus() == 7) && (taskchildPicture.getStates() == 5 || taskchildPicture.getStates() == 3)) {
+ if (taskchildPicture.getStates() == 5) {
+ String result = ocrPictureService.getPictureApproveResult(ocrPicture.getId());
+ pictureSourceResult.setComment(result);
+ } else {
+ pictureSourceResult.setComment("ocr审批全部通过,由无量云发起了重置审批流程的操作。");
+ }
+ ocrPictureService.deletePictureInfo(ocrPicture.getId());
+ pictureSourceResult.setId(ocrPicture.getId());
+ } else {
+ return true;
+ }
+ }
+
+ //更新日志
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .formId(pictureSourceResult.getTaskId())
+ .requestParam(pictureSourceResult.getRequestParam().toString())
+ .responseParam(pictureSourceResult.toString())
+ .type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
+ .status(100)
+ .id(id)
+ .time(byId.getTime() + 1)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ resultSet.add(String.valueOf(taskId));
+ pictureDisposeQueue.put(pictureSourceResult);
+ } catch (InterruptedException e) {
+ OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
+ .formId(pictureSourceResult.getTaskId())
+ .requestParam(pictureSourceResult.getRequestParam().toString())
+ .responseParam(pictureSourceResult.toString())
+ .type(PrevailCloudConstant.DISPOSE_PICTURE_SOURCE)
+ .status(500)
+ .time(byId.getTime() + 1)
+ .id(id)
+ .build();
+ ocrPrevailCloudLogService.updateById(ocrPrevailCloudLog);
+ return false;
+ }
+ return true;
+ }
+
/**
* 无量云接口数据处理 拉取队列值
*
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PictureSourceTimerJob.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PictureSourceTimerJob.java
index f99ea54..b1a94bc 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PictureSourceTimerJob.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PictureSourceTimerJob.java
@@ -135,7 +135,7 @@ public class PictureSourceTimerJob {
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
- List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
+ List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter, false);
if (CollectionUtils.isEmpty(resultList)) {
continue;
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PullPictureDataJob.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PullPictureDataJob.java
index 9a53169..b987c32 100644
--- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PullPictureDataJob.java
+++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/timerJob/PullPictureDataJob.java
@@ -98,7 +98,7 @@ public class PullPictureDataJob {
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
- List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter);
+ List resultList = prevailCloudApi.getPictureSourceResultApiPage(pictureSourceParameter, false);
if (CollectionUtils.isEmpty(resultList)) {
continue;
}
diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/FlowableccMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/FlowableccMapper.xml
index 8811ff5..8c49724 100644
--- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/FlowableccMapper.xml
+++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/FlowableccMapper.xml
@@ -158,6 +158,187 @@
+
+
+
+
+ and tcp.ID ${id.dataOp} ${id.likestar}#{id.value}${id.likeend}
+
+
+
+ and tcp.OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend}
+
+
+ and tcp.PICTURERESULT ${pictureresult.dataOp} ${pictureresult.likestar}#{pictureresult.value}${pictureresult.likeend}
+
+
+ and tcp.PICTURECOMPARE ${picturecompare.dataOp} ${picturecompare.likestar}#{picturecompare.value}${picturecompare.likeend}
+
+
+ and tcp.DEPTID ${deptid.dataOp} ${deptid.likestar}#{deptid.value}${deptid.likeend}
+
+
+ and tcp.TENANTID ${tenantid.dataOp} ${tenantid.likestar}#{tenantid.value}${tenantid.likeend}
+
+
+ and tcp.PACKAGEID ${packageid.dataOp} ${packageid.likestar}#{packageid.value}${packageid.likeend}
+
+
+ and tcp.PICTUREID ${pictureid.dataOp} ${pictureid.likestar}#{pictureid.value}${pictureid.likeend}
+
+
+ and tcp.CATEGORY ${category.dataOp} ${category.likestar}#{category.value}${category.likeend}
+
+
+ and tcp.CATEGORYID ${categoryid.dataOp} ${categoryid.likestar}#{categoryid.value}${categoryid.likeend}
+
+
+ and tcp.SPECIFICATION ${specification.dataOp} ${specification.likestar}#{specification.value}${specification.likeend}
+
+
+ and tcp.BUESSINESSNO ${buessinessno.dataOp} ${buessinessno.likestar}#{buessinessno.value}${buessinessno.likeend}
+
+
+
+ and tcp.PROCESSINSTANCEID ${processinstanceid.dataOp} ${processinstanceid.likestar}#{processinstanceid.value}${processinstanceid.likeend}
+
+
+ and tcp.PROCESSDEFINITIONID ${processdefinitionid.dataOp} ${processdefinitionid.likestar}#{processdefinitionid.value}${processdefinitionid.likeend}
+
+
+ and tcp.DEPLOYMENTID ${deploymentid.dataOp} ${deploymentid.likestar}#{deploymentid.value}${deploymentid.likeend}
+
+
+ and tcp.ASSIGNEENAME ${assigneename.dataOp} ${assigneename.likestar}#{assigneename.value}${assigneename.likeend}
+
+
+ and tcp.ASSIGNEE ${assignee.dataOp} ${assignee.likestar}#{assignee.value}${assignee.likeend}
+
+
+ and tcp.UPDATEUSER ${updateuser.dataOp} ${updateuser.likestar}#{updateuser.value}${updateuser.likeend}
+
+
+ and tcp.UPDATETIME ${updatetime.dataOp} ${updatetime.likestar}#{updatetime.value}${updatetime.likeend}
+
+
+ and tcp.FILEANNEX ${fileannex.dataOp} ${fileannex.likestar}#{fileannex.value}${fileannex.likeend}
+
+
+ and tcp.GUIDANG ${guidang.dataOp} ${guidang.likestar}#{guidang.value}${guidang.likeend}
+
+
+ and tcp.CREATEUSER ${createuser.dataOp} ${createuser.likestar}#{createuser.value}${createuser.likeend}
+
+
+ and tcp.CREATEUSERNAME ${createusername.dataOp} ${createusername.likestar}#{createusername.value}${createusername.likeend}
+
+
+ and tcp.CREATEDATE ${createdate.dataOp} ${createdate.likestar}#{createdate.value}${createdate.likeend}
+
+
+ and tcp.CREATEDATE ${createdateStart.dataOp} ${createdateStart.likestar}#{createdateStart.value}${createdateStart.likeend}
+
+
+ and tcp.CREATEDATE ${createdateEnd.dataOp} ${createdateEnd.likestar}#{createdateEnd.value}${createdateEnd.likeend}
+
+
+ and tcp.USERNAME ${username.dataOp} ${username.likestar}#{username.value}${username.likeend}
+
+
+ and tcp.FROMTASKID ${fromtaskid.dataOp} ${fromtaskid.likestar}#{fromtaskid.value}${fromtaskid.likeend}
+
+
+ and tcp.FROMTASKNAME ${fromtaskname.dataOp} ${fromtaskname.likestar}#{fromtaskname.value}${fromtaskname.likeend}
+
+
+
+
+
+ and tcp.FROMUPTIME ${fromuptime.dataOp} ${fromuptime.likestar}#{fromuptime.value}${fromuptime.likeend}
+
+
+ and tcp.FROMUSERID ${fromuserid.dataOp} ${fromuserid.likestar}
+
+
+
+ #{item}
+
+
+
+ #{fromuserid.value}
+
+ ${fromuserid.likeend}
+
+
+ and tcp.FROMPROJECTID ${fromprojectid.dataOp} ${fromprojectid.likestar}
+
+
+
+ #{item}
+
+
+
+ #{fromprojectid.value}
+
+ ${fromprojectid.likeend}
+
+
+ and tcp.FROMPLANID ${fromplanid.dataOp} ${fromplanid.likestar}
+
+
+
+ #{item}
+
+
+
+ #{fromplanid.value}
+
+ ${fromplanid.likeend}
+
+
+ and tcp.STATES ${states.dataOp} ${states.likestar}
+
+
+
+ #{item}
+
+
+
+ #{states.value}
+
+ ${states.likeend}
+
+
+ and tcp.FROMSOURCEID ${fromsourceid.dataOp} ${fromsourceid.likestar}
+
+
+
+ #{item}
+
+
+
+ #{fromsourceid.value}
+
+ ${fromsourceid.likeend}
+
+
+
+
+
+
+
+
+ and tcp.HAVEPOINTS ${havepoints.dataOp} ${havepoints.likestar}#{havepoints.value}${havepoints.likeend}
+
+
+ and tcp.TASKNAME ${taskname.dataOp} ${taskname.likestar}#{taskname.value}${taskname.likeend}
+
+
+ and tcp.USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}
+
+
+
+
+
+