feat: 自定义查询条件、图片自定义条件查询

1.自定义查询条件,增加字段,筛选关系、排序字段
2.增加根据自定义条件id查询图片接口
dev
shuliYao 1 year ago
parent 241cd06b19
commit 3d608c21c5

@ -78,7 +78,7 @@ public class OcrPictureController extends BaseController{
HttpServletRequest req) {
return ocrTaskchildPictureService.closeOrder(orderid)?ResultVoUtil.success():ResultVoUtil.error("失败");
}
/**
* @MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc=
*@MM1vvPNHRprA7ScHnwE+WG6yz7hcA/u3tzMj6pSdvwc=
@ -103,15 +103,15 @@ public class OcrPictureController extends BaseController{
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);
return ResultVoUtil.success(pageList);
}
/**
*
*
@ -129,24 +129,24 @@ public class OcrPictureController extends BaseController{
@GetMapping(value = "/createorder")
public ResultVo createorder(OcrPicture ocrPicture,
HttpServletRequest req) {
//获取当前登录人
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(req));
//租户主键,由前端页面传送
String tenantId = req.getHeader("X-Tenant-Id");
if(StringUtils.isBlank(tenantId)){
return ResultVoUtil.error("租户主键不能为空");
}
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper<>();
//是否查询历史记录
String search_history = req.getParameter("search_history");
//任务包名称
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){
@ -154,16 +154,16 @@ public class OcrPictureController extends BaseController{
}else if(StringUtils.isNotBlank(search_month) && Integer.parseInt(search_month) > 20){
queryWrapper.le("createTime",DataUtil.afterDateByWeek(Integer.parseInt(search_month) - 20));
}
//判断是否需要查询历史记录
if(search_history.equals("0")){
queryWrapper.eq("taskstatus", search_history);
}
queryWrapper.eq("tenant_id",tenantId);
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper);
if(null != pageList && !pageList.isEmpty()){
if(pageList.size() == 1){
return ResultVoUtil.error("查重数据至少要有两条。");
@ -175,7 +175,7 @@ public class OcrPictureController extends BaseController{
}
//return Result.error("失败。");
}
/**
*
*
@ -202,24 +202,24 @@ public class OcrPictureController extends BaseController{
if(StringUtils.isBlank(tenantId)){
return ResultVoUtil.error("租户主键不能为空");
}
QueryWrapper<OcrPicture> 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("createTime",DataUtil.afterDateByMonth(Integer.parseInt(search_month)));
}
for(SearchConfigEnum config : SearchConfigEnum.values()){
//相似度不在搜索范围内
if(!config.getId().equals("izSimilarity")){
String searchvalue = req.getParameter(config.getId());
@ -238,36 +238,68 @@ public class OcrPictureController extends BaseController{
} catch (ParseException e) {
continue;
}
queryWrapper.ge(config.getMeaning(),start);
queryWrapper.le(config.getMeaning(),end);
}
}else{
queryWrapper.eq(config.getMeaning(),searchvalue);
}
}
}
}
queryWrapper.eq("tenant_id",tenantId);
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())){
OcrPictureclass ocrPictureclass = this.ocrPictureclassService.getById(ocrPicture1.getPictureclassid());
ocrPicture1.setOcrPictureclass(ocrPictureclass);
}
}
return ResultVoUtil.success(pageList);
}
/**
*
*
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@ApiOperation(value="图片分页列表查询-根据用户预设检索条件查询", notes="")
@ApiImplicitParams({
@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(
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
//租户主键,由前端页面传送
String tenantId = req.getHeader("X-Tenant-Id");
if(StringUtils.isBlank(tenantId)){
return ResultVoUtil.error("租户主键不能为空");
}
//获取用户预设检索条件id
String userSearchId = req.getParameter("userSearchId");
IPage<OcrPicture> pageList = ocrPictureService.queryPageByUserSearchId(pageNo,pageSize,userSearchId);
return ResultVoUtil.success(pageList);
}
/**
*
*
@ -279,7 +311,7 @@ public class OcrPictureController extends BaseController{
@PostMapping(value = "/loadpicture")
public ResultVo loadpicture(OcrPicture ocrPicture,
HttpServletRequest request) {
BufferedReader streamReader = null;
try {
streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(),"UTF-8"));
@ -298,17 +330,17 @@ public class OcrPictureController extends BaseController{
log.error("【数据接收】jsonFormatError:{}",e);
logService.addLog(101,"接收数据失败。",null,null);
}
logService.addLog(101,"接收数据成功。",null,null);
JSONObject jsonArray = JSONObject.parseObject(sb.toString());
//TODO 结束json数据并持久化
//this.ocrPictureService
//TODO AI获取图片分类接口
logService.addLog(102,"AI获取图片分类接口。",null,null);
return ResultVoUtil.success();
}

@ -19,8 +19,8 @@ import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
@Data
@Builder
@ -29,30 +29,38 @@ import java.util.stream.Collectors;
@Schema(name = "个人过滤条件子表", title = "个人过滤条件子表")
@TableName(value = "ocr_usersearchchild")
public class OcrUsersearchchild implements BaseDto,java.io.Serializable {
private static final long serialVersionUID = 6404860339470764341L;
@Schema(description = "主键")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
@TableField(value="ID")
private Long id;
@Schema(description = "过滤条件主表主键")
@TableField(value="usersearchid")
private Long usersearchid;
@Schema(description = "过滤内容,搜索的字段名称")
@TableField(value="searchfield")
private String searchfield;
@Schema(description = "比较类型")
@TableField(value="searchtype")
private String searchtype;
@Schema(description = "比较内容,如果是多个使用英文逗号分隔")
@TableField(value="searchvalue")
private String searchvalue;
@Schema(description = "筛选关系 当(where)、与(and)、或(or),多条件下的并集与、或关系")
@TableField(value="search_relation_type")
private String searchRelationType;
@Schema(description = "排序字段,用于规范多筛选下顺序")
@TableField(value="order_num")
private String orderNum;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore
@ -66,7 +74,9 @@ public class OcrUsersearchchild implements BaseDto,java.io.Serializable {
new SimpleEntry<>("usersearchid","usersearchid"),
new SimpleEntry<>("searchfield","searchfield"),
new SimpleEntry<>("searchtype","searchtype"),
new SimpleEntry<>("searchvalue","searchvalue")
new SimpleEntry<>("searchvalue","searchvalue"),
new SimpleEntry<>("search_relation_type","searchRelationType"),
new SimpleEntry<>("order_num","orderNum")
)
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
@Override

@ -12,6 +12,7 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureNotes;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicturejob;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.servlet.http.HttpServletRequest;
@ -19,19 +20,19 @@ import javax.servlet.http.HttpServletRequest;
*
*/
public interface OcrPictureService extends BaseService<OcrPicture> {
List<OcrPicture> listPage(Wrapper<OcrPicture> queryWrapper);
/**
* json
* @param jsonArray
* @return
*/
public List<OcrPicture> savePicture(JSONObject jsonArray);
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId , UserToken sysUser, String search_month, HttpServletRequest req, String buessinessno);
/**
*
* @param tenantId
@ -39,13 +40,13 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
* @return
*/
public List<OcrPicture> listByTaskChild(String tenantId,String createuser,String isclose,String tasktype,String packageid);
/**
*
* @return
*/
public List<OcrPicture> listByTaskChild(List<String> pictureid);
/**
*
*
@ -54,7 +55,7 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
* @param ocrPictureNotesList
*/
public void saveMain(OcrPicture ocrPicture, List<OcrPicturejob> ocrPicturejobList, List<OcrPictureNotes> ocrPictureNotesList) ;
/**
*
*
@ -63,20 +64,28 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
* @param ocrPictureNotesList
*/
public void updateMain(OcrPicture ocrPicture,List<OcrPicturejob> ocrPicturejobList,List<OcrPictureNotes> ocrPictureNotesList);
/**
*
*
* @param id
*/
public void delMain (String id);
/**
*
*
* @param idList
*/
public void delBatchMain (Collection<? extends Serializable> idList);
/**
* id
* @param pageNo
* @param pageSize
* @param userSearchId
* @return
*/
IPage<OcrPicture> queryPageByUserSearchId(Integer pageNo, Integer pageSize, String userSearchId);
}

