找回证券业报送的逻辑,仅支持Excel模板报送

This commit is contained in:
嬴政 时
2025-05-14 20:00:04 +08:00
parent 0c9cd64038
commit fe2ff3bbcf
52 changed files with 10829 additions and 7124 deletions
@@ -945,28 +945,34 @@ namespace YLErp.Web.Controllers
public JsonResult superviseSACReportQuery(ReportInfo req)
{
LogFactory.GetLogger("superviseSACReportQuery").Info($"1");
if (PS.Config.ErpElement.SecuritiesEnvironment)
{
try
{
LogFactory.GetLogger("superviseSACReportQuery").Info($"2");
List<SuperviseReport> filePath = new ReportService(CurUser).Execute(req);
LogFactory.GetLogger("superviseSACReportQuery").Info($"3");
return Json(Return.Success(filePath.Select(O => O.FileTag)));
}
catch (ServiceException ex)
{
LogFactory.GetLogger("superviseSACReportQuery").Info($"4");
if (ex.Tag is List<SacInfo> objs)
var errFilePath = "";
if (ex.Tag != null && ex.Tag is ExceptionExtensionInfo)
{
LogFactory.GetLogger("superviseSACReportQuery").Info($"6");
string key = Guid.NewGuid().ToString();
Server.CacheProvider.Set(key, objs, DateTime.Now.AddMinutes(1));
ex.Tag = key;
LogFactory.GetLogger("superviseSACReportQuery").Info($"7");
var obj = (ExceptionExtensionInfo)ex.Tag;
if (obj.Tag.Count > 0)
{
string key = Guid.NewGuid().ToString();
Server.CacheProvider.Set(key, obj.Tag, DateTime.Now.AddMinutes(1));
ex.Tag = key;
}
errFilePath = obj.ErrFilePath;
}
if (ex.Tag != null)
{
Server.CacheProvider.Set($"File_{ex.Tag}", errFilePath, DateTime.Now.AddMinutes(1));
}
LogFactory.GetLogger("superviseSACReportQuery").Info($"5");
return Json(Return.Fail(ex.Message, ex.Tag));
}
catch (Exception ex)
@@ -1003,7 +1009,9 @@ namespace YLErp.Web.Controllers
public ActionResult superviseErrorInfo(string key)
{
var sacInfoList = Server.CacheProvider.Get(key) as List<SacInfo>;
var path = Server.CacheProvider.Get($"File_{key}") as string;
ViewBag.ShowMessage = true;
ViewBag.DownloadPath = path;
return View("supervisePreview", sacInfoList);
}
@@ -1112,6 +1120,7 @@ namespace YLErp.Web.Controllers
}
[MyAuthorize("监管报告-证券业报送")]
[DisableRequestSizeLimit]
public JsonResult UploadSACReportFile(string fileType, DateTime date)
{
LogFactory.GetLogger("UploadEventReportFile").Info("开始上传:");
@@ -1151,7 +1160,8 @@ namespace YLErp.Web.Controllers
Directory.CreateDirectory(absPath);
}
var name = $"{date.ToString("yyyyMMdd")}{file.FileName}";
file.SaveAs(Path.Combine(absPath, name));
var fileName = Path.Combine(absPath, name);
file.SaveAs(fileName);
fileInfos.Add(new tempfile()
{
createDate = date,
@@ -1163,7 +1173,7 @@ namespace YLErp.Web.Controllers
validStatus = true
});
LogFactory.GetLogger("UploadEventReportFile").Info($"文件 {i + 1} 保存成功");
var fileLength = new FileInfo(Path.Combine(absPath, name)).Length;
var fileLength = new FileInfo(fileName).Length;
if (fileType == "报送模板" && Path.GetExtension(name).ToLower() == ".zip")
{
LogFactory.GetLogger("UploadEventReportFile").Info($"处理报送模板");
@@ -1171,15 +1181,14 @@ namespace YLErp.Web.Controllers
{
return Json(Return.Fail("上传失败,单次上传模板文件大小不应超过200MB"));
}
var path = Path.Combine(absPath, name);
var pathName = Path.GetFileNameWithoutExtension(path);
var pathName = Path.GetFileNameWithoutExtension(fileName);
var temp = Path.Combine(absPath, pathName);
if (Directory.Exists(temp))
{
Directory.Delete(temp, true);
}
LogFactory.GetLogger("UploadEventReportFile").Info($"解压");
var outPath = ZipHelper.unZipFile(path, absPath, out string msg);
var outPath = ZipHelper.unZipFile(fileName, absPath, out string msg);
if (msg.StartsWith("解压成功"))
{
LogFactory.GetLogger("UploadEventReportFile").Info($"成功");
@@ -1253,6 +1262,44 @@ namespace YLErp.Web.Controllers
return Json(Return.Fail("上传失败"));
}
[MyAuthorize("监管报告-证券业报送")]
public JsonResult UploadFile(string fileType)
{
LogFactory.GetLogger("UploadFile").Info("开始上传修改编号附件");
try
{
var service = new TempFilesService(CurUser);
LogFactory.GetLogger("UploadFile").Info("文件数量:" + Request.Form.Files.Count);
for (var i = 0; i < Request.Form.Files.Count; i++)
{
var file = Request.Form.Files[i];
if (fileType == "修改编号")
{
using var inputStream = file.OpenReadStream();
ReportService.EditContractNumber(inputStream);
}
string filePath = $"/App_Docs/Download/Report/{UserId}/{fileType}/{DateTime.Now.ToString("yyyyMMdd")}/";
string absPath = Server.MapPath(filePath);
LogFactory.GetLogger("UploadFile").Info("保存地址:" + absPath);
if (!Directory.Exists(absPath))
{
Directory.CreateDirectory(absPath);
}
var name = $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}{file.FileName}";
var fileName = Path.Combine(absPath, name);
file.SaveAs(fileName);
LogFactory.GetLogger("UploadFile").Info($"文件 {i + 1} 保存成功:{fileName}");
}
LogFactory.GetLogger("UploadFile").Info($"入库完成;处理完成;");
return Json(Return.Success("修改成功"));
}
catch (Exception ex)
{
LogFactory.GetLogger("UploadFile").Error(ex);
return Json(Return.Fail("修改失败" + ex.Message));
}
}
public JsonResult QueryEventReportFile(BaseSearchReq req)
{
if (string.IsNullOrWhiteSpace(req.sidx))
@@ -1342,7 +1389,7 @@ namespace YLErp.Web.Controllers
var sourcePath = Server.MapPath("~/App_Docs");
var sourceFileName = Path.Combine(sourcePath, "导出模板", service.TemplateName);
var targetPath = Path.Combine(sourcePath, req.ValueDate.ToString("yyyyMMdd"));
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
@@ -1381,5 +1428,34 @@ namespace YLErp.Web.Controllers
{
return double.TryParse(str, out var v) ? v : null;
}
public ActionResult ExportDetailsV2(string encryptId, string fileTag)
{
var id = DecryptInt(encryptId);
var path = $"~/App_Docs/Download/Report/Output/{CurUser.UserId}/{fileTag}报送文件{DateTime.Now:yyyyMMddHHmmss}.zip";
var absPath = OtcAppContext.MapPath(path);
new ReportService(CurUser).ExportDetailsV2(id, fileTag, path);
return File(System.IO.File.ReadAllBytes(absPath), "application/zip", Path.GetFileName(path));
}
/// <summary>
/// 是否上传过模板
/// </summary>
/// <returns></returns>
public JsonResult IsUploadFile(DateTime ReportDate)
{
var tempFilesService = new TempFilesService(CurUser);
var path = tempFilesService.QueryTempFile(ReportDate, "报送模板").Select(O => O.filePath).FirstOrDefault();
return Json(!string.IsNullOrWhiteSpace(path));
}
public ActionResult DownloadReportFile(string path)
{
var result = OtcAppContext.MapPath(path);
var bytes = System.IO.File.ReadAllBytes(result);
return File(bytes, "application/zip", $"报送文件{DateTime.Now:yyyyMMddHHmmss}.zip");
}
}
}