Merge remote-tracking branch 'origin/master'

dev
ljt 1 year ago
commit 163e264375

@ -3,26 +3,22 @@ package cn.jyjz.xiaoyao.ocr.controller;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.text.ParseException; import java.util.HashMap;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService; import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.util.DataUtil; import cn.jyjz.xiaoyao.ocr.util.DataUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchConfigEnum; import cn.jyjz.xiaoyao.ocr.util.SearchConfigEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -32,15 +28,11 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService; import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService; import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController; import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -148,11 +140,15 @@ public class OcrPictureController extends BaseController{
String buessinessno = req.getParameter("buessinessno"); String buessinessno = req.getParameter("buessinessno");
//搜索时间段 //搜索时间段
// 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)));
// }else if(StringUtils.isNotBlank(search_month) && 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)));
}else if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20){
queryWrapper.le("create_time",DataUtil.afterDateByWeek(Integer.parseInt(search_month) - 20));
} }
//判断是否需要查询历史记录 //判断是否需要查询历史记录
@ -160,6 +156,18 @@ public class OcrPictureController extends BaseController{
queryWrapper.eq("taskstatus", search_history); queryWrapper.eq("taskstatus", search_history);
} }
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map
Map<String,Object> paraMap = new HashMap<>();
for(SearchConfigEnum config : SearchConfigEnum.values()){
String searchvalue = req.getParameter(config.getId());
if(StringUtils.isNotBlank(searchvalue)){
paraMap.put(config.getMeaning(),searchvalue);
}
}
//调用查询参数解析方法解析为queryWrapper
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);
@ -173,7 +181,6 @@ public class OcrPictureController extends BaseController{
}else{ }else{
return ResultVoUtil.error("没有查重数据。"); return ResultVoUtil.error("没有查重数据。");
} }
//return Result.error("失败。");
} }
/** /**
@ -217,41 +224,16 @@ public class OcrPictureController extends BaseController{
queryWrapper.le("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month))); queryWrapper.le("create_time",DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
} }
//根据参数枚举获取检索参数并映射为数据库的字段的key-v map
Map<String,Object> paraMap = new HashMap<>();
for(SearchConfigEnum config : SearchConfigEnum.values()){ for(SearchConfigEnum config : SearchConfigEnum.values()){
String searchvalue = req.getParameter(config.getId());
//相似度不在搜索范围内 if(StringUtils.isNotBlank(searchvalue)){
if(!config.getId().equals("izSimilarity")){ paraMap.put(config.getMeaning(),searchvalue);
String searchvalue = req.getParameter(config.getId());
if(StringUtils.isNotBlank(searchvalue)){
if(config.getId().equals("izYear")){
//针对年份搜索,需要拆分
String[] year = searchvalue.split(",");
//当前数据必须是两条
if(year.length == 2){
java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date start = null;
Date end = null;
try {
start = sdf.parse(year[0]);
end = sdf.parse(year[1]);
} catch (ParseException e) {
continue;
}
queryWrapper.ge(config.getMeaning(),start);
queryWrapper.le(config.getMeaning(),end);
}
}else{
queryWrapper.eq(config.getMeaning(),searchvalue);
}
}
} }
} }
//调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper,paraMap);
queryWrapper.eq("tenant_id",tenantId); queryWrapper.eq("tenant_id",tenantId);
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize); Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);

@ -16,6 +16,7 @@ import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
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.httputil.HttpClient; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpHeader; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpHeader;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers;
@ -536,7 +537,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
boolean queryType = "eq".equals(usersearchchild.getSearchtype()); boolean queryType = "eq".equals(usersearchchild.getSearchtype());
//1.获取检查数据,确定数据类型 //1.获取检查数据,确定数据类型
String valueType = clickSearchValue(usersearchchild.getSearchvalue()); String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue());
List<String> arrayData = null; //集合型数据 List<String> arrayData = null; //集合型数据
List<Integer> sectionInts =null; //纯数字区间型数据 List<Integer> sectionInts =null; //纯数字区间型数据
String[] sections =null; //字符串区间型数据 String[] sections =null; //字符串区间型数据
@ -627,39 +628,5 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return queryWrapper; return queryWrapper;
} }
/**
*
* : xxx,xxx (array)
* : xxx-xxx (section)
* xxxx/xx/xx-xxxx/xx/xx (time)
* : xxxx (text)
* @param searchvalue
* @return
*/
private String clickSearchValue(String searchvalue){
searchvalue = searchvalue.trim().replaceAll("\\s+", "");
//1.判断是否为数组格式
if(searchvalue.indexOf(",")>0){
return "array";
}
//2.判断是否为区间
if(searchvalue.indexOf("-")>0){
String [] datas = searchvalue.split("-");
if(datas!=null && datas.length==2){
//2.1 判断是时间区间,还是数字区间
try {
DateTime beginTime = DateUtil.parse(datas[0],"yyyy/MM/dd");
DateTime endTime = DateUtil.parse(datas[0],"yyyy/MM/dd");
if(beginTime!=null && endTime!=null){
return "time";
}
}catch (Exception e){
}
return "section";
}
}
//3.都不是就按text文本处理
return "text";
}
} }

@ -343,9 +343,9 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
queryWrapper.orderByDesc("FROMUPTIME"); queryWrapper.orderByDesc("FROMUPTIME");
} }
}else{
queryWrapper.in("PICTUREID",mainOcrTaskchildPicture.getOcpictureid().split(","));
} }
queryWrapper.in("PICTUREID",mainOcrTaskchildPicture.getOcpictureid().split(","));
IPage<OcrTaskchildPicture> iPage = this.page(page,queryWrapper); IPage<OcrTaskchildPicture> iPage = this.page(page,queryWrapper);

@ -33,18 +33,18 @@ public enum SearchConfigEnum {
//所属项目、拜访客户类型、拜访客户级别、拜访客户名称、拜访项目类别、任务来源、任务状态、拜访省份/直辖市、、厂商、产品名称、 //所属项目、拜访客户类型、拜访客户级别、拜访客户名称、拜访项目类别、任务来源、任务状态、拜访省份/直辖市、、厂商、产品名称、
//提报人 //提报人
UPUSERSEARCH("izUpuser","upName"), UPUSERSEARCH("izupuser","upName"),
//所属计划 //所属计划
PLANSEARCH("izPlan","planName"), PLANSEARCH("izplan","planName"),
//相似度 //相似度
SIMISEARCH("izSimilarity","pictureresult"), SIMISEARCH("izsimilarity","pictureresult"),
//分类搜索 //分类搜索
CLASSISEARCH("izShow","classificationid"), CLASSISEARCH("izshow","classificationid"),
//是否展示年份 //是否展示年份
YEARSEARCH("izYear","upTime"), YEARSEARCH("izyear","upTime"),
//图片类型 //图片类型
TYPESEARCH("izPicturetype","pictureclassid"), TYPESEARCH("izpicturetype","pictureclassid"),
//发布地区、拜访城市 //发布地区、拜访城市
AREASEARCH("izvisitcity","releaseArea"), AREASEARCH("izvisitcity","releaseArea"),

@ -0,0 +1,149 @@
package cn.jyjz.xiaoyao.ocr.util;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* QueryWrapper
* :
* : xxx,xxx (array)
* : xxx-xxx (section)
* xxxx/xx/xx-xxxx/xx/xx (time)
* : xxxx (text)
* @author hugh(shuli.yao) 1397940314@qq.com
* @version 1.0
* @date 2024/3/12 10:49
*/
public class SearchParaFormatting {
/**
* queryWrapper
* @param queryWrapper
* @param para
* @return
*/
public static QueryWrapper searchParaParse(QueryWrapper queryWrapper, Map<String,Object> para){
for (String key : para.keySet()) {
Object value = para.get(key);
if(value==null || StringUtils.isEmpty(value.toString())){
continue;
}
//检查数据原始类型,字符串还是整型、或小数
String paraValueType = "str";
if (value instanceof Integer) {
paraValueType = "int";
}else if(value instanceof Double){
paraValueType = "double";
}
//参数统一先转换成 字符串进行解析
String searchValue =value.toString();
//1.获取检查数据,确定数据类型
String valueType = SearchParaFormatting.clickSearchValue(searchValue);
List<String> arrayData = null; //集合型数据
List<Integer> sectionInts =null; //纯数字区间型数据
String[] sections =null; //字符串区间型数据
DateTime beginTime =null; //日期时间区间型数据
DateTime endTime=null; //日期时间区间型数据
//2.根据数据类型,解构数据
switch (valueType){
case "array":
//处理多文件
String [] datas =searchValue.split(",");
arrayData = Arrays.asList(datas);
break;
case "section":
//格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除.
sections =searchValue.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 =searchValue.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":
//集合数据
queryWrapper.in(key,arrayData);
break;
case "section":
//数字区间查询
if(sectionInts!=null && sectionInts.size()==2){
//相等
queryWrapper.between(key,sectionInts.get(0),sectionInts.get(1));
break;
}
queryWrapper.between(key,sections[0],sections[1]);
break;
case "time":
//时间区间数据
//相等
queryWrapper.between(key,beginTime.getTime(),endTime.getTime());
break;
default:
if("int".equals(paraValueType)){
queryWrapper.eq(key, Integer.parseInt(searchValue));
}else if("double".equals(paraValueType)){
queryWrapper.eq(key, Double.parseDouble(searchValue));
}else{
queryWrapper.eq(key, searchValue);
}
}
}
return queryWrapper;
}
/**
*
* @param searchvalue
* @return
*/
public static String clickSearchValue(String searchvalue){
searchvalue = searchvalue.trim().replaceAll("\\s+", "");
//1.判断是否为数组格式
if(searchvalue.indexOf(",")>0){
return "array";
}
//2.判断是否为区间
if(searchvalue.indexOf("-")>0){
String [] datas = searchvalue.split("-");
if(datas!=null && datas.length==2){
//2.1 判断是时间区间,还是数字区间
try {
DateTime beginTime = DateUtil.parse(datas[0],"yyyy/MM/dd");
DateTime endTime = DateUtil.parse(datas[0],"yyyy/MM/dd");
if(beginTime!=null && endTime!=null){
return "time";
}
}catch (Exception e){
}
return "section";
}
}
//3.都不是就按text文本处理
return "text";
}
}
Loading…
Cancel
Save