@ -2,14 +2,16 @@ package cn.jyjz.xiaoyao.ocr.service;
import java.util.List;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
*
*/
public interface OcrPictureclassService extends BaseService<OcrPictureclass> {
/**
*
*

@ -8,25 +8,32 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
*
*/
public interface OcrUsersearchService extends BaseService<OcrUsersearch> {
/**
*
* @param ids
* @return
*/
public boolean removeByIds(String ids);
/**
*
* @param ids
* @return
*/
public boolean removeChildByIds(String ids);
/**
*
* @param userid
* @return
*/
public int getReorder(Long userid);
/**
* id
* @param userSearchId
* @return
*/
OcrUsersearch selectByUserSearchId(String userSearchId);
}

@ -1,5 +1,7 @@
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;
@ -23,6 +25,8 @@ 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;
@ -37,6 +41,7 @@ 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;
/**
@ -47,12 +52,12 @@ import java.util.List;
public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao, OcrPicture> implements OcrPictureService {
@Resource
private OcrPictureMybatisDao ocrpicturemybatisdao;
@Resource
private OcrPicturejobService ocrPicturejobService;
@Resource
private OcrPictureNotesService ocrPictureNotesService;
@Resource
private OcrPackagetaskService ocrPackagetaskService;
@Resource
@ -63,102 +68,108 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
private OcrTaskchildPictureService ocrTaskchildPictureService;
@Resource
IFlowInstanceService flowInstanceService;
@Resource
private OcrUsersearchService ocrUsersearchService;
@Resource
private OcrPictureclassService ocrPictureclassService;
@Resource
private CategoryService categoryService;
public ResultVo createTaskChild(List<OcrPicture> 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<Long> 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<OcrPicture> newList = new ArrayList<>();
for(OcrPicture ocrPicture:ocrPictureList){
//如果当前图片已经生成任务包,直接跳过
if(ocrPicture.getTaskstatus().equals("1")){
continue;
}
//图片查重的比对图片集合
List<OcrPicture> compareList = new ArrayList<>();
//非历史图片主键集合
List<String> 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 没有对应项目,返回提示信息
@ -185,11 +196,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
continue;
}
//创建工单,如果创建成功,增加标志,用于过滤条件使用
OcrTaskchildPicture ocrTaskchildPicture = this.ocrTaskchildPictureService.create(ocrPicture,tenantId,sysUser,ocrPackagetask.getId(),buessinessno);
if(null != ocrTaskchildPicture){
//发起流程
flowInstanceService.startProcessInstanceById(
category.getProcessdefinitionid(),
@ -198,29 +209,29 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
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)));
@ -228,29 +239,29 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
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<OcrPicture> compareList) {
if(null == compareList) {
return;
}
@ -272,43 +283,43 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
*/
public List<OcrPicture> savePicture(JSONObject jsonArray){
List<OcrPicture> list = new ArrayList<>();
return list;
}
public List<OcrPicture> listPage( Wrapper<OcrPicture> queryWrapper){
long count = this.count(queryWrapper);
Page<OcrPicture> ocrPicturePage = new Page<>(1,count);
ocrPicturePage.setMaxLimit(count);
IPage<OcrPicture> iPage = this.page(ocrPicturePage,queryWrapper);
return iPage.getRecords();
}
public List<OcrPicture> listByTaskChild(String tenantId,String createuser,String isclose,String tasktype,String packageid){
List<OcrPicture> 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<OcrTaskchildPicture> list = ocrTaskchildPictureService.listAll(tenantId,createuser,queryWrapper);
for(OcrTaskchildPicture ocrTaskchildPicture:list){
@ -317,11 +328,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
resultPicture.add(view(ocrTaskchildPicture));
}
}
return resultPicture;
}
/**
*
* @return
@ -331,14 +342,14 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
//查询工单集合
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("pictureid",pictureidlist);
long count = this.ocrTaskchildPictureService.count(queryWrapper);
Page<OcrTaskchildPicture> page = new Page<>(1, count);
page.setMaxLimit(count);
IPage<OcrTaskchildPicture> iPage = this.ocrTaskchildPictureService.page(page,queryWrapper);
List<OcrTaskchildPicture> list = iPage.getRecords();
for(OcrTaskchildPicture ocrTaskchildPicture:list){
OcrPicture ocrPicture = view(ocrTaskchildPicture);
@ -346,64 +357,64 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
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<OcrPicture> listCom = null;
//判断查重图片是否为空
if(StringUtils.isNotBlank(ocrTaskchildPicture.getOcpictureid())){
//图片比较数量不确定
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("id",ocrTaskchildPicture.getOcpictureid().split(","));
long count = this.count(queryWrapper);
Page<OcrPicture> ocrPicturePage = new Page<>(1,count);
ocrPicturePage.setMaxLimit(count);
IPage<OcrPicture> 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<OcrPicturejob> ocrPicturejobList, List<OcrPictureNotes> ocrPictureNotesList) {
@ -423,16 +434,16 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMain(OcrPicture ocrPicture,List<OcrPicturejob> ocrPicturejobList,List<OcrPictureNotes> 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) {
@ -449,7 +460,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delMain(String id) {
@ -457,7 +468,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
ocrPictureNotesService.deleteByMainId(id);
ocrpicturemybatisdao.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delBatchMain(Collection<? extends Serializable> idList) {
@ -467,6 +478,188 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
ocrpicturemybatisdao.deleteById(id);
}
}
@Override
public IPage<OcrPicture> queryPageByUserSearchId(Integer pageNo, Integer pageSize, String userSearchId) {
OcrUsersearch ocrUsersearch= ocrUsersearchService.selectByUserSearchId(userSearchId);
QueryWrapper<OcrPicture> queryWrapper = new QueryWrapper();
for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) {
this.formattingSearchChild(queryWrapper,usersearchchild);
}
//分页查询并组装子集数据
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> 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;
}
/**
*
* @param queryWrapper
* @param usersearchchild
* @return
*/
private QueryWrapper<OcrPicture> formattingSearchChild(QueryWrapper<OcrPicture> 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<OcrPicture> formattingSearchType(QueryWrapper<OcrPicture> queryWrapper,OcrUsersearchchild usersearchchild){
//查询类型 相等true 不相等fase
boolean queryType = "eq".equals(usersearchchild.getSearchtype());
//1.获取检查数据,确定数据类型
String valueType = clickSearchValue(usersearchchild.getSearchvalue());
List<String> arrayData = null; //集合型数据
List<Integer> 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;
}
/**
*
* : 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";
}
}

@ -1,16 +1,21 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureclassMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureclass;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureclassService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
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.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
@ -21,16 +26,18 @@ import java.util.List;
public class OcrPictureclassServiceImpl extends BaseServiceImpl<OcrPictureclassMybatisDao, OcrPictureclass> implements OcrPictureclassService {
@Autowired
private OcrPictureclassMybatisDao ocrpictureclassmybatisdao;
@Override
public List<OcrPictureclass> queryListNoPage(QueryWrapper<OcrPictureclass> queryWrapper) {
Long count = ocrpictureclassmybatisdao.selectCount(queryWrapper);
Page<OcrPictureclass> page = new Page(1,count);
page.setMaxLimit(count);
IPage<OcrPictureclass> iPage = this.page(page,queryWrapper);
return iPage.getRecords();
}
}

@ -2,6 +2,7 @@ package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrUsersearchMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchchildService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -21,18 +22,18 @@ import java.util.List;
public class OcrUsersearchServiceImpl extends BaseServiceImpl<OcrUsersearchMybatisDao, OcrUsersearch> implements OcrUsersearchService {
@Resource
private OcrUsersearchMybatisDao ocrusersearchmybatisdao;
@Resource
private OcrUsersearchchildService ocrUsersearchchildService;
public boolean removeByIds(String ids){
this.ocrusersearchmybatisdao.deleteBatchIds(Arrays.asList(ids.split(",")));
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("usersearchid",Arrays.asList(ids.split(",")));
return this.ocrUsersearchchildService.remove(queryWrapper);
}
/**
*
* @param ids
@ -41,10 +42,10 @@ public class OcrUsersearchServiceImpl extends BaseServiceImpl<OcrUsersearchMybat
public boolean removeChildByIds(String ids){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.in("usersearchid",Arrays.asList(ids.split(",")));
return this.ocrUsersearchchildService.remove(queryWrapper);
}
/**
*
* @param userid
@ -54,14 +55,26 @@ public class OcrUsersearchServiceImpl extends BaseServiceImpl<OcrUsersearchMybat
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("USERID",userid);
queryWrapper.orderByDesc("REORDER");
List<OcrUsersearch> list = this.ocrusersearchmybatisdao.selectList(queryWrapper);
if(null == list || list.isEmpty()){
return 1;
}else{
return (list.get(0).getReorder() + 3);
}
}
@Override
public OcrUsersearch selectByUserSearchId(String userSearchId) {
OcrUsersearch usersearch = baseMapper.selectById(userSearchId);
//获取子集依赖
if(usersearch!=null){
List<OcrUsersearchchild> ocrUsersearchchildList = ocrUsersearchchildService.selectByMainId(usersearch.getId().toString());
usersearch.setOcrUsersearchchildList(ocrUsersearchchildList);
}
return usersearch;
}
}

Loading…
Cancel
Save