Merge branch 'dev'

# Conflicts:
#	jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java
#	runstart/src/main/resources/application-dev.yml
pull/1/head
sunchenliang 1 year ago
commit 6b10a0ac43

@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import cn.jyjz.xiaoyao.admin.service.LogService; import cn.jyjz.xiaoyao.admin.service.LogService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil; import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.base.vo.UserToken;
@ -38,285 +39,285 @@ import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@Api(tags="ocr_图片管理") @Api(tags = "ocr_图片管理")
@RestController @RestController
@RequestMapping("/ocr/ocrPicture") @RequestMapping("/ocr/ocrPicture")
public class OcrPictureController extends BaseController{ public class OcrPictureController extends BaseController {
private Logger log = LoggerFactory.getLogger(this.getClass()); private Logger log = LoggerFactory.getLogger(this.getClass());
@Resource @Resource
private OcrPictureService ocrPictureService; private OcrPictureService ocrPictureService;
@Resource @Resource
private OcrPictureclassService ocrPictureclassService; private OcrPictureclassService ocrPictureclassService;
@Resource @Resource
private OcrTaskchildPictureService ocrTaskchildPictureService; private OcrTaskchildPictureService ocrTaskchildPictureService;
@Resource @Resource
private UserTokenService userTokenService; private UserTokenService userTokenService;
@Resource @Resource
private UserService userService; private UserService userService;
@Resource @Resource
private LogService logService; private LogService logService;
/**
* /**
* *
* @param req *
* @return * @param req
*/ * @return
//@AutoLog(value = "ocr_picture-分页列表查询") */
@ApiOperation(value="关闭工单", notes="关闭工单") //@AutoLog(value = "ocr_picture-分页列表查询")
@GetMapping(value = "/closeorder") @ApiOperation(value = "关闭工单", notes = "关闭工单")
public ResultVo<List<OcrPicture>> closeorder(@RequestParam(name="orderid",required=true) String orderid, @GetMapping(value = "/closeorder")
HttpServletRequest req) { public ResultVo<List<OcrPicture>> closeorder(@RequestParam(name = "orderid", required = true) String orderid,
return ocrTaskchildPictureService.closeOrder(orderid)?ResultVoUtil.success():ResultVoUtil.error("失败"); HttpServletRequest req) {
} return ocrTaskchildPictureService.closeOrder(orderid) ? ResultVoUtil.success() : ResultVoUtil.error("失败");
}
/**
* @MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc= /**
*@MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc= * @MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc=
* @param ocrPicture *
* @param req * @param ocrPicture
* @return * @param req
*/ * @return
//@AutoLog(value = "ocr_picture-分页列表查询") * @MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc=
@ApiOperation(value="任务查询", notes="任务查询") */
@ApiImplicitParams({ //@AutoLog(value = "ocr_picture-分页列表查询")
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiOperation(value = "任务查询", notes = "任务查询")
@ApiImplicitParam(paramType = "path",name = "izClose", value = "是否关闭0关闭1开启", required = true), @ApiImplicitParams({
@ApiImplicitParam(paramType = "path",name = "tasktype", value = "任务状态1待审批:2审批中 :3合格 :4不合格", required = true) @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) @ApiImplicitParam(paramType = "path", name = "izClose", value = "是否关闭0关闭1开启", required = true),
@GetMapping(value = "/listorder") @ApiImplicitParam(paramType = "path", name = "tasktype", value = "任务状态1待审批:2审批中 :3合格 :4不合格", required = true)
public ResultVo<List<OcrPicture>> listorder(OcrPicture ocrPicture, })
@RequestParam(name="izClose") String izClose, @GetMapping(value = "/listorder")
@RequestParam(name="tasktype") String tasktype, public ResultVo<List<OcrPicture>> listorder(OcrPicture ocrPicture,
HttpServletRequest req) { @RequestParam(name = "izClose") String izClose,
//租户主键,由前端页面传送 @RequestParam(name = "tasktype") String tasktype,
String tenantId = req.getHeader("X-Tenant-Id"); HttpServletRequest req) {
if(StringUtils.isBlank(tenantId)){ //租户主键,由前端页面传送
return ResultVoUtil.error("租户主键不能为空"); String tenantId = req.getHeader("X-Tenant-Id");
} if (StringUtils.isBlank(tenantId)) {
return ResultVoUtil.error("租户主键不能为空");
//获取当前登录人 }
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
//获取当前登录人
List<OcrPicture> pageList = ocrPictureService.listByTaskChild(tenantId,userToken.getLoginname(),izClose,tasktype,null); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
return ResultVoUtil.success(pageList); List<OcrPicture> pageList = ocrPictureService.listByTaskChild(tenantId, userToken.getLoginname(), izClose, tasktype, null);
}
return ResultVoUtil.success(pageList);
/** }
*
* /**
* @param ocrPicture *
* @param req *
* @return * @param ocrPicture
*/ * @param req
//@AutoLog(value = "ocr_picture-分页列表查询") * @return
@ApiOperation(value="一键查重", notes="一键查重") */
@ApiImplicitParams({ //@AutoLog(value = "ocr_picture-分页列表查询")
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiOperation(value = "一键查重", notes = "一键查重")
@ApiImplicitParam(paramType = "path",name = "search_month", value = "搜索时间21,一周内22两周内1进一个月2:进两个月3近三个月、6近六个月、9近九个月、12近12个月", required = true), @ApiImplicitParams({
@ApiImplicitParam(paramType = "path",name = "search_history", value = "是否查询历史记录0不查询1查询", required = true) @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
}) @ApiImplicitParam(paramType = "path", name = "search_month", value = "搜索时间21,一周内22两周内1进一个月2:进两个月3近三个月、6近六个月、9近九个月、12近12个月", required = true),
@GetMapping(value = "/createorder") @ApiImplicitParam(paramType = "path", name = "search_history", value = "是否查询历史记录0不查询1查询", required = true)
public ResultVo createorder(OcrPicture ocrPicture, })
HttpServletRequest req) { @GetMapping(value = "/createorder")
public ResultVo createorder(OcrPicture ocrPicture,
//获取当前登录人 HttpServletRequest req) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
//获取当前登录人
//租户主键,由前端页面传送 UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
String tenantId = req.getHeader("X-Tenant-Id");
if(StringUtils.isBlank(tenantId)){ //租户主键,由前端页面传送
return ResultVoUtil.error("租户主键不能为空"); String tenantId = req.getHeader("X-Tenant-Id");
} if (StringUtils.isBlank(tenantId)) {
return ResultVoUtil.error("租户主键不能为空");
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>(); }
//是否查询历史记录 QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>();
String search_history = req.getParameter("search_history");
//是否查询历史记录
//任务包名称 String search_history = req.getParameter("search_history");
String buessinessno = req.getParameter("buessinessno");
//任务包名称
//搜索时间段 String buessinessno = req.getParameter("buessinessno");
//搜索时间段
// String search_month = req.getParameter("search_month"); // String search_month = req.getParameter("search_month");
// if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){ // 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.le("create_time", DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
// }else if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20){ // }else if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20){
// queryWrapper.le("create_time",DataUtil.afterDateByWeek(Integer.parseInt(search_month) - 20)); // queryWrapper.le("create_time",DataUtil.afterDateByWeek(Integer.parseInt(search_month) - 20));
// } // }
String search_month = req.getParameter("search_month"); String search_month = req.getParameter("search_month");
if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){ 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.le("create_time", DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
} }
//判断是否需要查询历史记录 //判断是否需要查询历史记录
if(search_history.equals("0")){ if (search_history.equals("0")) {
queryWrapper.eq("taskstatus", search_history); queryWrapper.eq("taskstatus", search_history);
} }
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map //根据参数枚举获取检索参数并映射为数据库的字段的key-v map
Map<String,Object> paraMap = new HashMap<>(); Map<String, Object> paraMap = new HashMap<>();
for(SearchConfigEnum config : SearchConfigEnum.values()){ for (SearchConfigEnum config : SearchConfigEnum.values()) {
String searchvalue = req.getParameter(config.getId()); String searchvalue = req.getParameter(config.getId());
if(StringUtils.isNotBlank(searchvalue)){ if (StringUtils.isNotBlank(searchvalue)) {
paraMap.put(config.getMeaning(),searchvalue); paraMap.put(config.getMeaning(), searchvalue);
} }
} }
//调用查询参数解析方法解析为queryWrapper //调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper,paraMap); queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
queryWrapper.eq("tenant_id",tenantId); queryWrapper.eq("tenant_id", tenantId);
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper);
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper); if (null != pageList && !pageList.isEmpty()) {
if (pageList.size() == 1) {
if(null != pageList && !pageList.isEmpty()){ return ResultVoUtil.error("查重数据至少要有两条。");
if(pageList.size() == 1){ } else {
return ResultVoUtil.error("查重数据至少要有两条。"); return ocrPictureService.createPackageTask(pageList, tenantId, userToken, search_month, req, buessinessno);
}else{ }
return ocrPictureService.createTaskChild(pageList,tenantId,userToken,search_month, req,buessinessno); } else {
} return ResultVoUtil.error("没有查重数据。");
}else{ }
return ResultVoUtil.error("没有查重数据。"); }
}
} /**
*
/** *
* * @param ocrPicture
* * @param pageNo
* @param ocrPicture * @param pageSize
* @param pageNo * @param req
* @param pageSize * @return
* @param req */
* @return //@AutoLog(value = "ocr_picture-分页列表查询")
*/ @ApiOperation(value = "图片分页列表查询", notes = "图片分页列表查询@MMlvuvNARprA7ScHnwE+WFPWEBliKUwgUPHdB2Ue9Bw=")
//@AutoLog(value = "ocr_picture-分页列表查询") @ApiImplicitParams({
@ApiOperation(value="图片分页列表查询", notes="图片分页列表查询@MMlvuvNARprA7ScHnwE+WFPWEBliKUwgUPHdB2Ue9Bw=") @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
@ApiImplicitParams({ @ApiImplicitParam(paramType = "path", name = "search_month", value = "搜索时间3近三个月、6近六个月、9近九个月、12近12个月、99一年以上全部", required = true),
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), @ApiImplicitParam(paramType = "path", name = "search_history", value = "是否查询历史记录0不查询1查询", required = true)
@ApiImplicitParam(paramType = "path",name = "search_month", value = "搜索时间3近三个月、6近六个月、9近九个月、12近12个月、99一年以上全部", required = true), })
@ApiImplicitParam(paramType = "path",name = "search_history", value = "是否查询历史记录0不查询1查询", required = true) @GetMapping(value = "/list")
}) public ResultVo<IPage<OcrPicture>> queryPageList(OcrPicture ocrPicture,
@GetMapping(value = "/list") @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
public ResultVo<IPage<OcrPicture>> queryPageList(OcrPicture ocrPicture, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, HttpServletRequest req) {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, //租户主键,由前端页面传送
HttpServletRequest req) { String tenantId = req.getHeader("X-Tenant-Id");
//租户主键,由前端页面传送 if (StringUtils.isBlank(tenantId)) {
String tenantId = req.getHeader("X-Tenant-Id"); return ResultVoUtil.error("租户主键不能为空");
if(StringUtils.isBlank(tenantId)){ }
return ResultVoUtil.error("租户主键不能为空");
} QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>();
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>(); String search_month = req.getParameter("search_month");
if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){
String search_month = req.getParameter("search_month"); queryWrapper.ge("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) <= 12 && Integer.parseInt(search_month) > 0){ }
queryWrapper.ge("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
} //根据参数枚举获取检索参数并映射为数据库的字段的key-v map
Map<String, Object> paraMap = new HashMap<>();
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map for (SearchConfigEnum config : SearchConfigEnum.values()) {
Map<String,Object> paraMap = new HashMap<>(); String searchvalue = req.getParameter(config.getId());
for(SearchConfigEnum config : SearchConfigEnum.values()){ if (!StringUtils.isEmpty(searchvalue)) {
String searchvalue = req.getParameter(config.getId()); paraMap.put(config.getMeaning(), searchvalue);
if(!StringUtils.isEmpty(searchvalue)){ }
paraMap.put(config.getMeaning(),searchvalue); }
} //调用查询参数解析方法解析为queryWrapper
} queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
//调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper,paraMap); queryWrapper.eq("tenant_id", tenantId);
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
queryWrapper.eq("tenant_id",tenantId); IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper);
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper); for (OcrPicture ocrPicture1 : pageList.getRecords()) {
if (StringUtils.isNotBlank(ocrPicture1.getPictureclassid())) {
for(OcrPicture ocrPicture1:pageList.getRecords()){ OcrPictureclass ocrPictureclass = this.ocrPictureclassService.getById(ocrPicture1.getPictureclassid());
if(StringUtils.isNotBlank(ocrPicture1.getPictureclassid())){ ocrPicture1.setOcrPictureclass(ocrPictureclass);
OcrPictureclass ocrPictureclass = this.ocrPictureclassService.getById(ocrPicture1.getPictureclassid()); }
ocrPicture1.setOcrPictureclass(ocrPictureclass);
} }
} return ResultVoUtil.success(pageList);
}
return ResultVoUtil.success(pageList);
} /**
*
/** *
* * @param pageNo
* * @param pageSize
* @param pageNo * @param req
* @param pageSize * @return
* @param req */
* @return @ApiOperation(value = "图片分页列表查询-根据用户预设检索条件查询", notes = "")
*/ @ApiImplicitParams({
@ApiOperation(value="图片分页列表查询-根据用户预设检索条件查询", notes="") @ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true),
@ApiImplicitParams({ @ApiImplicitParam(paramType = "path", name = "userSearchId", value = "预设检索条件id", required = true),
@ApiImplicitParam(paramType = "header", name = "X-Tenant-Id", value = "租户主键,用户登录时的信息“tenantList”中获得。", dataType = "String", required = true), })
@ApiImplicitParam(paramType = "path",name = "userSearchId", value = "预设检索条件id", required = true), @GetMapping(value = "/listByUserSearchId")
}) public ResultVo<IPage<OcrPicture>> queryPageByUserSearchId(
@GetMapping(value = "/listByUserSearchId") @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
public ResultVo<IPage<OcrPicture>> queryPageByUserSearchId( @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, HttpServletRequest req) {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) { //租户主键,由前端页面传送
String tenantId = req.getHeader("X-Tenant-Id");
//租户主键,由前端页面传送 if (StringUtils.isBlank(tenantId)) {
String tenantId = req.getHeader("X-Tenant-Id"); return ResultVoUtil.error("租户主键不能为空");
if(StringUtils.isBlank(tenantId)){ }
return ResultVoUtil.error("租户主键不能为空");
} //获取用户预设检索条件id
String userSearchId = req.getParameter("userSearchId");
//获取用户预设检索条件id IPage<OcrPicture> pageList = ocrPictureService.queryPageByUserSearchId(pageNo, pageSize, userSearchId);
String userSearchId = req.getParameter("userSearchId"); return ResultVoUtil.success(pageList);
IPage<OcrPicture> pageList = ocrPictureService.queryPageByUserSearchId(pageNo,pageSize,userSearchId); }
return ResultVoUtil.success(pageList);
}
/**
*
/** *
* * @param ocrPicture
* * @return
* @param ocrPicture */
* @return //@AutoLog(value = "ocr_picture-分页列表查询")
*/ @ApiOperation(value = "图片信息接收", notes = "图片信息接收")
//@AutoLog(value = "ocr_picture-分页列表查询") @PostMapping(value = "/loadpicture")
@ApiOperation(value="图片信息接收", notes="图片信息接收") public ResultVo loadpicture(OcrPicture ocrPicture,
@PostMapping(value = "/loadpicture") HttpServletRequest request) {
public ResultVo loadpicture(OcrPicture ocrPicture,
HttpServletRequest request) { BufferedReader streamReader = null;
try {
BufferedReader streamReader = null; streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
try { } catch (IOException e) {
streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(),"UTF-8")); log.error("【数据接收】jsonFormatError:{}", e);
} catch (IOException e) { logService.addLog(101, "接收数据失败。", null, null);
log.error("【数据接收】jsonFormatError:{}",e); ResultVoUtil.error("失败");
logService.addLog(101,"接收数据失败。",null,null); }
ResultVoUtil.error("失败"); StringBuilder sb = new StringBuilder();
} String inputStr;
StringBuilder sb = new StringBuilder(); try {
String inputStr; while ((inputStr = streamReader.readLine()) != null) {
try { sb.append(inputStr);
while ((inputStr = streamReader.readLine()) != null) { }
sb.append(inputStr); } catch (IOException e) {
} log.error("【数据接收】jsonFormatError:{}", e);
} catch (IOException e) { logService.addLog(101, "接收数据失败。", null, null);
log.error("【数据接收】jsonFormatError:{}",e); }
logService.addLog(101,"接收数据失败。",null,null);
} logService.addLog(101, "接收数据成功。", null, null);
logService.addLog(101,"接收数据成功。",null,null); JSONObject jsonArray = JSONObject.parseObject(sb.toString());
JSONObject jsonArray = JSONObject.parseObject(sb.toString()); //TODO 结束json数据并持久化
//this.ocrPictureService
//TODO 结束json数据并持久化 //TODO AI获取图片分类接口
//this.ocrPictureService
//TODO AI获取图片分类接口 logService.addLog(102, "AI获取图片分类接口。", null, null);
logService.addLog(102,"AI获取图片分类接口。",null,null); return ResultVoUtil.success();
}
return ResultVoUtil.success();
}
} }

