Commit da7093bf authored by 陈赛康's avatar 陈赛康

ocr导出+分享功能及业务完;搜索功能导出与分享待分离;

parent 0fdb8fa8
......@@ -10,8 +10,8 @@ android {
applicationId "cn.com.bril.androidocr.studio"
minSdkVersion 21
targetSdkVersion 25
versionCode 7
versionName "2.7.0"
versionCode 14
versionName "3.4.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
......
......@@ -39,6 +39,9 @@
android:name=".ui.activity.OcrRecordActivity"
android:launchMode="singleTask" />
<activity android:name=".ui.activity.SearchActivity"></activity>
</application>
</manifest>
\ No newline at end of file
......@@ -8,8 +8,8 @@ import android.os.Environment;
public class Configs {
public static String USER_NAME="部门负责人";
public static String USER_ID="12";
public static String USER_NAME="科员";
public static String USER_ID="11";
public final static String IMAGE_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/images";
......@@ -17,6 +17,7 @@ public class Configs {
.getExternalStorageDirectory().getPath() + "/documentocr/pdfs";
public final static String TXT_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/txts";
// public final static String TXT_BASE= "sdcard/documentocr/txts";
public final static String WORD_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/docs";
}
......@@ -22,14 +22,22 @@ public class RequestConfig {
//分享记录
public static String SHARE_RECORD_URL=BASE_URL+"cc_sharing_records";
//批量导出
public static String BATCH_EXPORT_URL=BASE_URL+"cc_ocr_files/create/batch";
public static String BATCH_EXPORT_URL=BASE_URL+"cc_export_records/create/batch";
//批量删除
public static String BATCH_DELETE_URL=BASE_URL+"cc_export_records/delete/batch";
//文件下载
public static String DOWN_LOAD_URL=BASE_URL+"file_down";
//分享单个文件
public final static String SHARE_ALONE_URL=BASE_URL+"cc_sharing_records/new";
//分享列表
public final static String SHARE_LIST_URL=BASE_URL+"cc_sharing_records";
//批量分享
public final static String BATCH_SHARE_URL=BASE_URL+"cc_sharing_records/create/batch";
//批量删除分享记录
public final static String BATCH_DELETE_SHARE_URL=BASE_URL+"cc_sharing_records/delete/batch";
//批量创建文件
public final static String BATCH_CREATE_FILE_URL=BASE_URL+"cc_files/create/batch";
//创建文件
public final static String CREATE_FILE_URL=BASE_URL+"cc_files/new";
}
......@@ -13,12 +13,18 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import cn.com.bril.androidocr.studio.beans.OcrInfo;
import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.interf.HttpFileCallBack;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity;
import cn.com.bril.androidocr.studio.utils.GsonUtil;
import static cn.com.bril.androidocr.studio.configs.RequestConfig.CREATE_FILE_URL;
/**
* Created by sunny on 2018-3-12.
*/
......@@ -38,7 +44,7 @@ public class HttpHolder {
}
x.http().post(params,callBack);
}
//上传文件
public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.UP_FILE);
List<KeyValue> list = new ArrayList<>();
......@@ -49,7 +55,6 @@ public class HttpHolder {
params.setRequestBody(body);
x.http().post(params,callBack);
};
//创建记录
public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){
RequestParams params=new RequestParams(url);
......@@ -65,18 +70,12 @@ public class HttpHolder {
}
//批量导出
/**
*
* @param infos
* @param http
*/
public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){
RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL);
params.addHeader("X-Auth-Token","ocr");
String json= GsonUtil.getInstance().toJson(infos);
params.addBodyParameter("params",json);
x.http().get(params, new Callback.CommonCallback<String>() {
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
http.success("",result);
......@@ -93,7 +92,7 @@ public class HttpHolder {
}
});
}
//批量删除
//批量删除导出记录
public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){
JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++)
......@@ -118,15 +117,79 @@ public class HttpHolder {
}
});
}
//单个下载
public static void downLoad(Map<String,String> map,MainHttpCallBack callBack){
public static void downLoad(Map<String,String> map, HttpFileCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,String> entry = it.next();
if(entry.getKey().equals("downloadName")){
if(entry.getValue().contains("doc"))
params.setSaveFilePath(Configs.WORD_BASE+"/"+entry.getValue().substring(entry.getValue().lastIndexOf("/")+1));
}
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
}
x.http().get(params,callBack);
}
//分享单个文件
public static void shareCcFile(OcrInfo info, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.SHARE_ALONE_URL);
params.addHeader("X-Auth-Token","share");
params.addBodyParameter("sharingPeple", Configs.USER_NAME+"_"+Configs.USER_ID);
params.addBodyParameter("type","0");
params.addBodyParameter("fileId",info.getId());
params.addBodyParameter("fileName",info.getFileName());
params.addBodyParameter("filePath",info.getFilePath());
x.http().post(params,callBack);
}
//批量分享
public static void batchShareCcFile(List<ShareInfo> infos, MainHttpCallBack callBack) {
RequestParams params = new RequestParams(RequestConfig.BATCH_SHARE_URL);
params.addHeader("X-Auth-Token", "share");
params.addBodyParameter("params", GsonUtil.getInstance().toJson(infos));
x.http().post(params, callBack);
}
//批量删除分享记录
public static void batchDeleteShareRecord(List<ShareInfo> list,MainHttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.BATCH_DELETE_SHARE_URL);
JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++)
array.put(list.get(i).getId());
params.addBodyParameter("ids",array.toString());
x.http().post(params,callBack);
}
//批量创建文件
public static void batchCreateFiles(List<OcrRootBean.Cc_file> files,MainHttpCallBack callBack){
List<OcrRootBean.Cc_file> newFiles=new ArrayList<>();
OcrRootBean.Cc_file cc_file;
for(OcrRootBean.Cc_file file:files){
cc_file=new OcrRootBean.Cc_file(file.getFileName(),file.getFilePath(),file.getFileSuffix(),file.getUploadPeple(),file.getFileType());
newFiles.add(cc_file);
}
RequestParams params=new RequestParams(RequestConfig.BATCH_CREATE_FILE_URL);
params.addHeader("X-Auth-Token","batch_create");
params.addBodyParameter("params",GsonUtil.getInstance().toJson(newFiles));
x.http().post(params,callBack);
}
//创建文件
public static void newFileCreate(OcrRootBean.Cc_file cc_file,MainHttpCallBack callBack){
RequestParams params=new RequestParams(CREATE_FILE_URL);
params.addHeader("X-Auth-Token","new");
params.addBodyParameter("fileName",cc_file.getFileName());
params.addBodyParameter("filePath",cc_file.getFilePath());
params.addBodyParameter("fileSuffix",cc_file.getFileSuffix());
params.addBodyParameter("uploadPeple",Configs.USER_NAME+"_"+Configs.USER_ID);
params.addBodyParameter("fileType",cc_file.getFileType());
x.http().post(params,callBack);
}
//编辑分享记录
public static void editShareRecord(String id,String name,MainHttpCallBack callBack){
String url=RequestConfig.SHARE_LIST_URL+"/"+id+"/edit";
RequestParams params=new RequestParams(url);
params.addHeader("X-Auth-Token","edit");
params.addBodyParameter("fileName",name);
x.http().post(params,callBack);
}
}
......@@ -44,6 +44,7 @@ import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.ExportInfo;
import cn.com.bril.androidocr.studio.beans.Image;
import cn.com.bril.androidocr.studio.beans.OcrInfo;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.http.HttpHolder;
......@@ -85,7 +86,7 @@ public class VertifyActivity extends AppCompatActivity {
private String statusType;
private OcrInfo ocrInfo;
File shareFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -236,7 +237,6 @@ public class VertifyActivity extends AppCompatActivity {
// handler.sendEmptyMessageDelayed(1,500);
statusType="0";
exportPdf();
break;
case R.id.radio1:
img.setTextColor(getResources().getColor(R.color.yellow));
......@@ -292,34 +292,35 @@ public class VertifyActivity extends AppCompatActivity {
}
private void exportDoc(String type) {
if(null==ocrInfo)
try {
String filename = image.getName().replace("jpg", "doc");
String path = Configs.WORD_BASE + "/" + filename;
String content = "检务通识别文档\n " + recogniztion;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(recogniztion.getBytes("GB2312"));
POIFSFileSystem fileSystem = new POIFSFileSystem();
DirectoryEntry directory = fileSystem.getRoot();
directory.createDocument("WordDocument", byteArrayInputStream);
FileOutputStream fileOutputStream = new FileOutputStream(path);
fileSystem.writeFilesystem(fileOutputStream);
byteArrayInputStream.close();
fileOutputStream.close();
if("share".equals(type))
ShareUtil.shareFile(this,new File(path));
HttpHolder.upLoadFile(path, new HttpCallBack("upload"));
} catch (IOException e) {
if (null == ocrInfo){
try {
String filename = image.getName().replace("jpg", "doc");
String path = Configs.WORD_BASE + "/" + filename;
String content = "检务通识别文档\n " + recogniztion;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes("GB2312"));
POIFSFileSystem fileSystem = new POIFSFileSystem();
DirectoryEntry directory = fileSystem.getRoot();
directory.createDocument("WordDocument", byteArrayInputStream);
FileOutputStream fileOutputStream = new FileOutputStream(path);
fileSystem.writeFilesystem(fileOutputStream);
byteArrayInputStream.close();
fileOutputStream.close();
shareFile = new File(path);
// if("share".equals(type))
// ShareUtil.shareFile(this,new File(path));
HttpHolder.upLoadFile(path, new HttpCallBack("upload"));
} catch (IOException e) {
Log.e("TAG", e.getMessage());
}
}else{
Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}
}
}
public class HttpCallBack implements Callback.CommonCallback<String>{
String httpType;
......@@ -333,12 +334,17 @@ public class VertifyActivity extends AppCompatActivity {
JSONObject object = new JSONObject(result);
String filePath = object.getString("message");
String fileName = filePath.substring(4);
String suffix="";
if(fileName.contains("txt"))
suffix="txt";
else if(fileName.contains("doc") || fileName.contains("docs"))
suffix="doc";
Map<String, Object> map = new HashMap<>();
map.put("header", filePath);
map.put("filePath", filePath);
map.put("fileName", fileName);
map.put("fileSuffix",fileName.substring(fileName.indexOf(".")+1));
map.put("status","ocr");
map.put("fileSuffix",suffix);
map.put("fileType","ocr");
map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID);
HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file"));
} catch (JSONException e) {
......@@ -347,14 +353,17 @@ public class VertifyActivity extends AppCompatActivity {
}else if("create_file".equals(httpType)){
ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() {
}.getType());
Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;1分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}else if("0".equals(httpType)){
if(statusType.equals("0")){
Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}else{
HttpHolder.shareCcFile(ocrInfo,new HttpCallBack("share"));
}
}else if("0".equals(httpType)){
if(dialog!=null && dialog.isShowing())
dialog.dismiss();
ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
......@@ -362,12 +371,14 @@ public class VertifyActivity extends AppCompatActivity {
if(null!=exportInfo){
Toast.makeText(VertifyActivity.this,"导出成功,请在文件管理/documentocr下查看",Toast.LENGTH_SHORT).show();
}
}else if ("1".equals(httpType)){
ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
}else if ("share".equals(httpType)){
ShareInfo shareInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ShareInfo>() {
}.getType());
if(null==exportInfo){
if(null==shareInfo){
Toast.makeText(VertifyActivity.this,"分享记录提交失败,请重新尝试",Toast.LENGTH_SHORT).show();
}
}else
ShareUtil.shareFile(VertifyActivity.this,shareFile);
}
}
......
......@@ -7,6 +7,7 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
......@@ -51,6 +52,7 @@ public class FragmentListAdapter extends BaseAdapter {
}
return newInfos;
}
@Override
public int getCount() {
return infos.size();
......@@ -75,6 +77,7 @@ public class FragmentListAdapter extends BaseAdapter {
holder.title= (TextView)convertView .findViewById(R.id.title);
holder.time= (TextView) convertView.findViewById(R.id.time);
holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio);
holder.iv= (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
}else
holder= (ViewHolder) convertView.getTag();
......@@ -88,6 +91,17 @@ public class FragmentListAdapter extends BaseAdapter {
else
fileName=s;
holder.title.setText(fileName);
String suffix=info.getIncludes().getCc_file().getFileSuffix();
if(suffix!=null){
if(suffix.contains("txt"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.txt));
else if(suffix.contains("doc"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
else if(suffix.contains("pdf"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
}else
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
holder.title.setOnClickListener(new ListTextOnClickListener(position));
holder.radioButton.setVisibility(show);
holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
......@@ -109,7 +123,7 @@ public class FragmentListAdapter extends BaseAdapter {
@Override
public void onClick(View v) {
listTextClickListener.onListTextCallBack(infos.get(position));
listTextClickListener.onListTextCallBack(position);
}
}
......@@ -118,10 +132,11 @@ public class FragmentListAdapter extends BaseAdapter {
}
public interface ListTextClickListener{
void onListTextCallBack(OcrRootBean info);
void onListTextCallBack(int postion);
}
class ViewHolder{
TextView title,time;
ImageView iv;
CheckBox radioButton;
}
}
......@@ -2,6 +2,9 @@ package cn.com.bril.androidocr.studio.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import com.scanlibrary.ScanConstants;
......@@ -60,4 +63,16 @@ public class FileUtil {
return true;
}
public static Uri getFileUri(Context context,File file){
Uri tempFileUri=null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tempFileUri = FileProvider.getUriForFile(context.getApplicationContext(),
"com.scanlibrary.provider", // As defined in Manifest
file);
} else {
tempFileUri = Uri.fromFile(file);
}
return tempFileUri;
}
}
package cn.com.bril.androidocr.studio.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
/**
* Created by sunny on 2018-3-19.
......@@ -18,7 +20,7 @@ public class ShareUtil {
public static void shareFile(Activity activity, File file) {
if (null != file && file.exists()) {
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
share.putExtra(Intent.EXTRA_STREAM, FileUtil.getFileUri(activity,file));
share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
......@@ -47,4 +49,12 @@ public class ShareUtil {
}
return mime;
}
public static void batchShareFile(Context activity, ArrayList<Uri> uris){
//分享文件
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);//发送多个文件
intent.setType("*/*");//多个文件格式
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);//Intent.EXTRA_STREAM同于传输文件流
activity.startActivity(Intent.createChooser(intent, "多文件分享"));
}
}
app/src/main/res/drawable/word.png

792 Bytes | W: | H:

app/src/main/res/drawable/word.png

3.43 KB | W: | H:

app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -22,7 +22,8 @@
android:id="@+id/pdfLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
android:padding="10dp"
android:visibility="gone">
<TextView
android:id="@+id/pdf"
......
......@@ -10,7 +10,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:src="@drawable/word"/>
/>
<LinearLayout
android:layout_width="match_parent"
......@@ -55,16 +55,15 @@
<CheckBox
android:id="@+id/radio"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:button="@null"
android:focusable="false"
android:visibility="gone"
android:background="@drawable/radio_selector"/>
/>
<!--android:background="@drawable/radio_selector"-->
</RelativeLayout>
......@@ -5,9 +5,9 @@
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/normal</item>
<item name="colorAccent">@color/yellow</item>
<item name="colorAccent">@color/normal</item>
<!--Button按钮正常状态颜色-->
<item name="colorButtonNormal">@color/yellow</item>
<item name="colorButtonNormal">@color/normal</item>
<!--//colorAccent-->
</style>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment