解决冲突

feature/pullPictureLog
Vincent 1 year ago
commit 2ac1e7c07e

@ -15,6 +15,10 @@ import java.util.Map;
*/ */
@Data @Data
public class PictureSourceResult { public class PictureSourceResult {
/**
* id
*/
Long id;
/** /**
* no * no
*/ */
@ -208,4 +212,9 @@ public class PictureSourceResult {
* log * log
*/ */
PictureSourceParameter requestParam; PictureSourceParameter requestParam;
/**
*
*/
String comment;
} }

@ -125,6 +125,9 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
//解析基础数据 //解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData); String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class); ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class);
if(apiPage.getTotal()==0){
return null;
}
//解析数据结果为List //解析数据结果为List
List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class); List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class);
ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>(); ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();

@ -69,11 +69,12 @@ public class OcrUsersearchController extends BaseController{
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResultVo<IPage<OcrUsersearch>> queryPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, public ResultVo<IPage<OcrUsersearch>> queryPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="type") @ApiParam(value = "类型(首页为0终审为1)", required = true) Integer type, @RequestParam(name="type") @ApiParam(value = "类型首页0终审1任务审批2", required = true) Integer type,
@RequestParam(name="orderName", defaultValue="", required = false)String orderName,
@RequestParam(name="orderType",defaultValue="", required = false)String orderType,
HttpServletRequest request) { HttpServletRequest request) {
//获取当前登录人 //获取当前登录人
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
ParamterPage paramterPage = new ParamterPage(); ParamterPage paramterPage = new ParamterPage();
paramterPage.setPagesize(pageSize); paramterPage.setPagesize(pageSize);
paramterPage.setStart(pageNo); paramterPage.setStart(pageNo);
@ -93,7 +94,18 @@ public class OcrUsersearchController extends BaseController{
queryWrapper.eq("USERID",userToken.getUserid()); queryWrapper.eq("USERID",userToken.getUserid());
queryWrapper.eq("TENANTID",tenantId); queryWrapper.eq("TENANTID",tenantId);
queryWrapper.eq("TYPE",type); queryWrapper.eq("TYPE",type);
if(StringUtils.isNotBlank(orderName)){
if("desc".equals(orderType)){
queryWrapper.orderByDesc(orderName);
}else{
queryWrapper.orderByAsc(orderName);
}
}else{
queryWrapper.orderByDesc(Arrays.asList("IZTOP","REORDER")); queryWrapper.orderByDesc(Arrays.asList("IZTOP","REORDER"));
}
IPage<OcrUsersearch> pageList = ocrUsersearchService.selectSearchListPage(paramterPage, queryWrapper); IPage<OcrUsersearch> pageList = ocrUsersearchService.selectSearchListPage(paramterPage, queryWrapper);

@ -13,4 +13,6 @@ public interface OcrPictureMybatisDao extends BaseMapper<OcrPicture> {
OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId); OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId);
OcrPicture selectByRemark(@Param("remark") String remark); OcrPicture selectByRemark(@Param("remark") String remark);
String getPictureApproveResult(Long id);
} }

@ -364,6 +364,11 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@TableField(value = "location") @TableField(value = "location")
private String location; private String location;
@ApiModelProperty(value = "备注")
@Schema(description = "备注")
@TableField(value = "comment")
private String comment;
@ApiModelProperty(value = "拍照时间") @ApiModelProperty(value = "拍照时间")
@TableField(value = "photo_date_timestamp") @TableField(value = "photo_date_timestamp")
@JsonSerialize(using = DateSerializer.class) @JsonSerialize(using = DateSerializer.class)

@ -4,6 +4,7 @@ import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
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.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -32,6 +33,9 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, HttpServletRequest request); public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, HttpServletRequest request);
String getPictureApproveResult(Long id);
void deletePictureInfo(Long id);
/** /**
* *
* *
@ -86,4 +90,5 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
*/ */
OcrPicture selectByRemark(String remark); OcrPicture selectByRemark(String remark);
OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId);
} }