@ -26,373 +26,382 @@ import java.util.stream.Stream;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(name = "图片信息表", title = "图片信息表") @Schema(name = "图片信息表", title = "图片信息表")
@ApiModel(value="图片信息表", description="图片信息表") @ApiModel(value = "图片信息表", description = "图片信息表")
@TableName(value = "ocr_picture") @TableName(value = "ocr_picture")
public class OcrPicture implements BaseDto,java.io.Serializable { public class OcrPicture implements BaseDto, java.io.Serializable {
private static final long serialVersionUID = -10378331243377607L; private static final long serialVersionUID = -10378331243377607L;
@ApiModelProperty(value ="主键") @ApiModelProperty(value = "主键")
@TableId(value = "id",type = IdType.ASSIGN_ID) @TableId(value = "id", type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@TableField(value="ID") @TableField(value = "ID")
private Long id; private Long id;
@ApiModelProperty(value ="创建人") @ApiModelProperty(value = "创建人")
@TableField(value="create_by") @TableField(value = "create_by")
private String createBy; private String createBy;
@ApiModelProperty(value ="创建时间") @ApiModelProperty(value = "创建时间")
@TableField(value="create_time") @TableField(value = "create_time")
@JsonSerialize(using = DateSerializer.class) @JsonSerialize(using = DateSerializer.class)
private Long createTime; private Long createTime;
@ApiModelProperty(value ="修改人") @ApiModelProperty(value = "修改人")
@TableField(value="update_by") @TableField(value = "update_by")
private String updateBy; private String updateBy;
@ApiModelProperty(value ="修改时间") @ApiModelProperty(value = "修改时间")
@TableField(value="update_time") @TableField(value = "update_time")
@JsonSerialize(using = DateSerializer.class) @JsonSerialize(using = DateSerializer.class)
private Long updateTime; private Long updateTime;
@ApiModelProperty(value ="分类表主键--通过“图片分类”字段做匹配,如果没有自动添加") @ApiModelProperty(value = "分类表主键--通过“图片分类”字段做匹配,如果没有自动添加")
@TableField(value="classificationid") @TableField(value = "classificationid")
private String classificationid; private String classificationid;
@ApiModelProperty(value ="图片类型--通过“AI图片分类接口获得”") @ApiModelProperty(value = "图片类型--通过“AI图片分类接口获得”")
@TableField(value="pictureclassid") @TableField(value = "pictureclassid")
private String pictureclassid; private String pictureclassid;
@Schema(description = "图片类型相似度,图片类型--通过“AI图片分类接口获得”") @Schema(description = "图片类型相似度,图片类型--通过“AI图片分类接口获得”")
@TableField(value="pictureclassscores") @TableField(value = "pictureclassscores")
private String pictureclassscores; private String pictureclassscores;
@ApiModelProperty(value ="图片真假0:假1真") @ApiModelProperty(value = "图片真假0:假1真")
@TableField(value="iztrueorfalse",updateStrategy = FieldStrategy.IGNORED) @TableField(value = "iztrueorfalse", updateStrategy = FieldStrategy.IGNORED)
private Integer iztrueorfalse; private Integer iztrueorfalse;
@ApiModelProperty(value ="选判真假原因id,从字典表中获得,其他时,当前字段为零") @ApiModelProperty(value = "选判真假原因id,从字典表中获得,其他时,当前字段为零")
@TableField(value="judgeid",updateStrategy = FieldStrategy.IGNORED) @TableField(value = "judgeid", updateStrategy = FieldStrategy.IGNORED)
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long judgeid; private Long judgeid;
@ApiModelProperty(value ="图片为假的其他原因长度不超过50个汉字") @ApiModelProperty(value = "图片为假的其他原因长度不超过50个汉字")
@TableField(value="judgedesc",updateStrategy = FieldStrategy.IGNORED) @TableField(value = "judgedesc", updateStrategy = FieldStrategy.IGNORED)
private String judgedesc; private String judgedesc;
@ApiModelProperty(value ="公司ID") @ApiModelProperty(value = "公司ID")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@TableField(value="tenant_id") @TableField(value = "tenant_id")
private Long tenantId; private Long tenantId;
@ApiModelProperty(value ="公司状态") @ApiModelProperty(value = "公司状态")
@TableField(value="tenantstatus") @TableField(value = "tenantstatus")
private String tenantstatus; private String tenantstatus;
@ApiModelProperty(value ="公司代码,第三方系统") @ApiModelProperty(value = "公司代码,第三方系统")
@TableField(value="plantCode") @TableField(value = "plantCode")
private String plantcode; private String plantcode;
@ApiModelProperty(value ="公司名称") @ApiModelProperty(value = "公司名称")
@TableField(value="tenantname") @TableField(value = "tenantname")
private String tenantname; private String tenantname;
@ApiModelProperty(value ="业务主体ID--图片主键") @ApiModelProperty(value = "业务主体ID--图片主键")
@TableField(value="pictureid") @TableField(value = "pictureid")
private String pictureid; private String pictureid;
@ApiModelProperty(value ="业务主体名称--图片成名") @ApiModelProperty(value = "业务主体名称--图片成名")
@TableField(value="picturename") @TableField(value = "picturename")
private String picturename; private String picturename;
@ApiModelProperty(value ="图片名称") @ApiModelProperty(value = "图片名称")
@TableField(value="imgName") @TableField(value = "imgName")
private String imgname; private String imgname;
@ApiModelProperty(value ="图片地址") @ApiModelProperty(value = "图片地址")
@TableField(value="imgUrl") @TableField(value = "imgUrl")
private String imgurl; private String imgurl;
@ApiModelProperty(value ="业务主体状态") @ApiModelProperty(value = "业务主体状态")
@TableField(value="picturestatus") @TableField(value = "picturestatus")
private String picturestatus; private String picturestatus;
@ApiModelProperty(value ="源项目id") @ApiModelProperty(value = "源项目id")
@TableField(value="projectId") @TableField(value = "projectId")
private String projectid; private String projectid;
@ApiModelProperty(value ="项目名称") @ApiModelProperty(value = "项目名称")
@TableField(value="projectIdName") @TableField(value = "projectIdName")
private String projectidname; private String projectidname;
@ApiModelProperty(value ="项目状态") @ApiModelProperty(value = "项目状态")
@TableField(value="projectstatus") @TableField(value = "projectstatus")
private String projectstatus; private String projectstatus;
@ApiModelProperty(value ="源计划id") @ApiModelProperty(value = "源计划id")
@TableField(value="planId") @TableField(value = "planId")
private String planid; private String planid;
@ApiModelProperty(value ="计划名称") @ApiModelProperty(value = "计划名称")
@TableField(value="planName") @TableField(value = "planName")
private String planname; private String planname;
@ApiModelProperty(value ="计划状态") @ApiModelProperty(value = "计划状态")
@TableField(value="planstatus") @TableField(value = "planstatus")
private String planstatus; private String planstatus;
@ApiModelProperty(value ="所属子计划ID") @ApiModelProperty(value = "所属子计划ID")
@TableField(value="planchildid") @TableField(value = "planchildid")
private String planchildid; private String planchildid;
@ApiModelProperty(value ="所属子计划名称") @ApiModelProperty(value = "所属子计划名称")
@TableField(value="planchildname") @TableField(value = "planchildname")
private String planchildname; private String planchildname;
@ApiModelProperty(value ="所属子计划状态") @ApiModelProperty(value = "所属子计划状态")
@TableField(value="planchildstatus") @TableField(value = "planchildstatus")
private String planchildstatus; private String planchildstatus;
@ApiModelProperty(value ="上传时间") @ApiModelProperty(value = "上传时间")
@JsonSerialize(using = DateNotimeSerializer.class) @JsonSerialize(using = DateNotimeSerializer.class)
@TableField(value="upTime") @TableField(value = "upTime")
private Long uptime; private Long uptime;
@ApiModelProperty(value ="生成时间") @ApiModelProperty(value = "生成时间")
@JsonSerialize(using = DateNotimeSerializer.class) @JsonSerialize(using = DateNotimeSerializer.class)
@TableField(value="genTime") @TableField(value = "genTime")
private Long gentime; private Long gentime;
@ApiModelProperty(value = "色彩空间")
@TableField(value = "space")
private String space;
@ApiModelProperty(value = "来源")
@TableField(value = "source")
private String source;
@ApiModelProperty(value ="色彩空间") @ApiModelProperty(value = "上报者头像--接口传送")
@TableField(value="space") @TableField(value = "upHead")
private String space; private String uphead;
@ApiModelProperty(value ="来源") @ApiModelProperty(value = "上报人主键")
@TableField(value="source") @TableField(value = "upuserid")
private String source; private String upuserid;
@ApiModelProperty(value ="上报者头像--接口传送") @ApiModelProperty(value = "上报者名称--接口传送")
@TableField(value="upHead") @TableField(value = "upName")
private String uphead; private String upname;
@ApiModelProperty(value ="上报人主键") @ApiModelProperty(value = "发布地区,拜访城市,城市名称,例如:北京市、天津市、石家庄市")
@TableField(value="upuserid") @TableField(value = "releaseArea")
private String upuserid; private String releasearea;
@ApiModelProperty(value ="上报者名称--接口传送") @ApiModelProperty(value = "拜访省份")
@TableField(value="upName") @TableField(value = "releaseProvince")
private String upname; private String releaseprovince;
@ApiModelProperty(value ="发布地区,拜访城市,城市名称,例如:北京市、天津市、石家庄市") @ApiModelProperty(value = "任务id")
@TableField(value="releaseArea") @TableField(value = "remark")
private String releasearea; private String remark;
@ApiModelProperty(value ="拜访省份") @ApiModelProperty(value = "任务名称,源系统")
@TableField(value="releaseProvince") @TableField(value = "taskName")
private String releaseprovince; private String taskname;
@ApiModelProperty(value ="任务id") @ApiModelProperty(value = "是否已经生成任务,01")
@TableField(value="remark") @TableField(value = "taskstatus")
private String remark; private String taskstatus;
@ApiModelProperty(value ="任务名称,源系统") @ApiModelProperty(value = "是否已经审批0未生成1审批中2已审批")
@TableField(value="taskName") @TableField(value = "work_status")
private String taskname; private String workStatus;
@ApiModelProperty(value ="是否已经生成任务,01") @ApiModelProperty(value = "现项目ID")
@TableField(value="taskstatus") @TableField(value = "categoryid")
private String taskstatus; private Long categoryid;
@ApiModelProperty(value ="是否已经审批0未生成1审批中2已审批") @ApiModelProperty(value = "任务-工单主键")
@TableField(value="work_status") @TableField(value = "taskchildpictureid")
private String workStatus; private String taskchildpictureid;
@ApiModelProperty(value ="现项目ID") @ApiModelProperty(value = "提报人")
@TableField(value="categoryid") @TableField(value = "field1")
private Long categoryid; private String field1;
@ApiModelProperty(value ="任务-工单主键") @ApiModelProperty(value = "拜访客户类型")
@TableField(value="taskchildpictureid") @TableField(value = "field2")
private String taskchildpictureid; private String field2;
@ApiModelProperty(value ="提报人") @ApiModelProperty(value = "拜访客户名称,终端名称,例如中日友好医院")
@TableField(value="field1") @TableField(value = "field3")
private String field1; private String field3;
@ApiModelProperty(value ="拜访客户类型") @ApiModelProperty(value = "任务来源")
@TableField(value="field2") @TableField(value = "field4")
private String field2; private String field4;
@ApiModelProperty(value ="拜访客户名称,终端名称,例如中日友好医院") @ApiModelProperty(value = "厂商")
@TableField(value="field3") @TableField(value = "field5")
private String field3; private String field5;
@ApiModelProperty(value ="任务来源") @ApiModelProperty(value = "拜访客户级别")
@TableField(value="field4") @TableField(value = "field6")
private String field4; private String field6;
@ApiModelProperty(value ="厂商") @ApiModelProperty(value = "科室名称")
@TableField(value="field5") @TableField(value = "field7")
private String field5; private String field7;
@ApiModelProperty(value ="拜访客户级别") @ApiModelProperty(value = "拜访小结")
@TableField(value="field6") @TableField(value = "field8")
private String field6; private String field8;
@ApiModelProperty(value ="科室名称") @ApiModelProperty(value = "产品名称")
@TableField(value="field7") @TableField(value = "field9")
private String field7; private String field9;
@ApiModelProperty(value ="拜访小结") @ApiModelProperty(value = "地区定位信息例如北京市朝阳区文苑路10号")
@TableField(value="field8") @TableField(value = "field10")
private String field8; private String field10;
@ApiModelProperty(value ="产品名称") @ApiModelProperty(value = "拜访日期")
@TableField(value="field9") @TableField(value = "field11")
private String field9; private String field11;
@ApiModelProperty(value ="地区定位信息例如北京市朝阳区文苑路10号") @ApiModelProperty(value = "定位距离")
@TableField(value="field10") @TableField(value = "field12")
private String field10; private String field12;
@ApiModelProperty(value ="拜访日期") @ApiModelProperty(value = "病历号")
@TableField(value="field11") @TableField(value = "field13")
private String field11; private String field13;
@ApiModelProperty(value ="定位距离") @ApiModelProperty(value = "是否重复")
@TableField(value="field12") @TableField(value = "field14")
private String field12; private String field14;
@ApiModelProperty(value ="病历号") @ApiModelProperty(value = "任务类型")
@TableField(value="field13") @TableField(value = "field15")
private String field13; private String field15;
@ApiModelProperty(value ="是否重复") @ApiModelProperty(value = "任务状态")
@TableField(value="field14") @TableField(value = "field16")
private String field14; private String field16;
@ApiModelProperty(value ="任务类型")
@TableField(value="field15") @Schema(description = "拜访项目类别")
private String field15; @TableField(value = "field17")
private String field17;
@ApiModelProperty(value ="任务状态")
@TableField(value="field16") @Schema(description = "备用字段")
private String field16; @TableField(value = "field18")
private String field18;
@Schema(description = "拜访项目类别") @Schema(description = "本地图片地址")
@TableField(value="field17") @TableField(value = "local_pictrue_url")
private String field17; private String localpictrueurl;
@Schema(description = "备用字段") @Schema(description = "是否已下载到本地")
@TableField(value="field18") @TableField(value = "is_download")
private String field18; private Integer isdownload;
@ApiModelProperty(value = "图片查重的比对图片集合") @ApiModelProperty(value = "图片查重的比对图片集合")
@TableField(exist = false) @TableField(exist = false)
private List<OcrPicture> listCom; private List<OcrPicture> listCom;
@ApiModelProperty(value = "非历史图片主键集合") @ApiModelProperty(value = "非历史图片主键集合")
@TableField(exist = false) @TableField(exist = false)
private List<String> picturecompareList; private List<String> picturecompareList;
@ApiModelProperty(value = "图片对应的工单对象") @ApiModelProperty(value = "图片对应的工单对象")
@TableField(exist = false) @TableField(exist = false)
private OcrTaskchildPicture ocrTaskchildPicture; private OcrTaskchildPicture ocrTaskchildPicture;
@ApiModelProperty(value = "当前图片与参考图比对结果") @ApiModelProperty(value = "当前图片与参考图比对结果")
//当前图片与参考图比对结果 //当前图片与参考图比对结果
@TableField(exist = false) @TableField(exist = false)
private String result; private String result;
//图片分类 //图片分类
@TableField(exist = false) @TableField(exist = false)
private OcrPictureclass ocrPictureclass; private OcrPictureclass ocrPictureclass;
//保存当前登录用户的数据权限范围的搜索条件 //保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false) @TableField(exist = false)
@JsonIgnore @JsonIgnore
private SearchQuery searchQueryrolesShowleave; private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false) @TableField(exist = false)
@JsonIgnore @JsonIgnore
private final Map<String,String> query = Stream.of( private final Map<String, String> query = Stream.of(
new SimpleEntry<>("ID","id"), new SimpleEntry<>("ID", "id"),
new SimpleEntry<>("create_by","createBy"), new SimpleEntry<>("create_by", "createBy"),
new SimpleEntry<>("create_time","createTime"), new SimpleEntry<>("create_time", "createTime"),
new SimpleEntry<>("update_by","updateBy"), new SimpleEntry<>("update_by", "updateBy"),
new SimpleEntry<>("update_time","updateTime"), new SimpleEntry<>("update_time", "updateTime"),
new SimpleEntry<>("classificationid","classificationid"), new SimpleEntry<>("classificationid", "classificationid"),
new SimpleEntry<>("pictureclassid","pictureclassid"), new SimpleEntry<>("pictureclassid", "pictureclassid"),
new SimpleEntry<>("pictureclassscores","pictureclassscores"), new SimpleEntry<>("pictureclassscores", "pictureclassscores"),
new SimpleEntry<>("iztrueorfalse","iztrueorfalse"), new SimpleEntry<>("iztrueorfalse", "iztrueorfalse"),
new SimpleEntry<>("judgeid","judgeid"), new SimpleEntry<>("judgeid", "judgeid"),
new SimpleEntry<>("judgedesc","judgedesc"), new SimpleEntry<>("judgedesc", "judgedesc"),
new SimpleEntry<>("tenant_id","tenantId"), new SimpleEntry<>("tenant_id", "tenantId"),
new SimpleEntry<>("tenantstatus","tenantstatus"), new SimpleEntry<>("tenantstatus", "tenantstatus"),
new SimpleEntry<>("plantCode","plantcode"), new SimpleEntry<>("plantCode", "plantcode"),
new SimpleEntry<>("tenantname","tenantname"), new SimpleEntry<>("tenantname", "tenantname"),
new SimpleEntry<>("pictureid","pictureid"), new SimpleEntry<>("pictureid", "pictureid"),
new SimpleEntry<>("picturename","picturename"), new SimpleEntry<>("picturename", "picturename"),
new SimpleEntry<>("imgName","imgname"), new SimpleEntry<>("imgName", "imgname"),
new SimpleEntry<>("imgUrl","imgurl"), new SimpleEntry<>("imgUrl", "imgurl"),
new SimpleEntry<>("picturestatus","picturestatus"), new SimpleEntry<>("picturestatus", "picturestatus"),
new SimpleEntry<>("projectId","projectid"), new SimpleEntry<>("projectId", "projectid"),
new SimpleEntry<>("projectIdName","projectidname"), new SimpleEntry<>("projectIdName", "projectidname"),
new SimpleEntry<>("projectstatus","projectstatus"), new SimpleEntry<>("projectstatus", "projectstatus"),
new SimpleEntry<>("planId","planid"), new SimpleEntry<>("planId", "planid"),
new SimpleEntry<>("planName","planname"), new SimpleEntry<>("planName", "planname"),
new SimpleEntry<>("planstatus","planstatus"), new SimpleEntry<>("planstatus", "planstatus"),
new SimpleEntry<>("planchildid","planchildid"), new SimpleEntry<>("planchildid", "planchildid"),
new SimpleEntry<>("planchildname","planchildname"), new SimpleEntry<>("planchildname", "planchildname"),
new SimpleEntry<>("planchildstatus","planchildstatus"), new SimpleEntry<>("planchildstatus", "planchildstatus"),
new SimpleEntry<>("upTime","uptime"), new SimpleEntry<>("upTime", "uptime"),
new SimpleEntry<>("genTime","gentime"), new SimpleEntry<>("genTime", "gentime"),
new SimpleEntry<>("space","space"), new SimpleEntry<>("space", "space"),
new SimpleEntry<>("source","source"), new SimpleEntry<>("source", "source"),
new SimpleEntry<>("upHead","uphead"), new SimpleEntry<>("upHead", "uphead"),
new SimpleEntry<>("upuserid","upuserid"), new SimpleEntry<>("upuserid", "upuserid"),
new SimpleEntry<>("upName","upname"), new SimpleEntry<>("upName", "upname"),
new SimpleEntry<>("releaseArea","releasearea"), new SimpleEntry<>("releaseArea", "releasearea"),
new SimpleEntry<>("releaseProvince","releaseprovince"), new SimpleEntry<>("releaseProvince", "releaseprovince"),
new SimpleEntry<>("remark","remark"), new SimpleEntry<>("remark", "remark"),
new SimpleEntry<>("taskName","taskname"), new SimpleEntry<>("taskName", "taskname"),
new SimpleEntry<>("taskstatus","taskstatus"), new SimpleEntry<>("taskstatus", "taskstatus"),
new SimpleEntry<>("work_status","workStatus"), new SimpleEntry<>("work_status", "workStatus"),
new SimpleEntry<>("categoryid","categoryid"), new SimpleEntry<>("categoryid", "categoryid"),
new SimpleEntry<>("taskchildpictureid","taskchildpictureid"), new SimpleEntry<>("taskchildpictureid", "taskchildpictureid"),
new SimpleEntry<>("field1","field1"), new SimpleEntry<>("field1", "field1"),
new SimpleEntry<>("field2","field2"), new SimpleEntry<>("field2", "field2"),
new SimpleEntry<>("field3","field3"), new SimpleEntry<>("field3", "field3"),
new SimpleEntry<>("field4","field4"), new SimpleEntry<>("field4", "field4"),
new SimpleEntry<>("field5","field5"), new SimpleEntry<>("field5", "field5"),
new SimpleEntry<>("field6","field6"), new SimpleEntry<>("field6", "field6"),
new SimpleEntry<>("field7","field7"), new SimpleEntry<>("field7", "field7"),
new SimpleEntry<>("field8","field8"), new SimpleEntry<>("field8", "field8"),
new SimpleEntry<>("field9","field9"), new SimpleEntry<>("field9", "field9"),
new SimpleEntry<>("field10","field10"), new SimpleEntry<>("field10", "field10"),
new SimpleEntry<>("field11","field11"), new SimpleEntry<>("field11", "field11"),
new SimpleEntry<>("field12","field12"), new SimpleEntry<>("field12", "field12"),
new SimpleEntry<>("field13","field13"), new SimpleEntry<>("field13", "field13"),
new SimpleEntry<>("field14","field14"), new SimpleEntry<>("field14", "field14"),
new SimpleEntry<>("field15","field15"), new SimpleEntry<>("field15", "field15"),
new SimpleEntry<>("field16","field16"), new SimpleEntry<>("field16", "field16"),
new SimpleEntry<>("field17","field17"), new SimpleEntry<>("field17", "field17"),
new SimpleEntry<>("field18","field18") new SimpleEntry<>("field18", "field18"),
) new SimpleEntry<>("localpictrueurl", "localpictrueurl")
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue)); )
@Override .collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
public String getQueryFiled(String filedname){
String obj = null; @Override
if(null != query && query.size() > 0){ public String getQueryFiled(String filedname) {
obj = query.get(filedname); String obj = null;
} if (null != query && query.size() > 0) {
return obj; obj = query.get(filedname);
} }
return obj;
}
} }

