Compare commits

...

37 Commits

Author SHA1 Message Date
Vincent 9dff5fd994 解决冲突
2 years ago
shuliYao d4bc397c8b fix: 解决任务包所有任务都被重提后,报错问题
2 years ago
shuliYao bb7bb072f2 fix: 解决拉取重提数据时,删除任务包相关数据报错问题
2 years ago
shuliYao 5e4cd7c425 fix: 解决查询结束日期时间不对问题
2 years ago
Vincent 2ac1e7c07e 解决冲突
2 years ago
Vincent 68b112185d feat: 添加拉取图像日志
2 years ago
sunchenliang 3fedbff2e3 Merge pull request 'feat:重置流程删除查重记录及图片查重结果' (#160) from feat/updatePrevailCloudLog into test
2 years ago
sunchenliang 14c1385d8b feat:重置流程删除查重记录及图片查重结果
2 years ago
sunchenliang 60aabbeeeb Merge pull request 'feat:添加图片备注,重置流程' (#159) from feat/updatePrevailCloudLog into test
2 years ago
sunchenliang 5488265b05 feat:添加图片备注,重置流程
2 years ago
shuliYao fc17eca01f fix: 增加高级检索列表排序字段
2 years ago
sunchenliang ae69b0ff62 Merge pull request 'feat:修改回传无量云租户信息' (#158) from feat/updatePrevailCloudLog into test
2 years ago
sunchenliang 609654e9fc feat:修改回传无量云租户信息
2 years ago
sunchenliang e032315b1d Merge pull request 'feat:修改回传无量云租户信息' (#157) from feat/updatePrevailCloudLog into test
2 years ago
sunchenliang 467582ca29 feat:修改回传无量云租户信息
2 years ago
shuliYao cd9509bec2 fix: 解决查重时没加状态条件
2 years ago
sunchenliang 14228f2615 Merge pull request 'feat:修改回传无量云租户信息' (#156) from feat/updatePrevailCloudLog into test
2 years ago
sunchenliang f502cbce69 feat:修改回传无量云租户信息
2 years ago
Vincent d27d4b2889 解决冲突
2 years ago
Vincent f1b2393f76 fix: 调整过滤任务逻辑
2 years ago
shuliYao f11bad79d4 fix: 解决可疑与相似图片列表,图片墙无宽高问题
2 years ago
shuliYao 2ed4452553 fix: 解决因为增加枚举,导致查重、图片查询状态查询不到数据问题
2 years ago
shuliYao 73543acba8 fix: 解决查重任务不返回已完成任务编号问题,创建任务包是回写查重任务
2 years ago
shuliYao dd315a07ee Merge remote-tracking branch 'origin/test' into test
2 years ago
shuliYao 0f78a00c44 fix: 解决取消查重任务线程不停止,可以文件夹没有含有缩略图问题
2 years ago
cuihaojie 3a732d6550 Merge pull request 'fix:任务审批高级筛选检索增加所属计划查询' (#155) from fix/Task_approval_Advanced_screening into test
2 years ago
DELL 249d3d57a2 fix:任务审批高级筛选检索增加所属计划查询
2 years ago
cuihaojie 7b44e6778e Merge pull request 'fix:任务终审模糊检索修复-提报人,任务ID,任务名称' (#154) from fix/Final_fuzzy_query into test
2 years ago
DELL 50e280efe3 fix:任务终审模糊检索修复-提报人,任务ID,任务名称
2 years ago
guanzheng 1e32676b1b Merge pull request '1:ocr_dict_init' (#153) from feat/dict_gz_0430 into test
2 years ago
guanzheng 0a7c3ab0a4 1:ocr_dict_init
2 years ago
cuihaojie 6e857bae4c Merge pull request 'fix:任务审批模糊检索-任务id、任务名称、提报人' (#152) from fix/Fuzzy_retrieval into test
2 years ago
DELL 9cc371fc71 fix:任务审批模糊检索-任务id、任务名称、提报人
2 years ago
guanzheng 978bab01e6 1:ocr_dict_init
2 years ago
guanzheng f9982088fe 1:dict
2 years ago
sunchenliang 8f0687bb35 Merge pull request 'feat:1.添加无量云调用日志' (#151) from feat/addPrevailCloudLog into test
2 years ago
Vincent ee088456e8 fix: 补全时间区间数据处理逻辑
2 years ago

@ -0,0 +1,214 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/backstage/distionary/save">
<input name="distionarytypeid" id="distionarytypeid" type="hidden" value="${distionarytypeid}">
<input name="distionatygroupid" id="distionatygroupid" type="hidden" value="${distionatygroupid}">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分类主键:</label>
<div class="col-sm-9">
<input name="distionarytypeid" id="distionarytypeid" class="form-control" placeholder="数据字典分类主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分组主键:</label>
<div class="col-sm-9">
<input name="distionatygroupid" id="distionatygroupid" class="form-control" placeholder="数据字典分组主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="数据名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典内容:</label>
<div class="col-sm-9">
<input name="content" id="content" class="form-control" placeholder="字典内容" class="form-control" type="text" maxlength='50' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 是否启用:</label>
<div class="col-sm-9">
<input name="enabled" id="enabled" class="form-control" placeholder="是否启用" class="form-control" type="text" required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" number="true" placeholder="排序字段" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建人:</label>
<div class="col-sm-9">
<input name="createuser" id="createuser" class="form-control" placeholder="创建人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建时间:</label>
<div class="col-sm-9">
<input name="createdate" id="createdate" class="form-control" placeholder="创建时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 修改人:</label>
<div class="col-sm-9">
<input name="updateuser" id="updateuser" class="form-control" placeholder="修改人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 更新时间:</label>
<div class="col-sm-9">
<input name="updatetime" id="updatetime" class="form-control" placeholder="更新时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionaryform").attr("action","${ctx}/backstage/admin/distionary/save");
var form1 = $('#Distionaryform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,212 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headaddedit.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/backstage/distionary/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分类主键:</label>
<div class="col-sm-9">
<input name="distionarytypeid" id="distionarytypeid" class="form-control" placeholder="数据字典分类主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据字典分组主键:</label>
<div class="col-sm-9">
<input name="distionatygroupid" id="distionatygroupid" class="form-control" placeholder="数据字典分组主键" class="form-control" type="text" maxlength='10' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 数据名称:</label>
<div class="col-sm-9">
<input name="name" id="name" class="form-control" placeholder="数据名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序字段:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" placeholder="排序字段" class="form-control" type="text" required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建人:</label>
<div class="col-sm-9">
<input name="createuser" id="createuser" class="form-control" placeholder="创建人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 创建时间:</label>
<div class="col-sm-9">
<input name="createdate" id="createdate" class="form-control" placeholder="创建时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 修改人:</label>
<div class="col-sm-9">
<input name="updateuser" id="updateuser" class="form-control" placeholder="修改人" class="form-control" type="text" maxlength='95' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 更新时间:</label>
<div class="col-sm-9">
<input name="updatetime" id="updatetime" class="form-control" placeholder="更新时间" class="form-control" type="text" maxlength='7' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script type="text/javascript">
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionary/getdata/' + $("#id").val(),null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#distionarytypeid").val(data.data.distionarytypeid);
$("#distionatygroupid").val(data.data.distionatygroupid);
$("#codeno").val(data.data.codeno);
$("#name").val(data.data.name);
$("#content").val(data.data.content);
$("#enabled").val(data.data.enabled);
$("#sorting").val(data.data.sorting);
$("#createuser").val(data.data.createuser);
$("#createdate").val(data.data.createdate);
$("#updateuser").val(data.data.updateuser);
$("#updatetime").val(data.data.updatetime);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionaryform").attr("action","${ctx}/backstage/admin/distionary/edit" + );
var form1 = $('#Distionaryform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,366 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典</title>
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_codeno' id='search_codeno' class='form-control' placeholder='编码'/>
</div>
<div class="form-group">
<input name='search_name' id='search_name' class='form-control' placeholder='描述'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
<button class="btn sbold btn-success" onclick="_distionaryAdd()"> <i class="fa fa-plus"></i> 添加</button>&nbsp;
<button class="btn sbold btn-danger" onclick="_distionaryDeletebu()"> <i class="fa fa-close"></i> 删除</button>
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Distionary_list" ></table>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryModelManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典详情管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="Distionaryform" method="post" id="Distionaryform" class="form-horizontal" action="${ctx}/ocr/dictionary/save">
<input name="distionarytypeid" id="distionarytypeid" value="${distionarytypeid}" type="hidden">
<input name="groupId" id="distionatygroupid" value="${distionarygroupid}" type="hidden">
<input name="id" id="id" type="hidden">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="value" id="value" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 描述:</label>
<div class="col-sm-9">
<input name="lable" id="lable" class="form-control" placeholder="描述" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 租户:</label>
<div class="col-sm-9">
<select data-placeholder="请选择租户" id="tenantId" name="tenantId" class="chosen-select" style="width:100%;" tabindex="4" required>
<option value=''>选择租户</option>
</select>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="closeDistionaryModel()" class="btn btn-w-m btn-default" id="savebuttonUserIcon">关闭</button>
<button type="button" onclick="distionaryModelformSubmit()" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jquery-form/jquery.form.min.js?v=4.3.0"></script>
<script src="${ctx}/static/js/plugins/validate/jquery.validate.min.js"></script>
<script src="${ctx}/static/js/plugins/validate/localization/messages_zh.js" type="text/javascript"></script>
<!-- iCheck -->
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
</body>
</html>
<script type="text/javascript">
var _tableListDistionary;
var $distionaryModelManager = $("#distionaryModelManager");
function showDistionaryModel() {
$distionaryModelManager.modal();
$distionaryModelManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeDistionaryModel() {
$("#Distionaryform")[0].reset();
$("#distionarytypeid").val('${distionarytypeid}');
$("#distionatygroupid").val('${distionarygroupid}');
$distionaryModelManager.modal('hide');
}
jQuery(document).ready(function($){
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
parent.axgetXiaoyao("${ctx}/backstage/admin/department/showDeptJsTree",null,false,function (data) {
$.each(data,function(name,anArray) {
console.log(anArray)
$("#tenantId").append("<option value='" + anArray.deptNo + "'>" + anArray.name + "</option>");
});
});
var config = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
}
//for (var selector in config) {
// $(selector).chosen(config[selector]);
//}
_tableListDistionary = $('#Distionary_list').bootstrapTable({
url: '${ctx}/ocr/dictionary/list',
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: "desc",
sortname: "ID",
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_codeno:'{"value":"' + $("#search_codeno").val() + '","op":"equal","type":"string"}',
search_distionatygroupid:'{"value":"' + $("#distionatygroupid").val() + '","op":"equal","type":"string"}',
search_name:'{"value":"' + $("#search_name").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
// { width:150,valign: "middle",field:'distionarytypeid',title:'数据字典分类主键',sortable:true},
// { width:150,valign: "middle",field:'distionatygroupid',title:'数据字典分组主键',sortable:true},
{ width:150,valign: "middle",field:'value',title:'编码',sortable:true},
{ width:150,valign: "middle",field:'lable',title:'描述',sortable:true},
{ width:150,valign: "middle",field:'tenantName',title:'部门名称',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
listOperation = listOperation + "<a href=\"javascript:_distionaryDelete('resourceid_distionary','" + oData.id + "');\" class=\"btn btn-danger btn-xs\")><i class=\"fa fa-close\"></i> 删除 </a>&nbsp;&nbsp;";
listOperation = listOperation + "<a href=\"javascript:_distionaryUpdateData('resourceid_distionary','" + oData.id + "');\" class=\"btn btn-primary btn-xs\")><i class=\"fa fa-pencil\"></i> 修改 </a>&nbsp;&nbsp;";
return listOperation;
}
}
]
});
/*
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});*/
$("#Distionaryform").attr("action","${ctx}/ocr/dictionary/save");
var distionaryForm1 = $('#Distionaryform');
var distionaryError1 = $('.alert-danger', distionaryForm1);
distionaryForm1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionaryform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
refreshTable();
closeDistionaryModel();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function distionaryModelformSubmit() {
$("#Distionaryform").submit();
}
function getIdSelections() {
return $.map(_tableListDistionary.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _distionaryAdd(){
showDistionaryModel();
}
function _distionaryUpdateData(jframeid,str){
parent.axgetXiaoyao('${ctx}/ocr/dictionary/getdata/' + str,null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#value").val(data.data.value);
$("#lable").val(data.data.lable);
$("#tenantId option[value='" + data.data.tenantId + "']").attr("selected",true);
showDistionaryModel();
}else{
parent.toastr.error("非法请求。");
}
});
}
function _distionaryEdit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/ocr/dictionary/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _distionaryDelete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListDistionary.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -0,0 +1,186 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/chosen/chosen.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionarygroupform" method="post" id="Distionarygroupform" class="form-horizontal" action="${ctx}/backstage/admin/distionarygroup/save">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典字段名:</label>
<div class="col-sm-9">
<input name="field" id="field" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典组描述:</label>
<div class="col-sm-9">
<input name="label" id="label" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 备注:</label>
<div class="col-sm-9">
<input name="remark" id="remark" class="form-control" placeholder="分组名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button id="savebutton" type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<!-- Chosen -->
<script src="${ctx}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script type="text/javascript">
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
};
$(document).ready(function () {
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
changeDistionarytype("");
$("#Distionarygroupform").attr("action","${ctx}/ocr/dictionaryGroup/save");
var form1 = $('#Distionarygroupform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: "",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
console.log("parent.getLoginToken()===" + parent.getLoginToken())
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionarygroupform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function changeDistionarytype(distionarytypeid) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/listall/',null,false , function(result) {
if(result.code == 'OK'){
var data = result.data;
console.log(data);
var posthtml = "";
$(data).each(function(idx,item){
if(undefined != distionarytypeid && distionarytypeid == item.id){
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true" selected>' + item.typename + '</option>';
}else{
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true">' + item.typename + '</option>';
}
});
$("#distionarytypeid").append(posthtml);
}
});
$("#distionarytypeid").chosen(selectConfig[$("#distionarytypeid")]);
}
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,197 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headaddedit.html" />
<link href="${ctx}/static/css/plugins/chosen/chosen.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>基本信息</h5>
</div>
<div class="ibox-content">
<div class="main-content">
<form name="Distionarygroupform" method="post" id="Distionarygroupform" class="form-horizontal" action="${ctx}/backstage/admin/distionarygroup/edit">
<input type="hidden" id="id" name="id">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典字段名:</label>
<div class="col-sm-9">
<input name="field" id="field" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 字典组描述:</label>
<div class="col-sm-9">
<input name="label" id="label" class="form-control" placeholder="字典字段名" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 备注:</label>
<div class="col-sm-9">
<input name="remark" id="remark" class="form-control" placeholder="分组名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-sm-offset-5">
<button type="submit" class="btn btn-w-m btn-primary">保存</button>
<button type="button" onclick="rolesback()" class="btn btn-w-m btn-success">取消</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<#include "/head/footadd.html" />
<script src="${ctx}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script type="text/javascript">
var selectConfig = {
'.chosen-select': {},
'.chosen-select-deselect': {
allow_single_deselect: true
},
'.chosen-select-no-single': {
disable_search_threshold: 10
},
'.chosen-select-no-results': {
no_results_text: 'Oops, nothing found!'
},
'.chosen-select-width': {
width: "95%"
}
};
$(document).ready(function () {
parent.axgetXiaoyao('${ctx}/ocr/dictionaryGroup/getdata/${id}',null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#field").val(data.data.field);
$("#label").val(data.data.label);
$("#remark").val(data.data.remark);
changeDistionarytype(data.data.distionarytypeid);
}else{
parent.toastr.error("非法请求。");
}
});
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
$("#Distionarygroupform").attr("action","${ctx}/ocr/dictionaryGroup/save");
var form1 = $('#Distionarygroupform');
var error1 = $('.alert-danger', form1);
form1.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#Distionarygroupform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
rolesback();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
parent.toastr.error(data.message);
}
}
});
}
});
});
function changeDistionarytype(distionarytypeid) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/listall/',null,false , function(result) {
if(result.code == 'OK'){
var data = result.data;
console.log(data);
var posthtml = "";
$(data).each(function(idx,item){
if(undefined != distionarytypeid && distionarytypeid == item.id){
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true" selected>' + item.typename + '</option>';
}else{
posthtml = posthtml + '<option value="' + item.id + '" hassubinfo="true">' + item.typename + '</option>';
}
});
$("#distionarytypeid").append(posthtml);
}
});
$("#distionarytypeid").chosen(selectConfig[$("#distionarytypeid")]);
}
function rolesback() {
parent.closeItem(window.frameElement.name);
}
</script>
</body>
</html>

