From 84c1b0e221fcd945f69039773a8742ae6d0d075a Mon Sep 17 00:00:00 2001 From: sunchenliang <2532527871@qq.com> Date: Sat, 16 Mar 2024 20:57:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E9=94=AE=E6=9F=A5?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E5=8A=A8=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jyjz-system/jyjz-system-oa/pom.xml | 4 + .../controller/FlowTaskController.java | 16 +- .../flowable/service/IFlowTaskService.java | 59 +- .../service/impl/FlowInstanceServiceImpl.java | 159 +- .../service/impl/FlowTaskServiceImpl.java | 8 +- .../oa/from/dataDao/FlowableccMybatisDao.java | 2 + .../ocr/service/OcrPictureService.java | 2 + .../service/impl/OcrPictureServiceImpl.java | 1403 +++++++++-------- .../ocr/thread/tasks/PictureDownloadTask.java | 64 +- .../resources/mapper/oa/FlowableccMapper.xml | 9 + 10 files changed, 973 insertions(+), 753 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/pom.xml b/jyjz-system/jyjz-system-oa/pom.xml index 52f8e371..0107465e 100644 --- a/jyjz-system/jyjz-system-oa/pom.xml +++ b/jyjz-system/jyjz-system-oa/pom.xml @@ -120,6 +120,10 @@ lombok ${lombok.version} + + org.springframework + spring-test + 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 74353c65..1c26642a 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 @@ -295,7 +295,7 @@ public class FlowTaskController extends BaseController { //如果assigneeId 为空查询发起流程,否则查询待办流程 if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ searchQuery.addEqual("assignee",user.getLoginname()); -// searchQuery.addEqual("states",SystemConstantsOa.OA_STATUS_TYPE_ING.toString()); + searchQuery.addEqual("states",SystemConstantsOa.OA_STATUS_TYPE_ING.toString()); }else{ searchQuery.addEqual("createuser",user.getLoginname()); } @@ -501,4 +501,18 @@ public class FlowTaskController extends BaseController { //return ResultVoUtil.success(); } + + /** + * 重复任务 + * @return + */ + @ApiOperation(value="重复流程", notes="重复流程") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), + }) + @GetMapping("/repetitionTask") + @ResponseBody + public ResultVo repetitionTask(HttpServletRequest request){ + return flowTaskService.repetitionTask(); + } } 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 a93a4838..466e0295 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 @@ -27,12 +27,12 @@ public interface IFlowTaskService { InputStream diagram(String processId); - InputStream myDiagram(String processId,HttpServletRequest request); - + InputStream myDiagram(String processId, HttpServletRequest request); + Category viewForm(String processId, HttpServletRequest request); - Boolean complete(FlowTaskVO taskVO,HttpServletRequest request); - + Boolean complete(FlowTaskVO taskVO, HttpServletRequest request); + /** * 获取当前任务的可回退的流程集合 * @@ -40,85 +40,106 @@ public interface IFlowTaskService { * @return 可以回退的节点列表 */ public List getReturnTaskList(String taskId); - + /** * 更新当前节点处理人信息 + * * @param * @param processDefinition */ - public void updateAssignee(String processInstanceId,String processDefinitionId, ProcessDefinition processDefinition); + public void updateAssignee(String processInstanceId, String processDefinitionId, ProcessDefinition processDefinition); + + void finishedList(PageUtils pageUtils, HttpServletRequest request); - void finishedList(PageUtils pageUtils,HttpServletRequest request); /** * 查询我发起的流程实例 * - * @param query 搜索条件 - * @param pageUtils 分页参数 + * @param query 搜索条件 + * @param pageUtils 分页参数 * @return */ - public void getMyProcessInstances( Map query, PageUtils pageUtils); - + public void getMyProcessInstances(Map query, PageUtils pageUtils); + /** * 查询最终审批数据 * - * @param query 搜索条件 - * @param pageUtils 分页参数 + * @param query 搜索条件 + * @param pageUtils 分页参数 * @return */ - public void getFinalProcessInstances( Map query, PageUtils pageUtils); - + public void getFinalProcessInstances(Map query, PageUtils pageUtils); + /** * 查询我发起的流程实例 * 不做分类 + * * @param query 查询条件 * @return */ public List getMyProcessInstances(Map query); + /** * 抄送给我的 * * @return */ public IPage getMyListCc(Map query, UserToken userToken, ParamterPage paramterPage); + /** * 查看任务的流程记录 + * * @return */ public List listHistoriceTask(String processInstanceId); - + /** * 获取当前活动节点列表 + * * @param processInstanceId 实例主键 * @return */ public List listTask(String processInstanceId); + /** * 设置当前审批节点的审批人 * 目前只多候选组和多个候选人起作用 + * * @param processInstanceId */ public FlowTaskCompleteVO updateNowTaskAssignee(String processInstanceId, String processDefinitionId); + /** * 查看当前执行人列表 + * * @param processInstanceId * @return */ public List getApprovers(String processInstanceId); - + /** * 设置当前审批节点的 */ public List nowRunTask(String processInstanceId, String processDefinitionId); + /** * 撤销流程 + * * @param taskId * @param reason */ public void cancelTask(String taskId, String reason); - + /** * 重置流程 + * * @param fromid 任务表主键 */ - public ResultVo removeTask(String fromid,String taskid ); + public ResultVo removeTask(String fromid, String taskid); + + /** + * 查询重复流程 + * + * @return + */ + ResultVo repetitionTask(); } 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 df7d5aa6..58fc82d0 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 @@ -15,19 +15,14 @@ import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil; 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.framework.security.model.AdminUserModel; -import cn.jyjz.xiaoyao.framework.security.service.FlowableUserLoginService; import cn.jyjz.xiaoyao.oa.from.service.UserViewapproeService; import lombok.extern.slf4j.Slf4j; -import org.flowable.bpmn.model.*; import org.flowable.engine.RepositoryService; -import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.context.request.RequestContextHolder; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -48,148 +43,154 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow private IFlowTaskService flowTaskService; @Resource private UserViewapproeService userViewApproeService; + @Override - public boolean startProcessInstanceById(String procDefId, Map variables, HttpServletRequest request,String formid,String servicename) { - + public boolean startProcessInstanceById(String procDefId, Map variables, HttpServletRequest request, String formid, String servicename) { + IFormCustomService iFormCustomService = null; - if(StringUtils.isNotBlank(servicename)){ + if (StringUtils.isNotBlank(servicename)) { iFormCustomService = SpringUtils.getBean(servicename); } - - if(StringUtils.isBlank(formid) ){ + + if (StringUtils.isBlank(formid)) { //表单主键 formid = iFormCustomService.saveForm(request); } - - UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); - - - String userName = userToken.getLoginname(); + String token = RequestBaseUtil.getToken(request); + String userName = ""; + if (StringUtils.isBlank(token)) { + userName = "admin"; + } else { + UserToken userToken = this.userTokenService.getUserToken(token); + userName = userToken.getLoginname(); + } // 绑定当前认证的账号 我们的认证系统如果使用的是 SpringSecurity的话,默认就会设置当前登录的账号 //identityService.setAuthenticatedUserId(userName); - if(null == variables){ + if (null == variables) { variables = new HashMap<>(); } - variables.put("loginUser",userName); + variables.put("loginUser", userName); //根据流程定义信息 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult(); - - + + //业务key 用于待办已办 扩展字段 展示使用 //我这里以 流程定义key(oa_category_t定义的关键字,逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename - String businessKey= userToken.getLoginname() + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT+ formid + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT+ servicename; - + String businessKey = userName + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT + formid + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT + servicename; + ProcessInstance processInstance = null; - + //启动了一个流程实例 try { - - variables.put("businessKey",businessKey); - processInstance = runtimeService.startProcessInstanceById(procDefId,businessKey,variables) ; - - if(null != iFormCustomService){ - FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(),processInstance.getProcessDefinitionId()); - - if(null == flowTaskCompleteVO){ + + variables.put("businessKey", businessKey); + processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); + + if (null != iFormCustomService) { + FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); + + if (null == flowTaskCompleteVO) { throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); } - List list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(),processInstance.getProcessDefinitionId()); + List list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); String taskname = ""; - if(null != list && !list.isEmpty()){ + if (null != list && !list.isEmpty()) { taskname = list.get(0).getName(); } //保存instanceId到数据库,需要根据流程分类进行,判断更新 - boolean isupdate = iFormCustomService.updateForm(formid,processDefinition.getDeploymentId(),processDefinition.getId(),flowTaskCompleteVO.getAssignee(),flowTaskCompleteVO.getTaskId(),processInstance.getProcessInstanceId(),taskname); - if(isupdate){ + boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), taskname); + if (isupdate) { FlowModelVO flowModelVO = iFormCustomService.getForm(formid); //增加未查看记录 - userViewApproeService.saveUserViewApproe(flowTaskCompleteVO.getAssignee(),formid,flowModelVO.getTenantid().toString()); + userViewApproeService.saveUserViewApproe(flowTaskCompleteVO.getAssignee(), formid, flowModelVO.getTenantid().toString()); } - + } - - log.info("流程启动成功:procDefId:{}",procDefId); + + log.info("流程启动成功:procDefId:{}", procDefId); return true; - }catch (Exception e){ - log.error("流程启动失败:procDefId:{}",procDefId); - log.error("流程启动失败:e:{}",e); - + } catch (Exception e) { + log.error("流程启动失败:procDefId:{}", procDefId); + log.error("流程启动失败:e:{}", e); + //删除流程 - if(null != processInstance){ + if (null != processInstance) { runtimeService.deleteProcessInstance(processInstance.getProcessInstanceId(), SystemMessage.SYS_OA_START_ERROR); historyService.deleteHistoricProcessInstance(processInstance.getProcessInstanceId()); } - if(StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)){ + if (StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)) { iFormCustomService.delForm(formid); } + }finally { + RequestContextHolder.resetRequestAttributes(); } return false; } - + @Override - public boolean startProcessInstanceById(String procDefId, String userName,String createuser, String formid,String servicename) { - + public boolean startProcessInstanceById(String procDefId, String userName, String createuser, String formid, String servicename) { + IFormCustomService iFormCustomService = null; - if(StringUtils.isNotBlank(servicename)){ + if (StringUtils.isNotBlank(servicename)) { iFormCustomService = SpringUtils.getBean(servicename); } - - if(StringUtils.isBlank(formid) ){ + + if (StringUtils.isBlank(formid)) { //表单主键 return false; } Map variables = new HashMap<>(); - variables.put("loginUser",userName); + variables.put("loginUser", userName); //根据流程定义信息 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult(); - - + + //业务key 用于待办已办 扩展字段 展示使用 //我这里以 流程定义key(oa_category_t定义的关键字,逻辑唯一) + 业务表主键(请假表、调岗表等) + 业务表对应的servicename - String businessKey= createuser + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT+ formid + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT+ servicename; - + String businessKey = createuser + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT + formid + SystemConstantsOa.OA_BUSSINESS_KEY_SPLIT + servicename; + ProcessInstance processInstance = null; - + //启动了一个流程实例 try { - - variables.put("businessKey",businessKey); - processInstance = runtimeService.startProcessInstanceById(procDefId,businessKey,variables) ; - - if(null != iFormCustomService){ - FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(),processInstance.getProcessDefinitionId()); - - if(null == flowTaskCompleteVO){ + + variables.put("businessKey", businessKey); + processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); + + if (null != iFormCustomService) { + FlowTaskCompleteVO flowTaskCompleteVO = flowTaskService.updateNowTaskAssignee(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); + + if (null == flowTaskCompleteVO) { throw new ServiceException("没有审批人,请联系管理员,流程定义:" + businessKey); } - List list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(),processInstance.getProcessDefinitionId()); + List list = this.flowTaskService.nowRunTask(processInstance.getProcessInstanceId(), processInstance.getProcessDefinitionId()); String taskname = ""; - if(null != list && !list.isEmpty()){ + if (null != list && !list.isEmpty()) { taskname = list.get(0).getName(); } //保存instanceId到数据库,需要根据流程分类进行,判断更新 - boolean isupdate = iFormCustomService.updateForm(formid,processDefinition.getDeploymentId(),processDefinition.getId(),flowTaskCompleteVO.getAssignee(),flowTaskCompleteVO.getTaskId(),processInstance.getProcessInstanceId(),taskname); - if(isupdate){ + boolean isupdate = iFormCustomService.updateForm(formid, processDefinition.getDeploymentId(), processDefinition.getId(), flowTaskCompleteVO.getAssignee(), flowTaskCompleteVO.getTaskId(), processInstance.getProcessInstanceId(), taskname); + if (isupdate) { FlowModelVO flowModelVO = iFormCustomService.getForm(formid); //增加未查看记录 - userViewApproeService.saveUserViewApproe(flowTaskCompleteVO.getAssignee(),formid,flowModelVO.getTenantid().toString()); + userViewApproeService.saveUserViewApproe(flowTaskCompleteVO.getAssignee(), formid, flowModelVO.getTenantid().toString()); } - + } - - log.info("流程启动成功:procDefId:{}",procDefId); + + log.info("流程启动成功:procDefId:{}", procDefId); return true; - }catch (Exception e){ - log.error("流程启动失败:procDefId:{}",procDefId); - log.error("流程启动失败:e:{}",e); - + } catch (Exception e) { + log.error("流程启动失败:procDefId:{}", procDefId); + log.error("流程启动失败:e:{}", e); + //删除流程 - if(null != processInstance){ + if (null != processInstance) { runtimeService.deleteProcessInstance(processInstance.getProcessInstanceId(), SystemMessage.SYS_OA_START_ERROR); historyService.deleteHistoricProcessInstance(processInstance.getProcessInstanceId()); } - if(StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)){ + if (StringUtils.isNotBlank(servicename) && StringUtils.isNotBlank(formid)) { iFormCustomService.delForm(formid); } } 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 45a7626a..5500bb2a 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 @@ -1122,6 +1122,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); dto.setTaskId(taskHiInstance.getId()); dto.setTaskName(taskHiInstance.getName()); + flowUnionVo.setNodeName(taskHiInstance.getName()); dto.setFinishTime(taskHiInstance.getEndTime()); if(taskHiInstance.getDurationInMillis() != null){ dto.setDuration(taskHiInstance.getDurationInMillis()/1000 + "秒"); @@ -1457,5 +1458,10 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return ResultVoUtil.success(); } - + + @Override + public ResultVo repetitionTask() { + return ResultVoUtil.success(flowableccMybatisDao.repetitionTask()); + } + } 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 eff86359..fbbce38c 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 @@ -35,4 +35,6 @@ public interface FlowableccMybatisDao extends BaseMapper { * @return */ List selectUserByFromid(String fromid); + + List> repetitionTask(); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java index d5d86dff..5be4b015 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java @@ -33,6 +33,8 @@ public interface OcrPictureService extends BaseService { public ResultVo createTaskChild(List ocrPictureList, String tenantId , UserToken sysUser, String search_month, HttpServletRequest req, String buessinessno); + public ResultVo createTaskChild(List ocrPictureList, String tenantId); + /** * 查询工单图片信息 * @param tenantId diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrPictureServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrPictureServiceImpl.java index 586021bd..f9fea4e6 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrPictureServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrPictureServiceImpl.java @@ -2,7 +2,6 @@ package cn.jyjz.xiaoyao.ocr.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.jyjz.flowable.domain.vo.FlowInstanceVo; import cn.jyjz.flowable.service.IFlowInstanceService; import cn.jyjz.xiaoyao.abase.service.SeqManageService; import cn.jyjz.xiaoyao.admin.service.LogService; @@ -18,654 +17,812 @@ import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil; import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil; import cn.jyjz.xiaoyao.ocr.util.SearchEnum; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; -import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient; -import cn.jyjz.xiaoyao.ocr.util.httputil.HttpHeader; -import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.commons.lang.ArrayUtils; -import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hpsf.Decimal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.security.core.parameters.P; +import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.stereotype.Service; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; import java.math.BigDecimal; -import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; + /** -* 业务层实现 -*/ + * 业务层实现 + */ @Service("ocrPictureService") @Slf4j -public class OcrPictureServiceImpl extends BaseServiceImpl implements OcrPictureService { - @Resource - private OcrPictureMybatisDao ocrpicturemybatisdao; +public class OcrPictureServiceImpl extends BaseServiceImpl implements OcrPictureService { + @Resource + private OcrPictureMybatisDao ocrpicturemybatisdao; + + @Resource + private OcrPicturejobService ocrPicturejobService; + @Resource + private OcrPictureNotesService ocrPictureNotesService; - @Resource - private OcrPicturejobService ocrPicturejobService; - @Resource - private OcrPictureNotesService ocrPictureNotesService; + @Resource + private OcrPackagetaskService ocrPackagetaskService; + @Resource + private LogService logService; + @Autowired + private SeqManageService seqManageService; + @Resource + private OcrTaskchildPictureService ocrTaskchildPictureService; + @Resource + IFlowInstanceService flowInstanceService; + + @Resource + private OcrUsersearchService ocrUsersearchService; - @Resource - private OcrPackagetaskService ocrPackagetaskService; - @Resource - private LogService logService; - @Autowired - private SeqManageService seqManageService; - @Resource - private OcrTaskchildPictureService ocrTaskchildPictureService; - @Resource - IFlowInstanceService flowInstanceService; - - @Resource - private OcrUsersearchService ocrUsersearchService; - - @Resource - private OcrPictureclassService ocrPictureclassService; - @Resource - private CategoryService categoryService; - - private Object lock = new Object(); - - /** - * 无量云 接口域名 - */ - @Value("${ocr.api.wly.interface-domain}") - private String interfaceDomain; - - /** - * 字典数据添加工具类 - */ - @Autowired - DataDictionaryUtil dataDictionaryUtil; - public ResultVo createTaskChild(List ocrPictureList, String tenantId , UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno){ - - //图片错误信息 - StringBuffer error = new StringBuffer(); - //项目错误信息 - StringBuffer errorProject = new StringBuffer(); - //流程错误信息 - StringBuffer errorFlow = new StringBuffer(); - - //记录任务相似度为百分百的任务主键 - List pointsList = new ArrayList<>(); - //图片信息不能为空 - if(null != ocrPictureList && !ocrPictureList.isEmpty()){ - //生成任务包 - //String packageName = seqManageService.getSeqNextNo("AI任务包"); - - //TODO 相似度、图片查询时间未传 - - //创建任务包 - OcrPackagetask ocrPackagetask = this.ocrPackagetaskService.create(buessinessno,tenantId,sysUser); - - if(null == ocrPackagetask){ - return ResultVoUtil.error("失败。"); - } - - //用于标记相似度是否存在百分百的情况 - - List newList = new ArrayList<>(); - for(OcrPicture ocrPicture:ocrPictureList){ - - //如果当前图片已经生成任务包,直接跳过 - if(ocrPicture.getTaskstatus().equals("1")){ - continue; - } - - - //图片查重的比对图片集合 - List compareList = new ArrayList<>(); - - //非历史图片主键集合 - List picturecompareList = new ArrayList<>(); - - boolean havePoint = false; - //二次遍历进行比对 - for(OcrPicture ocrPictureNext:ocrPictureList){ - - if(ocrPictureNext.getId().longValue() == ocrPicture.getId().longValue()){ - continue; - } - - - //TODO 接口请求判断重复情况 - logService.addLog(103,"AI获取图片相似度接口", sysUser, "sendParams"); - - - JSONObject jsonObjectSimi = ImageClassUtil.getSimilarity(ocrPicture.getImgurl(), - ocrPictureNext.getImgurl(), - null); - System.out.println("responseDataXs--code = [" + jsonObjectSimi.get("code") + "]"); - System.out.println("responseDataXs--similarity = [" + jsonObjectSimi.get("similarity") + "]"); - - String resultValue = ""; - - //返回内容为零,表示成功,否则表示失败 - if(null != jsonObjectSimi && jsonObjectSimi.getString("code").equals("0")){ - - resultValue = jsonObjectSimi.getString("similarity"); - ocrPictureNext.setResult(resultValue); - }else{ - resultValue = "0"; - ocrPictureNext.setResult(resultValue); - } - - BigDecimal b1 = new BigDecimal(resultValue); - BigDecimal b2 = new BigDecimal("100"); - int val = b1.compareTo(b2); - if(val == 0){ - havePoint = true; - } - - //如果当前图片未生成任务需要临时保存 - if(ocrPictureNext.getTaskstatus().equals("0")){ - picturecompareList.add(ocrPictureNext.getId().toString()); - } - - compareList.add(ocrPictureNext); - } - bubbleSortOpt(compareList); - //从大到小进行排序 - ocrPicture.setListCom(compareList); - - //非历史图片主键集合 - ocrPicture.setPicturecompareList(picturecompareList); - - //查询项目对象 - if(null == ocrPicture.getCategoryid()){ - //TODO 没有对应项目,返回提示信息 - if(null != error && error.length() > 1){ - error.append("," + ocrPicture.getImgname()); - }else{ - error.append(ocrPicture.getImgname()); - } - continue; - } - Category category = categoryService.getById(ocrPicture.getCategoryid()); - if(null == category){ - if(null != errorProject && errorProject.length() > 1){ - errorProject.append("," + ocrPicture.getImgname()); - }else { - errorProject.append(ocrPicture.getImgname()); - } - continue; - }else if(StringUtils.isBlank(category.getProcessdefinitionid())){ - if(null != errorFlow && errorFlow.length() > 1){ - errorFlow.append("," + category.getCategoryname()); - }else { - errorFlow.append(category.getCategoryname()); - } - continue; - } - - //创建工单,如果创建成功,增加标志,用于过滤条件使用 - OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.create(ocrPicture,tenantId,sysUser,ocrPackagetask.getId(),buessinessno); - if(null != ocrTaskchildPicture){ - - //发起流程 - flowInstanceService.startProcessInstanceById( - category.getProcessdefinitionid(), - null, - request, - ocrTaskchildPicture.getId().toString(), - category.getServicename() - ); - - if(havePoint){ - pointsList.add(ocrTaskchildPicture.getId()); - } - - //TODO 需要测试 - ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); - ocrPicture.setWorkStatus("1"); - this.updateById(ocrPicture); - } - - newList.add(ocrPicture); - } - - //批量更新 pointsList 主键相似度为百分百的数据 - if(null != pointsList && !pointsList.isEmpty()){ - this.ocrTaskchildPictureService.markPoint(pointsList); - } - - - if(StringUtils.isNotBlank(search_month)){ - if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){ - - ocrPackagetask.setSearchtimes(SearchEnum.getName(Integer.parseInt(search_month))); - }else if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20){ - ocrPackagetask.setSearchtimes(SearchEnum.getName((Integer.parseInt(search_month) - 20))); - } - } - ocrPackagetask.setPictureno(ocrPictureList.size()); - this.ocrPackagetaskService.updateById(ocrPackagetask); - - //原主图设置为任务包已经生成 - for(OcrPicture ocrPicture:newList){ - ocrPicture.setTaskstatus("1"); - this.updateById(ocrPicture); - } - - if(StringUtils.isBlank(error) && StringUtils.isBlank(errorProject) && StringUtils.isBlank(errorFlow)){ - return ResultVoUtil.success(); - }else{ - - String msg = (StringUtils.isBlank(error))?"":error.toString() + ",图片没有对应项目,无法查重。"; - msg = msg + ((StringUtils.isBlank(errorProject))?"":errorProject.toString() + ",图片没有对应项目,无法查重。"); - msg = msg + ((StringUtils.isBlank(errorFlow))?"":errorFlow.toString() + ",项目没有配置审批流程,无法查重。"); - return ResultVoUtil.success(msg); - } - - - } - return ResultVoUtil.error("失败。"); - } - public void bubbleSortOpt(List compareList) { - - if(null == compareList) { - return; - } - OcrPicture temp = null; - for(int i = 0; i < compareList.size() - 1; i++) { - for(int j = 0; j < compareList.size() - i - 1; j++) { - if(Double.parseDouble(compareList.get(j).getResult()) < Double.parseDouble(compareList.get(j + 1).getResult())) { - temp = compareList.get(j); - compareList.set(j,compareList.get(j + 1)); - compareList.set((j + 1),temp); - } - } - } - } - /** - * 保存接口传来的json数据 - * @param jsonArray - * @return - */ - public List savePicture(JSONObject jsonArray){ - List list = new ArrayList<>(); - - - return list; - } - public List listPage( Wrapper queryWrapper){ - - long count = this.count(queryWrapper); - - Page ocrPicturePage = new Page<>(1,count); - ocrPicturePage.setMaxLimit(count); - IPage iPage = this.page(ocrPicturePage,queryWrapper); - - return iPage.getRecords(); - } - - public List listByTaskChild(String tenantId,String createuser,String isclose,String tasktype,String packageid){ - - List resultPicture = new ArrayList<>(); - - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("TENANTID",tenantId); - if(StringUtils.isNotBlank(createuser)){ - queryWrapper.eq("CREATEUSER",createuser); - } - - if(StringUtils.isNotBlank(isclose)){ - queryWrapper.eq("IZCLOSE",isclose); - } - - if(StringUtils.isNotBlank(tasktype)){ - queryWrapper.eq("TASKTYPE",tasktype); - } - - if(StringUtils.isNotBlank(packageid)){ - queryWrapper.eq("PACKAGEID",packageid); - } - - //查询工单/任务集合 - List list = ocrTaskchildPictureService.listAll(tenantId,createuser,queryWrapper); - for(OcrTaskchildPicture ocrTaskchildPicture:list){ - OcrPicture ocrPicture = view(ocrTaskchildPicture); - if(null != ocrPicture){ - resultPicture.add(view(ocrTaskchildPicture)); - } - } - - return resultPicture; - - } - - /** - * 查询工单图片信息 - * @return - */ - public List listByTaskChild(List pictureidlist){ - List resultPicture = new ArrayList<>(); - //查询工单集合 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.in("pictureid",pictureidlist); - - long count = this.ocrTaskchildPictureService.count(queryWrapper); - - Page page = new Page<>(1, count); - page.setMaxLimit(count); - - IPage iPage = this.ocrTaskchildPictureService.page(page,queryWrapper); - - List list = iPage.getRecords(); - for(OcrTaskchildPicture ocrTaskchildPicture:list){ - OcrPicture ocrPicture = view(ocrTaskchildPicture); - if(null != ocrPicture){ - resultPicture.add(view(ocrTaskchildPicture)); - } - } - - return resultPicture; - } - - /** - * 查询工单下的图片以及查重结果 - * @param ocrTaskchildPicture - * @return - */ - public OcrPicture view(OcrTaskchildPicture ocrTaskchildPicture){ - - //参照图 - OcrPicture ocrPicture = this.getById(ocrTaskchildPicture.getPictureid()); - - ocrPicture.setOcrTaskchildPicture(ocrTaskchildPicture); - - //图片比对结果 - String result = ocrTaskchildPicture.getPictureresult(); - String[] comResult = result.split(","); - - //比较图 - List listCom = null; - - //判断查重图片是否为空 - if(StringUtils.isNotBlank(ocrTaskchildPicture.getOcpictureid())){ - //图片比较数量不确定 - - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.in("id",ocrTaskchildPicture.getOcpictureid().split(",")); - - long count = this.count(queryWrapper); - - Page ocrPicturePage = new Page<>(1,count); - ocrPicturePage.setMaxLimit(count); - - IPage iPage = this.page(ocrPicturePage,queryWrapper); - - int tempco = 0; - for(OcrPicture ocrPicture1:iPage.getRecords()){ - - //比对结果 - if(null != comResult && comResult.length > 0){ - ocrPicture1.setResult(comResult[tempco]); - } - tempco++; - } - - listCom = iPage.getRecords(); - - ocrPicture.setListCom(listCom); - - return ocrPicture; - - } - - return null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void saveMain(OcrPicture ocrPicture, List ocrPicturejobList, List ocrPictureNotesList) { - ocrpicturemybatisdao.insert(ocrPicture); - if(ocrPicturejobList!=null && ocrPicturejobList.size()>0) { - for(OcrPicturejob entity:ocrPicturejobList) { - //外键设置 - entity.setPictureid(ocrPicture.getId()); - ocrPicturejobService.save(entity); - } - } - if(ocrPictureNotesList!=null && ocrPictureNotesList.size()>0) { - for(OcrPictureNotes entity:ocrPictureNotesList) { - //外键设置 - entity.setPictureid(ocrPicture.getId()); - ocrPictureNotesService.save(entity); - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateMain(OcrPicture ocrPicture,List ocrPicturejobList,List ocrPictureNotesList) { - ocrpicturemybatisdao.updateById(ocrPicture); - - //1.先删除子表数据 - ocrPicturejobService .deleteByMainId(ocrPicture.getId().toString()); - ocrPictureNotesService.deleteByMainId(ocrPicture.getId().toString()); - - //2.子表数据重新插入 - if(ocrPicturejobList!=null && ocrPicturejobList.size()>0) { - for(OcrPicturejob entity:ocrPicturejobList) { - //外键设置 - entity.setPictureid(ocrPicture.getId()); - ocrPicturejobService.save(entity); - } - } - if(ocrPictureNotesList!=null && ocrPictureNotesList.size()>0) { - for(OcrPictureNotes entity:ocrPictureNotesList) { - //外键设置 - entity.setPictureid(ocrPicture.getId()); - ocrPictureNotesService.save(entity); - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delMain(String id) { - ocrPicturejobService.deleteByMainId(id); - ocrPictureNotesService.deleteByMainId(id); - ocrpicturemybatisdao.deleteById(id); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delBatchMain(Collection idList) { - for(Serializable id:idList) { - ocrPicturejobService.deleteByMainId(id.toString()); - ocrPictureNotesService.deleteByMainId(id.toString()); - ocrpicturemybatisdao.deleteById(id); - } - } - - @Override - public IPage queryPageByUserSearchId(Integer pageNo, Integer pageSize, String userSearchId) { - OcrUsersearch ocrUsersearch= ocrUsersearchService.selectByUserSearchId(userSearchId); - - QueryWrapper queryWrapper = new QueryWrapper(); - - - for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) { - this.formattingSearchChild(queryWrapper,usersearchchild); - - } - //分页查询并组装子集数据 - Page page = new Page(pageNo, pageSize); - IPage pageList = this.page(page, queryWrapper); - for(OcrPicture ocrPicture1:pageList.getRecords()){ - if(StringUtils.isNotBlank(ocrPicture1.getPictureclassid())){ - OcrPictureclass ocrPictureclass = ocrPictureclassService.getById(ocrPicture1.getPictureclassid()); - ocrPicture1.setOcrPictureclass(ocrPictureclass); - } - } - return pageList; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int savePictures(List ocrPictureList) { - //1.字典数据 解析入库 - boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); - - - //2.调整图片地址,补齐域名 - for (OcrPicture picture : ocrPictureList) { - picture.setCreateTime(System.currentTimeMillis()); //获取创建时间戳 - picture.setImgurl(interfaceDomain+picture.getImgurl()); - } - - - //3.添加图片信息 - if(this.saveBatch(ocrPictureList)){ - - return ocrPictureList.size(); - } - return 0; - } - - /** - * 格式化筛选关系 - * @param queryWrapper - * @param usersearchchild - * @return - */ - private QueryWrapper formattingSearchChild(QueryWrapper queryWrapper,OcrUsersearchchild usersearchchild ){ - switch (usersearchchild.getSearchRelationType()){ - case "where": - this.formattingSearchType(queryWrapper,usersearchchild); - break; - case "and": - queryWrapper.and(wrapper->this.formattingSearchType(wrapper,usersearchchild)); - break; - case "or": - queryWrapper.or(wrapper->this.formattingSearchType(wrapper,usersearchchild)); - break; - default: - return queryWrapper; - } - return queryWrapper; - } - - /** - * 格式化查询类型 - * @param queryWrapper - * @param usersearchchild - * @return - */ - private QueryWrapper formattingSearchType(QueryWrapper queryWrapper,OcrUsersearchchild usersearchchild){ - //查询类型 相等true 不相等fase - boolean queryType = "eq".equals(usersearchchild.getSearchtype()); - - //1.获取检查数据,确定数据类型 - String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue()); - List arrayData = null; //集合型数据 - List sectionInts =null; //纯数字区间型数据 - String[] sections =null; //字符串区间型数据 - DateTime beginTime =null; //日期时间区间型数据 - DateTime endTime=null; //日期时间区间型数据 - - //2.根据数据类型,解构数据 - switch (valueType){ - case "array": - //处理多文件 - String [] datas =usersearchchild.getSearchvalue().split(","); - arrayData = Arrays.asList(datas); - break; - case "section": - //格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除. - sections =usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); - //校验是否纯数字,纯数字的话,要转成int,否则比对时会有问题 - sectionInts= new ArrayList<>(); - for (String data : sections) { - if(data.matches("\\d+")){ - sectionInts.add(Integer.parseInt(data)); - } - } - break; - case "time": - //格式化时间数据 - String[] times =usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); - beginTime = DateUtil.parse(times[0],"yyyy/MM/dd"); - endTime = DateUtil.parse(times[1],"yyyy/MM/dd"); - break; - default: - } - - //3.根据查询类型 组装查询条件 相等 - switch (valueType){ - case "array": - //集合数据 - //相等 - if(queryType){ - queryWrapper.in(usersearchchild.getSearchfield(),arrayData); - break; - } - //不相等 - queryWrapper.notIn(usersearchchild.getSearchfield(),arrayData); - break; - - case "section": - //数字区间查询 - if(sectionInts!=null && sectionInts.size()==2){ - if(queryType) { - //相等 - queryWrapper.between(usersearchchild.getSearchfield(),sectionInts.get(0),sectionInts.get(1)); - break; - } - //不相等 - queryWrapper.notBetween(usersearchchild.getSearchfield(),sectionInts.get(0),sectionInts.get(1)); - break; - } - - //字符串区间查询 - if(queryType) { - //相等 - queryWrapper.between(usersearchchild.getSearchfield(),sections[0],sections[1]); - break; - } - //不相等 - queryWrapper.notBetween(usersearchchild.getSearchfield(),sections[0],sections[1]); - break; - - case "time": - //时间区间数据 - //相等 - if(queryType) { - queryWrapper.between(usersearchchild.getSearchfield(),beginTime.getTime(),endTime.getTime()); - break; - } - //不相等 - queryWrapper.notBetween(usersearchchild.getSearchfield(),beginTime.getTime(),endTime.getTime()); - break; - - default: - if(queryType) { - queryWrapper.eq(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); - break; - } - queryWrapper.ne(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); - } - return queryWrapper; - } + @Resource + private OcrPictureclassService ocrPictureclassService; + @Resource + private CategoryService categoryService; + + private Object lock = new Object(); + + /** + * 无量云 接口域名 + */ + @Value("${ocr.api.wly.interface-domain}") + private String interfaceDomain; + + /** + * 字典数据添加工具类 + */ + @Autowired + DataDictionaryUtil dataDictionaryUtil; + + public ResultVo createTaskChild(List ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno) { + + //图片错误信息 + StringBuffer error = new StringBuffer(); + //项目错误信息 + StringBuffer errorProject = new StringBuffer(); + //流程错误信息 + StringBuffer errorFlow = new StringBuffer(); + + //记录任务相似度为百分百的任务主键 + List pointsList = new ArrayList<>(); + //图片信息不能为空 + if (null != ocrPictureList && !ocrPictureList.isEmpty()) { + //生成任务包 + //String packageName = seqManageService.getSeqNextNo("AI任务包"); + + //TODO 相似度、图片查询时间未传 + + //创建任务包 + OcrPackagetask ocrPackagetask = this.ocrPackagetaskService.create(buessinessno, tenantId, sysUser); + + if (null == ocrPackagetask) { + return ResultVoUtil.error("失败。"); + } + + //用于标记相似度是否存在百分百的情况 + + List newList = new ArrayList<>(); + for (OcrPicture ocrPicture : ocrPictureList) { + + //如果当前图片已经生成任务包,直接跳过 + if (ocrPicture.getTaskstatus().equals("1")) { + continue; + } + + + //图片查重的比对图片集合 + List compareList = new ArrayList<>(); + + //非历史图片主键集合 + List picturecompareList = new ArrayList<>(); + + boolean havePoint = false; + //二次遍历进行比对 + for (OcrPicture ocrPictureNext : ocrPictureList) { + + if (ocrPictureNext.getId().longValue() == ocrPicture.getId().longValue()) { + continue; + } + + + //TODO 接口请求判断重复情况 + logService.addLog(103, "AI获取图片相似度接口", sysUser, "sendParams"); + + + JSONObject jsonObjectSimi = ImageClassUtil.getSimilarity(ocrPicture.getImgurl(), + ocrPictureNext.getImgurl(), + null); + System.out.println("responseDataXs--code = [" + jsonObjectSimi.get("code") + "]"); + System.out.println("responseDataXs--similarity = [" + jsonObjectSimi.get("similarity") + "]"); + + String resultValue = ""; + + //返回内容为零,表示成功,否则表示失败 + if (null != jsonObjectSimi && jsonObjectSimi.getString("code").equals("0")) { + + resultValue = jsonObjectSimi.getString("similarity"); + ocrPictureNext.setResult(resultValue); + } else { + resultValue = "0"; + ocrPictureNext.setResult(resultValue); + } + + BigDecimal b1 = new BigDecimal(resultValue); + BigDecimal b2 = new BigDecimal("100"); + int val = b1.compareTo(b2); + if (val == 0) { + havePoint = true; + } + + //如果当前图片未生成任务需要临时保存 + if (ocrPictureNext.getTaskstatus().equals("0")) { + picturecompareList.add(ocrPictureNext.getId().toString()); + } + + compareList.add(ocrPictureNext); + } + bubbleSortOpt(compareList); + //从大到小进行排序 + ocrPicture.setListCom(compareList); + + //非历史图片主键集合 + ocrPicture.setPicturecompareList(picturecompareList); + + //查询项目对象 + if (null == ocrPicture.getCategoryid()) { + //TODO 没有对应项目,返回提示信息 + if (null != error && error.length() > 1) { + error.append("," + ocrPicture.getImgname()); + } else { + error.append(ocrPicture.getImgname()); + } + continue; + } + Category category = categoryService.getById(ocrPicture.getCategoryid()); + if (null == category) { + if (null != errorProject && errorProject.length() > 1) { + errorProject.append("," + ocrPicture.getImgname()); + } else { + errorProject.append(ocrPicture.getImgname()); + } + continue; + } else if (StringUtils.isBlank(category.getProcessdefinitionid())) { + if (null != errorFlow && errorFlow.length() > 1) { + errorFlow.append("," + category.getCategoryname()); + } else { + errorFlow.append(category.getCategoryname()); + } + continue; + } + + //创建工单,如果创建成功,增加标志,用于过滤条件使用 + OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.create(ocrPicture, tenantId, sysUser, ocrPackagetask.getId(), buessinessno); + if (null != ocrTaskchildPicture) { + + //发起流程 + flowInstanceService.startProcessInstanceById( + category.getProcessdefinitionid(), + null, + request, + ocrTaskchildPicture.getId().toString(), + category.getServicename() + ); + + if (havePoint) { + pointsList.add(ocrTaskchildPicture.getId()); + } + + //TODO 需要测试 + ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); + ocrPicture.setWorkStatus("1"); + this.updateById(ocrPicture); + } + + newList.add(ocrPicture); + } + + //批量更新 pointsList 主键相似度为百分百的数据 + if (null != pointsList && !pointsList.isEmpty()) { + this.ocrTaskchildPictureService.markPoint(pointsList); + } + + + if (StringUtils.isNotBlank(search_month)) { + if (StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0) { + + ocrPackagetask.setSearchtimes(SearchEnum.getName(Integer.parseInt(search_month))); + } else if (StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20) { + ocrPackagetask.setSearchtimes(SearchEnum.getName((Integer.parseInt(search_month) - 20))); + } + } + ocrPackagetask.setPictureno(ocrPictureList.size()); + this.ocrPackagetaskService.updateById(ocrPackagetask); + + //原主图设置为任务包已经生成 + for (OcrPicture ocrPicture : newList) { + ocrPicture.setTaskstatus("1"); + this.updateById(ocrPicture); + } + + if (StringUtils.isBlank(error) && StringUtils.isBlank(errorProject) && StringUtils.isBlank(errorFlow)) { + return ResultVoUtil.success(); + } else { + + String msg = (StringUtils.isBlank(error)) ? "" : error.toString() + ",图片没有对应项目,无法查重。"; + msg = msg + ((StringUtils.isBlank(errorProject)) ? "" : errorProject.toString() + ",图片没有对应项目,无法查重。"); + msg = msg + ((StringUtils.isBlank(errorFlow)) ? "" : errorFlow.toString() + ",项目没有配置审批流程,无法查重。"); + return ResultVoUtil.success(msg); + } + + + } + return ResultVoUtil.error("失败。"); + } + public ResultVo createTaskChild(List ocrPictureList, String tenantId) { + + //图片错误信息 + StringBuffer error = new StringBuffer(); + //项目错误信息 + StringBuffer errorProject = new StringBuffer(); + //流程错误信息 + StringBuffer errorFlow = new StringBuffer(); + + //记录任务相似度为百分百的任务主键 + List pointsList = new ArrayList<>(); + //图片信息不能为空 + if (null != ocrPictureList && !ocrPictureList.isEmpty()) { + //生成任务包 + //String packageName = seqManageService.getSeqNextNo("AI任务包"); + + //用于标记相似度是否存在百分百的情况 + + List newList = new ArrayList<>(); + for (OcrPicture ocrPicture : ocrPictureList) { + //图片查重的比对图片集合 + List compareList = new ArrayList<>(); + + //非历史图片主键集合 + List picturecompareList = new ArrayList<>(); + + boolean havePoint = false; + //二次遍历进行比对 + for (OcrPicture ocrPictureNext : ocrPictureList) { + + if (ocrPictureNext.getId().longValue() == ocrPicture.getId().longValue()) { + continue; + } + //TODO 接口请求判断重复情况 + JSONObject jsonObjectSimi = ImageClassUtil.getSimilarity(ocrPicture.getImgurl(), + ocrPictureNext.getImgurl(), + null); + System.out.println("responseDataXs--code = [" + jsonObjectSimi.get("code") + "]"); + System.out.println("responseDataXs--similarity = [" + jsonObjectSimi.get("similarity") + "]"); + + String resultValue = ""; + + //返回内容为零,表示成功,否则表示失败 + if (null != jsonObjectSimi && jsonObjectSimi.getString("code").equals("0")) { + + resultValue = jsonObjectSimi.getString("similarity"); + ocrPictureNext.setResult(resultValue); + } else { + resultValue = "0"; + ocrPictureNext.setResult(resultValue); + } + + BigDecimal b1 = new BigDecimal(resultValue); + BigDecimal b2 = new BigDecimal("100"); + int val = b1.compareTo(b2); + if (val == 0) { + havePoint = true; + } + + //如果当前图片未生成任务需要临时保存 + if (ocrPictureNext.getTaskstatus().equals("0")) { + picturecompareList.add(ocrPictureNext.getId().toString()); + } + + compareList.add(ocrPictureNext); + } + bubbleSortOpt(compareList); + //从大到小进行排序 + ocrPicture.setListCom(compareList); + + //非历史图片主键集合 + ocrPicture.setPicturecompareList(picturecompareList); + + //查询项目对象 + if (null == ocrPicture.getCategoryid()) { + //TODO 没有对应项目,返回提示信息 + if (null != error && error.length() > 1) { + error.append("," + ocrPicture.getImgname()); + } else { + error.append(ocrPicture.getImgname()); + } + continue; + } + Category category = categoryService.getById(ocrPicture.getCategoryid()); + if (null == category) { + if (null != errorProject && errorProject.length() > 1) { + errorProject.append("," + ocrPicture.getImgname()); + } else { + errorProject.append(ocrPicture.getImgname()); + } + continue; + } else if (StringUtils.isBlank(category.getProcessdefinitionid())) { + if (null != errorFlow && errorFlow.length() > 1) { + errorFlow.append("," + category.getCategoryname()); + } else { + errorFlow.append(category.getCategoryname()); + } + continue; + } + UserToken userToken = new UserToken(); + userToken.setLoginname("admin"); + userToken.setUsername("admin"); + //创建工单,如果创建成功,增加标志,用于过滤条件使用 + OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.create(ocrPicture, tenantId, userToken, null, null); + if (null != ocrTaskchildPicture) { + //发起流程 + MockHttpServletRequest request = new MockHttpServletRequest(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); + flowInstanceService.startProcessInstanceById( + category.getProcessdefinitionid(), + null, + request, + ocrTaskchildPicture.getId().toString(), + category.getServicename() + ); + + if (havePoint) { + pointsList.add(ocrTaskchildPicture.getId()); + } + + //TODO 需要测试 + ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); + ocrPicture.setWorkStatus("1"); + this.updateById(ocrPicture); + } + + newList.add(ocrPicture); + } + + //批量更新 pointsList 主键相似度为百分百的数据 + if (null != pointsList && !pointsList.isEmpty()) { + this.ocrTaskchildPictureService.markPoint(pointsList); + } + //原主图设置为任务包已经生成 + for (OcrPicture ocrPicture : newList) { + ocrPicture.setTaskstatus("1"); + this.updateById(ocrPicture); + } + + if (StringUtils.isBlank(error) && StringUtils.isBlank(errorProject) && StringUtils.isBlank(errorFlow)) { + return ResultVoUtil.success(); + } else { + + String msg = (StringUtils.isBlank(error)) ? "" : error.toString() + ",图片没有对应项目,无法查重。"; + msg = msg + ((StringUtils.isBlank(errorProject)) ? "" : errorProject.toString() + ",图片没有对应项目,无法查重。"); + msg = msg + ((StringUtils.isBlank(errorFlow)) ? "" : errorFlow.toString() + ",项目没有配置审批流程,无法查重。"); + return ResultVoUtil.success(msg); + } + + + } + return ResultVoUtil.error("失败。"); + } + + public void bubbleSortOpt(List compareList) { + + if (null == compareList) { + return; + } + OcrPicture temp = null; + for (int i = 0; i < compareList.size() - 1; i++) { + for (int j = 0; j < compareList.size() - i - 1; j++) { + if (Double.parseDouble(compareList.get(j).getResult()) < Double.parseDouble(compareList.get(j + 1).getResult())) { + temp = compareList.get(j); + compareList.set(j, compareList.get(j + 1)); + compareList.set((j + 1), temp); + } + } + } + } + + /** + * 保存接口传来的json数据 + * + * @param jsonArray + * @return + */ + public List savePicture(JSONObject jsonArray) { + List list = new ArrayList<>(); + + + return list; + } + + public List listPage(Wrapper queryWrapper) { + + long count = this.count(queryWrapper); + + Page ocrPicturePage = new Page<>(1, count); + ocrPicturePage.setMaxLimit(count); + IPage iPage = this.page(ocrPicturePage, queryWrapper); + + return iPage.getRecords(); + } + + public List listByTaskChild(String tenantId, String createuser, String isclose, String tasktype, String packageid) { + + List resultPicture = new ArrayList<>(); + + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("TENANTID", tenantId); + if (StringUtils.isNotBlank(createuser)) { + queryWrapper.eq("CREATEUSER", createuser); + } + + if (StringUtils.isNotBlank(isclose)) { + queryWrapper.eq("IZCLOSE", isclose); + } + + if (StringUtils.isNotBlank(tasktype)) { + queryWrapper.eq("TASKTYPE", tasktype); + } + + if (StringUtils.isNotBlank(packageid)) { + queryWrapper.eq("PACKAGEID", packageid); + } + + //查询工单/任务集合 + List list = ocrTaskchildPictureService.listAll(tenantId, createuser, queryWrapper); + for (OcrTaskchildPicture ocrTaskchildPicture : list) { + OcrPicture ocrPicture = view(ocrTaskchildPicture); + if (null != ocrPicture) { + resultPicture.add(view(ocrTaskchildPicture)); + } + } + + return resultPicture; + + } + + /** + * 查询工单图片信息 + * + * @return + */ + public List listByTaskChild(List pictureidlist) { + List resultPicture = new ArrayList<>(); + //查询工单集合 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.in("pictureid", pictureidlist); + + long count = this.ocrTaskchildPictureService.count(queryWrapper); + + Page page = new Page<>(1, count); + page.setMaxLimit(count); + + IPage iPage = this.ocrTaskchildPictureService.page(page, queryWrapper); + + List list = iPage.getRecords(); + for (OcrTaskchildPicture ocrTaskchildPicture : list) { + OcrPicture ocrPicture = view(ocrTaskchildPicture); + if (null != ocrPicture) { + resultPicture.add(view(ocrTaskchildPicture)); + } + } + + return resultPicture; + } + + /** + * 查询工单下的图片以及查重结果 + * + * @param ocrTaskchildPicture + * @return + */ + public OcrPicture view(OcrTaskchildPicture ocrTaskchildPicture) { + + //参照图 + OcrPicture ocrPicture = this.getById(ocrTaskchildPicture.getPictureid()); + + ocrPicture.setOcrTaskchildPicture(ocrTaskchildPicture); + + //图片比对结果 + String result = ocrTaskchildPicture.getPictureresult(); + String[] comResult = result.split(","); + + //比较图 + List listCom = null; + + //判断查重图片是否为空 + if (StringUtils.isNotBlank(ocrTaskchildPicture.getOcpictureid())) { + //图片比较数量不确定 + + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.in("id", ocrTaskchildPicture.getOcpictureid().split(",")); + + long count = this.count(queryWrapper); + + Page ocrPicturePage = new Page<>(1, count); + ocrPicturePage.setMaxLimit(count); + + IPage iPage = this.page(ocrPicturePage, queryWrapper); + + int tempco = 0; + for (OcrPicture ocrPicture1 : iPage.getRecords()) { + + //比对结果 + if (null != comResult && comResult.length > 0) { + ocrPicture1.setResult(comResult[tempco]); + } + tempco++; + } + + listCom = iPage.getRecords(); + + ocrPicture.setListCom(listCom); + + return ocrPicture; + + } + + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveMain(OcrPicture ocrPicture, List ocrPicturejobList, List ocrPictureNotesList) { + ocrpicturemybatisdao.insert(ocrPicture); + if (ocrPicturejobList != null && ocrPicturejobList.size() > 0) { + for (OcrPicturejob entity : ocrPicturejobList) { + //外键设置 + entity.setPictureid(ocrPicture.getId()); + ocrPicturejobService.save(entity); + } + } + if (ocrPictureNotesList != null && ocrPictureNotesList.size() > 0) { + for (OcrPictureNotes entity : ocrPictureNotesList) { + //外键设置 + entity.setPictureid(ocrPicture.getId()); + ocrPictureNotesService.save(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMain(OcrPicture ocrPicture, List ocrPicturejobList, List ocrPictureNotesList) { + ocrpicturemybatisdao.updateById(ocrPicture); + + //1.先删除子表数据 + ocrPicturejobService.deleteByMainId(ocrPicture.getId().toString()); + ocrPictureNotesService.deleteByMainId(ocrPicture.getId().toString()); + + //2.子表数据重新插入 + if (ocrPicturejobList != null && ocrPicturejobList.size() > 0) { + for (OcrPicturejob entity : ocrPicturejobList) { + //外键设置 + entity.setPictureid(ocrPicture.getId()); + ocrPicturejobService.save(entity); + } + } + if (ocrPictureNotesList != null && ocrPictureNotesList.size() > 0) { + for (OcrPictureNotes entity : ocrPictureNotesList) { + //外键设置 + entity.setPictureid(ocrPicture.getId()); + ocrPictureNotesService.save(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delMain(String id) { + ocrPicturejobService.deleteByMainId(id); + ocrPictureNotesService.deleteByMainId(id); + ocrpicturemybatisdao.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delBatchMain(Collection idList) { + for (Serializable id : idList) { + ocrPicturejobService.deleteByMainId(id.toString()); + ocrPictureNotesService.deleteByMainId(id.toString()); + ocrpicturemybatisdao.deleteById(id); + } + } + + @Override + public IPage queryPageByUserSearchId(Integer pageNo, Integer pageSize, String userSearchId) { + OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId); + + QueryWrapper queryWrapper = new QueryWrapper(); + + + for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) { + this.formattingSearchChild(queryWrapper, usersearchchild); + + } + //分页查询并组装子集数据 + Page page = new Page(pageNo, pageSize); + IPage pageList = this.page(page, queryWrapper); + for (OcrPicture ocrPicture1 : pageList.getRecords()) { + if (StringUtils.isNotBlank(ocrPicture1.getPictureclassid())) { + OcrPictureclass ocrPictureclass = ocrPictureclassService.getById(ocrPicture1.getPictureclassid()); + ocrPicture1.setOcrPictureclass(ocrPictureclass); + } + } + return pageList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int savePictures(List ocrPictureList) { + //1.字典数据 解析入库 + boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); + + + //2.调整图片地址,补齐域名 + for (OcrPicture picture : ocrPictureList) { + picture.setCreateTime(System.currentTimeMillis()); //获取创建时间戳 + picture.setImgurl(interfaceDomain + picture.getImgurl()); + } + + + //3.添加图片信息 + if (this.saveBatch(ocrPictureList)) { + + this.createTaskChild(ocrPictureList, ocrPictureList.get(0).getTenantId().toString()); + return ocrPictureList.size(); + } + return 0; + } + + /** + * 格式化筛选关系 + * + * @param queryWrapper + * @param usersearchchild + * @return + */ + private QueryWrapper formattingSearchChild(QueryWrapper queryWrapper, OcrUsersearchchild usersearchchild) { + switch (usersearchchild.getSearchRelationType()) { + case "where": + this.formattingSearchType(queryWrapper, usersearchchild); + break; + case "and": + queryWrapper.and(wrapper -> this.formattingSearchType(wrapper, usersearchchild)); + break; + case "or": + queryWrapper.or(wrapper -> this.formattingSearchType(wrapper, usersearchchild)); + break; + default: + return queryWrapper; + } + return queryWrapper; + } + + /** + * 格式化查询类型 + * + * @param queryWrapper + * @param usersearchchild + * @return + */ + private QueryWrapper formattingSearchType(QueryWrapper queryWrapper, OcrUsersearchchild usersearchchild) { + //查询类型 相等true 不相等fase + boolean queryType = "eq".equals(usersearchchild.getSearchtype()); + + //1.获取检查数据,确定数据类型 + String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue()); + List arrayData = null; //集合型数据 + List sectionInts = null; //纯数字区间型数据 + String[] sections = null; //字符串区间型数据 + DateTime beginTime = null; //日期时间区间型数据 + DateTime endTime = null; //日期时间区间型数据 + + //2.根据数据类型,解构数据 + switch (valueType) { + case "array": + //处理多文件 + String[] datas = usersearchchild.getSearchvalue().split(","); + arrayData = Arrays.asList(datas); + break; + case "section": + //格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除. + sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); + //校验是否纯数字,纯数字的话,要转成int,否则比对时会有问题 + sectionInts = new ArrayList<>(); + for (String data : sections) { + if (data.matches("\\d+")) { + sectionInts.add(Integer.parseInt(data)); + } + } + break; + case "time": + //格式化时间数据 + String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); + beginTime = DateUtil.parse(times[0], "yyyy/MM/dd"); + endTime = DateUtil.parse(times[1], "yyyy/MM/dd"); + break; + default: + } + + //3.根据查询类型 组装查询条件 相等 + switch (valueType) { + case "array": + //集合数据 + //相等 + if (queryType) { + queryWrapper.in(usersearchchild.getSearchfield(), arrayData); + break; + } + //不相等 + queryWrapper.notIn(usersearchchild.getSearchfield(), arrayData); + break; + + case "section": + //数字区间查询 + if (sectionInts != null && sectionInts.size() == 2) { + if (queryType) { + //相等 + queryWrapper.between(usersearchchild.getSearchfield(), sectionInts.get(0), sectionInts.get(1)); + break; + } + //不相等 + queryWrapper.notBetween(usersearchchild.getSearchfield(), sectionInts.get(0), sectionInts.get(1)); + break; + } + + //字符串区间查询 + if (queryType) { + //相等 + queryWrapper.between(usersearchchild.getSearchfield(), sections[0], sections[1]); + break; + } + //不相等 + queryWrapper.notBetween(usersearchchild.getSearchfield(), sections[0], sections[1]); + break; + + case "time": + //时间区间数据 + //相等 + if (queryType) { + queryWrapper.between(usersearchchild.getSearchfield(), beginTime.getTime(), endTime.getTime()); + break; + } + //不相等 + queryWrapper.notBetween(usersearchchild.getSearchfield(), beginTime.getTime(), endTime.getTime()); + break; + + default: + if (queryType) { + queryWrapper.eq(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); + break; + } + queryWrapper.ne(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); + } + return queryWrapper; + } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDownloadTask.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDownloadTask.java index 8600d056..87187e56 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDownloadTask.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDownloadTask.java @@ -7,6 +7,7 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @@ -19,12 +20,12 @@ import java.util.Map; * @version 1.0 * @date 2024/3/14 11:15 */ -public class PictureDownloadTask implements Runnable{ +public class PictureDownloadTask implements Runnable { protected Logger logger = LoggerFactory.getLogger(getClass()); private PictureSourceResult pictureSourceResult; - public PictureDownloadTask(PictureSourceResult pictureSourceResult){ + public PictureDownloadTask(PictureSourceResult pictureSourceResult) { this.pictureSourceResult = pictureSourceResult; } @@ -34,13 +35,13 @@ public class PictureDownloadTask implements Runnable{ OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService"); //获取当前任务中有多少图片 - List> livePhoto = pictureSourceResult.getLivePhoto(); + List> livePhoto = pictureSourceResult.getLivePhoto(); //定义新增集合对象 List ocrPictureList = new ArrayList<>(); for (Map map : livePhoto) { //检查图片地址是否为空 - if(map.get("imgUrl")!=null && !StringUtils.isEmpty(map.get("imgUrl").toString())){ + if (map.get("imgUrl") != null && !StringUtils.isEmpty(map.get("imgUrl").toString())) { //不为空开始组装参数 入库 OcrPicture picture = new OcrPicture(); //租户编号 @@ -48,11 +49,11 @@ public class PictureDownloadTask implements Runnable{ //租户名称 picture.setTenantname(pictureSourceResult.getTenantName()); //租户状态 - if(pictureSourceResult.getTenantStatus()!=null){ + if (pictureSourceResult.getTenantStatus() != null) { picture.setTenantstatus(pictureSourceResult.getTenantStatus().toString()); } //业务主体 - if(pictureSourceResult.getAccountNo()!=null){ + if (pictureSourceResult.getAccountNo() != null) { picture.setPictureid(pictureSourceResult.getAccountNo().toString()); } //业务主体名称 @@ -60,25 +61,28 @@ public class PictureDownloadTask implements Runnable{ //业务主体状态 picture.setPicturestatus(pictureSourceResult.getPlanChildStatus()); //项目编号 - if(pictureSourceResult.getProjectNo()!=null){ + if (pictureSourceResult.getProjectNo() != null) { picture.setProjectid(pictureSourceResult.getProjectNo().toString()); } + //项目id + picture.setCategoryid(251374070600303007L); + //项目名称 picture.setPicturename(pictureSourceResult.getProjectName()); //项目状态 - if(pictureSourceResult.getProjectNo()!=null) { + if (pictureSourceResult.getProjectNo() != null) { picture.setProjectstatus(pictureSourceResult.getProjectNo().toString()); } //所属主计划id - if(pictureSourceResult.getPlanNo()!=null) { + if (pictureSourceResult.getPlanNo() != null) { picture.setPlanid(pictureSourceResult.getPlanNo().toString()); } //所属计划名称 picture.setPlanname(pictureSourceResult.getPlanName()); //所属计划状态 - picture.setPlanstatus( pictureSourceResult.getPlanstatus()); + picture.setPlanstatus(pictureSourceResult.getPlanstatus()); //所属子计划id - if(pictureSourceResult.getPlanChildNo()!=null) { + if (pictureSourceResult.getPlanChildNo() != null) { picture.setPlanchildid(pictureSourceResult.getPlanChildNo().toString()); } //所属子计划名称 @@ -92,7 +96,7 @@ public class PictureDownloadTask implements Runnable{ //任务来源名称 picture.setField4(pictureSourceResult.getTaskName()); //所属任务状态 - if(pictureSourceResult.getTenantStatus()!=null) { + if (pictureSourceResult.getTenantStatus() != null) { picture.setTaskstatus(pictureSourceResult.getTenantStatus().toString()); } //提报人id @@ -106,56 +110,56 @@ public class PictureDownloadTask implements Runnable{ //拜访详细地址 StringBuilder addressDetails = new StringBuilder(); //拜访省份 - if(pictureSourceResult.getProvince()!=null){ - if(pictureSourceResult.getProvince().get("name")!=null){ + if (pictureSourceResult.getProvince() != null) { + if (pictureSourceResult.getProvince().get("name") != null) { addressDetails.append(pictureSourceResult.getProvince().get("name").toString()); picture.setReleaseprovince(pictureSourceResult.getProvince().get("name").toString()); } } //拜访城市 - if(pictureSourceResult.getCity()!=null){ - if(pictureSourceResult.getCity().get("name")!=null){ + if (pictureSourceResult.getCity() != null) { + if (pictureSourceResult.getCity().get("name") != null) { addressDetails.append(pictureSourceResult.getCity().get("name").toString()); picture.setReleasearea(pictureSourceResult.getCity().get("name").toString()); } } //拜访定位信息 - if(pictureSourceResult.getLocation()!=null){ - if(pictureSourceResult.getCity().get("address")!=null){ + if (pictureSourceResult.getLocation() != null) { + if (pictureSourceResult.getCity().get("address") != null) { addressDetails.append(pictureSourceResult.getCity().get("address").toString()); } } picture.setField10(addressDetails.toString()); //拜访客户类型 - if(pictureSourceResult.getTerminalType()!=null){ - if(pictureSourceResult.getTerminalType().get("name")!=null){ + if (pictureSourceResult.getTerminalType() != null) { + if (pictureSourceResult.getTerminalType().get("name") != null) { picture.setField2(pictureSourceResult.getTerminalType().get("name").toString()); } } //拜访客户名称 - if(pictureSourceResult.getCustomerName()!=null){ - if(pictureSourceResult.getCustomerName().get("name")!=null){ + if (pictureSourceResult.getCustomerName() != null) { + if (pictureSourceResult.getCustomerName().get("name") != null) { picture.setField3(pictureSourceResult.getCustomerName().get("name").toString()); } } //拜访客户级别 - if(pictureSourceResult.getTerminalLevel()!=null){ - if(pictureSourceResult.getTerminalLevel().get("name")!=null){ + if (pictureSourceResult.getTerminalLevel() != null) { + if (pictureSourceResult.getTerminalLevel().get("name") != null) { picture.setField6(pictureSourceResult.getTerminalLevel().get("name").toString()); } } //拜访项目类别 - if(pictureSourceResult.getProjectType()!=null){ - if(pictureSourceResult.getTerminalLevel().get("name")!=null){ + if (pictureSourceResult.getProjectType() != null) { + if (pictureSourceResult.getTerminalLevel().get("name") != null) { picture.setField17(pictureSourceResult.getTerminalLevel().get("name").toString()); } } //拜访品种 - if(pictureSourceResult.getProductName()!=null){ - if(pictureSourceResult.getProductName().get("name")!=null){ + if (pictureSourceResult.getProductName() != null) { + if (pictureSourceResult.getProductName().get("name") != null) { picture.setField9(pictureSourceResult.getProductName().get("name").toString()); } } @@ -169,10 +173,10 @@ public class PictureDownloadTask implements Runnable{ picture.setField12(pictureSourceResult.getDistance()); //设置图片信息 - if(map.get("imgName")!=null){ + if (map.get("imgName") != null) { picture.setImgname(map.get("imgName").toString()); } - if(map.get("imgUrl")!=null){ + if (map.get("imgUrl") != null) { picture.setImgurl(map.get("imgUrl").toString()); } //默认为创建人为admin 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 b9e8f8bb..c98e8671 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 @@ -181,4 +181,13 @@ from OA_SUMMARY_VIEW + +