@ -13,19 +13,12 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.oa.from.service.impl.UserapproveServiceImpl;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig; import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPackagetask; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureInfo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.service.OcrPackagetaskService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil; import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil;
@ -33,6 +26,7 @@ import cn.jyjz.xiaoyao.ocr.util.HashCompareUtil;
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.JSON;
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.LambdaQueryWrapper;
@ -56,11 +50,7 @@ import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -83,6 +73,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource @Resource
private OcrPackagetaskService ocrPackagetaskService; private OcrPackagetaskService ocrPackagetaskService;
@Resource
private OcrTaskchildPictureService ocrTaskchildPictureService; private OcrTaskchildPictureService ocrTaskchildPictureService;
@Resource @Resource
IFlowInstanceService flowInstanceService; IFlowInstanceService flowInstanceService;
@ -92,6 +84,14 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
private CategoryService categoryService; private CategoryService categoryService;
@Resource @Resource
private OcrPictureInfoService ocrPictureInfoService; private OcrPictureInfoService ocrPictureInfoService;
@Resource
private OcrCheckDescribeHisService ocrCheckDescribeHisService;
@Resource
private IOcrCheckDuplicateResultService ocrCheckDuplicateResultService;
@Resource
private IOcrPictureDuplicateHisService ocrPictureDuplicateHisService;
private Object lock = new Object(); private Object lock = new Object();
/** /**
* *
@ -103,6 +103,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource @Resource
OcrPictureMybatisDao pictureMybatisDao; OcrPictureMybatisDao pictureMybatisDao;
@Autowired
private UserapproveService userapproveService;
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno) { public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno) {
@ -329,10 +331,10 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override @Override
public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) { public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) {
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId); OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId, pictureId);
OcrPictureInfo one = ocrPictureInfoService.getOne(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, ocrPicture.getId())); OcrPictureInfo one = ocrPictureInfoService.getOne(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, ocrPicture.getId()));
ocrPicture.setPictureInfo(one); ocrPicture.setPictureInfo(one);
if(ObjectUtil.isNotEmpty(one)){ if (ObjectUtil.isNotEmpty(one)) {
ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp()); ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp());
} }
return ocrPicture; return ocrPicture;
@ -343,6 +345,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return pictureMybatisDao.selectByRemark(remark); return pictureMybatisDao.selectByRemark(remark);
} }
@Override
public OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId) {
return ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, pictureId));
}
// @Override // @Override
// public Long getPhotoDateTime(OcrPicture picture) { // public Long getPhotoDateTime(OcrPicture picture) {
// long timestamp = 0L; // long timestamp = 0L;
@ -404,7 +411,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// } // }
public OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) { public OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) {
OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId())); OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId()));
ocrTaskchildPicture.setBuessinessno(buessinessno); ocrTaskchildPicture.setBuessinessno(buessinessno);
@ -434,7 +440,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return ocrTaskchildPictureService.updateById(ocrTaskchildPicture) ? ocrTaskchildPicture : null; return ocrTaskchildPictureService.updateById(ocrTaskchildPicture) ? ocrTaskchildPicture : null;
} }
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId,HttpServletRequest request) { public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, HttpServletRequest request) {
//图片错误信息 //图片错误信息
StringBuffer error = new StringBuffer(); StringBuffer error = new StringBuffer();
//项目错误信息 //项目错误信息
@ -504,6 +510,75 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return ResultVoUtil.error("失败。"); return ResultVoUtil.error("失败。");
} }
@Override
public String getPictureApproveResult(Long id) {
return pictureMybatisDao.getPictureApproveResult(id);
}
@Override
public void deletePictureInfo(Long id) {
//删除图片表
pictureMybatisDao.deleteById(id);
//删除图片信息表
ocrPictureInfoService.remove(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, id));
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, id));
//删除任务表
ocrTaskchildPictureService.remove(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, id));
//删除审批记录表
userapproveService.delete(taskchildPicture.getId().toString());
//小结查重记录
OcrCheckDescribeHis checkDescribeHis = ocrCheckDescribeHisService.getOne(new LambdaQueryWrapper<OcrCheckDescribeHis>().eq(OcrCheckDescribeHis::getPictureId, id));
if (checkDescribeHis != null) {
String checkResult = checkDescribeHis.getCheckResult();
if (StringUtils.isNotBlank(checkResult)) {
String[] checkResultPictureIds = checkResult.split(",");
List<OcrCheckDescribeHis> checkDescribes = ocrCheckDescribeHisService.list(new LambdaQueryWrapper<OcrCheckDescribeHis>().in(OcrCheckDescribeHis::getPictureId, checkResultPictureIds));
for (OcrCheckDescribeHis checkDescribe : checkDescribes) {
String[] split = checkDescribe.getCheckResult().split(",");
List<String> list = Arrays.asList(split);
list.remove(id.toString());
checkDescribe.setCheckResult(String.join(",", list));
}
ocrCheckDescribeHisService.updateBatchById(checkDescribes);
}
ocrCheckDescribeHisService.remove(new LambdaQueryWrapper<OcrCheckDescribeHis>().eq(OcrCheckDescribeHis::getPictureId, id));
}
//图片对比记录
OcrPictureDuplicateHis hisServiceOne = ocrPictureDuplicateHisService.getOne(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, id));
if (null != hisServiceOne) {
String checkDuplicateResultHisJson = hisServiceOne.getCheckDuplicateResultHisJson();
if (StringUtils.isNotBlank(checkDuplicateResultHisJson)) {
JSONObject jsonObject = JSON.parseObject(checkDuplicateResultHisJson);
Set<String> keyList = jsonObject.keySet();
List<OcrPictureDuplicateHis> list = ocrPictureDuplicateHisService.list(new LambdaQueryWrapper<OcrPictureDuplicateHis>().in(OcrPictureDuplicateHis::getPictureId, keyList));
for (OcrPictureDuplicateHis ocrPictureDuplicateHis : list) {
String checkDuplicateResultHis = ocrPictureDuplicateHis.getCheckDuplicateResultHisJson();
JSONObject json = JSON.parseObject(checkDuplicateResultHis);
json.remove(id.toString());
ocrPictureDuplicateHis.setCheckDuplicateResultHisJson(JSON.toJSONString(json));
}
ocrPictureDuplicateHisService.updateBatchById(list);
}
ocrPictureDuplicateHisService.remove(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, id));
}
//查重结果
OcrCheckDuplicateResult duplicateResult = ocrCheckDuplicateResultService.getOne(new LambdaQueryWrapper<OcrCheckDuplicateResult>().eq(OcrCheckDuplicateResult::getPictureId, id));
String compareResultJson = duplicateResult.getCompareResultJson();
if (StringUtils.isNotBlank(compareResultJson)) {
JSONObject jsonObject = JSON.parseObject(compareResultJson);
Set<String> keyList = jsonObject.keySet();
List<OcrCheckDuplicateResult> list = ocrCheckDuplicateResultService.list(new LambdaQueryWrapper<OcrCheckDuplicateResult>().in(OcrCheckDuplicateResult::getPictureId, keyList));
for (OcrCheckDuplicateResult checkDuplicateResult : list) {
String resultCompareResultJson = checkDuplicateResult.getCompareResultJson();
JSONObject json = JSON.parseObject(resultCompareResultJson);
json.remove(id.toString());
checkDuplicateResult.setCompareResultJson(JSON.toJSONString(json));
}
ocrCheckDuplicateResultService.updateBatchById(list);
}
ocrCheckDuplicateResultService.remove(new LambdaQueryWrapper<OcrCheckDuplicateResult>().eq(OcrCheckDuplicateResult::getPictureId, id));
}
public void bubbleSortOpt(List<OcrPicture> compareList) { public void bubbleSortOpt(List<OcrPicture> compareList) {
if (null == compareList) { if (null == compareList) {
@ -681,7 +756,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
@Override @Override
public int savePictures(List<OcrPicture> ocrPictureList){ public int savePictures(List<OcrPicture> ocrPictureList) {
//1.字典数据 解析入库 //1.字典数据 解析入库
boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList);
@ -693,9 +768,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
try { try {
boolean saveBatch = false; boolean saveBatch = false;
synchronized(lock) { synchronized (lock) {
// 同步的代码块 // 同步的代码块
saveBatch = this.saveBatch(ocrPictureList); saveBatch = this.saveOrUpdateBatch(ocrPictureList);
} }
//3.添加图片信息 //3.添加图片信息
@ -704,9 +779,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
this.convertImage(ocrPictureList); this.convertImage(ocrPictureList);
return ocrPictureList.size(); return ocrPictureList.size();
} }
log.error("存储图片失败:{}",JSONObject.toJSON(ocrPictureList)); log.error("存储图片失败:{}", JSONObject.toJSON(ocrPictureList));
}catch (Exception e){ } catch (Exception e) {
log.error("存储图片异常:{}",e.getMessage()); log.error("存储图片异常:{}", e.getMessage());
} }
return 0; return 0;
@ -716,7 +791,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
List<OcrPictureInfo> list = new ArrayList<>(); List<OcrPictureInfo> list = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) { for (OcrPicture ocrPicture : ocrPictureList) {
if (StringUtils.isNotBlank(ocrPicture.getImgurl())) { if (StringUtils.isNotBlank(ocrPicture.getImgurl())) {
OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(),true); OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(), true);
if (ObjectUtil.isNotEmpty(imageInfo)) { if (ObjectUtil.isNotEmpty(imageInfo)) {
imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname()); imageInfo.setImgName(ocrPicture.getImgname());
@ -729,17 +804,18 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/** /**
* *
*
* @param ocrPicture * @param ocrPicture
*/ */
@Override @Override
public void savePicturesInfo(OcrPicture ocrPicture) { public void savePicturesInfo(OcrPicture ocrPicture) {
boolean isConnection = true; boolean isConnection = true;
String url = ocrPicture.getImgurl(); String url = ocrPicture.getImgurl();
if(!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())){ if (!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())) {
url = ocrPicture.getLocalpictrueurl(); url = ocrPicture.getLocalpictrueurl();
isConnection = false; isConnection = false;
} }
OcrPictureInfo imageInfo = getImageInfo(url,isConnection); OcrPictureInfo imageInfo = getImageInfo(url, isConnection);
imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname()); imageInfo.setImgName(ocrPicture.getImgname());
ocrPictureInfoService.save(imageInfo); ocrPictureInfoService.save(imageInfo);
@ -747,16 +823,17 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/** /**
* *
*
* @param imageUrl * @param imageUrl
* @param isConnection url * @param isConnection url
* @return * @return
*/ */
private OcrPictureInfo getImageInfo(String imageUrl,boolean isConnection) { private OcrPictureInfo getImageInfo(String imageUrl, boolean isConnection) {
try { try {
BufferedImage image = null; BufferedImage image = null;
Integer imageSize = 0; Integer imageSize = 0;
if(isConnection){ if (isConnection) {
// 创建URL对象 // 创建URL对象
URL url = new URL(imageUrl); URL url = new URL(imageUrl);
// 打开连接 // 打开连接
@ -764,11 +841,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// 获取图片大小 // 获取图片大小
imageSize = urlConnection.getContentLength(); imageSize = urlConnection.getContentLength();
// 使用ImageIO读取图片 // 使用ImageIO读取图片
image= ImageIO.read(url); image = ImageIO.read(url);
}else{ } else {
File file = new File(imageUrl); File file = new File(imageUrl);
image = ImageIO.read(file); image = ImageIO.read(file);
imageSize =(int)file.length(); imageSize = (int) file.length();
} }
if (image != null) { if (image != null) {
@ -815,7 +892,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
private void convertImage(List<OcrPicture> list) { private void convertImage(List<OcrPicture> list) {
for (OcrPicture ocrPicture : list) { for (OcrPicture ocrPicture : list) {
PictureImgToLocalEntity entity = new PictureImgToLocalEntity(); PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
@ -826,15 +902,15 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
boolean addedToQueue = false; boolean addedToQueue = false;
int count = 1; int count = 1;
while (!addedToQueue){ while (!addedToQueue) {
try { try {
addedToQueue = TaskQueue.pictureImgToLocalPushData(entity); addedToQueue = TaskQueue.pictureImgToLocalPushData(entity);
if(addedToQueue) { if (addedToQueue) {
break; break;
} }
Thread.sleep(5000); Thread.sleep(5000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("放入图片下载队列,等待休眠异常:{}",e.getMessage()); log.error("放入图片下载队列,等待休眠异常:{}", e.getMessage());
} }
count++; count++;
} }

@ -4,6 +4,7 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant; import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
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.OcrPrevailCloudLogService; import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
@ -43,11 +44,6 @@ public class TaskQueue {
public static boolean pictureDisposePushData(PictureSourceResult pictureSourceResult, OcrPictureService ocrPictureService, OcrPrevailCloudLogService ocrPrevailCloudLogService) { public static boolean pictureDisposePushData(PictureSourceResult pictureSourceResult, OcrPictureService ocrPictureService, OcrPrevailCloudLogService ocrPrevailCloudLogService) {
try { try {
Long taskId = pictureSourceResult.getTaskId(); Long taskId = pictureSourceResult.getTaskId();
OcrPicture ocrPicture = ocrPictureService.selectByRemark(String.valueOf(taskId));
if (ocrPicture != null) {
return true;
}
OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder() OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
.formId(pictureSourceResult.getTaskId()) .formId(pictureSourceResult.getTaskId())
.requestParam(pictureSourceResult.getRequestParam().toString()) .requestParam(pictureSourceResult.getRequestParam().toString())
@ -58,6 +54,20 @@ public class TaskQueue {
ocrPrevailCloudLogService.save(ocrPrevailCloudLog); ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
resultSet.add(String.valueOf(taskId)); resultSet.add(String.valueOf(taskId));
pictureDisposeQueue.put(pictureSourceResult); pictureDisposeQueue.put(pictureSourceResult);
OcrPicture ocrPicture = ocrPictureService.selectByRemark(String.valueOf(taskId));
if (ocrPicture != null) {
OcrTaskchildPicture taskchildPicture = ocrPictureService.getOcrTaskChildPictureByPictureId(ocrPicture.getId().toString());
if (taskchildPicture != null && pictureSourceResult.getTaskStatus() != null
&& pictureSourceResult.getTaskStatus() == 6 && taskchildPicture.getStates() == 5) {
String result = ocrPictureService.getPictureApproveResult(ocrPicture.getId());
ocrPictureService.deletePictureInfo(ocrPicture.getId());
pictureSourceResult.setComment(result);
pictureSourceResult.setId(ocrPicture.getId());
} else {
return true;
}
}
} catch (InterruptedException e) { } catch (InterruptedException e) {
OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder() OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
.formId(pictureSourceResult.getTaskId()) .formId(pictureSourceResult.getTaskId())

@ -21,12 +21,12 @@ import java.util.Map;
* @version 1.0 * @version 1.0
* @date 2024/3/14 11:15 * @date 2024/3/14 11:15
*/ */
public class PictureDisposeTask implements Runnable{ public class PictureDisposeTask implements Runnable {
protected Logger logger = LoggerFactory.getLogger(getClass()); protected Logger logger = LoggerFactory.getLogger(getClass());
private PictureSourceResult pictureSourceResult; private PictureSourceResult pictureSourceResult;
public PictureDisposeTask(PictureSourceResult pictureSourceResult){ public PictureDisposeTask(PictureSourceResult pictureSourceResult) {
this.pictureSourceResult = pictureSourceResult; this.pictureSourceResult = pictureSourceResult;
} }
@ -36,17 +36,17 @@ public class PictureDisposeTask implements Runnable{
OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService"); OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService");
//获取当前任务中有多少图片 //获取当前任务中有多少图片
List<Map<String,Object>> livePhoto = pictureSourceResult.getLivePhoto(); List<Map<String, Object>> livePhoto = pictureSourceResult.getLivePhoto();
//定义新增集合对象 //定义新增集合对象
List<OcrPicture> ocrPictureList = new ArrayList<>(); List<OcrPicture> ocrPictureList = new ArrayList<>();
int index =0; int index = 0;
for (Map<String, Object> map : livePhoto) { for (Map<String, Object> map : livePhoto) {
if(index>0){ if (index > 0) {
continue; continue;
} }
//检查图片地址是否为空 //检查图片地址是否为空
if(map.get("imgUrl")!=null && !StringUtils.isEmpty(map.get("imgUrl").toString())){ if (map.get("imgUrl") != null && !StringUtils.isEmpty(map.get("imgUrl").toString())) {
//判断该任务是否存在判断依据是任务ID相同提报时间不同则可以插入 //判断该任务是否存在判断依据是任务ID相同提报时间不同则可以插入
// LambdaQueryWrapper<OcrPicture> ocrPictureLambdaQueryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<OcrPicture> ocrPictureLambdaQueryWrapper = new LambdaQueryWrapper<>();
// ocrPictureLambdaQueryWrapper.eq(OcrPicture::getRemark,pictureSourceResult.getTaskId()); // ocrPictureLambdaQueryWrapper.eq(OcrPicture::getRemark,pictureSourceResult.getTaskId());
@ -61,8 +61,16 @@ public class PictureDisposeTask implements Runnable{
// } // }
//不为空开始组装参数 入库 //不为空开始组装参数 入库
OcrPicture picture = new OcrPicture(); OcrPicture picture = new OcrPicture();
//id
if (pictureSourceResult.getId() != null) {
picture.setId(pictureSourceResult.getId());
}
//备注
if (pictureSourceResult.getComment() != null) {
picture.setComment(pictureSourceResult.getComment());
}
//定位信息 //定位信息
if(pictureSourceResult.getLocation()!=null){ if (pictureSourceResult.getLocation() != null) {
picture.setLocation(JSONObject.toJSONString(pictureSourceResult.getLocation())); picture.setLocation(JSONObject.toJSONString(pictureSourceResult.getLocation()));
} }
//业务主体 //业务主体
@ -70,21 +78,21 @@ public class PictureDisposeTask implements Runnable{
//业务主体名称 //业务主体名称
picture.setTenantname(pictureSourceResult.getAccountName()); picture.setTenantname(pictureSourceResult.getAccountName());
//业务主体状态 //业务主体状态
if(pictureSourceResult.getAccountStatus()!=null){ if (pictureSourceResult.getAccountStatus() != null) {
picture.setTenantstatus(pictureSourceResult.getAccountStatus().toString()); picture.setTenantstatus(pictureSourceResult.getAccountStatus().toString());
} }
//租户编号 //租户编号
if(pictureSourceResult.getAccountNo()!=null){ if (pictureSourceResult.getAccountNo() != null) {
picture.setPictureid(pictureSourceResult.getAccountNo().toString()); picture.setPictureid(pictureSourceResult.getAccountNo().toString());
} }
//租户名称 //租户名称
picture.setPicturename(pictureSourceResult.getAccountName()); picture.setPicturename(pictureSourceResult.getAccountName());
//租户状态 //租户状态
if(pictureSourceResult.getAccountStatus()!=null) { if (pictureSourceResult.getAccountStatus() != null) {
picture.setPicturestatus(pictureSourceResult.getAccountStatus().toString()); picture.setPicturestatus(pictureSourceResult.getAccountStatus().toString());
} }
//项目编号 //项目编号
if(pictureSourceResult.getProjectNo()!=null){ if (pictureSourceResult.getProjectNo() != null) {
picture.setProjectid(pictureSourceResult.getProjectNo().toString()); picture.setProjectid(pictureSourceResult.getProjectNo().toString());
} }
//项目id //项目id
@ -93,19 +101,19 @@ public class PictureDisposeTask implements Runnable{
//项目名称 //项目名称
picture.setProjectidname(pictureSourceResult.getProjectName()); picture.setProjectidname(pictureSourceResult.getProjectName());
//项目状态 //项目状态
if(pictureSourceResult.getProjectNo()!=null) { if (pictureSourceResult.getProjectNo() != null) {
picture.setProjectstatus(pictureSourceResult.getProjectNo().toString()); picture.setProjectstatus(pictureSourceResult.getProjectNo().toString());
} }
//所属主计划id //所属主计划id
if(pictureSourceResult.getPlanNo()!=null) { if (pictureSourceResult.getPlanNo() != null) {
picture.setPlanid(pictureSourceResult.getPlanNo().toString()); picture.setPlanid(pictureSourceResult.getPlanNo().toString());
} }
//所属计划名称 //所属计划名称
picture.setPlanname(pictureSourceResult.getPlanName()); picture.setPlanname(pictureSourceResult.getPlanName());
//所属计划状态 //所属计划状态
picture.setPlanstatus( pictureSourceResult.getPlanstatus()); picture.setPlanstatus(pictureSourceResult.getPlanstatus());
//所属子计划id //所属子计划id
if(pictureSourceResult.getPlanChildNo()!=null) { if (pictureSourceResult.getPlanChildNo() != null) {
picture.setPlanchildid(pictureSourceResult.getPlanChildNo().toString()); picture.setPlanchildid(pictureSourceResult.getPlanChildNo().toString());
} }
//所属子计划名称 //所属子计划名称
@ -119,7 +127,7 @@ public class PictureDisposeTask implements Runnable{
//任务来源名称 //任务来源名称
picture.setField4("无量云2.0"); picture.setField4("无量云2.0");
//所属任务状态 //所属任务状态
if(pictureSourceResult.getTenantStatus()!=null) { if (pictureSourceResult.getTenantStatus() != null) {
picture.setTaskstatus(pictureSourceResult.getTenantStatus().toString()); picture.setTaskstatus(pictureSourceResult.getTenantStatus().toString());
} }
//提报人id //提报人id
@ -133,78 +141,78 @@ public class PictureDisposeTask implements Runnable{
//拜访详细地址 //拜访详细地址
StringBuilder addressDetails = new StringBuilder(); StringBuilder addressDetails = new StringBuilder();
//拜访省份 //拜访省份
if(pictureSourceResult.getProvince()!=null){ if (pictureSourceResult.getProvince() != null) {
if(pictureSourceResult.getProvince().get("name")!=null){ if (pictureSourceResult.getProvince().get("name") != null) {
addressDetails.append(pictureSourceResult.getProvince().get("name").toString()); addressDetails.append(pictureSourceResult.getProvince().get("name").toString());
picture.setReleaseprovince(pictureSourceResult.getProvince().get("name").toString()); picture.setReleaseprovince(pictureSourceResult.getProvince().get("name").toString());
} }
} }
//拜访城市 //拜访城市
if(pictureSourceResult.getCity()!=null){ if (pictureSourceResult.getCity() != null) {
if(pictureSourceResult.getCity().get("name")!=null){ if (pictureSourceResult.getCity().get("name") != null) {
addressDetails.append(pictureSourceResult.getCity().get("name").toString()); addressDetails.append(pictureSourceResult.getCity().get("name").toString());
picture.setReleasearea(pictureSourceResult.getCity().get("name").toString()); picture.setReleasearea(pictureSourceResult.getCity().get("name").toString());
} }
} }
//拜访定位信息 //拜访定位信息
if(pictureSourceResult.getLocation()!=null){ if (pictureSourceResult.getLocation() != null) {
if(pictureSourceResult.getCity().get("address")!=null){ if (pictureSourceResult.getCity().get("address") != null) {
addressDetails.append(pictureSourceResult.getCity().get("address").toString()); addressDetails.append(pictureSourceResult.getCity().get("address").toString());
} }
} }
picture.setField10(addressDetails.toString()); picture.setField10(addressDetails.toString());
//拜访客户类型 //拜访客户类型
if(pictureSourceResult.getTerminalType()!=null){ if (pictureSourceResult.getTerminalType() != null) {
if(pictureSourceResult.getTerminalType().get("name")!=null){ if (pictureSourceResult.getTerminalType().get("name") != null) {
picture.setField2(pictureSourceResult.getTerminalType().get("name").toString()); picture.setField2(pictureSourceResult.getTerminalType().get("name").toString());
} }
} }
//拜访客户名称 //拜访客户名称
if(pictureSourceResult.getCustomerName()!=null){ if (pictureSourceResult.getCustomerName() != null) {
if(pictureSourceResult.getCustomerName().get("name")!=null){ if (pictureSourceResult.getCustomerName().get("name") != null) {
picture.setField3(pictureSourceResult.getCustomerName().get("name").toString()); picture.setField3(pictureSourceResult.getCustomerName().get("name").toString());
} }
} }
//拜访客户级别 //拜访客户级别
if(pictureSourceResult.getTerminalLevel()!=null){ if (pictureSourceResult.getTerminalLevel() != null) {
if(pictureSourceResult.getTerminalLevel().get("name")!=null){ if (pictureSourceResult.getTerminalLevel().get("name") != null) {
picture.setField6(pictureSourceResult.getTerminalLevel().get("name").toString()); picture.setField6(pictureSourceResult.getTerminalLevel().get("name").toString());
} }
} }
//拜访项目类别 //拜访项目类别
if(pictureSourceResult.getProjectType()!=null){ if (pictureSourceResult.getProjectType() != null) {
if(pictureSourceResult.getProjectType().get("name")!=null){ if (pictureSourceResult.getProjectType().get("name") != null) {
picture.setField17(pictureSourceResult.getProjectType().get("name").toString()); picture.setField17(pictureSourceResult.getProjectType().get("name").toString());
} }
} }
//拜访品种 //拜访品种
if(pictureSourceResult.getProductName()!=null){ if (pictureSourceResult.getProductName() != null) {
if(pictureSourceResult.getProductName().get("name")!=null){ if (pictureSourceResult.getProductName().get("name") != null) {
picture.setField9(pictureSourceResult.getProductName().get("name").toString()); picture.setField9(pictureSourceResult.getProductName().get("name").toString());
} }
} }
//厂商 //厂商
if(pictureSourceResult.getManufacturer()!=null){ if (pictureSourceResult.getManufacturer() != null) {
if(pictureSourceResult.getManufacturer().get("name")!=null){ if (pictureSourceResult.getManufacturer().get("name") != null) {
picture.setField5(pictureSourceResult.getManufacturer().get("name").toString()); picture.setField5(pictureSourceResult.getManufacturer().get("name").toString());
} }
} }
//拜访科室 //拜访科室
if(StringUtils.isNotBlank(pictureSourceResult.getCompanyDepartment())){ if (StringUtils.isNotBlank(pictureSourceResult.getCompanyDepartment())) {
picture.setField7(pictureSourceResult.getCompanyDepartment()); picture.setField7(pictureSourceResult.getCompanyDepartment());
} }
//拜访小结 //拜访小结
if(StringUtils.isNotBlank(pictureSourceResult.getDiscoveredIssues())){ if (StringUtils.isNotBlank(pictureSourceResult.getDiscoveredIssues())) {
picture.setField8(pictureSourceResult.getDiscoveredIssues()); picture.setField8(pictureSourceResult.getDiscoveredIssues());
} }
//拜访日期 //拜访日期
if(StringUtils.isNotBlank(pictureSourceResult.getVisitDate())){ if (StringUtils.isNotBlank(pictureSourceResult.getVisitDate())) {
picture.setField11(pictureSourceResult.getVisitDate()); picture.setField11(pictureSourceResult.getVisitDate());
} }
@ -214,18 +222,18 @@ public class PictureDisposeTask implements Runnable{
//图片创建时间 //图片创建时间
// picture.setPhotoDateTimestamp(System.currentTimeMillis()); // picture.setPhotoDateTimestamp(System.currentTimeMillis());
System.out.println("SubmitDateTimestamp1=================>>>>>>>"+pictureSourceResult.getSubmitTime()); System.out.println("SubmitDateTimestamp1=================>>>>>>>" + pictureSourceResult.getSubmitTime());
System.out.println("SubmitDateTimestamp2=================>>>>>>>"+picture.getSubmitDateTimestamp()); System.out.println("SubmitDateTimestamp2=================>>>>>>>" + picture.getSubmitDateTimestamp());
//定位距离 //定位距离
if(StringUtils.isNotBlank(pictureSourceResult.getDistance())){ if (StringUtils.isNotBlank(pictureSourceResult.getDistance())) {
picture.setField12(pictureSourceResult.getDistance()); picture.setField12(pictureSourceResult.getDistance());
} }
//设置图片信息 //设置图片信息
if(map.get("imgName")!=null){ if (map.get("imgName") != null) {
picture.setImgname(map.get("imgName").toString()); picture.setImgname(map.get("imgName").toString());
} }
if(map.get("imgUrl")!=null){ if (map.get("imgUrl") != null) {
picture.setImgurl(map.get("imgUrl").toString()); picture.setImgurl(map.get("imgUrl").toString());
} }
//默认为创建人为admin //默认为创建人为admin

@ -250,11 +250,22 @@
</select> </select>
<select id="selectByRemark" resultMap="BaseResultMap"> <select id="selectByRemark" resultMap="BaseResultMap">
SELECT `ID` SELECT
<include refid="Base_Column_List"/>
FROM FROM
ocr_picture ocr_picture
WHERE `remark` = #{remark} WHERE `remark` = #{remark}
LIMIT 1 LIMIT 1
</select> </select>
<select id="getPictureApproveResult" resultType="java.lang.String">
SELECT CONCAT('审批节点:', t1.TASKNAME, ',审批结果:', (CASE
WHEN t1.STATES = 5 THEN '审批不通过'
WHEN t1.STATES = 3 THEN '审批通过'
ELSE '审批中' END), ',不通过原因:', t2.REASON,
',备注:', t2.TASKCOMMENT)
FROM ocr_taskchild_picture t1
LEFT JOIN oa_userapprove_t t2 ON t1.ID = t2.FORMID
where t1.PICTUREID = #{id,jdbcType=BIGINT}
</select>
</mapper> </mapper>

Loading…
Cancel
Save