From 537c3da10d453fb174dd112744d3dc68f49695c8 Mon Sep 17 00:00:00 2001 From: DELL Date: Sat, 16 Mar 2024 18:33:46 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=88=97=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ocr/service/impl/OcrUserFieldServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrUserFieldServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrUserFieldServiceImpl.java index 68c116e9..133fdae6 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrUserFieldServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrUserFieldServiceImpl.java @@ -82,10 +82,12 @@ public class OcrUserFieldServiceImpl extends BaseServiceImpl Date: Sat, 16 Mar 2024 19:15:23 +0800 Subject: [PATCH 02/15] =?UTF-8?q?feat:=E8=A7=A3=E5=86=B3dev=E7=8E=AF?= =?UTF-8?q?=E5=A2=83yml=E7=BC=BA=E5=B0=91=E7=BC=93=E5=AD=98=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E6=AE=B5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runstart/src/main/resources/application-dev.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/runstart/src/main/resources/application-dev.yml b/runstart/src/main/resources/application-dev.yml index 893496c1..7e359541 100644 --- a/runstart/src/main/resources/application-dev.yml +++ b/runstart/src/main/resources/application-dev.yml @@ -96,6 +96,7 @@ spring: cache: ehcache: config: classpath:/myehcache.xml + type: ehcache # type: redis # redis: # #Redis服务器地址 From fb536bee37f57cdd6f0e248dc8d7c8ae7380aaad Mon Sep 17 00:00:00 2001 From: lijingtao <18301674552@163.COM> Date: Sat, 16 Mar 2024 20:30:39 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E5=BF=98=E8=AE=B0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=92=8C=E7=BB=BC=E5=90=88=E6=90=9C=E7=B4=A2=E5=92=8C=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=20=E7=BB=9F=E4=B8=80=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E8=BF=94=E5=9B=9E=E6=96=B9=E5=BC=8Fcode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ocr/controller/OcrMsgReadController.java | 54 +++++++-------- .../ocr/controller/OcrSUserTController.java | 66 ++++++++++--------- .../OcrSearchHistoryController.java | 29 ++++---- .../xiaoyao/ocr/dataDao/OcrMsgMapper.java | 2 + .../xiaoyao/ocr/service/IOcrMsgService.java | 4 ++ .../ocr/service/impl/OcrMsgServiceImpl.java | 5 ++ .../main/resources/mapper/oa/OcrMsgMapper.xml | 14 ++++ 7 files changed, 102 insertions(+), 72 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java index 1cc4afa0..85999a0e 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java @@ -2,31 +2,24 @@ package cn.jyjz.xiaoyao.ocr.controller; import cn.jyjz.xiaoyao.common.base.service.UserTokenService; import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil; -import cn.jyjz.xiaoyao.common.base.util.StringUtils; +import cn.jyjz.xiaoyao.common.base.vo.ResultVo; +import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.UserToken; -import cn.jyjz.xiaoyao.oa.from.dataobject.Candidateuser; import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg; import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsgRead; import cn.jyjz.xiaoyao.ocr.service.IOcrMsgService; import cn.jyjz.xiaoyao.ocr.util.PageRequest; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageInfo; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; import cn.jyjz.xiaoyao.ocr.service.IOcrMsgReadService; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -54,14 +47,15 @@ public class OcrMsgReadController { /** * 分页查询 + * * @return */ @ApiOperation(value = "系统消息分页", notes = "系统消息分页") @RequestMapping(value = "/systemPage", method = RequestMethod.GET) - public ResponseEntity systemPage(HttpServletRequest request, - @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo, - @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize, - @RequestParam(value = "msgCategory", required = false) String msgCategory) { + public ResultVo systemPage(HttpServletRequest request, + @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo, + @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize, + @RequestParam(value = "msgCategory", required = false) String msgCategory) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); @@ -76,39 +70,42 @@ public class OcrMsgReadController { PageInfo>> findPage = iocrmsgservice.selectPage(pageQuery,userToken.getUserid(),msgCategory); //执行查询方法 - return new ResponseEntity(findPage, HttpStatus.OK); +// return new ResponseEntity(findPage, HttpStatus.OK); + return ResultVoUtil.success(findPage); } /** - * 查询 单条 信息 + * 查询 单条 信息 * * @param id - * @param id 编号 + * @param id 编号 * @return */ @ApiOperation(value = "消息详情", notes = "消息详情") @RequestMapping(value = "/msgOne", method = RequestMethod.GET) - public ResponseEntity msgOne(@RequestParam(value = "id", required = false)String id) { + public ResultVo msgOne(@RequestParam(value = "id", required = false)String id) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("titile","msg_content as msgContent","sender","msg_category as msgCategory","send_time as sendTime"); - wrapper.eq("id", id); - //执行查询方法 - OcrMsg one = iocrmsgservice.getOne(wrapper); +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.select("titile","msg_content as msgContent","'系统管理员' as qweqwe","sender","msg_category as msgCategory","send_time as sendTime"); +// wrapper.eq("id", id); +// //执行查询方法 +// OcrMsg one = iocrmsgservice.getOne(wrapper); - return new ResponseEntity(one,HttpStatus.OK); + Map selectone = iocrmsgservice.selectone(id); + return ResultVoUtil.success(selectone); } /** * 添加 + * * @return */ @ApiOperation(value = "消除未读所有", notes = "消除未读所有") @RequestMapping(value = "eliminateUnreadfull", method = RequestMethod.POST) - public ResponseEntity eliminateUnreadfull(HttpServletRequest request,@RequestParam(value = "msgCategory", required = false)String msgCategory) { + public ResultVo eliminateUnreadfull(HttpServletRequest request, @RequestParam(value = "msgCategory", required = false)String msgCategory) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); @@ -131,15 +128,17 @@ public class OcrMsgReadController { ocrmsgread.setReadFlag(1); ocrmsgread.setReadTime(System.currentTimeMillis()); ocrMsgReadService.save(ocrmsgread); + return ResultVoUtil.success(ResultVo.SUCCESS); } } //此处需要手工处理 返回需要将修改后的数据返回 - return new ResponseEntity("true",HttpStatus.OK); +// return new ResponseEntity("true",HttpStatus.OK); + return ResultVoUtil.success(ResultVo.SUCCESS); } @ApiOperation(value = "消除未读单个", notes = "消除未读单个") @RequestMapping(value = "eliminateUnreadone", method = RequestMethod.POST) - public ResponseEntity eliminateUnreadone(HttpServletRequest request,@RequestParam(value = "msgid", required = false)String msgid) { + public ResultVo eliminateUnreadone(HttpServletRequest request, @RequestParam(value = "msgid", required = false)String msgid) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); @@ -156,7 +155,8 @@ public class OcrMsgReadController { boolean save = ocrMsgReadService.save(ocrmsgread); //此处需要手工处理 返回需要将修改后的数据返回 - return new ResponseEntity(save,HttpStatus.OK); +// return new ResponseEntity(save,HttpStatus.OK); + return ResultVoUtil.success(save); } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSUserTController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSUserTController.java index e61cd96b..a797b566 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSUserTController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSUserTController.java @@ -1,18 +1,13 @@ package cn.jyjz.xiaoyao.ocr.controller; import cn.jyjz.xiaoyao.admin.dataobject.Tenant; -import cn.jyjz.xiaoyao.admin.dataobject.User; import cn.jyjz.xiaoyao.admin.service.TenantService; -import cn.jyjz.xiaoyao.common.base.controller.BaseController; import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.redis.cache.ICacheManager; import cn.jyjz.xiaoyao.common.redis.cache.constants.CacheConstants; import cn.jyjz.xiaoyao.framework.security.service.SmsLoginService; -import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg; import cn.jyjz.xiaoyao.ocr.dataobject.OcrSUserT; -import cn.jyjz.xiaoyao.ocr.dataobject.OcrSearchHistory; -import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; import cn.jyjz.xiaoyao.ocr.service.OcrISUserTService; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -21,19 +16,11 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -62,11 +49,12 @@ public class OcrSUserTController { @Autowired OcrTaskchildPictureService ocrtaskchildpictureservice; - /** 忘记密码 + /** + * 忘记密码 */ @ApiOperation(value = "重置密码", notes = "重置密码") @RequestMapping(value = "/updateSUser", method = RequestMethod.POST) - public ResponseEntity updateSUser(@RequestBody Map map) { + public ResultVo updateSUser(@RequestBody Map map) { // System.out.println(map); // Map map=new HashMap(); @@ -82,34 +70,39 @@ public class OcrSUserTController { boolean update = sUserTService.update(updatewrapper); if(update){ - return new ResponseEntity("密码重设成功!",HttpStatus.OK); - +// return new ResponseEntity("密码重设成功!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"密码重设成功!"); } }else{ - return new ResponseEntity("两次密码输入不一致!",HttpStatus.OK); +// return new ResponseEntity("两次密码输入不一致!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"两次密码输入不一致!"); } }else{ - return new ResponseEntity("请再次输入新密码!",HttpStatus.OK); +// return new ResponseEntity("请再次输入新密码!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请再次输入新密码!"); } }else{ - return new ResponseEntity("请输入新密码!",HttpStatus.OK); +// return new ResponseEntity("请输入新密码!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入新密码!"); + } }else { - return new ResponseEntity("请输入同时包含英文、数字的8~16位密码!",HttpStatus.OK); +// return new ResponseEntity("请输入同时包含英文、数字的8~16位密码!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入同时包含英文、数字的8~16位密码!"); } - return new ResponseEntity(HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS); } @ApiOperation(value = "忘记密码", notes = "忘记密码") @RequestMapping(value = "/selectSUser", method = RequestMethod.POST) - public ResponseEntity selectSUser(@RequestBody Map map) { + public ResultVo selectSUser(@RequestBody Map map) { if(null!=map.get("loginname")){ if(null!=map.get("phone")){ @@ -134,35 +127,44 @@ public class OcrSUserTController { if(!StringUtils.isBlank(sysCode) && !sysCode.equals(map.get("phone").toString())){ Map list = new HashMap<>(); list.put("loginname",map.get("loginname").toString()); - return new ResponseEntity>(list, HttpStatus.OK); +// return new ResponseEntity>(list, HttpStatus.OK); + return ResultVoUtil.success(ResultVo.SUCCESS,list); }else { - return new ResponseEntity("验证码错误!",HttpStatus.OK); +// return new ResponseEntity("验证码错误!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"验证码错误!"); } }else { - return new ResponseEntity("手机号错误!",HttpStatus.OK); +// return new ResponseEntity("手机号错误!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"手机号错误!"); } }else { - return new ResponseEntity("账号不存在!",HttpStatus.OK); +// return new ResponseEntity("账号不存在!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"账号不存在!"); } }else { - return new ResponseEntity("企业编码错误!",HttpStatus.OK); +// return new ResponseEntity("企业编码错误!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"企业编码错误!"); } }else { - return new ResponseEntity("请输入企业编码!",HttpStatus.OK); +// return new ResponseEntity("请输入企业编码!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入企业编码!"); } }else { - return new ResponseEntity("请输入验证码!",HttpStatus.OK); +// return new ResponseEntity("请输入验证码!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入验证码!"); } }else { - return new ResponseEntity("请输入手机号!",HttpStatus.OK); +// return new ResponseEntity("请输入手机号!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入手机号!"); } }else { - return new ResponseEntity("请输入账号!",HttpStatus.OK); +// return new ResponseEntity("请输入账号!",HttpStatus.OK); + return ResultVoUtil.error(ResultVo.SUCCESS,"请输入账号!"); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSearchHistoryController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSearchHistoryController.java index cd49eb19..fc38b35c 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSearchHistoryController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrSearchHistoryController.java @@ -2,17 +2,14 @@ package cn.jyjz.xiaoyao.ocr.controller; import cn.jyjz.xiaoyao.common.base.service.UserTokenService; import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil; +import cn.jyjz.xiaoyao.common.base.vo.ResultVo; +import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.UserToken; -import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsgRead; import cn.jyjz.xiaoyao.ocr.dataobject.OcrSearchHistory; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; import cn.jyjz.xiaoyao.ocr.service.IOcrSearchHistoryService; @@ -39,12 +36,13 @@ public class OcrSearchHistoryController { /** * 搜索查询 + * * @param request * @return */ @RequestMapping(value = "/searchList", method = RequestMethod.GET) - public ResponseEntity searchList(HttpServletRequest request, - @RequestParam(value = "search", required = false) String search) { + public ResultVo searchList(HttpServletRequest request, + @RequestParam(value = "search", required = false) String search) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); //执行查询方法 List selectsearch = ocrSearchHistoryService.selectsearch(search, userToken.getUsername()); @@ -55,23 +53,27 @@ public class OcrSearchHistoryController { ocrsearchhistory.setCreatedate(System.currentTimeMillis()); ocrSearchHistoryService.save(ocrsearchhistory); - return new ResponseEntity(selectsearch, HttpStatus.OK); +// return new ResponseEntity(selectsearch, HttpStatus.OK); + + return ResultVoUtil.success(selectsearch); } /** * 通过 删除历史记录 + * * @param request * @return */ @RequestMapping(value = "/searchdelete", method = RequestMethod.DELETE) - public ResponseEntity searchdelete(HttpServletRequest request) { + public ResultVo searchdelete(HttpServletRequest request) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("userid",userToken.getUserid()); //根据具体情况 判断 是否需要 进行数据返回, 默认不返回数据 - ocrSearchHistoryService.remove(wrapper); - return new ResponseEntity("true",HttpStatus.OK); + ocrSearchHistoryService.remove(wrapper); +// return new ResponseEntity("true",HttpStatus.OK); + return ResultVoUtil.success(ResultVo.SUCCESS); } /** @@ -81,14 +83,15 @@ public class OcrSearchHistoryController { * @return */ @RequestMapping(value = "/historySearch", method = RequestMethod.GET) - public ResponseEntity historySearch(HttpServletRequest request) { + public ResultVo historySearch(HttpServletRequest request) { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("historyname","createdate").eq("userid",userToken.getUserid()).orderByDesc("createdate").last("limit 8"); List list = ocrSearchHistoryService.list(wrapper); - return new ResponseEntity>(list, HttpStatus.OK); +// return new ResponseEntity>(list, HttpStatus.OK); + return ResultVoUtil.success(list); } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrMsgMapper.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrMsgMapper.java index 5f4cce4b..a5e7da67 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrMsgMapper.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrMsgMapper.java @@ -20,4 +20,6 @@ import java.util.Map; @Mapper public interface OcrMsgMapper extends BaseMapper { List>> selectPage(@Param("userid")String userid,@Param("msgCategory")String msgCategory); + + Map selectone(@Param("id")String id); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/IOcrMsgService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/IOcrMsgService.java index b0904260..8cf853f8 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/IOcrMsgService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/IOcrMsgService.java @@ -5,6 +5,7 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg; import com.baomidou.mybatisplus.extension.service.IService; import com.github.pagehelper.PageInfo; import cn.jyjz.xiaoyao.ocr.util.PageRequest; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -28,4 +29,7 @@ public interface IOcrMsgService extends IService { * @return PageResult 自定义,统一分页查询结果 */ PageInfo>> selectPage(PageRequest pageRequest,String userid, String msgCategory); + + + Map selectone(String id); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrMsgServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrMsgServiceImpl.java index 626b7e5a..68eb1585 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrMsgServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrMsgServiceImpl.java @@ -38,4 +38,9 @@ public class OcrMsgServiceImpl extends ServiceImpl impleme return new PageInfo>>(selectPage); } + @Override + public Map selectone(String id) { + return ocrmsgmapper.selectone(id); + } + } diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml index d60b1f93..7af4e1ad 100644 --- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml +++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml @@ -98,4 +98,18 @@ + + 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 04/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E6=9F=A5=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 + + From 8412e854ceac185431f8ddd5f2fc9d9e0e6eb68a Mon Sep 17 00:00:00 2001 From: shuliYao <1397940314@qq.com> Date: Sat, 16 Mar 2024 21:03:25 +0800 Subject: [PATCH 05/15] =?UTF-8?q?feat:=E4=BB=BB=E5=8A=A1=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=8C=96=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/jyjz/flowable/entity/DeModel.java | 83 +++++++++---------- .../ocr/controller/ApiTestController.java | 5 +- .../cn/jyjz/xiaoyao/ocr/thread/TaskQueue.java | 45 ++++++++-- .../jyjz/xiaoyao/ocr/thread/TaskRunner.java | 3 +- .../xiaoyao/ocr/thread/TaskThreadPool.java | 39 +++++++-- .../entity/PictureImgToLocalEntity.java | 31 +++++++ ...nloadTask.java => PictureDisposeTask.java} | 6 +- .../thread/tasks/PictureImgToLocalTask.java | 40 +++++++++ .../xiaoyao/ocr/util/DataDictionaryUtil.java | 26 +++--- .../xiaoyao/ocr/util/DownloadImgUtil.java | 40 +++++++++ 10 files changed, 241 insertions(+), 77 deletions(-) create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/entity/PictureImgToLocalEntity.java rename jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/{PictureDownloadTask.java => PictureDisposeTask.java} (98%) create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/DeModel.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/DeModel.java index 4843caba..4669aed2 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/DeModel.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/entity/DeModel.java @@ -4,178 +4,177 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.sql.Blob; import java.sql.Date; -import java.time.LocalDateTime; @TableName("act_de_model") public class DeModel implements Serializable { - + private static final long serialVersionUID = 1L; - + private String id; - + private String name; - + private String modelKey; - + private String description; - + private String modelComment; - + private Date created; - + private String createdBy; - + /** * 表示该字段不存在于表结构中 */ @TableField(exist = false) private String createdByName; - + /** * 表单是否已经部署 */ @TableField(exist = false) private Boolean isDeploy; - + @TableField(exist = false) private String html; - + private Date lastUpdated; - + private String lastUpdatedBy; - + private Integer version; - + private String modelEditorJson; - + private Blob thumbnail; - + private Integer modelType; - + private String tenantId; - + public String getId() { return id; } - + public void setId(String id) { this.id = id; } public String getName() { return name; } - + public void setName(String name) { this.name = name; } public String getModelKey() { return modelKey; } - + public void setModelKey(String modelKey) { this.modelKey = modelKey; } public String getDescription() { return description; } - + public void setDescription(String description) { this.description = description; } public String getModelComment() { return modelComment; } - + public void setModelComment(String modelComment) { this.modelComment = modelComment; } public Date getCreated() { return created; } - + public String getCreatedByName() { return createdByName; } - + public void setCreatedByName(String createdByName) { this.createdByName = createdByName; } - + public void setCreated(Date created) { this.created = created; } public String getCreatedBy() { return createdBy; } - + public void setCreatedBy(String createdBy) { this.createdBy = createdBy; } public Date getLastUpdated() { return lastUpdated; } - + public void setLastUpdated(Date lastUpdated) { this.lastUpdated = lastUpdated; } public String getLastUpdatedBy() { return lastUpdatedBy; } - + public void setLastUpdatedBy(String lastUpdatedBy) { this.lastUpdatedBy = lastUpdatedBy; } public Integer getVersion() { return version; } - + public void setVersion(Integer version) { this.version = version; } public String getModelEditorJson() { return modelEditorJson; } - + public void setModelEditorJson(String modelEditorJson) { this.modelEditorJson = modelEditorJson; } public Blob getThumbnail() { return thumbnail; } - + public void setThumbnail(Blob thumbnail) { this.thumbnail = thumbnail; } public Integer getModelType() { return modelType; } - + public void setModelType(Integer modelType) { this.modelType = modelType; } public String getTenantId() { return tenantId; } - + public void setTenantId(String tenantId) { this.tenantId = tenantId; } - + public Boolean getIsDeploy() { return isDeploy; } - + public void setIsDeploy(Boolean isDeploy) { this.isDeploy = isDeploy; } - + public String getHtml() { return html; } - + public void setHtml(String html) { this.html = html; } - + @Override public String toString() { return "DeModel{" + @@ -195,4 +194,4 @@ public class DeModel implements Serializable { ", tenantId=" + tenantId + "}"; } -} \ No newline at end of file +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/ApiTestController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/ApiTestController.java index e7b07da0..37f577f0 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/ApiTestController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/ApiTestController.java @@ -7,13 +7,10 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; -import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - import javax.servlet.http.HttpServletRequest; import java.time.Instant; import java.util.Date; @@ -64,7 +61,7 @@ public class ApiTestController { } size++; //将可以处理数据放入处理队列中 - TaskQueue.pictureDownloadPushData(pictureSourceResult); + TaskQueue.pictureDisposePushData(pictureSourceResult); } return "当前区间内图片总数:"+count+"条,本次获取:"+localCount+"条,可处理数据:"+size+"条"; } catch (Exception e) { 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 5200394d..890837ee 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 @@ -1,6 +1,7 @@ package cn.jyjz.xiaoyao.ocr.thread; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; +import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,20 +17,25 @@ import java.util.concurrent.LinkedBlockingQueue; public class TaskQueue { private static Logger logger = LoggerFactory.getLogger(TaskQueue.class); + /** + * 无量云接口数据处理 任务队列 + */ + public static LinkedBlockingQueue pictureDisposeQueue = new LinkedBlockingQueue(); /** - * 图片下载任务队列 + * picture图片转储到本地 任务队列 */ - public static LinkedBlockingQueue pictureDownloadQueue = new LinkedBlockingQueue(); + public static LinkedBlockingQueue pictureImgToLocalQueue = new LinkedBlockingQueue(); + /** - * 图片下载队列 push 队列值 + * 无量云接口数据处理 push 队列值 * @return * @param pictureSourceResult //三方拉取 获取到的图片对象 */ - public static boolean pictureDownloadPushData(PictureSourceResult pictureSourceResult){ + public static boolean pictureDisposePushData(PictureSourceResult pictureSourceResult){ try { - pictureDownloadQueue.put(pictureSourceResult); + pictureDisposeQueue.put(pictureSourceResult); } catch (InterruptedException e) { logger.error("任务队列添加异常:{}",e.getMessage()); return false; @@ -38,11 +44,34 @@ public class TaskQueue { } /** - * 图片下载队列 拉取队列值 + * 无量云接口数据处理 拉取队列值 + * @return + */ + public static PictureSourceResult pictureDisposePullData(){ + return (PictureSourceResult) pictureDisposeQueue.poll(); + } + + + /** + * 图片缓存本地队列 push 队列值 * @return + * @param pictureImgToLocalEntity //图片下载对象 */ - public static PictureSourceResult pictureDownloadPullData(){ - return (PictureSourceResult) pictureDownloadQueue.poll(); + public static boolean pictureImgToLocalPushData(PictureImgToLocalEntity pictureImgToLocalEntity){ + try { + pictureImgToLocalQueue.put(pictureImgToLocalEntity); + } catch (InterruptedException e) { + logger.error("图片下载任务队列添加异常:{}",e.getMessage()); + return false; + } + return true; } + /** + * 无量云接口数据处理 拉取队列值 + * @return + */ + public static PictureImgToLocalEntity pictureImgToLocalPullData(){ + return (PictureImgToLocalEntity) pictureDisposeQueue.poll(); + } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskRunner.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskRunner.java index d7a602cd..039b463b 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskRunner.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskRunner.java @@ -15,6 +15,7 @@ public class TaskRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { TaskThreadPool taskThreadPool = new TaskThreadPool(); - taskThreadPool.startControllerPull(); + taskThreadPool.startPictureDisposePull(); + taskThreadPool.startPictureImgToLocalPull(); } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskThreadPool.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskThreadPool.java index 5fa6dcd5..49a135b5 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskThreadPool.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/TaskThreadPool.java @@ -1,6 +1,8 @@ package cn.jyjz.xiaoyao.ocr.thread; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; -import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDownloadTask; +import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; +import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDisposeTask; +import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureImgToLocalTask; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +25,7 @@ public class TaskThreadPool { if(threadPool ==null){ threadPool = new ThreadPoolExecutor( 10, - 20, + 40, 3, TimeUnit.SECONDS, new LinkedBlockingDeque<>(), @@ -36,16 +38,41 @@ public class TaskThreadPool { * 启动任务 入库消费者 * @return */ - public boolean startControllerPull(){ + public boolean startPictureDisposePull(){ Runnable runnable = new Runnable() { @SneakyThrows @Override public void run() { - logger.info("图片下载任务线程检查中..."); + logger.debug("无量云接口数据处理消费线程检测中..."); while (true){ - PictureSourceResult pictureSourceResult = TaskQueue.pictureDownloadPullData(); + PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData(); if(pictureSourceResult!=null){ - threadPool.execute(new PictureDownloadTask(pictureSourceResult)); + threadPool.execute(new PictureDisposeTask(pictureSourceResult)); + }else{ + Thread.sleep(5000); + } + } + } + }; + Thread thread=new Thread(runnable); + thread.start(); + return true; + } + + /** + * 启动任务 入库消费者 + * @return + */ + public boolean startPictureImgToLocalPull(){ + Runnable runnable = new Runnable() { + @SneakyThrows + @Override + public void run() { + logger.debug("图片下载消费线程检测中..."); + while (true){ + PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData(); + if(pictureImgToLocalEntity!=null){ + threadPool.execute(new PictureImgToLocalTask(pictureImgToLocalEntity)); }else{ Thread.sleep(5000); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/entity/PictureImgToLocalEntity.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/entity/PictureImgToLocalEntity.java new file mode 100644 index 00000000..af33dc27 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/entity/PictureImgToLocalEntity.java @@ -0,0 +1,31 @@ +package cn.jyjz.xiaoyao.ocr.thread.entity; + +import lombok.Data; + +/** + * 图片转储本地处理对象 + * + * @author hugh(shuli.yao) 1397940314@qq.com + * @version 1.0 + * @date 2024/3/16 17:11 + */ +@Data +public class PictureImgToLocalEntity { + + /** + * 图片表id + */ + private Long pictureId; + + /** + * 图片地址 + */ + private String ImgUrl; + + + /** + * 本地存储地址 + */ + private String localPath; + +} 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/PictureDisposeTask.java similarity index 98% rename from jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDownloadTask.java rename to jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureDisposeTask.java index 8600d056..860b4d02 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/PictureDisposeTask.java @@ -13,18 +13,18 @@ import java.util.List; import java.util.Map; /** - * 图片下载任务 + * 无量云接口 数据处理队列 * * @author hugh(shuli.yao) 1397940314@qq.com * @version 1.0 * @date 2024/3/14 11:15 */ -public class PictureDownloadTask implements Runnable{ +public class PictureDisposeTask implements Runnable{ protected Logger logger = LoggerFactory.getLogger(getClass()); private PictureSourceResult pictureSourceResult; - public PictureDownloadTask(PictureSourceResult pictureSourceResult){ + public PictureDisposeTask(PictureSourceResult pictureSourceResult){ this.pictureSourceResult = pictureSourceResult; } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java new file mode 100644 index 00000000..8e457889 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java @@ -0,0 +1,40 @@ +package cn.jyjz.xiaoyao.ocr.thread.tasks; + +import cn.jyjz.xiaoyao.common.base.util.SpringUtils; +import cn.jyjz.xiaoyao.common.base.util.StringUtils; +import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; +import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; +import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; +import cn.jyjz.xiaoyao.ocr.util.DownloadImgUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 无量云接口 数据处理队列 + * + * @author hugh(shuli.yao) 1397940314@qq.com + * @version 1.0 + * @date 2024/3/14 11:15 + */ +public class PictureImgToLocalTask implements Runnable{ + protected Logger logger = LoggerFactory.getLogger(getClass()); + + private PictureImgToLocalEntity pictureImgToLocal; + + public PictureImgToLocalTask(PictureImgToLocalEntity pictureImgToLocal){ + this.pictureImgToLocal = pictureImgToLocal; + } + + @Override + public void run() { + //1.开始转储图片 + DownloadImgUtil.downloadImage(pictureImgToLocal.getImgUrl(), pictureImgToLocal.getLocalPath()); + } + + +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DataDictionaryUtil.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DataDictionaryUtil.java index 914818d7..bf62d413 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DataDictionaryUtil.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DataDictionaryUtil.java @@ -49,7 +49,7 @@ public class DataDictionaryUtil { for (OcrPicture picture : ocrPictureList) { //1.检查提报人字典是否包含数据 if(picture.getUpname()!=null && picture.getUpuserid()!=null){ - OcrDictionaryGroup upNameDG = ocrDictionaryService.queryGroupByField("upName"); + OcrDictionaryGroup upNameDG = ocrDictionaryService.queryGroupByField("person"); if(upNameDG!=null && ocrDictionaryService.isValueExists(upNameDG.getId(),picture.getUpname(),picture.getTenantId())){ OcrDictionary dictionary= new OcrDictionary(); dictionary.setLable(picture.getUpname()); @@ -68,7 +68,7 @@ public class DataDictionaryUtil { //2.任务计划 if(picture.getPlanname()!=null && picture.getPlanid()!=null) { - OcrDictionaryGroup planNameDG = ocrDictionaryService.queryGroupByField("planName"); + OcrDictionaryGroup planNameDG = ocrDictionaryService.queryGroupByField("plan"); if (planNameDG!=null && ocrDictionaryService.isValueExists(planNameDG.getId(), picture.getPlanname(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getPlanname()); @@ -84,7 +84,7 @@ public class DataDictionaryUtil { } //3.拜访客户类型 if(picture.getField2()!=null) { - OcrDictionaryGroup field2DG = ocrDictionaryService.queryGroupByField("field2"); + OcrDictionaryGroup field2DG = ocrDictionaryService.queryGroupByField("izcustomtype"); if (field2DG!=null && ocrDictionaryService.isValueExists(field2DG.getId(), picture.getField2(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField2()); @@ -101,7 +101,7 @@ public class DataDictionaryUtil { //4.拜访客户名称 if(picture.getField3()!=null) { - OcrDictionaryGroup field3DG = ocrDictionaryService.queryGroupByField("field3"); + OcrDictionaryGroup field3DG = ocrDictionaryService.queryGroupByField("izcustomname"); if (field3DG!=null && ocrDictionaryService.isValueExists(field3DG.getId(), picture.getField3(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField3()); @@ -118,7 +118,7 @@ public class DataDictionaryUtil { //5.任务来源 if(picture.getField4()!=null) { - OcrDictionaryGroup field4DG = ocrDictionaryService.queryGroupByField("field4"); + OcrDictionaryGroup field4DG = ocrDictionaryService.queryGroupByField("iztaskrrom"); if (field4DG!=null && ocrDictionaryService.isValueExists(field4DG.getId(), picture.getField4(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField4()); @@ -134,7 +134,7 @@ public class DataDictionaryUtil { } //6.厂商 if(picture.getField5()!=null) { - OcrDictionaryGroup field5DG = ocrDictionaryService.queryGroupByField("field5"); + OcrDictionaryGroup field5DG = ocrDictionaryService.queryGroupByField("izfirm"); if (field5DG!=null && ocrDictionaryService.isValueExists(field5DG.getId(), picture.getField5(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField5()); @@ -150,7 +150,7 @@ public class DataDictionaryUtil { } //7.拜访客户级别 if(picture.getField6()!=null) { - OcrDictionaryGroup field6DG = ocrDictionaryService.queryGroupByField("field6"); + OcrDictionaryGroup field6DG = ocrDictionaryService.queryGroupByField("izcustomlevel"); if (field6DG!=null && ocrDictionaryService.isValueExists(field6DG.getId(), picture.getField6(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField6()); @@ -166,7 +166,7 @@ public class DataDictionaryUtil { } //8.拜访项目类别 if(picture.getField17()!=null) { - OcrDictionaryGroup field17DG = ocrDictionaryService.queryGroupByField("field17"); + OcrDictionaryGroup field17DG = ocrDictionaryService.queryGroupByField("izprojecttype"); if (field17DG!=null && ocrDictionaryService.isValueExists(field17DG.getId(), picture.getField17(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField17()); @@ -183,7 +183,7 @@ public class DataDictionaryUtil { //9.任务状态 if(picture.getTaskstatus()!=null) { - OcrDictionaryGroup taskStatusDG = ocrDictionaryService.queryGroupByField("taskStatus"); + OcrDictionaryGroup taskStatusDG = ocrDictionaryService.queryGroupByField("iztaskstatus"); if (taskStatusDG!=null && ocrDictionaryService.isValueExists(taskStatusDG.getId(), picture.getTaskstatus(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getTaskstatus()); @@ -200,7 +200,7 @@ public class DataDictionaryUtil { //10.产品名称 if(picture.getField9()!=null) { - OcrDictionaryGroup field9DG = ocrDictionaryService.queryGroupByField("field9"); + OcrDictionaryGroup field9DG = ocrDictionaryService.queryGroupByField("izproductname"); if (field9DG!=null && ocrDictionaryService.isValueExists(field9DG.getId(), picture.getField9(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getField9()); @@ -217,7 +217,7 @@ public class DataDictionaryUtil { //11.地区(城市信息) if(picture.getReleasearea()!=null) { - OcrDictionaryGroup releaseAreaDG = ocrDictionaryService.queryGroupByField("releaseArea"); + OcrDictionaryGroup releaseAreaDG = ocrDictionaryService.queryGroupByField("izvisitcity"); if (releaseAreaDG!=null && ocrDictionaryService.isValueExists(releaseAreaDG.getId(), picture.getReleasearea(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getReleasearea()); @@ -234,7 +234,7 @@ public class DataDictionaryUtil { //12.地区(省信息) if(picture.getReleaseprovince()!=null) { - OcrDictionaryGroup releaseProvinceDG = ocrDictionaryService.queryGroupByField("releaseProvince"); + OcrDictionaryGroup releaseProvinceDG = ocrDictionaryService.queryGroupByField("izvisitpro"); if (releaseProvinceDG!=null && ocrDictionaryService.isValueExists(releaseProvinceDG.getId(), picture.getReleaseprovince(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getReleaseprovince()); @@ -251,7 +251,7 @@ public class DataDictionaryUtil { //13.项目信息 if(picture.getProjectidname()!=null) { - OcrDictionaryGroup projectNameDG = ocrDictionaryService.queryGroupByField("projectName"); + OcrDictionaryGroup projectNameDG = ocrDictionaryService.queryGroupByField("project"); if (projectNameDG!=null && ocrDictionaryService.isValueExists(projectNameDG.getId(), picture.getProjectidname(), picture.getTenantId())) { OcrDictionary dictionary = new OcrDictionary(); dictionary.setLable(picture.getProjectidname()); diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java new file mode 100644 index 00000000..f0e1b853 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java @@ -0,0 +1,40 @@ +package cn.jyjz.xiaoyao.ocr.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.URL; + +/** + * 转储图片工具类 + * + * @author hugh(shuli.yao) 1397940314@qq.com + * @version 1.0 + * @date 2024/3/16 18:37 + */ +public class DownloadImgUtil { + private static Logger logger = LoggerFactory.getLogger(DownloadImgUtil.class); + + /** + * 下载网络图片缓存到本地服务器 + * @param imageUrl + * @param destinationFile + */ + public static void downloadImage(String imageUrl, String destinationFile) { + try (InputStream in = new URL(imageUrl).openStream(); + FileOutputStream out = new FileOutputStream(destinationFile)) { + + byte[] buffer = new byte[4096]; + int n; + while ((n = in.read(buffer)) != -1) { + out.write(buffer, 0, n); + } + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + + +} From 6fdc34e62abea9562bc20e7c5deceb564432da57 Mon Sep 17 00:00:00 2001 From: lijingtao <18301674552@163.COM> Date: Sat, 16 Mar 2024 21:23:36 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=8C=85-=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E8=AE=BE=E7=BD=AE=E7=9C=9F=E5=81=87=E5=92=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8C=85-=E4=BB=BB=E5=8A=A1=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=E5=8E=BB=E6=8E=89=E9=99=90=E5=88=B6=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E7=94=A8=E6=88=B7=E5=8F=AF=E4=BB=A5=E9=9A=8F?= =?UTF-8?q?=E4=BE=BF=E8=BF=9B=E8=A1=8C=E7=9C=9F=E5=81=87=E6=A0=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OcrTaskchildPictureServiceImpl.java | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) 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 66996871..7939db91 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 @@ -62,20 +62,20 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl 0) { - historyPname.append("," + old.getOcrPicture().getImgname()); - } else { - historyPname.append(old.getOcrPicture().getImgname()); - } - } - if (old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { - if (taskType.length() > 0) { - taskType.append("," + old.getOcrPicture().getImgname()); - } else { - taskType.append(old.getOcrPicture().getImgname()); - } - } +// if (old.isIzHistory()) { +// if (historyPname.length() > 0) { +// historyPname.append("," + old.getOcrPicture().getImgname()); +// } else { +// historyPname.append(old.getOcrPicture().getImgname()); +// } +// } +// if (old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { +// if (taskType.length() > 0) { +// taskType.append("," + old.getOcrPicture().getImgname()); +// } else { +// taskType.append(old.getOcrPicture().getImgname()); +// } +// } OcrPicture ocrPicture = old.getOcrPicture(); ocrPicture.setJudgeid(Long.parseLong(judgeid)); @@ -86,11 +86,11 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl 0) { - historyPname.append("," + old.getOcrPicture().getImgname()); - } else { - historyPname.append(old.getOcrPicture().getImgname()); - } - } - if (old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { - if (taskType.length() > 0) { - taskType.append("," + old.getOcrPicture().getImgname()); - } else { - taskType.append(old.getOcrPicture().getImgname()); - } - } +// if (old.isIzHistory()) { +// if (historyPname.length() > 0) { +// historyPname.append("," + old.getOcrPicture().getImgname()); +// } else { +// historyPname.append(old.getOcrPicture().getImgname()); +// } +// } +// if (old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { +// if (taskType.length() > 0) { +// taskType.append("," + old.getOcrPicture().getImgname()); +// } else { +// taskType.append(old.getOcrPicture().getImgname()); +// } +// } OcrPicture ocrPicture = old.getOcrPicture(); ocrPicture.setJudgeid(null); @@ -131,11 +131,11 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl Date: Sat, 16 Mar 2024 22:09:11 +0800 Subject: [PATCH 07/15] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3dev=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BC=93=E5=AD=98=E7=B1=BB=E5=9E=8B=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E4=B8=8D=E5=AF=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runstart/src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runstart/src/main/resources/application-dev.yml b/runstart/src/main/resources/application-dev.yml index 7e359541..3da85b0f 100644 --- a/runstart/src/main/resources/application-dev.yml +++ b/runstart/src/main/resources/application-dev.yml @@ -96,7 +96,7 @@ spring: cache: ehcache: config: classpath:/myehcache.xml - type: ehcache + type: ehcache # type: redis # redis: # #Redis服务器地址 From a55dd57fbacdffb1c86f4a76fbe62fee0c10a8a4 Mon Sep 17 00:00:00 2001 From: lijingtao <18301674552@163.COM> Date: Sat, 16 Mar 2024 22:23:12 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=9B=E5=BB=BA=E4=BA=BA=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/oa/OcrMsgMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml index 7af4e1ad..5f8118b0 100644 --- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml +++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml @@ -34,7 +34,7 @@ SELECT m.id as id, m.titile as titile, - "系统管理员" AS userNcame, + "系统管理员" AS userName, m.bus_json AS busJson, r.read_flag as readFlag, m.send_time AS sendTime From 36711c396525dd2fefbb937446803e0888cf3775 Mon Sep 17 00:00:00 2001 From: lijingtao <18301674552@163.COM> Date: Sat, 16 Mar 2024 23:19:17 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8sql?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=B8=85=E9=99=A4=E6=9C=AA=E8=AF=BB?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ocr/controller/OcrMsgReadController.java | 3 +- .../main/resources/mapper/oa/OcrMsgMapper.xml | 41 +++---------------- 2 files changed, 7 insertions(+), 37 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java index 85999a0e..5f30ad2d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrMsgReadController.java @@ -110,7 +110,7 @@ public class OcrMsgReadController { UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); QueryWrapper wrapperlist = new QueryWrapper<>(); - wrapperlist.select("id").eq("msg_category",msgCategory).eq("send_status","1").apply("FIND_IN_SET('"+userToken.getUserid()+"',receive_user_ids)"); + wrapperlist.select("id").eq("msg_category",msgCategory).eq("send_status","1").apply(" FIND_IN_SET('"+userToken.getUserid()+"',receive_user_ids)"); QueryWrapper wrapperone = new QueryWrapper<>(); @@ -128,7 +128,6 @@ public class OcrMsgReadController { ocrmsgread.setReadFlag(1); ocrmsgread.setReadTime(System.currentTimeMillis()); ocrMsgReadService.save(ocrmsgread); - return ResultVoUtil.success(ResultVo.SUCCESS); } } //此处需要手工处理 返回需要将修改后的数据返回 diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml index 5f8118b0..a22365a1 100644 --- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml +++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrMsgMapper.xml @@ -42,23 +42,9 @@ ocr_msg m LEFT JOIN ocr_msg_read r ON m.id = r.msg_id WHERE m.msg_category = '2' - AND m.receive_user_type = '1' - AND FIND_IN_SET( ""#{userid}"", m.receive_user_ids ) - - UNION ALL - - SELECT - m.id as id, - m.titile as titile, - "系统管理员" AS userNcame, - m.bus_json AS busJson, - r.read_flag as readFlag, - m.send_time AS sendTime - FROM - ocr_msg m LEFT JOIN ocr_msg_read r ON m.id = r.msg_id - WHERE - m.msg_category = '2' - AND m.receive_user_type = '2' + AND m.receive_user_type IN(1,2) + AND m.send_status = '1' + AND FIND_IN_SET( '${userid}', m.receive_user_ids ) @@ -75,24 +61,9 @@ WHERE m.msg_category = '1' AND - m.receive_user_type = '1' - AND FIND_IN_SET( ""#{userid}"", m.receive_user_ids ) - - UNION ALL - SELECT - m.id as id, - m.titile as titile, - u.USERNAME as userName, - m.bus_json as busJson, - r.read_flag as readFlag, - m.send_time as sendTime - FROM - ocr_msg m LEFT JOIN s_user_t u ON m.sender=u.ID - LEFT JOIN ocr_msg_read r ON m.id = r.msg_id - WHERE - m.msg_category = '1' - AND - m.receive_user_type = '2' + m.receive_user_type IN(1,2) + AND m.send_status = '1' + AND FIND_IN_SET( '${userid}', m.receive_user_ids ) From bd13df89b7b2d40c90312b8ccb0c7e0d4c6bc842 Mon Sep 17 00:00:00 2001 From: admin <149470858@qq.com> Date: Sat, 16 Mar 2024 23:26:47 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=91=E7=9A=84?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E7=9A=84=E5=BE=85=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E3=80=81=E5=AE=A1=E6=89=B9=E8=BF=87=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlowTaskController.java | 47 ++++- .../flowable/service/IFlowTaskService.java | 10 + .../service/impl/FlowTaskServiceImpl.java | 129 +++++++++++++ .../OcrTaskchildPictureMybatisDao.java | 14 ++ .../dataobject/OcrTaskchildPictureAppro.java | 172 ++++++++++++++++++ .../service/OcrTaskchildPictureService.java | 10 + .../impl/OcrTaskchildPictureServiceImpl.java | 14 ++ .../mapper/oa/OcrTaskchildPictureMapper.xml | 38 ++++ 8 files changed, 433 insertions(+), 1 deletion(-) create mode 100644 jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrTaskchildPictureAppro.java 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 29890f47..c9ef6391 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 @@ -286,7 +286,52 @@ public class FlowTaskController extends BaseController { } return ResultVoUtil.success(pageUtils); } - + /** + * 我的任务 + * 查询我的待办、已经办理任务 + * @return + */ + @ApiOperation(value="我的任务", notes="查询我的待办、已经办理任务") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), + }) + @GetMapping("/listalldata") + @ResponseBody + public ResultVo listAlldata(PageUtils pageUtils, HttpServletRequest request){ + SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request,"search_"); + + //租户主键,由前端页面传送 + String tenantId = request.getHeader("X-Tenant-Id"); + + if(org.apache.commons.lang3.StringUtils.isBlank(tenantId)){ + return ResultVoUtil.error("租户主键不能为空"); + } + + User user = this.userService.getSessionUser(request); + if(user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))){ + + flowTaskService.getMyProcessInstances(searchQuery.getQuery(),pageUtils); + }else{ + + flowTaskService.getMyProcessInstances(user,tenantId,searchQuery.getQuery(),pageUtils); + + //待办信息,增加是否查看标记 +// if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ +// +// List list = pageUtils.getList(); +// if(null != list && !list.isEmpty()){ +// int count = list.size(); +// for(int i = 0;i < count;i++){ +// FlowUnionVo flowUnionVo = (FlowUnionVo) list.get(i); +// //flowUnionVo.setView(userViewApproeService.haveByFromid(flowUnionVo.getFormid().toString())); +// } +// } +// +// } + + } + return ResultVoUtil.success(pageUtils); + } /** * 终审列表 * @return 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..99c0e719 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 @@ -6,6 +6,7 @@ import cn.jyjz.flowable.domain.vo.FlowTaskCompleteVO; import cn.jyjz.flowable.domain.vo.FlowTaskVO; import cn.jyjz.flowable.domain.vo.WorkFlowNodeVO; import cn.jyjz.flowable.utils.PageUtils; +import cn.jyjz.xiaoyao.admin.dataobject.User; import cn.jyjz.xiaoyao.common.base.param.ParamterPage; import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.UserToken; @@ -58,6 +59,15 @@ public interface IFlowTaskService { */ public void getMyProcessInstances( Map query, PageUtils pageUtils); + /** + * 查询我的待办、已经办理任务 + * + * @param user + * @param tenantId + * @param pageUtils + */ + public void getMyProcessInstances(User user,String tenantId, Map query,PageUtils pageUtils); + /** * 查询最终审批数据 * 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..d7e04846 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 @@ -32,6 +32,7 @@ import cn.jyjz.xiaoyao.oa.from.service.*; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -1177,6 +1178,134 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } + /** + * 查询我的待办、已经办理任务 + * + * @param user + * @param tenantId + * @param pageUtils + */ + public void getMyProcessInstances(User user,String tenantId,Map searchQuery, PageUtils pageUtils){ + ParamterPage paramterPage = new ParamterPage(); + paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); + paramterPage.setPagesize(pageUtils.getPageSize()); + + if(StringUtils.isNotBlank(pageUtils.getSortname())){ + paramterPage.setSortname(pageUtils.getSortname()); + }else{ + paramterPage.setSortname("CREATEDATE"); + } + + if(StringUtils.isNotBlank(pageUtils.getSortorder())){ + paramterPage.setSortorder(pageUtils.getSortorder()); + }else{ + paramterPage.setSortorder("DESC"); + } + Map query = new HashMap<>(); + query.put("page",paramterPage); + + query.put("thisLoginUserid",user.getId().toString()); + query.put("searchtenantid",tenantId); + //我的待办数据 + query.put("searchassignee",user.getLoginname()); + query.putAll(searchQuery); + + Long count = ocrTaskchildPictureService.listmytaskCount(query); + + query.put("page",paramterPage); + List list = ocrTaskchildPictureService.listmytask(query); + + for(OcrTaskchildPictureAppro taskchildPicture:list){ + //查询对应的流程分类 + Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid()); + taskchildPicture.setCategoryDto(category); + + if(StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())){ + + List taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(),taskchildPicture.getProcessdefinitionid()); + if(null != taskList && !taskList.isEmpty()){ + taskchildPicture.setTaskId(taskList.get(0).getId()); + + Task tasknow =taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult(); + BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId()); + // 获取节点定义id + String taskDefinitionKey = tasknow.getTaskDefinitionKey(); + // 根据节点定义id获取节点元素 + FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey); + if (flowElement instanceof UserTask) { + UserTask userTask = (UserTask) flowElement; + + taskchildPicture.setDocumentation(userTask.getDocumentation()); + } + } + + //查询历史 + List historicTaskInstanceDtos = new ArrayList<>(); + // 查询当前任务的流转信息 + List taskHiInstances = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(taskchildPicture.getProcessinstanceid()) + .includeProcessVariables() + .orderByHistoricTaskInstanceStartTime() + .asc() + .list(); + for (HistoricTaskInstance taskHiInstance : taskHiInstances) { + HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto(); + dto.setTaskId(taskHiInstance.getId()); + dto.setTaskName(taskHiInstance.getName()); + dto.setFinishTime(taskHiInstance.getEndTime()); + if(taskHiInstance.getDurationInMillis() != null){ + dto.setDuration(taskHiInstance.getDurationInMillis()/1000 + "秒"); + } + dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey()); + + //Map variables = taskHiInstance.getTaskLocalVariables(); + + Map variables = taskHiInstance.getProcessVariables(); + + if(null != variables && null != variables.get("approvd")){ + dto.setState(variables.get("approvd").toString()); + } + + if(StringUtils.isNotBlank(taskHiInstance.getAssignee())){ + if(SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())){ + dto.setAssigneeName(taskHiInstance.getAssignee()); + }else{ + User user1 = userService.findByLoginname(taskHiInstance.getAssignee()); + + dto.setAssigneeName(user1.getUsername()); + } + + } + + BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid()); + +// // 根据节点定义id获取节点元素 + FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey()); + if (flowElement instanceof UserTask) { + UserTask userTask = (UserTask) flowElement; + + taskchildPicture.setDocumentation(userTask.getDocumentation()); + } + // 还需要根据 HistoricTaskInstance 找到对应的 审批意见 + List processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid()); + for (Comment comment : processInstanceComments) { + + if(comment.getTaskId().equals(taskHiInstance.getId())){ + // 审批意见 + String fullMessage = comment.getFullMessage(); + dto.setComment(fullMessage); + } + } + historicTaskInstanceDtos.add(dto); + } + taskchildPicture.setTransferRecords(historicTaskInstanceDtos); + } + } + + pageUtils.setTotalCount(count.intValue()); + pageUtils.setList(list); + } + /** * 查询我发起的流程实例 * diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrTaskchildPictureMybatisDao.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrTaskchildPictureMybatisDao.java index bc2a47c2..5b68cd5d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrTaskchildPictureMybatisDao.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataDao/OcrTaskchildPictureMybatisDao.java @@ -2,6 +2,7 @@ package cn.jyjz.xiaoyao.ocr.dataDao; import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -27,4 +28,17 @@ public interface OcrTaskchildPictureMybatisDao extends BaseMapper query); + + /** + * 查询我的待办、已经办理任务 + * @param query + * @return + */ + public List listmytask(Map query); + /** + * 查询我的待办、已经办理任务数量 + * @param query + * @return + */ + Long listmytaskCount(Map query); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrTaskchildPictureAppro.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrTaskchildPictureAppro.java new file mode 100644 index 00000000..4704c821 --- /dev/null +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrTaskchildPictureAppro.java @@ -0,0 +1,172 @@ +package cn.jyjz.xiaoyao.ocr.dataobject; + +import cn.jyjz.flowable.domain.dto.HistoricTaskInstanceDto; +import cn.jyjz.flowable.domain.vo.FlowModelVO; +import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery; +import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto; +import cn.jyjz.xiaoyao.oa.from.dataobject.Category; +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 com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.AbstractMap.SimpleEntry; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value="任务信息", description="任务信息") +public class OcrTaskchildPictureAppro implements java.io.Serializable { + + private static final long serialVersionUID = -8018660053527763810L; + @ApiModelProperty(value = "主键") + private Long id; + @ApiModelProperty(value = "比对图片主键,多个数据使用英文逗号分隔") + private String ocpictureid; + + @ApiModelProperty(value = "图片比对结果,与图片主键一一对应,记录比对结果,使用英文逗号分隔,例如99.6,98.1,97.2") + private String pictureresult; + + @ApiModelProperty(value = "只记录主图,如果存在历史图片,不在这里记录") + private String picturecompare; + + @ApiModelProperty(value = "所属部门") + private String deptid; + + @ApiModelProperty(value = "租户ID") + private Long tenantid; + + @ApiModelProperty(value = "任务包主键") + private Long packageid; + + @ApiModelProperty(value = "原图片主键") + private Long pictureid; + + @ApiModelProperty(value = "类型名称") + private String category; + + @ApiModelProperty(value = "项目ID") + private Long categoryid; + + @ApiModelProperty(value = "明细单") + private String specification; + + @ApiModelProperty(value = "业务编码") + private String buessinessno; + + @ApiModelProperty(value = "状态,审批状态 1:未提交 2:审批中 3:审批通过 ,5:拒绝") + private Integer states; + + @ApiModelProperty(value = "流程实例IdprocessInstanceId") + private String processinstanceid; + + @ApiModelProperty(value = "流程定义id") + private String processdefinitionid; + + @ApiModelProperty(value = "流程部署id") + private String deploymentid; + + @ApiModelProperty(value = "审批人姓名") + private String assigneename; + + @ApiModelProperty(value = "审批人") + private String assignee; + + @ApiModelProperty(value = "修改人,记录创建人的帐号") + private String updateuser; + + @ApiModelProperty(value = "更新时间") + private Long updatetime; + + @ApiModelProperty(value = "附件") + private String fileannex; + + @ApiModelProperty(value = "是否归档,0:未归档,1:归档") + private Integer guidang; + + @ApiModelProperty(value = "创建人") + private String createuser; + + @ApiModelProperty(value = "创建人姓名") + private String createusername; + + @ApiModelProperty(value = "创建时间") + private Long createdate; + + @ApiModelProperty(value = "员工主键") + private Long userid; + + @ApiModelProperty(value = "员工姓名") + private String username; + + @ApiModelProperty(value = "任务id,来源于图片表") + private String fromtaskid; + + @ApiModelProperty(value = "任务名称,来源于图片表") + private String fromtaskname; + + @ApiModelProperty(value = "提报人") + private String fromuserid; + + @ApiModelProperty(value = "所属项目") + private String fromprojectid; + + @ApiModelProperty(value = "所属计划") + private String fromplanid; + + @ApiModelProperty(value = "提报时间") + private Long fromuptime; + + @ApiModelProperty(value = "任务来源") + private String fromsourceid; + + @ApiModelProperty(value = "是否为相似图片,与其他图片对比为百分百的,记录为1,0:不相似,1:相似") + private Integer havepoints; + + @ApiModelProperty(value = "当前节点名称") + private String taskname; + + @ApiModelProperty(value = "历史-审批节点名称") + private String tasknamehis; + + @ApiModelProperty(value = "历史-审批状态,记录当前节点审批状态,1:.待审批 (只针对前端返回 库中逻辑上不存在) 2.通过 3.不通过") + private Integer statshis; + + @ApiModelProperty(value = "历史-审批意见") + private String commenthis; + + @ApiModelProperty(value = "历史-节点位置,待定字段,") + private Integer taskindex; + + @ApiModelProperty(value = "历史-节点编号") + private String taskno; + + @ApiModelProperty(value = "项目对象") + private Category categoryDto; + + @ApiModelProperty(value = "节点主键") + private String taskId; + + @ApiModelProperty(value = "节点描述") + private String documentation; + + @ApiModelProperty(value = "审批记录") + private List transferRecords; + +} diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java index 4c21546c..2bcef28c 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java @@ -9,6 +9,7 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.web.bind.annotation.RequestParam; @@ -114,4 +115,13 @@ public interface OcrTaskchildPictureService extends BaseService query); + + /** + * 查询所有业务表集合 + * @param query + * @return + */ + public List listmytask(Map query); + + public Long listmytaskCount(Map query); } 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 8d3158f2..0355ad02 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 @@ -10,6 +10,7 @@ import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -489,4 +490,17 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl query){ return this.ocrtaskchildpicturemybatisdao.listFinalCount(query); } + + /** + * 查询所有业务表集合 + * @param query + * @return + */ + public List listmytask(Map query){ + return this.ocrtaskchildpicturemybatisdao.listmytask(query); + } + + public Long listmytaskCount(Map query){ + return this.ocrtaskchildpicturemybatisdao.listmytaskCount(query); + } } diff --git a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml index 484d84f1..9460d317 100644 --- a/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml +++ b/jyjz-system/jyjz-system-oa/src/main/resources/mapper/oa/OcrTaskchildPictureMapper.xml @@ -205,4 +205,42 @@ select tcp.* from ( ) as tcp + + + From a7c05737e54bee231041ef22986b99352f1a9d3e Mon Sep 17 00:00:00 2001 From: admin <149470858@qq.com> Date: Sat, 16 Mar 2024 23:36:32 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=91=E7=9A=84?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E7=9A=84=E5=BE=85=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E3=80=81=E5=AE=A1=E6=89=B9=E8=BF=87=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/OcrTaskchildPictureService.java | 1 + .../impl/OcrTaskchildPictureServiceImpl.java | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java index c447a840..a62beae3 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java @@ -126,4 +126,5 @@ public interface OcrTaskchildPictureService extends BaseService listmytask(Map query); public Long listmytaskCount(Map query); + } 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 ca9e3794..7fb8e526 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 @@ -10,8 +10,10 @@ import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; +import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro; import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -25,6 +27,7 @@ import lombok.extern.slf4j.Slf4j; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * 业务层实现 @@ -212,7 +215,25 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl list = this.ocrtaskchildpicturemybatisdao.selectList(queryWrapper); + List pictures = ocrPictureService.list(new LambdaQueryWrapper().eq(OcrPicture::getId, list.stream().map(OcrTaskchildPicture::getPictureid).collect(Collectors.toList())).isNull(OcrPicture::getIztrueorfalse)); + if (pictures.size() > 1) { + return false; + } + return true; + } + @Override public List listAll(String tenantId, String createUser, QueryWrapper queryWrapper){ From 4e6666d7065102a275e6e3aead70e31a30e23e3c Mon Sep 17 00:00:00 2001 From: admin <149470858@qq.com> Date: Sat, 16 Mar 2024 23:38:39 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=91=E7=9A=84?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E7=9A=84=E5=BE=85=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E3=80=81=E5=AE=A1=E6=89=B9=E8=BF=87=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runstart/doc/sql/update.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runstart/doc/sql/update.sql b/runstart/doc/sql/update.sql index bf19d015..90047979 100644 --- a/runstart/doc/sql/update.sql +++ b/runstart/doc/sql/update.sql @@ -187,3 +187,6 @@ ALTER TABLE OA_USERAPPROVE_T ADD COLUMN STATSHIS int comment '审批状态, ALTER TABLE OA_USERAPPROVE_T ADD COLUMN COMMENTHIS varchar(190) comment '审批意见'; ALTER TABLE OA_USERAPPROVE_T ADD COLUMN TASKINDEX int comment '节点位置,待定字段'; ALTER TABLE OA_USERAPPROVE_T ADD COLUMN TASKNO varchar(64) comment '节点编号,待定字段'; + + +INSERT INTO S_BACKSTAGEOPENURL_T(ID,URL,REMARK) VALUES(1196092352600928301, '/flow/task/listalldata', '查询我的待审批、审批历史'); \ No newline at end of file From acb62185a80f377e621fb548ead655e05ce9fea9 Mon Sep 17 00:00:00 2001 From: shuliYao <1397940314@qq.com> Date: Sat, 16 Mar 2024 23:50:14 +0800 Subject: [PATCH 13/15] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=86=B2=E7=AA=81=E9=81=97=E7=95=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OcrPictureServiceImpl.java | 2 + .../impl/OcrTaskchildPictureServiceImpl.java | 90 +++++++++---------- 2 files changed, 47 insertions(+), 45 deletions(-) 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 f9fea4e6..a0514067 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 @@ -692,6 +692,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl 0){ - historyPname.append("," + old.getOcrPicture().getImgname()); - }else{ - historyPname.append(old.getOcrPicture().getImgname()); - } - } - if(old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { - if(taskType.length() > 0){ - taskType.append("," + old.getOcrPicture().getImgname()); - }else{ - taskType.append(old.getOcrPicture().getImgname()); - } - } +// if(old.isIzHistory()){ +// if(historyPname.length() > 0){ +// historyPname.append("," + old.getOcrPicture().getImgname()); +// }else{ +// historyPname.append(old.getOcrPicture().getImgname()); +// } +// } +// if(old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { +// if(taskType.length() > 0){ +// taskType.append("," + old.getOcrPicture().getImgname()); +// }else{ +// taskType.append(old.getOcrPicture().getImgname()); +// } +// } OcrPicture ocrPicture = old.getOcrPicture(); ocrPicture.setJudgeid(Long.parseLong(judgeid)); @@ -85,12 +85,12 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl 0){ - historyPname.append("," + old.getOcrPicture().getImgname()); - }else{ - historyPname.append(old.getOcrPicture().getImgname()); - } - } - if(old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { - if(taskType.length() > 0){ - taskType.append("," + old.getOcrPicture().getImgname()); - }else{ - taskType.append(old.getOcrPicture().getImgname()); - } - } +// if(old.isIzHistory()){ +// if(historyPname.length() > 0){ +// historyPname.append("," + old.getOcrPicture().getImgname()); +// }else{ +// historyPname.append(old.getOcrPicture().getImgname()); +// } +// } +// if(old.getStates().intValue() == 3 || old.getStates().intValue() == 5) { +// if(taskType.length() > 0){ +// taskType.append("," + old.getOcrPicture().getImgname()); +// }else{ +// taskType.append(old.getOcrPicture().getImgname()); +// } +// } OcrPicture ocrPicture = old.getOcrPicture(); ocrPicture.setJudgeid(null); @@ -131,12 +131,12 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl listAll(String tenantId, String createUser, QueryWrapper queryWrapper){ @@ -510,7 +510,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl query){ return this.ocrtaskchildpicturemybatisdao.listFinalCount(query); } - + /** * 查询所有业务表集合 * @param query @@ -519,7 +519,7 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl listmytask(Map query){ return this.ocrtaskchildpicturemybatisdao.listmytask(query); } - + public Long listmytaskCount(Map query){ return this.ocrtaskchildpicturemybatisdao.listmytaskCount(query); } From 6884d69ed2871fa403b9c464f7965859eadd6708 Mon Sep 17 00:00:00 2001 From: shuliYao <1397940314@qq.com> Date: Sun, 17 Mar 2024 10:59:57 +0800 Subject: [PATCH 14/15] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8C=85=E5=90=AB=E7=9B=B8=E4=BC=BC=E5=BA=A6=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=A3=80?= =?UTF-8?q?=E7=B4=A2=E6=8F=90=E6=8A=A5=E4=BA=BA=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E7=94=B1=E5=90=8D=E7=A7=B0=E6=94=B9=E4=B8=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/jyjz/xiaoyao/ocr/util/SearchConfigEnum.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/SearchConfigEnum.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/SearchConfigEnum.java index 9a88bf2f..bb12904a 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/SearchConfigEnum.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/SearchConfigEnum.java @@ -33,11 +33,11 @@ public enum SearchConfigEnum { //所属项目、拜访客户类型、拜访客户级别、拜访客户名称、拜访项目类别、任务来源、任务状态、拜访省份/直辖市、、厂商、产品名称、 //提报人 - UPUSERSEARCH("izupuser","upName"), + UPUSERSEARCH("izupuser","upuserid"), //所属计划 PLANSEARCH("izplan","planName"), //相似度 - SIMISEARCH("izsimilarity","pictureresult"), +// SIMISEARCH("izsimilarity","pictureresult"), //分类搜索 CLASSISEARCH("izshow","classificationid"), From 690b0961be251977f56d86a8736acc30c0d21fb1 Mon Sep 17 00:00:00 2001 From: shuliYao <1397940314@qq.com> Date: Sun, 17 Mar 2024 11:38:24 +0800 Subject: [PATCH 15/15] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=97=A5=E6=9C=9F=E6=AF=94?= =?UTF-8?q?=E5=AF=B9=E4=B8=8D=E6=AD=A3=E7=A1=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaoyao/ocr/controller/OcrPictureController.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java index d2880b6f..9ee70cab 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java @@ -212,16 +212,9 @@ public class OcrPictureController extends BaseController{ QueryWrapper queryWrapper = new QueryWrapper<>(); - //是否查询历史记录 - String search_history = req.getParameter("search_history"); - //判断是否需要查询历史记录 - if(search_history.equals("0")){ - queryWrapper.eq("taskstatus", search_history); - } - String search_month = req.getParameter("search_month"); if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){ - queryWrapper.le("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month))); + queryWrapper.ge("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month))); } //根据参数枚举,获取检索参数,并映射为数据库的字段的key-v map