@ -96,4 +96,6 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
* @return * @return
*/ */
int savePictures(List<OcrPicture> ocrPictureList); int savePictures(List<OcrPicture> ocrPictureList);
ResultVo createPackageTask(List<OcrPicture> pageList, String tenantId, UserToken userToken, String searchMonth, HttpServletRequest req, String buessinessno);
} }

@ -13,12 +13,15 @@ import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.*; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil; import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil; import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchEnum; import cn.jyjz.xiaoyao.ocr.util.SearchEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -48,6 +51,9 @@ import java.util.List;
@Service("ocrPictureService") @Service("ocrPictureService")
@Slf4j @Slf4j
public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao, OcrPicture> implements OcrPictureService { public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao, OcrPicture> implements OcrPictureService {
@Value("${ocr.api.wly.localImagePath}")
private String localImagePath;
@Resource @Resource
private OcrPictureMybatisDao ocrpicturemybatisdao; private OcrPictureMybatisDao ocrpicturemybatisdao;
@ -273,79 +279,175 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
return ResultVoUtil.error("失败。"); return ResultVoUtil.error("失败。");
} }
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId) {
public ResultVo createPackageTask(List<OcrPicture> ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno) {
//图片错误信息 //图片错误信息
StringBuffer error = new StringBuffer(); StringBuffer error = new StringBuffer();
//项目错误信息 //项目错误信息
StringBuffer errorProject = new StringBuffer(); StringBuffer errorProject = new StringBuffer();
//流程错误信息 //流程错误信息
StringBuffer errorFlow = new StringBuffer(); StringBuffer errorFlow = new StringBuffer();
//记录任务相似度为百分百的任务主键 //记录任务相似度为百分百的任务主键
List<Long> pointsList = new ArrayList<>(); List<Long> pointsList = new ArrayList<>();
//图片信息不能为空 //图片信息不能为空
if (null != ocrPictureList && !ocrPictureList.isEmpty()) { if (null != ocrPictureList && !ocrPictureList.isEmpty()) {
//生成任务包 //生成任务包
//String packageName = seqManageService.getSeqNextNo("AI任务包"); //String packageName = seqManageService.getSeqNextNo("AI任务包");
//创建任务包
OcrPackagetask ocrPackagetask = this.ocrPackagetaskService.create(buessinessno, tenantId, sysUser);
if (null == ocrPackagetask) {
return ResultVoUtil.error("失败。");
}
//用于标记相似度是否存在百分百的情况 //用于标记相似度是否存在百分百的情况
List<OcrPicture> newList = new ArrayList<>(); List<OcrPicture> newList = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) { for (OcrPicture ocrPicture : ocrPictureList) {
//如果当前图片已经生成任务包,直接跳过
if (ocrPicture.getTaskstatus().equals("1")) {
continue;
}
//图片查重的比对图片集合 //图片查重的比对图片集合
List<OcrPicture> compareList = new ArrayList<>(); List<OcrPicture> compareList = new ArrayList<>();
//非历史图片主键集合 //非历史图片主键集合
List<String> picturecompareList = new ArrayList<>(); List<String> picturecompareList = new ArrayList<>();
boolean havePoint = false; boolean havePoint = false;
//二次遍历进行比对 //二次遍历进行比对
for (OcrPicture ocrPictureNext : ocrPictureList) { for (OcrPicture ocrPictureNext : ocrPictureList) {
if (ocrPictureNext.getId().longValue() == ocrPicture.getId().longValue()) { if (ocrPictureNext.getId().longValue() == ocrPicture.getId().longValue()) {
continue; continue;
} }
//TODO 接口请求判断重复情况 //TODO 接口请求判断重复情况
JSONObject jsonObjectSimi = ImageClassUtil.getSimilarity(ocrPicture.getImgurl(), logService.addLog(103, "AI获取图片相似度接口", sysUser, "sendParams");
ocrPictureNext.getImgurl(), JSONObject jsonObjectSimi = ImageClassUtil.getSimilarity(StringUtils.isBlank(ocrPicture.getLocalpictrueurl()) ? ocrPicture.getImgurl() : ocrPicture.getLocalpictrueurl(),
StringUtils.isBlank(ocrPicture.getLocalpictrueurl()) ? ocrPictureNext.getImgurl() : ocrPicture.getLocalpictrueurl(),
null); null);
System.out.println("responseDataXs--code = [" + jsonObjectSimi.get("code") + "]"); System.out.println("responseDataXs--code = [" + jsonObjectSimi.get("code") + "]");
System.out.println("responseDataXs--similarity = [" + jsonObjectSimi.get("similarity") + "]"); System.out.println("responseDataXs--similarity = [" + jsonObjectSimi.get("similarity") + "]");
String resultValue = ""; String resultValue = "";
//返回内容为零,表示成功,否则表示失败 //返回内容为零,表示成功,否则表示失败
if (null != jsonObjectSimi && jsonObjectSimi.getString("code").equals("0")) { if (null != jsonObjectSimi && jsonObjectSimi.getString("code").equals("0")) {
resultValue = jsonObjectSimi.getString("similarity"); resultValue = jsonObjectSimi.getString("similarity");
ocrPictureNext.setResult(resultValue); ocrPictureNext.setResult(resultValue);
} else { } else {
resultValue = "0"; resultValue = "0";
ocrPictureNext.setResult(resultValue); ocrPictureNext.setResult(resultValue);
} }
BigDecimal b1 = new BigDecimal(resultValue); BigDecimal b1 = new BigDecimal(resultValue);
BigDecimal b2 = new BigDecimal("100"); BigDecimal b2 = new BigDecimal("100");
int val = b1.compareTo(b2); int val = b1.compareTo(b2);
if (val == 0) { if (val == 0) {
havePoint = true; havePoint = true;
} }
//如果当前图片未生成任务需要临时保存 //如果当前图片未生成任务需要临时保存
if (ocrPictureNext.getTaskstatus().equals("0")) { if (ocrPictureNext.getTaskstatus().equals("0")) {
picturecompareList.add(ocrPictureNext.getId().toString()); picturecompareList.add(ocrPictureNext.getId().toString());
} }
compareList.add(ocrPictureNext); compareList.add(ocrPictureNext);
} }
bubbleSortOpt(compareList); bubbleSortOpt(compareList);
//从大到小进行排序 //从大到小进行排序
ocrPicture.setListCom(compareList); ocrPicture.setListCom(compareList);
//非历史图片主键集合 //非历史图片主键集合
ocrPicture.setPicturecompareList(picturecompareList); 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.updateTaskChild(ocrPicture, ocrPackagetask.getId(), buessinessno);
if (null != ocrTaskchildPicture) {
if (havePoint) {
pointsList.add(ocrTaskchildPicture.getId());
}
}
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 OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) {
OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId()));
ocrTaskchildPicture.setBuessinessno(buessinessno);
ocrTaskchildPicture.setPackageid(packageid);
StringBuffer pcid = new StringBuffer();
StringBuffer result = new StringBuffer();
for (OcrPicture comp : ocrPicture.getListCom()) {
if (null == pcid || pcid.toString().length() < 1) {
pcid.append(comp.getId());
result.append(comp.getResult());
} else {
pcid.append("," + comp.getId());
result.append("," + comp.getResult());
}
}
ocrTaskchildPicture.setOcpictureid(pcid.toString());
ocrTaskchildPicture.setPictureresult(result.toString());
ocrTaskchildPicture.setPicturecompare(String.join(",", ocrPicture.getPicturecompareList()));
return ocrTaskchildPictureService.updateById(ocrTaskchildPicture) ? ocrTaskchildPicture : null;
}
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId) {
//图片错误信息
StringBuffer error = new StringBuffer();
//项目错误信息
StringBuffer errorProject = new StringBuffer();
//流程错误信息
StringBuffer errorFlow = new StringBuffer();
//图片信息不能为空
if (null != ocrPictureList && !ocrPictureList.isEmpty()) {
//用于标记相似度是否存在百分百的情况
List<OcrPicture> newList = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) {
boolean havePoint = false;
//查询项目对象 //查询项目对象
if (null == ocrPicture.getCategoryid()) { if (null == ocrPicture.getCategoryid()) {
//TODO 没有对应项目,返回提示信息 //TODO 没有对应项目,返回提示信息
@ -388,41 +490,19 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
ocrTaskchildPicture.getId().toString(), ocrTaskchildPicture.getId().toString(),
category.getServicename() category.getServicename()
); );
if (havePoint) {
pointsList.add(ocrTaskchildPicture.getId());
}
//TODO 需要测试 //TODO 需要测试
ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString());
ocrPicture.setWorkStatus("1");
this.updateById(ocrPicture); 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)) { if (StringUtils.isBlank(error) && StringUtils.isBlank(errorProject) && StringUtils.isBlank(errorFlow)) {
return ResultVoUtil.success(); return ResultVoUtil.success();
} else { } else {
String msg = (StringUtils.isBlank(error)) ? "" : error.toString() + ",图片没有对应项目,无法查重。"; String msg = (StringUtils.isBlank(error)) ? "" : error.toString() + ",图片没有对应项目,无法查重。";
msg = msg + ((StringUtils.isBlank(errorProject)) ? "" : errorProject.toString() + ",图片没有对应项目,无法查重。"); msg = msg + ((StringUtils.isBlank(errorProject)) ? "" : errorProject.toString() + ",图片没有对应项目,无法查重。");
msg = msg + ((StringUtils.isBlank(errorFlow)) ? "" : errorFlow.toString() + ",项目没有配置审批流程,无法查重。"); msg = msg + ((StringUtils.isBlank(errorFlow)) ? "" : errorFlow.toString() + ",项目没有配置审批流程,无法查重。");
return ResultVoUtil.success(msg); return ResultVoUtil.success(msg);
} }
} }
return ResultVoUtil.error("失败。"); return ResultVoUtil.error("失败。");
} }
@ -675,7 +755,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public int savePictures(List<OcrPicture> ocrPictureList) { public int savePictures(List<OcrPicture> ocrPictureList) {
//1.字典数据 解析入库 //1.字典数据 解析入库
boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList);
@ -687,18 +766,27 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
picture.setImgurl(interfaceDomain + picture.getImgurl()); picture.setImgurl(interfaceDomain + picture.getImgurl());
} }
boolean saveBatch = this.saveBatch(ocrPictureList);
//3.添加图片信息 //3.添加图片信息
if (this.saveBatch(ocrPictureList)) { if (saveBatch) {
this.convertImage(ocrPictureList);
this.createTaskChild(ocrPictureList, ocrPictureList.get(0).getTenantId().toString()); this.createTaskChild(ocrPictureList, ocrPictureList.get(0).getTenantId().toString());
return ocrPictureList.size(); return ocrPictureList.size();
} }
return 0; return 0;
} }
private void convertImage(List<OcrPicture> list) {
for (OcrPicture ocrPicture : list) {
PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
entity.setPictureId(ocrPicture.getId());
entity.setImgUrl(ocrPicture.getImgurl());
String imgurl = ocrPicture.getImgurl();
entity.setLocalPath(localImagePath + imgurl.substring(imgurl.lastIndexOf("/")));
TaskQueue.pictureImgToLocalPushData(entity);
}
}
/** /**
* *
* *

@ -455,21 +455,21 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
ocrTaskchildPicture.setFromprojectid(ocrPicture.getProjectid()); ocrTaskchildPicture.setFromprojectid(ocrPicture.getProjectid());
ocrTaskchildPicture.setFromuserid(ocrPicture.getUpuserid()); ocrTaskchildPicture.setFromuserid(ocrPicture.getUpuserid());
StringBuffer pcid = new StringBuffer(); // StringBuffer pcid = new StringBuffer();
StringBuffer result = new StringBuffer(); // StringBuffer result = new StringBuffer();
for(OcrPicture comp:ocrPicture.getListCom()){ // for(OcrPicture comp:ocrPicture.getListCom()){
if(null == pcid || pcid.toString().length() < 1){ // if(null == pcid || pcid.toString().length() < 1){
pcid.append(comp.getId()); // pcid.append(comp.getId());
result.append(comp.getResult()); // result.append(comp.getResult());
}else{ // }else{
pcid.append("," + comp.getId()); // pcid.append("," + comp.getId());
result.append("," + comp.getResult()); // result.append("," + comp.getResult());
} // }
} // }
//
ocrTaskchildPicture.setOcpictureid(pcid.toString()); // ocrTaskchildPicture.setOcpictureid(pcid.toString());
ocrTaskchildPicture.setPictureresult(result.toString()); // ocrTaskchildPicture.setPictureresult(result.toString());
ocrTaskchildPicture.setPicturecompare(String.join(",",ocrPicture.getPicturecompareList())); // ocrTaskchildPicture.setPicturecompare(String.join(",",ocrPicture.getPicturecompareList()));
return this.save(ocrTaskchildPicture)?ocrTaskchildPicture:null; return this.save(ocrTaskchildPicture)?ocrTaskchildPicture:null;
} }

@ -68,10 +68,10 @@ public class TaskQueue {
} }
/** /**
* *
* @return * @return
*/ */
public static PictureImgToLocalEntity pictureImgToLocalPullData(){ public static PictureImgToLocalEntity pictureImgToLocalPullData(){
return (PictureImgToLocalEntity) pictureDisposeQueue.poll(); return (PictureImgToLocalEntity) pictureImgToLocalQueue.poll();
} }
} }