@ -0,0 +1,496 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据字典分组</title>
<#include "/head/headlist.html" />
<link href="${ctx}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="col-sm-9">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<div class="form-group">
<input name='search_codeno' id='search_codeno' class='form-control' placeholder='字典组名称'/>
</div>
<div class="form-group">
<input name='search_groupname' id='search_groupname' class='form-control' placeholder='字典组描述'/>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped" >
<table id="Distionarygroup_list" ></table>
</div>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典详情管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="userImageform" method="post" id="userImageform" class="form-horizontal" enctype="multipart/form-data">
<div class="col-sm-8">
<div class="form-group">
<img src="" id="usericonImage" />
<input type="file" id="headPhoto" name="headPhoto" onchange="changeFile()" style="display: none;"/>
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<div id="preview-pane">
<div class="preview-container">
<img src="" id="usericonImageCut" class="jcrop-preview" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="" class="btn btn-w-m btn-primary" id="savebuttonUserIcon">选择图片</button>
<button type="button" onclick="" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<div class="modal inmodal fade" id="distionaryTypeManager" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content animated flipInY modal-lg">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h6 class="modal-title">字典分类管理</h6>
</div>
<div class="modal-body">
<div class="row">
<form name="Distionarytypeform" method="post" id="Distionarytypeform" class="form-horizontal" >
<input name="id" id="id" type="hidden">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 编码:</label>
<div class="col-sm-9">
<input name="codeno" id="codeno" class="form-control" placeholder="编码" class="form-control" type="text" maxlength='25' required>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 分类名称:</label>
<div class="col-sm-9">
<input name="typename" id="typename" class="form-control" placeholder="分类名称" class="form-control" type="text" maxlength='75' required>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 是否启用:</label>
<div class="col-sm-9">
<div class="radio i-checks">
<label>
<input type="radio" checked="" value="1" name="enabled"> <i></i>启用
</label>
<label>
<input type="radio" value="0" name="enabled"> <i></i>禁用
</label>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-3 control-label is-required">* 排序:</label>
<div class="col-sm-9">
<input name="sorting" id="sorting" class="form-control" number="true" placeholder="排序" class="form-control" type="text" required>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" onClick="closeTypeModel()" class="btn btn-w-m btn-default" id="savebuttonUserIcon">关闭</button>
<button type="button" onclick="distionarytypeformSubmit()" class="btn btn-w-m btn-primary">保存</button>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
<script src="${ctx}/static/js/plugins/jquery-form/jquery.form.min.js?v=4.3.0"></script>
<script src="${ctx}/static/js/plugins/validate/jquery.validate.min.js"></script>
<script src="${ctx}/static/js/plugins/validate/localization/messages_zh.js" type="text/javascript"></script>
<!-- iCheck -->
<script src="${ctx}/static/js/plugins/iCheck/icheck.min.js"></script>
</body>
</html>
<script type="text/javascript">
var $distionaryTypeManager = $("#distionaryTypeManager");
var $distionaryManager = $("#distionaryManager");
function showTypeModel() {
$distionaryTypeManager.modal();
$distionaryTypeManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeTypeModel() {
$("#Distionarytypeform")[0].reset();
$distionaryTypeManager.modal('hide');
}
function showManagerModel() {
$distionaryManager.modal();
$distionaryManager.css("z-index",(parent.getMaxZIndex() + 1));
}
function closeManagerModel() {
$distionaryManager.modal('hide');
}
var _distionarytype_list;
var _tableListDistionarygroup;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function($){
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green',
});
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}",null,true ,
function(data){
if(data.code == "OK"){
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
$(jsptoolbar).each(function (i, toolbar) {
if(toolbar.methodid != '104'){
$("#_mybutton").append('<button class="btn sbold ' + toolbar.img + '" onClick="' + toolbar.actionmethod + '(\'${resourceid}' + toolbar.methodid + '\')"> ' + ' <i class="fa ' + toolbar.methodkey + '"></i> ' + toolbar.text + '</button>&nbsp');
}
});
_tableListDistionarygroup = $('#Distionarygroup_list').bootstrapTable({
url: '${ctx}/ocr/dictionaryGroup/list' ,
pagination: true, //是否显示分页(*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
height: "100%", pageList: [10, 25, 50],
ajaxOptions:{
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: "desc",
sortname: "ID",
pagesize: params.limit,
start: (params.offset / params.limit) + 1,
search_codeno:'{"value":"' + $("#search_codeno").val() + '","op":"equal","type":"string"}',
search_groupname:'{"value":"' + $("#search_groupname").val() + '","op":"equal","type":"string"}'
};
},
responseHandler:function(res){
return{"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{ width:150,valign: "middle",field:'field',title:'字典组字段名',sortable:true},
{ width:150,valign: "middle",field:'label',title:'字典组描述',sortable:false},
{ width:150,valign: "middle",field:'remark',title:'备注',sortable:true},
{
width:200,
field: 'id',
title: '操作',
formatter:function(value,oData,index) {
var listOperation = "";
$(jspOperation).each(function (i, toolbar) {
listOperation = listOperation + "<a href=\"javascript:" + toolbar.actionmethod + "('${resourceid}" + toolbar.methodid + "','" + oData.id + "');\" class=\"btn " + toolbar.img + " btn-xs\")><i class=\"fa " + toolbar.methodkey + "\"></i> " + toolbar.text + " </a>&nbsp;&nbsp;";
});
return listOperation;
}
}
]
});
}
}
);
$("#Distionarytypeform").attr("action","${ctx}/backstage/admin/distionarytype/save");
var formType = $('#Distionarytypeform');
var errorType = $('.alert-danger', formType);
formType.validate({
debug: true,
errorElement: 'span',
errorClass: 'help-block help-block-error',
focusInvalid: false,
ignore: ":hidden",
errorPlacement: function (error, element) {
if (element.parent(".input-group").size() > 0) {
error.insertAfter(element.parent(".input-group"));
} else if (element.attr("data-error-container")) {
error.appendTo(element.attr("data-error-container"));
} else if (element.parents('.radio-list').size() > 0) {
error.appendTo(element.parents('.radio-list').attr("data-error-container"));
} else if (element.parents('.radio-inline').size() > 0) {
error.appendTo(element.parents('.radio-inline').attr("data-error-container"));
} else if (element.parents('.checkbox-list').size() > 0) {
error.appendTo(element.parents('.checkbox-list').attr("data-error-container"));
} else if (element.parents('.checkbox-inline').size() > 0) {
error.appendTo(element.parents('.checkbox-inline').attr("data-error-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error');
},
success: function (label) {
label.closest('.form-group').removeClass('has-error');
},
submitHandler: function (){
parent.layer.load();
$("#savebutton").addClass('disabled');
$("#Distionarytypeform").ajaxSubmit({
headers:{"logintoken": parent.getLoginToken()},
success:function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
parent.toastr.success(data.message);
refreshTableType();
closeTypeModel();
}else if(data.code == "ERRORM"){
$.each(data.message,function(name,anArray) {
$.each(anArray,function(n,value){
$("#" + n).closest('.form-group').addClass('has-error');
$("<span>").attr( "id", n + "-error" ).addClass("help-block help-block-error").html(value).insertAfter($("#" + n));
});
});
}else{
$("#savebutton").addClass('removeClass');
parent.toastr.error(data.message);
}
}
});
}
});
});
function distionarytypeformSubmit() {
$("#Distionarytypeform").submit();
}
function getIdSelections() {
return $.map(_tableListDistionarygroup.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function getIdSelectionsType() {
return $.map(_distionarytype_list.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function _editType(sourceid,dataid){
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/getdata/' + dataid,null,false , function(data){
if(data.code == "OK"){
$("#id").val(data.data.id);
$("#codeno").val(data.data.codeno);
$("#typename").val(data.data.typename);
$("#sorting").val(data.data.sorting);
if(data.data.enabled == 1){
$("input:radio[name='enabled']").eq(0).attr('checked',true);
}else if(data.data.enabled == 0){
$("input:radio[name='enabled']").eq(1).attr('checked',true);
}
showTypeModel();
}else{
parent.toastr.error("非法请求。");
}
});
}
function _addtType(sourceid,dataid){
showTypeModel();
}
function _useradd(jframeid){
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/ocrDistionarygroupHtml/toSave',"添加字典分组",jframeid + '_add');
}
function viewManager(sourceid,distionarygroupid) {
parent._xiaoyaoOpenMenuTab('${ctx}/backstage/admin/ocrDistionaryHtml/toList?distionarygroupid=' + distionarygroupid + "#sourceid=" +sourceid,"详情管理",distionarygroupid + '_list_child');
}
function updateData(jframeid,str){
var url = '${ctx}/backstage/admin/ocrDistionarygroupHtml/toEdit/' + str ;
parent._xiaoyaoOpenMenuTab(url,"修改数据字典分组",jframeid + '_edit');
}
function _useredit(jframeid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if(str.length > 0 && tempstr.length > 1){
parent.toastr.error("每次只能修改一条信息。");
}else{
if (str.length > 0) {
updateData(jframeid,str);
} else {
parent.toastr.error("至少选择一条信息操作。");
}
}
}
function t_delete(str){
parent.layer.closeAll('loading');
parent.axgetXiaoyao('${ctx}/ocr/dictionaryGroup/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTable();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
}
function _deleteType(sourceid,str){
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
parent.axgetXiaoyao('${ctx}/backstage/admin/distionarytype/delmore' , {id:str},false, function(data){
parent.layer.closeAll('loading');
if(data.code == "OK"){
swal(data.message, "您已经永久删除了这条信息。", "success");
refreshTableType();
closeTypeModel();
}else{
swal(data.message, "遇到未知错误!", "error");
}
});
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _deletebu(sourceid){
var str = getIdSelections() + "";
var tempstr = str.split(",");
if (str.length > 0 && tempstr.length > 0) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
} else {
parent.toastr.error("至少选择一条数据操作");
}
}
function _delete(sourceid,str){
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "是的,我要删除!",
cancelButtonText: "让我再考虑一下…",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
t_delete(str);
} else {
swal("已取消", "您取消了删除操作!", "error");
}
});
}
function refreshTable(sourceid){
_tableListDistionarygroup.bootstrapTable('refreshOptions',{pageNumber:1});
}
function refreshTableType(){
_distionarytype_list.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -0,0 +1,138 @@
<#include "/common/taglibs.html" />
<!DOCTYPE html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据拉取日志</title>
<#include "/head/headlist.html" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="ibox ">
<div class="ibox-content">
<div class="ibox-content">
<form id="searcheuser" class="form-inline">
<!-- <div class="form-group">
<input name='search_callTime' id='search_callTime' class='form-control' placeholder='字段名称'/>
</div>-->
<div class="form-group">
<select class="form-control" name='callStatus' id='callStatus'>
<option value="100">成功</option>
<option value="999">失败</option>
<option value="500">异常</option>
</select>
</div>
<div class="form-group">
<a class="btn btn-primary btn-rounded btn-sm" onclick="refreshTable()"><i
class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$('#searcheuser')[0].reset()"><i
class="fa fa-refresh"></i>&nbsp;重置</a>
</div>
</form>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="container-div">
<div class="btn-group-sm" id="_mybutton" role="group">
</div>
<br/>
</div>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="Post_list"></table>
</div>
</div>
</div>
</div>
<#include "/head/footlist.html" />
</body>
</html>
<script type="text/javascript">
var _tableListPost;
var jsptoolbar = '';
var jspOperation = '';
jQuery(document).ready(function ($) {
parent.axgetXiaoyao("${ctx}/backstage/admin/user/toolsbarOperation?" + "resourceid=${resourceid}", null, true,
function (data) {
if (data.code == "OK") {
jsptoolbar = data.data.Jsptoolbar;
jspOperation = data.data.JspOperation;
$("#_mybutton").empty();
_tableListPost = $('#Post_list').bootstrapTable({
url: '${ctx}/ocr/prevailCloudLog/page',
pagination: true, //是否显示分页(*
pageNumber: 1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
sidePagination: "server",
pageList: [10, 25, 50],
ajaxOptions: {
headers: {"logintoken": parent.getLoginToken()}
},
queryParams: function queryParams(params) {
return {
sortorder: params.order,
sortname: params.sort,
pageSize: params.limit,
start: (params.offset / params.limit) + 1,
status: $("#callStatus").val(),
callTimeStart: params.callTimeStart,
callTimeEnd: params.callTimeEnd,
};
},
responseHandler: function (res) {
return {"rows": res.data.records, "total": res.data.total};
},
columns: [
{checkbox: true},
{width: 100, valign: "middle", field: 'createTime', title: '创建时间', sortable: true},
{width: 150, valign: "middle", field: 'formId', title: '表单id', sortable: true},
{
width: 80, valign: "middle", field: 'status', title: '调用状态', sortable: true,
formatter: function (value, oData, index) {
var listOperation = "";
if (oData.status == 100) {
listOperation = "成功";
} else if (oData.status == 999) {
listOperation = "失败";
} else if (oData.status == 500) {
listOperation = "异常";
} else {
listOperation = "成功";
}
return listOperation;
}
},
{
width: 100, valign: "middle", field: 'type', title: '类型', sortable: true,
formatter: function (value, oData, index) {
var listOperation = "";
if (oData.type == 0) {
listOperation = "图片";
} else if (oData.type == 1) {
listOperation = "工作流";
} else if (oData.type == 2) {
listOperation = "账号";
} else {
listOperation = "未知";
}
return listOperation;
}
},
{width: 80, valign: "middle", field: 'requestParam', title: '请求参数', sortable: true},
{width: 80, valign: "middle", field: 'responseParam', title: '响应参数', sortable: true}
]
});
}
}
);
});
function refreshTable(sourceid){
_tableListPost.bootstrapTable('refreshOptions',{pageNumber:1});
}
</script>

@ -288,7 +288,7 @@ public class DepartmentServiceImpl extends BaseServiceImpl<DepartmentMybatisDao,
jsoncell.put("id", departmentVo.getId().toString());
jsoncell.put("pId",departmentVo.getpId().toString());
jsoncell.put("name",departmentVo.getName());
jsoncell.put("deptNo",departmentVo.getDeptNo());
jsoncells.add(jsoncell);
}

