Browse Source

添加一个数据导入导出的接口

develop
胡超1 2 years ago
parent
commit
3210ca6c61
  1. 230
      24Hour/Controllers/Common/LawyerArchivesController.cs

230
24Hour/Controllers/Common/LawyerArchivesController.cs

@ -19,14 +19,18 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Filters;
using Newtonsoft.Json; using Newtonsoft.Json;
using NPOI.OpenXmlFormats.Spreadsheet;
using NPOI.SS.Formula.Functions;
using SqlSugar; using SqlSugar;
using SqlSugar.Extensions; using SqlSugar.Extensions;
using System.Data; using System.Data;
using System.IO.Compression;
using System.Linq; using System.Linq;
using System.Net.WebSockets; using System.Net.WebSockets;
using System.Text; using System.Text;
using static _24Hour.TwentySystemProxyClient; using static _24Hour.TwentySystemProxyClient;
using static com.sun.tools.@internal.xjc.reader.xmlschema.bindinfo.BIConversion; using static com.sun.tools.@internal.xjc.reader.xmlschema.bindinfo.BIConversion;
using static NPOI.HSSF.Util.HSSFColor;
using Exception = System.Exception; using Exception = System.Exception;
using User = Elight.Utility.User; using User = Elight.Utility.User;
@ -1098,6 +1102,232 @@ namespace _24Hour.Controllers.Common
return Task.FromResult(result); return Task.FromResult(result);
} }
[HttpGet]
[Route("ImportLawyerArchivesInfo")]
public async Task<Result> ImportLawyerArchivesInfo(string path)
{
if (System.IO.File.Exists(path)==false)
{
result.Message = "文件丢失";
result.IsSucceed = false;
return result;
}
var dir = Path.Combine(Environment.CurrentDirectory,"wwwroot","CaseFile","imports");
var userdir = Path.Combine(dir, "users");
var lawyersvcs = Path.Combine(dir, "lawyersvcs");
var extratname = Path.GetFileNameWithoutExtension(path);
var extratdirpath = Path.Combine(dir, extratname);
ZipFile.ExtractToDirectory(path, extratdirpath,true);
var zipusers = Path.Combine(extratdirpath, "users");
var ziplawyersvcs = Path.Combine(extratdirpath, "lawyerservices");
var zipjson = Path.Combine(extratdirpath, "data");
if (System.IO.File.Exists(zipjson)==false)
{
result.Message = "文件丢失";
result.IsSucceed = false;
return result;
}
var json = System.IO.File.ReadAllText(zipjson);
var jsonstr = Encoding.UTF8.GetString(Convert.FromBase64String(json));
var importdata = jsonstr.ConvertToAnonymousType(new
{
lawyerservices=default(List<App_LawyerServicesModel>),
users=default(List<App_Sys_UserModel>)
});
foreach (var userim in importdata.users)
{
var user = await _db.Queryable<App_Sys_UserModel>()
.Where(x => x.cardId == userim.cardId)
.Where(x => x.IsDeleted == 0)
.Where(x => x.isdeactivate == 0)
.Where(x => x.identity == "律师")
.FirstAsync();
var identityphotopath = Path.Combine(zipusers, userim.cardId, "identityphotos");
var files = new DirectoryInfo(identityphotopath)
.GetFiles()
.Select(x => "/CaseFile/imports/" + Path.GetRelativePath(dir, x.FullName)
.Replace(@"\", @"/"))
.ToList()
.ConvertToJsonStr();
var departmentPhotos = Path.Combine(zipusers, userim.cardId, "departmentPhotos");
var departments = new DirectoryInfo(departmentPhotos)
.GetFiles()
.Select(x => "/CaseFile/imports/" + Path.GetRelativePath(dir, x.FullName)
.Replace(@"\", @"/"))
.ToList()
.ConvertToJsonStr();
var cardidphotos = Path.Combine(zipusers, userim.cardId, "cardids");
var cardids = new DirectoryInfo(cardidphotos)
.GetFiles()
.Select(x => "/CaseFile/imports/" + Path.GetRelativePath(dir, x.FullName)
.Replace(@"\", @"/"))
.ToList()
.ConvertToJsonStr();
if (user==null)
{
userim.cardIdphoto = cardids;
userim.identityphoto = files;
userim.departmentPhoto = departments;
_db.BeginTran();
var num = await _db.Insertable(userim).ExecuteCommandAsync();
_db.CommitTran();
}
else
{
user.cardIdphoto = cardids;
user.identityphoto = files;
user.departmentPhoto = departments;
_db.BeginTran();
var num = await _db.Updateable(user)
.UpdateColumns(x => new
{
x.cardIdphoto,
x.identityphoto,
x.departmentPhoto
})
.IgnoreColumns(ignoreAllNullColumns: true)
.ExecuteCommandAsync();
_db.CommitTran();
}
}
foreach (var lawyersvc in importdata.lawyerservices)
{
var svc =await _db.Queryable<App_LawyerServicesModel>()
.Where(x => x.Id == lawyersvc.Id).FirstAsync();
var annexphoto = Path.Combine(ziplawyersvcs, lawyersvc.Id, "annexs");
var annexs = new DirectoryInfo(annexphoto)
.GetFiles()
.Select(x => "/CaseFile/imports/" + Path.GetRelativePath(dir, x.FullName)
.Replace(@"\", @"/"))
.ToList()
.ConvertToJsonStr();
if (svc==null)
{
lawyersvc.annex = annexs;
_db.BeginTran();
var num = await _db.Insertable(lawyersvc).ExecuteCommandAsync();
_db.CommitTran();
}
else
{
svc.annex = annexs;
_db.BeginTran();
var num = await _db.Updateable(svc)
.UpdateColumns(x => new
{
x.annex
})
.IgnoreColumns(ignoreAllNullColumns: true)
.ExecuteCommandAsync();
_db.CommitTran();
}
}
return result;
}
[HttpPost]
[Route("PackegLawyerArchivesInfo")]
public async Task<Result> ExportLawyerArchivesInfo(IEnumerable<string> ids)
{
var lawyerarchives = await _db.Queryable<App_LawyerServicesModel>()
.In(info => info.Id, ids)
.ToListAsync();
var userids=lawyerarchives
.Select(x=>x.createuserId)
.Distinct()
.ToList();
var users = await _db.Queryable<App_Sys_UserModel>()
.In(x => x.Id, userids)
.ToListAsync();
var packegdirname = DateTime.Now.Ticks.ToString();
var dir = Path.Combine(Environment.CurrentDirectory,"wwwroot","temp");
var packegdir = Path.Combine(dir, packegdirname);
var packegzipname = Path.ChangeExtension(packegdir, ".zip");
if (Directory.Exists(packegdir) == false) Directory.CreateDirectory(packegdir);
var jsonfilepath = Path.Combine(packegdir, "data");
var jsonstr = new
{
lawyerservices = lawyerarchives,
users = users
}.ConvertToJsonStr().ConvertToBase64();
System.IO.File.WriteAllText(jsonfilepath, jsonstr);
//存储预约申请的相关附件
foreach (var item in lawyerarchives)
{
var lawyerdir = Path.Combine(packegdir,"lawyerservices", item.Id);
if (Directory.Exists(lawyerdir)==false) Directory.CreateDirectory(lawyerdir);
var files = item.annex.ConvertToModel<List<string>>();
var annecdir = Path.Combine(lawyerdir,"annexs");
if (Directory.Exists(annecdir) == false) Directory.CreateDirectory(annecdir);
foreach (var file in files)
{
var filepath = Path.Combine(Environment.CurrentDirectory,"wwwroot") + file.Replace("/",@"\");
if (System.IO.File.Exists(filepath))
{
var targetfile = Path.Combine(annecdir, Path.GetFileName(filepath));
System.IO.File.Copy(filepath, targetfile);
}
}
}
//存储用户的相关附件
foreach (var item in users)
{
//["/CaseFile/card/2023-11-21/20231121200659497.jpg"]
var userdir= Path.Combine(packegdir, "users", item.cardId);
//保存身份证图片
var cardids = item.cardIdphoto.ConvertToModel<List<string>>();
var cardidDir = Path.Combine(userdir, "cardids");
if (Directory.Exists(cardidDir) == false) Directory.CreateDirectory(cardidDir);
foreach (var file in cardids)
{
var filepath = Path.Combine(Environment.CurrentDirectory, "wwwroot") + file.Replace("/", @"\");
if (System.IO.File.Exists(filepath))
{
System.IO.File.Copy(filepath, Path.Combine(cardidDir, Path.GetFileName(filepath)));
}
}
//保存工作证图片 律师职业证书
var identityphotos = item.identityphoto.ConvertToModel<List<string>>();
var identityphotosDir = Path.Combine(userdir, "identityphotos");
if (Directory.Exists(identityphotosDir) == false) Directory.CreateDirectory(identityphotosDir);
foreach (var file in identityphotos)
{
var filepath = Path.Combine(Environment.CurrentDirectory, "wwwroot") + file.Replace("/", @"\");
if (System.IO.File.Exists(filepath))
{
System.IO.File.Copy(filepath, Path.Combine(identityphotosDir, Path.GetFileName(filepath)));
}
}
var departmentPhotos = item.departmentPhoto.ConvertToModel<List<string>>();
var departmentPhotosDir = Path.Combine(userdir, "departmentPhotos");
if (Directory.Exists(departmentPhotosDir) == false) Directory.CreateDirectory(departmentPhotosDir);
foreach (var file in departmentPhotos)
{
var filepath = Path.Combine(Environment.CurrentDirectory, "wwwroot") + file.Replace("/", @"\");
if (System.IO.File.Exists(filepath))
{
System.IO.File.Copy(filepath, Path.Combine(departmentPhotosDir, Path.GetFileName(filepath)));
}
}
}
ZipFile.CreateFromDirectory(packegdir, packegzipname);
Directory.Delete(packegdir, true);
result.result = $"/temp/{packegdirname}.zip";
result.IsSucceed = true;
return result;
}
[HttpPost] [HttpPost]
[Route("UploadSignImage")] [Route("UploadSignImage")]
/// <summary> /// <summary>

Loading…
Cancel
Save