@ -1,4 +1,5 @@
package cn.jyjz.xiaoyao.ocr.thread; package cn.jyjz.xiaoyao.ocr.thread;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDisposeTask; import cn.jyjz.xiaoyao.ocr.thread.tasks.PictureDisposeTask;
@ -21,8 +22,8 @@ public class TaskThreadPool {
private static Logger logger = LoggerFactory.getLogger(TaskQueue.class); private static Logger logger = LoggerFactory.getLogger(TaskQueue.class);
ExecutorService threadPool = null; ExecutorService threadPool = null;
public TaskThreadPool(){ public TaskThreadPool() {
if(threadPool ==null){ if (threadPool == null) {
threadPool = new ThreadPoolExecutor( threadPool = new ThreadPoolExecutor(
10, 10,
40, 40,
@ -36,50 +37,59 @@ public class TaskThreadPool {
/** /**
* *
*
* @return * @return
*/ */
public boolean startPictureDisposePull(){ public boolean startPictureDisposePull() {
Runnable runnable = new Runnable() { Runnable runnable = new Runnable() {
@SneakyThrows @SneakyThrows
@Override @Override
public void run() { public void run() {
logger.debug("无量云接口数据处理消费线程检测中..."); logger.debug("无量云接口数据处理消费线程检测中...");
while (true){ while (true) {
PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData(); PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData();
if(pictureSourceResult!=null){ if (pictureSourceResult != null) {
threadPool.execute(new PictureDisposeTask(pictureSourceResult)); threadPool.execute(new PictureDisposeTask(pictureSourceResult));
}else{ } else {
Thread.sleep(5000); Thread.sleep(5000);
} }
} }
} }
}; };
Thread thread=new Thread(runnable); Thread thread = new Thread(runnable);
thread.start(); thread.start();
return true; return true;
} }
/** /**
* *
*
* @return * @return
*/ */
public boolean startPictureImgToLocalPull(){ public boolean startPictureImgToLocalPull() {
Runnable runnable = new Runnable() { Runnable runnable = new Runnable() {
@SneakyThrows @SneakyThrows
@Override @Override
public void run() { public void run() {
logger.debug("图片下载消费线程检测中..."); logger.debug("图片下载消费线程检测中...");
while (true){
PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData(); while (true) {
if(pictureImgToLocalEntity!=null){ try {
threadPool.execute(new PictureImgToLocalTask(pictureImgToLocalEntity)); PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData();
}else{ if (pictureImgToLocalEntity != null) {
threadPool.execute(new PictureImgToLocalTask(pictureImgToLocalEntity));
} else {
Thread.sleep(5000);
}
} catch (Exception e) {
logger.error("图片下载消费线程报错{}", e.getMessage());
Thread.sleep(5000); Thread.sleep(5000);
} }
} }
} }
}; };
Thread thread=new Thread(runnable); Thread thread = new Thread(runnable);
thread.start(); thread.start();
return true; return true;
} }

@ -1,5 +1,7 @@
package cn.jyjz.xiaoyao.ocr.thread.tasks; package cn.jyjz.xiaoyao.ocr.thread.tasks;
import cn.hutool.core.util.ObjectUtil;
import cn.jyjz.xiaoyao.common.base.util.ObjectUtils;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils; import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.util.StringUtils; import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult; import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
@ -21,19 +23,28 @@ import java.util.Map;
* @version 1.0 * @version 1.0
* @date 2024/3/14 11:15 * @date 2024/3/14 11:15
*/ */
public class PictureImgToLocalTask implements Runnable{ public class PictureImgToLocalTask implements Runnable {
protected Logger logger = LoggerFactory.getLogger(getClass()); protected Logger logger = LoggerFactory.getLogger(getClass());
private PictureImgToLocalEntity pictureImgToLocal; private PictureImgToLocalEntity pictureImgToLocal;
public PictureImgToLocalTask(PictureImgToLocalEntity pictureImgToLocal){ public PictureImgToLocalTask(PictureImgToLocalEntity pictureImgToLocal) {
this.pictureImgToLocal = pictureImgToLocal; this.pictureImgToLocal = pictureImgToLocal;
} }
@Override @Override
public void run() { public void run() {
OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService");
OcrPicture picture = ocrPictureService.getById(pictureImgToLocal.getPictureId());
//1.开始转储图片 //1.开始转储图片
DownloadImgUtil.downloadImage(pictureImgToLocal.getImgUrl(), pictureImgToLocal.getLocalPath()); Boolean result = DownloadImgUtil.downloadImage(pictureImgToLocal.getImgUrl(), pictureImgToLocal.getLocalPath());
if (Boolean.TRUE.equals(result)) {
if (ObjectUtil.isNotEmpty(picture)) {
picture.setLocalpictrueurl(pictureImgToLocal.getLocalPath());
picture.setIsdownload(1);
ocrPictureService.updateById(picture);
}
}
} }

@ -19,10 +19,11 @@ public class DownloadImgUtil {
/** /**
* *
*
* @param imageUrl * @param imageUrl
* @param destinationFile * @param destinationFile
*/ */
public static void downloadImage(String imageUrl, String destinationFile) { public static Boolean downloadImage(String imageUrl, String destinationFile) {
try (InputStream in = new URL(imageUrl).openStream(); try (InputStream in = new URL(imageUrl).openStream();
FileOutputStream out = new FileOutputStream(destinationFile)) { FileOutputStream out = new FileOutputStream(destinationFile)) {
@ -33,7 +34,9 @@ public class DownloadImgUtil {
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
return false;
} }
return true;
} }

@ -1,4 +1,3 @@
server: server:
compression: compression:
enabled: true enabled: true
@ -281,4 +280,5 @@ ocr:
accessKey: 7390F0221A1A73D8E13F8C8BB96F33B0 #秘钥 accessKey: 7390F0221A1A73D8E13F8C8BB96F33B0 #秘钥
accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码 accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码
connectTimeout: 5000 #请求超时时间 毫秒 connectTimeout: 5000 #请求超时时间 毫秒
readTimeout: 60000 #接收超时时间 毫秒 readTimeout: 60000 #接收超时时间 毫秒
localImagePath: /server/data/images #图片本地存储地址

@ -285,5 +285,5 @@ ocr:
accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码 accessCode: ED6F7B39768AF95E87AEA8ACCCC71A6F #秘钥编码
connectTimeout: 5000 #请求超时时间 毫秒 connectTimeout: 5000 #请求超时时间 毫秒
readTimeout: 60000 #接收超时时间 毫秒 readTimeout: 60000 #接收超时时间 毫秒
localImagePath: /server/data/images #图片本地存储地址

Loading…
Cancel
Save