@ -15,6 +15,9 @@ public class DepartmentVo implements Serializable{
private String name;
private String deptNo;
@JsonSerialize(using = ToStringSerializer.class)
public Long getId() {
return id;
@ -40,4 +43,12 @@ public class DepartmentVo implements Serializable{
public void setName(String name) {
this.name = name;
}
public String getDeptNo() {
return deptNo;
}
public void setDeptNo(String deptNo) {
this.deptNo = deptNo;
}
}

@ -168,7 +168,8 @@
select
ID AS id,
DEPARTNAME AS name,
PARENTID AS pId
PARENTID AS pId,
DEPTNO AS deptNo
from S_DEPARTMENT_T WHERE 1=1
<if test="enabled != null"> and ENABLED ${enabled.dataOp} ${enabled.likestar}#{enabled.value}${enabled.likeend}</if>
<if test="parentid != null"> and PARENTID ${parentid.dataOp} ${parentid.likestar}#{parentid.value}${parentid.likeend}</if>
@ -185,7 +186,8 @@
select
ID AS id,
DEPARTNAME AS name,
PARENTID AS pId
PARENTID AS pId,
DEPTNO AS deptNo
from S_DEPARTMENT_T WHERE ID = #{id}
</select>
<select id="selectRootidById" resultMap="BaseResultMap_only" parameterType="java.lang.Long">

@ -316,7 +316,8 @@ public class FlowTaskController extends BaseController {
return ResultVoUtil.error("租户主键不能为空");
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(taskName)) {
searchQuery.addLike("fromtaskname", taskName);
// searchQuery.addLike("fromtaskname", taskName);
searchQuery.addLike("fuzzyRetrieval", taskName);
}
//获取用户预设检索条件id,如果存在检索条件,则高级检索失效
@ -405,7 +406,8 @@ public class FlowTaskController extends BaseController {
}
}
if (StringUtils.isNotBlank(taskName)) {
searchQuery.addLike("fromtaskname", taskName);
// searchQuery.addLike("fromtaskname", taskName);
searchQuery.addLike("fuzzyRetrieval", taskName);
}
if (org.springframework.util.StringUtils.hasText(izproject)) {
if (izproject.contains(",")) {

@ -1628,6 +1628,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
ocrTaskchildPictureApproVo.setProjectName(one.getFromprojectname());//项目名称
ocrTaskchildPictureApproVo.setCustomerLevel(one.getFromCustomerLevel());//客户级别
ocrTaskchildPictureApproVo.setReleaseArea(one.getFromCity());//拜访城市
ocrTaskchildPictureApproVo.setFromplanid(one.getFromplanid());//所属计划
ocrTaskchildPictureApproVo.setTaskIndex(one.getTaskNodeIndex() == null ? one.getTasknode() : one.getTaskNodeIndex());
listNew.add(ocrTaskchildPictureApproVo);

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

@ -125,6 +125,9 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
//解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class);
if(apiPage.getTotal()==0){
return null;
}
//解析数据结果为List
List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class);
ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();
@ -135,7 +138,6 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
return resultApiPage;
} else {
logger.debug("请求图片接口数据失败,参数:{},返回值:{}", json, responseJsonStr);
}
prevailCloudLogService.save(prevailCloudLog);
return null;

@ -11,6 +11,8 @@ import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiPage;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
@ -52,34 +54,63 @@ public class ApiTestController {
@Resource
private DepartmentMybatisDao departmentMybatisDao;
@Resource
private OcrPictureService ocrPictureService;
@Resource
private OcrPrevailCloudLogService ocrPrevailCloudLogService;
/**
*
* @param request
* @return
*/
@GetMapping("pullPictureAllByAccountNo")
public String pullPictureAllByAccountNo(HttpServletRequest request){
String beginStr = request.getParameter("beginStr");
String endStr = request.getParameter("endStr");
String tenantNoStr = request.getParameter("tenantNo");
if(StringUtils.isBlank(tenantNoStr)){
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
if(StringUtils.isBlank(accountNoStr)){
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(request.getParameter("tenantNo"));
Long accountNo = Long.parseLong(request.getParameter("accountNo"));
return "";
}
/**
*
* pull wyl task data
*
* @param request
* @return
*/
@GetMapping("pullPictureByOneAccountNo")
public String pullPictureByOneAccountNo(HttpServletRequest request){
public String pullPictureByOneAccountNo(HttpServletRequest request) {
String beginStr = request.getParameter("beginStr");
String endStr = request.getParameter("endStr");
String pageSize = request.getParameter("pageSize");
String pageNo = request.getParameter("pageNo");
String tenantNoStr = request.getParameter("tenantNo");
if(StringUtils.isBlank(tenantNoStr)){
if (StringUtils.isBlank(tenantNoStr)) {
return "租户不能为空";
}
String accountNoStr = request.getParameter("accountNo");
if(StringUtils.isBlank(accountNoStr)){
if (StringUtils.isBlank(accountNoStr)) {
return "业务主体不能为空";
}
Long tenantNo = Long.parseLong(request.getParameter("tenantNo"));
Long accountNo = Long.parseLong(request.getParameter("accountNo"));
PictureSourceParameter pictureSourceParameter = new PictureSourceParameter();
DateTime dateTime = DateUtil.parse(beginStr+" 00:00:00","yyyy-MM-dd HH:mm:ss");
DateTime dateTime = DateUtil.parse(beginStr + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
// DateTime dateTime = DateUtil.parse("2024-03-31 07:00:000","yyyy-MM-dd HH:mm:ss");
Instant binstant = dateTime.toInstant();
DateTime dateTime1 = DateUtil.parse(endStr+" 00:00:00","yyyy-MM-dd HH:mm:ss");
DateTime dateTime1 = DateUtil.parse(endStr+" 23:59:59","yyyy-MM-dd HH:mm:ss");
// DateTime dateTime1 = DateUtil.parse("2024-03-31 09:00:00","yyyy-MM-dd HH:mm:ss");
Instant einstant = dateTime1.toInstant();
pictureSourceParameter.setStartTime(Date.from(binstant));
@ -89,30 +120,31 @@ public class ApiTestController {
pictureSourceParameter.setTenantNo(tenantNo);
pictureSourceParameter.setAccountNo(accountNo);
try {
ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
if(apiPage==null){
ApiPage<PictureSourceResult> apiPage = prevailCloudApi.pullPictureSource(pictureSourceParameter);
if (apiPage == null) {
return "获取数据为空!";
}
List<PictureSourceResult> listResult= apiPage.getRecords();
List<PictureSourceResult> listResult = apiPage.getRecords();
int count = apiPage.getTotal();
int localCount = listResult.size();
int size = 0;
for (PictureSourceResult pictureSourceResult : listResult) {
//1.如果不存在图片默认一个默认图片,方便走测试。
if(pictureSourceResult.getLivePhoto()==null){
List<Map<String,Object>> livePhoto = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("imgUrl","http://47.93.59.251/api/image/default.png");
map.put("imgName","default.png");
if (pictureSourceResult.getLivePhoto() == null) {
List<Map<String, Object>> livePhoto = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("imgUrl", "http://47.93.59.251/api/image/default.png");
map.put("imgName", "default.png");
livePhoto.add(map);
pictureSourceResult.setLivePhoto(livePhoto);
pictureSourceResult.setRequestParam(pictureSourceParameter);
// continue;
}
size++;
//将可以处理数据放入处理队列中
TaskQueue.pictureDisposePushData(pictureSourceResult);
TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
}
return "当前区间内图片总数:"+count+"条,本次获取:"+localCount+"条,可处理数据:"+size+"条";
return "当前区间内图片总数:" + count + "条,本次获取:" + localCount + "条,可处理数据:" + size + "条";
} catch (Exception e) {
e.printStackTrace();
}
@ -187,9 +219,10 @@ public class ApiTestController {
map.put("imgName", "default.png");
livePhoto.add(map);
pictureSourceResult.setLivePhoto(livePhoto);
pictureSourceResult.setRequestParam(pictureSourceParameter);
}
//将可以处理数据放入处理队列中
TaskQueue.pictureDisposePushData(pictureSourceResult);
TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
}
return "处理成功";
@ -289,7 +322,8 @@ public class ApiTestController {
size++;
// 尝试将数据加入队列
while (!addedToQueue && retryCount < 5) { // 最多重试5次
addedToQueue = TaskQueue.pictureDisposePushData(pictureSourceResult);
pictureSourceResult.setRequestParam(pictureSourceParameter);
addedToQueue = TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
if (!addedToQueue) {
Thread.sleep(60000);
retryCount++;

@ -79,6 +79,7 @@ public class OcrCheckDuplicateController {
paraMap.put(config.getMeaning(), searchvalue);
}
}
//调用查询参数解析方法解析为queryWrapper
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
//提报人模糊搜索
@ -86,6 +87,19 @@ public class OcrCheckDuplicateController {
if(StringUtils.isNotBlank(upUserName)){
queryWrapper.like("upName",upUserName);
}
//任务状态搜索
String iztaskstatus = req.getParameter("iztaskstatus");
if (StringUtils.isNotBlank(iztaskstatus)) {
if(iztaskstatus.indexOf("1")!=-1){
//包含未提交的情况
queryWrapper.apply("(id IN (SELECT PICTUREID FROM ocr_taskchild_picture WHERE STATES in ("+iztaskstatus+")) or similarity_score is null)");
}else{
queryWrapper.apply("id IN (SELECT PICTUREID FROM ocr_taskchild_picture WHERE STATES in ("+iztaskstatus+"))");
}
}
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0");
queryWrapper.orderBy(true,true,"submit_date_timestamp");

@ -1,10 +1,27 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.admin.service.DepartmentService;
import cn.jyjz.xiaoyao.admin.service.ResourcesService;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.constant.SystemConstants;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.framework.security.model.AdminUserModel;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionary;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionary;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionaryGroup;
import cn.jyjz.xiaoyao.ocr.service.OcrDictionaryService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -16,6 +33,10 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* ocr_
@ -27,11 +48,26 @@ import java.io.IOException;
@Api(tags="ocr_业务数据数据字典")
@RestController
@RequestMapping("/ocr/dictionary")
public class OcrDictionaryController {
public class OcrDictionaryController extends BaseController {
@Autowired
private OcrDictionaryService ocrDictionaryService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
@Autowired
private DepartmentService departmentService;
@Autowired
private ResourcesService resourcesService;
/**
*
*mail.zhangyong@gmail.com
@ -81,4 +117,90 @@ public class OcrDictionaryController {
return new ResultVo<>(ResultVo.ERROR,result);
}
/**
*jsondto
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/list")
public ResultVo<IPage<OcrDictionary>> listDistionarygroup(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException {
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
cn.jyjz.xiaoyao.admin.dataobject.User user = this.userService.getSessionUser(request);
OcrDictionary distionarygroup = new OcrDictionary();
distionarygroup.setSearchQueryrolesShowleave(user.getSearchQueryrolesShowleave());
QueryWrapper<OcrDictionary> queryWrapper = SearchQueryFormat
.queryStringFormat(searchQuery,distionarygroup);
IPage<OcrDictionary> page = this.ocrDictionaryService.selectSearchListPage(paramterPage,queryWrapper);;
List<OcrDictionary> records = page.getRecords();
List<Long> tenantIds = records.stream().map(OcrDictionary::getTenantId).collect(Collectors.toList());
List<Department> departments = departmentService.list(new LambdaQueryWrapper<Department>().in(Department::getDeptno, tenantIds));
Map<String, String> deptNameMap = departments.stream().collect(Collectors.toMap(Department::getDeptno, Department::getDepartname));
records.forEach(s->{
s.setTenantName(deptNameMap.get(String.valueOf(s.getTenantId())));
});
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@PostMapping("/save")
public ResultVo saveDistionarygroup(HttpServletResponse response,HttpServletRequest request,OcrDictionary tab) throws IOException{
OcrDictionary ocrDictionaryGroup = ocrDictionaryService.getOne(new LambdaQueryWrapper<OcrDictionary>().eq(OcrDictionary::getValue, tab.getValue()));
if(Objects.nonNull(ocrDictionaryGroup)&&!ocrDictionaryGroup.getId().equals(tab.getId())){
return ResultVoUtil.error("字段名称重复");
}
this.ocrDictionaryService.saveOrUpdate(tab);
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@PostMapping("/edit")
public ResultVo editDistionarygroup(HttpServletResponse response,HttpServletRequest request,OcrDictionary tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.ocrDictionaryService.updateById(tab);
return ResultVoUtil.success();
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/getdata/{id}")
@ResponseBody
public ResultVo getdateDistionarygroup(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") Long id) throws IOException{
OcrDictionary dto = this.ocrDictionaryService.selectDtoById(id);
Department one = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getDeptno, dto.getTenantId()).last("limit 1"));
dto.setTenantName(Objects.nonNull(one)?one.getDepartname():"");
if(null != dto){
return ResultVoUtil.success(dto);
}else{
return ResultVoUtil.error();
}
}
/**
*id1,2,3
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/delmore")
@ResponseBody
public ResultVo delMoreDistionarygroup(HttpServletResponse response,HttpServletRequest request) throws IOException{
String ids = request.getParameter("id");
this.ocrDictionaryService.deleteByIdMore(ids);
return ResultVoUtil.success();
}
}

@ -0,0 +1,186 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.admin.dataobject.Distionarygroup;
import cn.jyjz.xiaoyao.admin.dataobject.Distionarytype;
import cn.jyjz.xiaoyao.admin.service.ResourcesService;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.constant.SystemConstants;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.util.SearchQueryFormat;
import cn.jyjz.xiaoyao.framework.security.model.AdminUserModel;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionary;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionaryGroup;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrField;
import cn.jyjz.xiaoyao.ocr.dto.OcrFieldDto;
import cn.jyjz.xiaoyao.ocr.service.OcrDictionaryGroupService;
import cn.jyjz.xiaoyao.ocr.service.OcrDictionaryService;
import cn.jyjz.xiaoyao.ocr.vo.OcrFieldVo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* ocr_
*
* @author hugh(shuli.yao) 1397940314@qq.com
* @version 1.0
* @date 2024/3/16 15:16
*/
@Api(tags="ocr_业务数据数据字典")
@RestController
@RequestMapping("/ocr/dictionaryGroup")
public class OcrDictionaryGropuController extends BaseController {
@Autowired
private OcrDictionaryGroupService ocrDictionaryGroupService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
@Autowired
private ResourcesService resourcesService;
/**
*jsondto
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/list")
public ResultVo<IPage<OcrDictionaryGroup>> listDistionarygroup(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException {
SearchQuery searchQuery = this.getParametersStartingWithToSearchJson(request, "search_");
cn.jyjz.xiaoyao.admin.dataobject.User user = this.userService.getSessionUser(request);
OcrDictionaryGroup distionarygroup = new OcrDictionaryGroup();
distionarygroup.setSearchQueryrolesShowleave(user.getSearchQueryrolesShowleave());
QueryWrapper<OcrDictionaryGroup> queryWrapper = SearchQueryFormat
.queryStringFormat(searchQuery,distionarygroup);
IPage<OcrDictionaryGroup> page = this.ocrDictionaryGroupService.selectSearchListPage(paramterPage,queryWrapper);;
return ResultVoUtil.success(page);
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/toolsbarOther")
@ResponseBody
public ResultVo<JSONObject> toolsbarOther(HttpServletResponse response, HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
if(StringUtils.isBlank(resourceid)){
resourceid = "26";
}
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
AdminUserModel adminUserModel = (AdminUserModel) this.userTokenService.getSessionUserFromCache(userToken.getTokenid());
cn.jyjz.xiaoyao.common.base.vo.User user = adminUserModel.getUser();
JSONObject jsonObject = this.resourcesService.getResourceMethod(Long.decode(resourceid), user);
JSONArray toolsbar = (JSONArray) jsonObject.get(SystemConstants.SYS_JSP_TOOLSBAR);
if(null == toolsbar || toolsbar.isEmpty()){
jsonObject = this.resourcesService.getObjectByResourceid(resourceid);
}
return ResultVoUtil.success(jsonObject);
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@PostMapping("/save")
public ResultVo saveDistionarygroup(HttpServletResponse response,HttpServletRequest request,OcrDictionaryGroup tab) throws IOException{
OcrDictionaryGroup ocrDictionaryGroup = ocrDictionaryGroupService.getOne(new LambdaQueryWrapper<OcrDictionaryGroup>().eq(OcrDictionaryGroup::getField, tab.getField()));
if(Objects.nonNull(ocrDictionaryGroup)&&!ocrDictionaryGroup.getId().equals(tab.getId())){
return ResultVoUtil.error("字段名称重复");
}
this.ocrDictionaryGroupService.saveOrUpdate(tab);
return ResultVoUtil.success();
}
/**
*form
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@PostMapping("/edit")
public ResultVo editDistionarygroup(HttpServletResponse response,HttpServletRequest request,OcrDictionaryGroup tab) throws IOException{
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
this.ocrDictionaryGroupService.updateById(tab);
return ResultVoUtil.success();
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/getdata/{id}")
@ResponseBody
public ResultVo getdateDistionarygroup(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") Long id) throws IOException{
OcrDictionaryGroup dto = this.ocrDictionaryGroupService.selectDtoById(id);
if(null != dto){
return ResultVoUtil.success(dto);
}else{
return ResultVoUtil.error();
}
}
/**
*id1,2,3
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/delmore")
@ResponseBody
public ResultVo delMoreDistionarygroup(HttpServletResponse response,HttpServletRequest request) throws IOException{
String ids = request.getParameter("id");
this.ocrDictionaryGroupService.deleteByIdMore(ids);
return ResultVoUtil.success();
}
@GetMapping("/listall")
public ResultVo<List<OcrDictionaryGroup>> listall(ParamterPage paramterPage, HttpServletRequest request, HttpServletResponse response) throws IOException{
List<OcrDictionaryGroup> list = this.ocrDictionaryGroupService.list();
return ResultVoUtil.success(list);
}
}

@ -0,0 +1,78 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.admin.dataobject.Distionarygroup;
import cn.jyjz.xiaoyao.admin.service.DistionaryService;
import cn.jyjz.xiaoyao.admin.service.DistionarygroupService;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/backstage/admin/ocrDistionaryHtml")
public class OcrDistionaryHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private DistionaryService distionaryService;
@Autowired
private DistionarygroupService distionarygroupService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2022-03-29 16:00:28
**/
@GetMapping("/toList")
public String toListDistionary(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
String distionarygroupid = request.getParameter("distionarygroupid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("distionarygroupid",distionarygroupid);
request.setAttribute("distionarytypeid","212");
return "/backstage/oa/ocr/distionary/list";
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-29 16:00:28
**/
@GetMapping("/toSave")
public String toSaveDistionary(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/distionary/add";
}
/**
*ID
*mail.zhangyong@gmail.com
*2022-03-29 16:00:28
**/
@GetMapping("/toEdit/{id}")
public String toEditDistionary(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/ocr/distionary/edit";
}
}

@ -0,0 +1,71 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.admin.service.DistionarygroupService;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/backstage/admin/ocrDistionarygroupHtml")
public class OcrDistionarygroupHtmlController extends BaseController{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Autowired
private DistionarygroupService distionarygroupService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private UserService userService;
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/toList")
public String toListDistionarygroup(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/distionarygroup/list";
}
/**
*
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/toSave")
public String toSaveDistionarygroup(HttpServletResponse response,HttpServletRequest request){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
return "/backstage/oa/ocr/distionarygroup/add";
}
/**
*ID
*mail.zhangyong@gmail.com
*2022-03-07 15:15:08
**/
@GetMapping("/toEdit/{id}")
public String toEditDistionarygroup(HttpServletResponse response,HttpServletRequest request,@PathVariable("id") String id){
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid",resourceid);
request.setAttribute("id", id);
return "/backstage/oa/ocr/distionarygroup/edit";
}
}

@ -273,7 +273,7 @@ public class OcrPictureController extends BaseController {
String search_month = req.getParameter("search_month");
String ordertype = req.getParameter("ordertype");
queryWrapper.eq("suspiciousfile", "0");
if (StringUtils.isNotBlank(ordertype)) {
if (ordertype.equals("asc")) {
queryWrapper.orderByAsc("similarity_score");
@ -328,7 +328,9 @@ public class OcrPictureController extends BaseController {
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0");
queryWrapper.isNotNull("local_pictrue_url");
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper);
List<OcrPicture> ocrPictures = pageList.getRecords();

@ -0,0 +1,47 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/ocr/prevailCloudLog")
public class OcrPrevailCloudLogController {
@Resource
private OcrPrevailCloudLogService ocrPrevailCloudLogService;
/**
*
*
* @return
*/
@ApiOperation(value = "根据评审类型查询字段列表", notes = "根据评审类型查询字段列表")
@GetMapping(value = "/page")
public ResultVo<IPage<OcrPrevailCloudLog>> list(@RequestParam(name = "start", defaultValue = "1") Integer start,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "status", required = false) String status,
HttpServletRequest request) {
QueryWrapper<OcrPrevailCloudLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", status);
ResultVo<IPage<OcrPrevailCloudLog>> resultVo = new ResultVo<>();
ParamterPage paramterPage = new ParamterPage();
paramterPage.setPagesize(pageSize);
paramterPage.setStart(start);
IPage<OcrPrevailCloudLog> ocrPictureLogIPage = ocrPrevailCloudLogService.selectSearchListPage(paramterPage, queryWrapper);
resultVo.setData(ocrPictureLogIPage);
resultVo.addOK("查询成功");
return resultVo;
}
}

@ -0,0 +1,20 @@
package cn.jyjz.xiaoyao.ocr.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/backstage/oa/prevailcloudlog")
public class OcrPrevailCloudLogHtmlController {
@GetMapping("/list")
public String toListOcrConfiguration(HttpServletResponse response, HttpServletRequest request) {
String resourceid = request.getParameter("resourceid");
request.setAttribute("resourceid", resourceid);
return "/backstage/oa/ocr/prevailcloudlog/list";
}
}

@ -69,11 +69,12 @@ public class OcrUsersearchController extends BaseController{
@GetMapping(value = "/list")
public ResultVo<IPage<OcrUsersearch>> queryPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@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) {
//获取当前登录人
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
ParamterPage paramterPage = new ParamterPage();
paramterPage.setPagesize(pageSize);
paramterPage.setStart(pageNo);
@ -93,7 +94,18 @@ public class OcrUsersearchController extends BaseController{
queryWrapper.eq("USERID",userToken.getUserid());
queryWrapper.eq("TENANTID",tenantId);
queryWrapper.eq("TYPE",type);
queryWrapper.orderByDesc(Arrays.asList("IZTOP","REORDER"));
if(StringUtils.isNotBlank(orderName)){
if("desc".equals(orderType)){
queryWrapper.orderByDesc(orderName);
}else{
queryWrapper.orderByAsc(orderName);
}
}else{
queryWrapper.orderByDesc(Arrays.asList("IZTOP","REORDER"));
}
IPage<OcrUsersearch> pageList = ocrUsersearchService.selectSearchListPage(paramterPage, queryWrapper);

@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
*
*/
@Mapper
public interface OcrPictureMybatisDao extends BaseMapper<OcrPicture> {
OcrPicture getPackagePictureInfo(@Param("packageId") String packageId, @Param("pictureId") String pictureId);
OcrPicture selectByRemark(@Param("remark") String remark);
String getPictureApproveResult(Long id);
}

@ -1,10 +1,13 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateSerializer;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
@ -15,6 +18,11 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.AbstractMap;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* TODO
*
@ -29,7 +37,7 @@ import lombok.NoArgsConstructor;
@Schema(name = "业务数据字典值表", title = "业务数据字典值表")
@ApiModel(value="业务数据字典值表", description="业务数据字典值表")
@TableName(value = "ocr_dictionary")
public class OcrDictionary {
public class OcrDictionary implements BaseDto,java.io.Serializable{
@ApiModelProperty(value ="主键")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@ -51,10 +59,41 @@ public class OcrDictionary {
@ApiModelProperty(value ="租户id")
@TableField(value="tenant_id")
@JsonSerialize(using = ToStringSerializer.class)
private Long tenantId;
@ApiModelProperty(value ="租户名称")
@TableField(exist = false)
private String tenantName;
@ApiModelProperty(value ="字典组")
@TableField(value="group_id")
private Long groupId;
@TableField(exist = false)
@JsonIgnore
private final Map<String,String> query = Stream.of(
new AbstractMap.SimpleEntry<>("ID","id"),
new AbstractMap.SimpleEntry<>("DISTIONATYGROUPID","group_id"),
new AbstractMap.SimpleEntry<>("CODENO","value"),
new AbstractMap.SimpleEntry<>("NAME","lable")
)
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore
private SearchQuery searchQueryrolesShowleave;
}

@ -1,9 +1,14 @@
package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.admin.dataobject.Distionary;
import cn.jyjz.xiaoyao.admin.dataobject.Distionarytype;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
@ -15,6 +20,12 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.AbstractMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* TODO
*
@ -29,7 +40,7 @@ import lombok.NoArgsConstructor;
@Schema(name = "业务数据字典组表", title = "业务数据字典组表")
@ApiModel(value="业务数据字典组表", description="业务数据字典组表")
@TableName(value = "ocr_dictionary_group")
public class OcrDictionaryGroup {
public class OcrDictionaryGroup implements BaseDto,java.io.Serializable {
@ApiModelProperty(value ="主键")
@TableId(value = "id",type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
@ -47,4 +58,33 @@ public class OcrDictionaryGroup {
@ApiModelProperty(value ="备注")
@TableField(value="remark")
private String remark;
@TableField(exist = false)
private List<OcrDictionary> distionaryList;
//保存当前登录用户的数据权限范围的搜索条件
@TableField(exist = false)
@JsonIgnore
private SearchQuery searchQueryrolesShowleave;
@TableField(exist = false)
@JsonIgnore
private final Map<String,String> query = Stream.of(
new AbstractMap.SimpleEntry<>("listdept","deptid"),
new AbstractMap.SimpleEntry<>("ID","id"),
new AbstractMap.SimpleEntry<>("CODENO","field"),
new AbstractMap.SimpleEntry<>("GROUPNAME","label")
)
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
@Override
public String getQueryFiled(String filedname){
String obj = null;
if(null != query && query.size() > 0){
obj = query.get(filedname);
}
return obj;
}
}

@ -63,4 +63,9 @@ public class OcrFrontConf implements java.io.Serializable {
*
*/
private String defaultPictureImg;
/**
*
*/
private String pictureSourceAllUrl;
}

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

@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -23,6 +26,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "ocr_prevail_cloud_log")
@Builder
public class OcrPrevailCloudLog {
/**
* ID
@ -70,6 +74,7 @@ public class OcrPrevailCloudLog {
*
*/
@TableField(value = "create_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
@ -82,6 +87,7 @@ public class OcrPrevailCloudLog {
*
*/
@TableField(value = "update_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**

@ -69,11 +69,10 @@ public interface IOcrCheckDuplicateService extends IService<OcrCheckDuplicate> {
/**
*
*
* @param checkDuplicateNo
* @param tenantId
* @param pageNo
* @param pageSize
* @param pictureId
* @param orderType
* @param orderValue
* @return
*/

@ -0,0 +1,21 @@
package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionaryGroup;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
*
*
* @author hugh(shuli.yao) 1397940314@qq.com
* @version 1.0
* @date 2024/3/16 12:48
*/
public interface OcrDictionaryGroupService extends BaseService<OcrDictionaryGroup> {
}

@ -36,4 +36,8 @@ public interface OcrDictionaryService extends BaseService<OcrDictionary> {
* @return
*/
String queryLabelByValue(String field, String value, String tenantId);
}

@ -1,52 +1,60 @@
package cn.jyjz.xiaoyao.ocr.service;
import java.util.List;
import java.util.Map;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface OcrPictureService extends BaseService<OcrPicture> {
*
*/
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);
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest req, String buessinessno);
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);
/**
*
*
* @param tenantId
* @param createuser
* @return
*/
public List<OcrPicture> listByTaskChild(String tenantId,String createuser,String isclose,String tasktype,String packageid);
public List<OcrPicture> listByTaskChild(String tenantId, String createuser, String isclose, String tasktype, String packageid);
/**
*
*
* @return
*/
public List<OcrPicture> listByTaskChild(List<String> pictureid);
/**
* id
*
* @param pageNo
* @param pageSize
* @param userSearchId
@ -56,6 +64,7 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
/**
*
*
* @param ocrPictureList
* @return
*/
@ -65,7 +74,7 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
ResultVo createPackageTask(List<OcrPicture> pageList, String tenantId, UserToken userToken, String searchMonth, HttpServletRequest req, String buessinessno, Map<String, Object> paramMap);
Map<String,String> getOcrPictureClassifyAndHash(String img);
Map<String, String> getOcrPictureClassifyAndHash(String img);
String getServerUrl();
@ -73,4 +82,13 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
// Long getPhotoDateTime(OcrPicture picture);
/**
* id
*
* @param remark
* @return
*/
OcrPicture selectByRemark(String remark);
OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId);
}

@ -1,14 +1,13 @@
package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
/**
* ClassName $className$.java
* Description:
* Description:
* Author scl.
* Date 2024/4/25 12:52
*/
public interface OcrPrevailCloudLogService extends IService<OcrPrevailCloudLog>{
public interface OcrPrevailCloudLogService extends BaseService<OcrPrevailCloudLog> {
}

@ -155,7 +155,7 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
QueryWrapper<OcrCheckDuplicate> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("status", "1");
// queryWrapper.eq("status", "1");
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("create_time");
List<OcrCheckDuplicate> list = ocrCheckDuplicateMapper.selectList(queryWrapper);
@ -189,8 +189,13 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
int similarityGroupOrder = 1;
//阈值分组map
Map<String,Integer> similarityGroupOrderMap = new HashMap<>();
//1.开启比对任务
//1.开启比对任务s
for (OcrPicture ocrPicture : ocrPictureList) {
//检查查重任务是否关闭
if(!this.isCheckDuplicateExist(checkDuplicateId)){
logger.info("查重任务,已取消!");
return;
}
// 添加相似度百分百分组id
if (ObjectUtils.isEmpty(ocrPicture.getCompleteSimilarGroupId())) {
@ -330,6 +335,14 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
}
private boolean isCheckDuplicateExist(Long checkDuplicateId) {
OcrCheckDuplicate checkDuplicate = baseMapper.selectById(checkDuplicateId);
if(checkDuplicate!=null && checkDuplicate.getIsDelete()!=1){
return true;
}
return false;
}
/**
*
* @return

@ -0,0 +1,35 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.admin.cache.CacheAdminConstants;
import cn.jyjz.xiaoyao.admin.dataobject.Distionarytype;
import cn.jyjz.xiaoyao.admin.service.DistionaryService;
import cn.jyjz.xiaoyao.admin.service.DistionarytypeService;
import cn.jyjz.xiaoyao.common.base.param.ParamterPage;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.common.redis.cache.ICacheManager;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrDictionaryGroupDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrDictionaryGroup;
import cn.jyjz.xiaoyao.ocr.service.OcrDictionaryGroupService;
import cn.jyjz.xiaoyao.ocr.service.OcrDictionaryService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
*
*
* @author hugh(shuli.yao) 1397940314@qq.com
* @version 1.0
* @date 2024/3/16 12:48
*/
@Service
@Slf4j
public class OcrDictionaryGroupServiceImpl extends BaseServiceImpl<OcrDictionaryGroupDao, OcrDictionaryGroup> implements OcrDictionaryGroupService {
}

@ -13,19 +13,12 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
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.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPackagetask;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
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.dataobject.*;
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;
@ -33,6 +26,7 @@ import cn.jyjz.xiaoyao.ocr.util.HashCompareUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -56,11 +50,7 @@ import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -83,6 +73,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource
private OcrPackagetaskService ocrPackagetaskService;
@Resource
private OcrTaskchildPictureService ocrTaskchildPictureService;
@Resource
IFlowInstanceService flowInstanceService;
@ -92,6 +84,14 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
private CategoryService categoryService;
@Resource
private OcrPictureInfoService ocrPictureInfoService;
@Resource
private OcrCheckDescribeHisService ocrCheckDescribeHisService;
@Resource
private IOcrCheckDuplicateResultService ocrCheckDuplicateResultService;
@Resource
private IOcrPictureDuplicateHisService ocrPictureDuplicateHisService;
private Object lock = new Object();
/**
*
@ -103,6 +103,8 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource
OcrPictureMybatisDao pictureMybatisDao;
@Autowired
private UserapproveService userapproveService;
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, UserToken sysUser, String search_month, HttpServletRequest request, String buessinessno) {
@ -329,15 +331,28 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override
public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) {
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId);
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId, pictureId);
if(ocrPicture==null){
return null;
}
OcrPictureInfo one = ocrPictureInfoService.getOne(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, ocrPicture.getId()));
ocrPicture.setPictureInfo(one);
if(ObjectUtil.isNotEmpty(one)){
if (ObjectUtil.isNotEmpty(one)) {
ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp());
}
return ocrPicture;
}
@Override
public OcrPicture selectByRemark(String remark) {
return pictureMybatisDao.selectByRemark(remark);
}
@Override
public OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId) {
return ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, pictureId));
}
// @Override
// public Long getPhotoDateTime(OcrPicture picture) {
// long timestamp = 0L;
@ -399,7 +414,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// }
public OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) {
OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId()));
ocrTaskchildPicture.setBuessinessno(buessinessno);
@ -429,7 +443,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
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();
//项目错误信息
@ -499,6 +513,75 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
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) {
if (null == compareList) {
@ -676,7 +759,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
@Override
public int savePictures(List<OcrPicture> ocrPictureList){
public int savePictures(List<OcrPicture> ocrPictureList) {
//1.字典数据 解析入库
boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList);
@ -688,9 +771,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
try {
boolean saveBatch = false;
synchronized(lock) {
synchronized (lock) {
// 同步的代码块
saveBatch = this.saveBatch(ocrPictureList);
saveBatch = this.saveOrUpdateBatch(ocrPictureList);
}
//3.添加图片信息
@ -699,9 +782,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
this.convertImage(ocrPictureList);
return ocrPictureList.size();
}
log.error("存储图片失败:{}",JSONObject.toJSON(ocrPictureList));
}catch (Exception e){
log.error("存储图片异常:{}",e.getMessage());
log.error("存储图片失败:{}", JSONObject.toJSON(ocrPictureList));
} catch (Exception e) {
log.error("存储图片异常:{}", e.getMessage());
}
return 0;
@ -711,7 +794,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
List<OcrPictureInfo> list = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) {
if (StringUtils.isNotBlank(ocrPicture.getImgurl())) {
OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(),true);
OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(), true);
if (ObjectUtil.isNotEmpty(imageInfo)) {
imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname());
@ -724,17 +807,18 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/**
*
*
* @param ocrPicture
*/
@Override
public void savePicturesInfo(OcrPicture ocrPicture) {
boolean isConnection = true;
String url = ocrPicture.getImgurl();
if(!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())){
if (!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())) {
url = ocrPicture.getLocalpictrueurl();
isConnection = false;
}
OcrPictureInfo imageInfo = getImageInfo(url,isConnection);
OcrPictureInfo imageInfo = getImageInfo(url, isConnection);
imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname());
ocrPictureInfoService.save(imageInfo);
@ -742,16 +826,17 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/**
*
* @param imageUrl
*
* @param imageUrl
* @param isConnection url
* @return
*/
private OcrPictureInfo getImageInfo(String imageUrl,boolean isConnection) {
private OcrPictureInfo getImageInfo(String imageUrl, boolean isConnection) {
try {
BufferedImage image = null;
Integer imageSize = 0;
if(isConnection){
if (isConnection) {
// 创建URL对象
URL url = new URL(imageUrl);
// 打开连接
@ -759,11 +844,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// 获取图片大小
imageSize = urlConnection.getContentLength();
// 使用ImageIO读取图片
image= ImageIO.read(url);
}else{
image = ImageIO.read(url);
} else {
File file = new File(imageUrl);
image = ImageIO.read(file);
imageSize =(int)file.length();
imageSize = (int) file.length();
}
if (image != null) {
@ -810,7 +895,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
}
private void convertImage(List<OcrPicture> list) {
for (OcrPicture ocrPicture : list) {
PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
@ -821,15 +905,15 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
boolean addedToQueue = false;
int count = 1;
while (!addedToQueue){
while (!addedToQueue) {
try {
addedToQueue = TaskQueue.pictureImgToLocalPushData(entity);
if(addedToQueue) {
if (addedToQueue) {
break;
}
Thread.sleep(5000);
} catch (InterruptedException e) {
log.error("放入图片下载队列,等待休眠异常:{}",e.getMessage());
log.error("放入图片下载队列,等待休眠异常:{}", e.getMessage());
}
count++;
}

@ -1,19 +1,11 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPrevailCloudLogMapper;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPrevailCloudLog;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
/**
* ClassName $className$.java
* Description:
* Author scl.
* Date 2024/4/25 12:52
*/
@Service
public class OcrPrevailCloudLogServiceImpl extends ServiceImpl<OcrPrevailCloudLogMapper, OcrPrevailCloudLog> implements OcrPrevailCloudLogService{
import org.springframework.stereotype.Service;
@Service
public class OcrPrevailCloudLogServiceImpl extends BaseServiceImpl<OcrPrevailCloudLogMapper, OcrPrevailCloudLog> implements OcrPrevailCloudLogService {
}

@ -62,6 +62,11 @@ public class OcrTaskPackageServiceImpl extends ServiceImpl<OcrTaskPackageMapper,
BeanUtil.copyProperties(ocrTaskPackage, taskPackage);
taskPackage.setCheckDuplicateId(ocrCheckDuplicate.getId());
if (this.save(taskPackage)) {
//修改查重任务状态,修改为已创建任务包防止重复创建
OcrCheckDuplicate ocrCheckDuplicateUpdate = new OcrCheckDuplicate();
ocrCheckDuplicateUpdate.setId(ocrCheckDuplicate.getId());
ocrCheckDuplicateUpdate.setStatus(4);
checkDuplicateService.updateById(ocrCheckDuplicateUpdate);
return ResultVoUtil.success("创建任务包成功!",taskPackage);
}
return ResultVoUtil.error("创建任务包失败!");

@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -43,6 +44,9 @@ public class OcrTaskchildDubiousFileServiceImpl extends ServiceImpl<OcrTaskchild
@Resource
private OcrTaskchildPictureService ocrTaskchildPictureService;
@Autowired
private OcrPictureInfoService ocrPictureInfoService;
/**
* ,
*
@ -112,6 +116,22 @@ public class OcrTaskchildDubiousFileServiceImpl extends ServiceImpl<OcrTaskchild
List<OcrTaskChildPictureVo> records = taskChildPictures.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
//补齐数据
for (OcrTaskChildPictureVo taskChildPictureVo : records) {
//赋值宽高
LambdaQueryWrapper<OcrPictureInfo> ocrPictureInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
ocrPictureInfoLambdaQueryWrapper.eq(OcrPictureInfo::getPictureId,taskChildPictureVo.getPictureId());
OcrPictureInfo ocrPictureInfo = ocrPictureInfoService.getOne(ocrPictureInfoLambdaQueryWrapper);
if (ocrPictureInfo != null && ocrPictureInfo.getImgMeasure() != null) {
String[] dimensions = ocrPictureInfo.getImgMeasure().split("x");
if (dimensions.length == 2) {
taskChildPictureVo.setWide(dimensions[0]);
taskChildPictureVo.setHigh(dimensions[1]);
}
}
}
objectPage.setRecords(records);
objectPage.setTotal(taskChildPictures.size());
}

@ -94,6 +94,9 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
@Autowired
private DepartmentService departmentService;
@Autowired
private OcrPictureInfoService ocrPictureInfoService;
/**
*
*
@ -723,6 +726,21 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
}
}
List<OcrTaskChildPictureVo> collect = taskChildPictures.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
//补齐数据
for (OcrTaskChildPictureVo taskChildPictureVo : collect) {
//赋值宽高
LambdaQueryWrapper<OcrPictureInfo> ocrPictureInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
ocrPictureInfoLambdaQueryWrapper.eq(OcrPictureInfo::getPictureId, taskChildPictureVo.getPictureId());
OcrPictureInfo ocrPictureInfo = ocrPictureInfoService.getOne(ocrPictureInfoLambdaQueryWrapper);
if (ocrPictureInfo != null && ocrPictureInfo.getImgMeasure() != null) {
String[] dimensions = ocrPictureInfo.getImgMeasure().split("x");
if (dimensions.length == 2) {
taskChildPictureVo.setWide(dimensions[0]);
taskChildPictureVo.setHigh(dimensions[1]);
}
}
}
objectPage.setRecords(collect);
objectPage.setTotal(taskChildPictures.size());
return objectPage;
@ -738,9 +756,13 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
@Override
public Boolean sendFlowTaskResult(OcrTaskchildPicture taskchildPicture, OcrPicture picture, FlowApprove flowApprove) throws Exception {
Department dept = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getDeptno, picture.getTenantId()));
if (1 == dept.getTypedept()) {
dept = departmentService.getOne(new LambdaQueryWrapper<Department>().eq(Department::getId, dept.getParentid()));
}
FlowResultDto flowResultDto = new FlowResultDto();
flowResultDto.setTenantNo(picture.getTenantId());
flowResultDto.setAccountNo(Long.parseLong(picture.getPictureid()));
flowResultDto.setTenantNo(dept == null ? picture.getTenantId() : Long.valueOf(dept.getDeptno()));
flowResultDto.setAccountNo(picture.getTenantId());
flowResultDto.setTaskNo(Long.parseLong(picture.getRemark()));
flowResultDto.setPictureMatchDegree(BigDecimal.valueOf(picture.getSimilarityscore()));
flowResultDto.setIsPictureRepeat(picture.getField14() == null ? 0 : Integer.valueOf(picture.getField14()));

@ -74,7 +74,7 @@ public class OcrUsersearchchildServiceImpl extends BaseServiceImpl<OcrUsersearch
if(SearchConfigEnum.FIELD16.getId().equals(searchfield)){
vo.setIzstatus(ocrUsersearchchild.getSearchvalue());
}
if(SearchConfigEnum.IZTASKSTATUS.getId().equals(searchfield)){
if("iztaskstatus".equals(searchfield)){
vo.setIztaskstatus(ocrUsersearchchild.getSearchvalue());
}
if(SearchConfigEnum.FIELD17.getId().equals(searchfield)){

@ -1,6 +1,12 @@
package cn.jyjz.xiaoyao.ocr.thread;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.common.PrevailCloudConstant;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
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.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import com.google.common.collect.Sets;
@ -35,16 +41,42 @@ public class TaskQueue {
* @param pictureSourceResult //三方拉取 获取到的图片对象
* @return
*/
public static boolean pictureDisposePushData(PictureSourceResult pictureSourceResult) {
public static boolean pictureDisposePushData(PictureSourceResult pictureSourceResult, OcrPictureService ocrPictureService, OcrPrevailCloudLogService ocrPrevailCloudLogService) {
try {
Long taskId = pictureSourceResult.getTaskId();
if (resultSet.contains(String.valueOf(taskId))) {
return true;
}
OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
.formId(pictureSourceResult.getTaskId())
.requestParam(pictureSourceResult.getRequestParam().toString())
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.PULL_PICTURE_SOURCE)
.status(100)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
resultSet.add(String.valueOf(taskId));
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) {
OcrPrevailCloudLog ocrPrevailCloudLog = OcrPrevailCloudLog.builder()
.formId(pictureSourceResult.getTaskId())
.requestParam(pictureSourceResult.getRequestParam().toString())
.responseParam(pictureSourceResult.toString())
.type(PrevailCloudConstant.PULL_PICTURE_SOURCE)
.status(500)
.build();
ocrPrevailCloudLogService.save(ocrPrevailCloudLog);
return false;
}
return true;

@ -1,20 +1,18 @@
package cn.jyjz.xiaoyao.ocr.thread.tasks;
import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import com.alibaba.fastjson.JSONObject;
//import javafx.scene.input.DataFormat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
@ -23,35 +21,32 @@ import java.util.*;
* @version 1.0
* @date 2024/3/14 11:15
*/
public class PictureDisposeTask implements Runnable{
public class PictureDisposeTask implements Runnable {
protected Logger logger = LoggerFactory.getLogger(getClass());
private PictureSourceResult pictureSourceResult;
public PictureDisposeTask(PictureSourceResult pictureSourceResult){
public PictureDisposeTask(PictureSourceResult pictureSourceResult) {
this.pictureSourceResult = pictureSourceResult;
}
@Autowired
private OcrPictureService ocrPictureService;
@Override
public void run() {
//1.对图片对象进行入库操作
OcrPictureService ocrPictureService = SpringUtils.getBean("ocrPictureService");
//获取当前任务中有多少图片
List<Map<String,Object>> livePhoto = pictureSourceResult.getLivePhoto();
List<Map<String, Object>> livePhoto = pictureSourceResult.getLivePhoto();
//定义新增集合对象
List<OcrPicture> ocrPictureList = new ArrayList<>();
int index =0;
int index = 0;
for (Map<String, Object> map : livePhoto) {
if(index>0){
if (index > 0) {
continue;
}
//检查图片地址是否为空
if(map.get("imgUrl")!=null && !StringUtils.isEmpty(map.get("imgUrl").toString())){
if (map.get("imgUrl") != null && !StringUtils.isEmpty(map.get("imgUrl").toString())) {
//判断该任务是否存在判断依据是任务ID相同提报时间不同则可以插入
// LambdaQueryWrapper<OcrPicture> ocrPictureLambdaQueryWrapper = new LambdaQueryWrapper<>();
// ocrPictureLambdaQueryWrapper.eq(OcrPicture::getRemark,pictureSourceResult.getTaskId());
@ -66,8 +61,16 @@ public class PictureDisposeTask implements Runnable{
// }
//不为空开始组装参数 入库
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()));
}
//业务主体
@ -75,21 +78,21 @@ public class PictureDisposeTask implements Runnable{
//业务主体名称
picture.setTenantname(pictureSourceResult.getAccountName());
//业务主体状态
if(pictureSourceResult.getAccountStatus()!=null){
if (pictureSourceResult.getAccountStatus() != null) {
picture.setTenantstatus(pictureSourceResult.getAccountStatus().toString());
}
//租户编号
if(pictureSourceResult.getAccountNo()!=null){
if (pictureSourceResult.getAccountNo() != null) {
picture.setPictureid(pictureSourceResult.getAccountNo().toString());
}
//租户名称
picture.setPicturename(pictureSourceResult.getAccountName());
//租户状态
if(pictureSourceResult.getAccountStatus()!=null) {
if (pictureSourceResult.getAccountStatus() != null) {
picture.setPicturestatus(pictureSourceResult.getAccountStatus().toString());
}
//项目编号
if(pictureSourceResult.getProjectNo()!=null){
if (pictureSourceResult.getProjectNo() != null) {
picture.setProjectid(pictureSourceResult.getProjectNo().toString());
}
//项目id
@ -98,19 +101,19 @@ public class PictureDisposeTask implements Runnable{
//项目名称
picture.setProjectidname(pictureSourceResult.getProjectName());
//项目状态
if(pictureSourceResult.getProjectNo()!=null) {
if (pictureSourceResult.getProjectNo() != null) {
picture.setProjectstatus(pictureSourceResult.getProjectNo().toString());
}
//所属主计划id
if(pictureSourceResult.getPlanNo()!=null) {
if (pictureSourceResult.getPlanNo() != null) {
picture.setPlanid(pictureSourceResult.getPlanNo().toString());
}
//所属计划名称
picture.setPlanname(pictureSourceResult.getPlanName());
//所属计划状态
picture.setPlanstatus( pictureSourceResult.getPlanstatus());
picture.setPlanstatus(pictureSourceResult.getPlanstatus());
//所属子计划id
if(pictureSourceResult.getPlanChildNo()!=null) {
if (pictureSourceResult.getPlanChildNo() != null) {
picture.setPlanchildid(pictureSourceResult.getPlanChildNo().toString());
}
//所属子计划名称
@ -124,7 +127,7 @@ public class PictureDisposeTask implements Runnable{
//任务来源名称
picture.setField4("无量云2.0");
//所属任务状态
if(pictureSourceResult.getTenantStatus()!=null) {
if (pictureSourceResult.getTenantStatus() != null) {
picture.setTaskstatus(pictureSourceResult.getTenantStatus().toString());
}
//提报人id
@ -138,78 +141,78 @@ public class PictureDisposeTask implements Runnable{
//拜访详细地址
StringBuilder addressDetails = new StringBuilder();
//拜访省份
if(pictureSourceResult.getProvince()!=null){
if(pictureSourceResult.getProvince().get("name")!=null){
if (pictureSourceResult.getProvince() != null) {
if (pictureSourceResult.getProvince().get("name") != null) {
addressDetails.append(pictureSourceResult.getProvince().get("name").toString());
picture.setReleaseprovince(pictureSourceResult.getProvince().get("name").toString());
}
}
//拜访城市
if(pictureSourceResult.getCity()!=null){
if(pictureSourceResult.getCity().get("name")!=null){
if (pictureSourceResult.getCity() != null) {
if (pictureSourceResult.getCity().get("name") != null) {
addressDetails.append(pictureSourceResult.getCity().get("name").toString());
picture.setReleasearea(pictureSourceResult.getCity().get("name").toString());
}
}
//拜访定位信息
if(pictureSourceResult.getLocation()!=null){
if(pictureSourceResult.getCity().get("address")!=null){
if (pictureSourceResult.getLocation() != null) {
if (pictureSourceResult.getCity().get("address") != null) {
addressDetails.append(pictureSourceResult.getCity().get("address").toString());
}
}
picture.setField10(addressDetails.toString());
//拜访客户类型
if(pictureSourceResult.getTerminalType()!=null){
if(pictureSourceResult.getTerminalType().get("name")!=null){
if (pictureSourceResult.getTerminalType() != null) {
if (pictureSourceResult.getTerminalType().get("name") != null) {
picture.setField2(pictureSourceResult.getTerminalType().get("name").toString());
}
}
//拜访客户名称
if(pictureSourceResult.getCustomerName()!=null){
if(pictureSourceResult.getCustomerName().get("name")!=null){
if (pictureSourceResult.getCustomerName() != null) {
if (pictureSourceResult.getCustomerName().get("name") != null) {
picture.setField3(pictureSourceResult.getCustomerName().get("name").toString());
}
}
//拜访客户级别
if(pictureSourceResult.getTerminalLevel()!=null){
if(pictureSourceResult.getTerminalLevel().get("name")!=null){
if (pictureSourceResult.getTerminalLevel() != null) {
if (pictureSourceResult.getTerminalLevel().get("name") != null) {
picture.setField6(pictureSourceResult.getTerminalLevel().get("name").toString());
}
}
//拜访项目类别
if(pictureSourceResult.getProjectType()!=null){
if(pictureSourceResult.getProjectType().get("name")!=null){
if (pictureSourceResult.getProjectType() != null) {
if (pictureSourceResult.getProjectType().get("name") != null) {
picture.setField17(pictureSourceResult.getProjectType().get("name").toString());
}
}
//拜访品种
if(pictureSourceResult.getProductName()!=null){
if(pictureSourceResult.getProductName().get("name")!=null){
if (pictureSourceResult.getProductName() != null) {
if (pictureSourceResult.getProductName().get("name") != null) {
picture.setField9(pictureSourceResult.getProductName().get("name").toString());
}
}
//厂商
if(pictureSourceResult.getManufacturer()!=null){
if(pictureSourceResult.getManufacturer().get("name")!=null){
if (pictureSourceResult.getManufacturer() != null) {
if (pictureSourceResult.getManufacturer().get("name") != null) {
picture.setField5(pictureSourceResult.getManufacturer().get("name").toString());
}
}
//拜访科室
if(StringUtils.isNotBlank(pictureSourceResult.getCompanyDepartment())){
if (StringUtils.isNotBlank(pictureSourceResult.getCompanyDepartment())) {
picture.setField7(pictureSourceResult.getCompanyDepartment());
}
//拜访小结
if(StringUtils.isNotBlank(pictureSourceResult.getDiscoveredIssues())){
if (StringUtils.isNotBlank(pictureSourceResult.getDiscoveredIssues())) {
picture.setField8(pictureSourceResult.getDiscoveredIssues());
}
//拜访日期
if(StringUtils.isNotBlank(pictureSourceResult.getVisitDate())){
if (StringUtils.isNotBlank(pictureSourceResult.getVisitDate())) {
picture.setField11(pictureSourceResult.getVisitDate());
}
@ -219,18 +222,18 @@ public class PictureDisposeTask implements Runnable{
//图片创建时间
// picture.setPhotoDateTimestamp(System.currentTimeMillis());
System.out.println("SubmitDateTimestamp1=================>>>>>>>"+pictureSourceResult.getSubmitTime());
System.out.println("SubmitDateTimestamp2=================>>>>>>>"+picture.getSubmitDateTimestamp());
System.out.println("SubmitDateTimestamp1=================>>>>>>>" + pictureSourceResult.getSubmitTime());
System.out.println("SubmitDateTimestamp2=================>>>>>>>" + picture.getSubmitDateTimestamp());
//定位距离
if(StringUtils.isNotBlank(pictureSourceResult.getDistance())){
if (StringUtils.isNotBlank(pictureSourceResult.getDistance())) {
picture.setField12(pictureSourceResult.getDistance());
}
//设置图片信息
if(map.get("imgName")!=null){
if (map.get("imgName") != null) {
picture.setImgname(map.get("imgName").toString());
}
if(map.get("imgUrl")!=null){
if (map.get("imgUrl") != null) {
picture.setImgurl(map.get("imgUrl").toString());
}
//默认为创建人为admin

@ -7,6 +7,8 @@ import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
@ -43,6 +45,12 @@ public class PictureSourceTimerJob {
@Resource
private DepartmentMybatisDao departmentMybatisDao;
@Resource
private OcrPictureService ocrPictureService;
@Resource
private OcrPrevailCloudLogService ocrPrevailCloudLogService;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
@ -90,8 +98,9 @@ public class PictureSourceTimerJob {
for (PictureSourceResult pictureSourceResult : totalList) {
if (pictureSourceResult.getLivePhoto() != null) {
size++;
pictureSourceResult.setRequestParam(pictureSourceParameter);
// 将可以处理数据放入处理队列中
TaskQueue.pictureDisposePushData(pictureSourceResult);
TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
}
}

@ -7,6 +7,8 @@ import cn.jyjz.xiaoyao.admin.dataobject.Department;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceParameter;
import cn.jyjz.xiaoyao.ocr.api.entity.PictureSourceResult;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrPrevailCloudLogService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
@ -32,6 +34,12 @@ public class PullPictureDataJob {
@Resource
private DepartmentMybatisDao departmentMybatisDao;
@Resource
private OcrPictureService ocrPictureService;
@Resource
private OcrPrevailCloudLogService ocrPrevailCloudLogService;
// @Scheduled(cron = "0 5 0 * * ?") // 每天晚上0点五分执行一次
public void pullPicture() {
//配置查询参数信息
@ -96,7 +104,8 @@ public class PullPictureDataJob {
if (pictureSourceResult.getLivePhoto() != null) {
size++;
// 将可以处理数据放入处理队列中
TaskQueue.pictureDisposePushData(pictureSourceResult);
pictureSourceResult.setRequestParam(pictureSourceParameter);
TaskQueue.pictureDisposePushData(pictureSourceResult, ocrPictureService, ocrPrevailCloudLogService);
}
}
System.out.println("当前区间内图片总数:" + count + "条,可处理数据:" + size + "条");

@ -23,7 +23,7 @@ public enum SearchConfigEnum {
//任务状态
FIELD16("izstatus","field16"),
//任务状态(新)
IZTASKSTATUS("iztaskstatus","field16"),
// IZTASKSTATUS("iztaskstatus","field16"),
//拜访省份/直辖市、
PROCINCE("izvisitpro","releaseprovince"),
//厂商

@ -171,4 +171,11 @@ public class OcrTaskChildPictureVo implements java.io.Serializable {
@ApiModelProperty(value = "查重id")
private String checkDuplicateId;
@ApiModelProperty(value = "图片宽")
private String Wide;
@ApiModelProperty(value = "图片高")
private String High;
}

@ -81,4 +81,7 @@ public class OcrTaskchildPictureApproVo implements java.io.Serializable {
@ApiModelProperty(value = "当前节点")
private String taskIndex;
@ApiModelProperty(value = "所属计划")
private String fromplanid;
}

@ -249,4 +249,23 @@
LIMIT 1
</select>
<select id="selectByRemark" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM
ocr_picture
WHERE `remark` = #{remark}
LIMIT 1
</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>

@ -479,6 +479,14 @@
<if test="userid != null">
and tcp.USERID ${userid.dataOp} ${userid.likestar}#{userid.value}${userid.likeend}
</if>
<if test="fuzzyRetrieval != null and fuzzyRetrieval != ''">
and
(
tcp.FROMUSERNAME LIKE CONCAT('%', #{fuzzyRetrieval.value}, '%')
OR tcp.FROMTASKID LIKE CONCAT('%', #{fuzzyRetrieval.value}, '%')
OR tcp.FROMTASKNAME LIKE CONCAT('%', #{fuzzyRetrieval.value}, '%')
)
</if>
</trim>
</where>
</sql>
@ -499,6 +507,19 @@
</if>
${izupuser.likeend}
</if>
<if test="izplan != null">
${izplan.rulesOp} tcp.FROMPLANID ${izplan.dataOp} ${izplan.likestar}
<!-- #{fromuserid.value}-->
<if test="izplan.value instanceof java.util.List">
<foreach item="item" collection="izplan.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!izplan.value instanceof java.util.List">
#{izplan.value}
</if>
${izplan.likeend}
</if>
<if test="iztaskrrom != null">
${iztaskrrom.rulesOp} tcp.FROMSOURCEID ${iztaskrrom.dataOp} ${iztaskrrom.likestar}
<!-- #{fromuserid.value}-->
@ -978,6 +999,7 @@
t2.FROMPROJECTNAME fromProjectName,
t2.FINISHTIME finishTime,
t1.imgUrl,
t1.server_thumbnail_url serverThumbnailUrl,
ifnull(t3.STATSHIS, 1) historyStates,
t1.submit_date_timestamp submitDateTimestamp,
t1.photo_date_timestamp photoDateTimestamp,

@ -160,15 +160,15 @@ mybatis-plus:
xiaoyao:
web:
#上传文件路径
uploadPath: D:/ideaWork/jeecg/ocr/htmlweb/upload
uploadPath: /Users/sunchenliang/IdeaProjects/ocr/htmlweb/upload
#页面根路径
frontPath: D:/ideaWork/jeecg/ocr/htmlweb
frontPath: /Users/sunchenliang/IdeaProjects/ocr/htmlweb
#js、css、图片存放路径
staticPath: D:/ideaWork/jeecg/ocr/htmlweb/static
staticPath: /Users/sunchenliang/IdeaProjects/ocr/htmlweb/static
#页面模版路径
webPath: D:/ideaWork/jeecg/ocr/htmlweb/web
webPath: /Users/sunchenliang/IdeaProjects/ocr/htmlweb/web
#Lucene索引路径
lucenePath: D:/ideaWork/jeecg/ocr/htmlweb/lucene/indexDir
lucenePath: /Users/sunchenliang/IdeaProjects/ocr/htmlweb/lucene/indexDir
#是否开启flowable
haveFlowable: true
webconfig:

Loading…
Cancel
Save