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 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} + + + + + +