You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

185 lines
6.9 KiB

namespace CounsellorBL.BLStructure.SYS
{
using MonumentDefine;
using OT.COM.ArsenalDB;
using OT.COM.LogisticsUtil;
using OT.COM.SignalerMessage;
using SoldierData.EnterprizeV4;
using System;
using System.Collections.Generic;
using CounsellorBL.Common;
using static CounsellorBL.Common.EntityBaseExtension;
using System.Data;
using Newtonsoft.Json.Linq;
using CounsellorBL.Helper;
using Newtonsoft.Json;
using Microsoft.Extensions.Caching.Memory;
using System.Collections.Concurrent;
public class TranslationService : SingleDataTableTemplate<tb_sys_translation>
{
// const string CACHE_KEY_tb_sys_translation = "CACHE_KEY_tb_sys_translation";
const string CACHE_KEY_tb_sys_translation2 = "CACHE_KEY_tb_sys_translation2";
public TranslationService()
{
dgGetExportPath = exportPath;
dgImportCommandGenerator = importCommandGenerator;
}
[Auth(false)]
public new CResponseMessage Read(CRequestMessage i_crmInput)
{
CResponseMessage crmRes = null;
IMemoryCache imc = GetMemoryCache();
bool bUseBase = true;
try
{
do
{
if (getCommonParameter(i_crmInput, BLWording.QRY_MASTER, out JArray jaDataArray, out tb_sys_session sUserSession) != null)
{
break;
}
if (jaDataArray.Count != 1 || jaDataArray[0] == null)
{
break;
}
JObject joWhere = jaDataArray[0][BLWording.WHEREDATA] as JObject;
if (joWhere == null || joWhere.Count != 0)
{
break;
}
if (imc != null && imc.TryGetValue(CACHE_KEY_tb_sys_translation2, out List<tb_sys_translation> ul))
{
lock (imc)
{
crmRes = new CSuccessResponseMessage(null, i_crmInput);
crmRes.param.Add(BLWording.DATA, ul);
bUseBase = false;
}
}
}
while (false);
}
catch
{
}
if(bUseBase)
{
crmRes = base.Read(i_crmInput);
}
return crmRes;
}
protected string exportPath(CRequestMessage i_crmInput, JArray i_jaData, tb_sys_session i_sSessionUser, out string o_sFilePath, List<string> i_saQryContainKeys,
[System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0,
[System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "",
[System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "")
{
string sMsg = null;
string sPath = null;
try
{
QueryDataSet qds = selectAllTrans();
CreateExcel(qds.DATA.Tables[0], i_crmInput, out sPath);
}
catch (Exception ex)
{
LogHelper.DBLog(Util.GetLastExceptionMsg(ex), i_nCodeLine, i_sMemberName, i_sSourcePath);
sMsg = $"{nameof(exportPath)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine}).";
#if DEBUG
System.Diagnostics.Debug.WriteLine(sMsg);
#endif
}
o_sFilePath = sPath;
return sMsg;
}
protected string importCommandGenerator(CRequestMessage i_crmInput, JArray i_jaData, tb_sys_session i_sSessionUser, out List<Command> o_lcResult, List<string> i_saQryContainKeys,
[System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0,
[System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "",
[System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "")
{
string sMsg = null;
List<Command> lCmds = new List<Command>();
try
{
do
{
CResponseMessage crmUpload = Upload(i_crmInput);
if (crmUpload.result == EResponseResult.RR_FALSE)
{
sMsg = crmUpload.msg;
break;
}
List<tb_sys_uploadlog> lUploads = crmUpload.param[BLWording.DATA] as List<tb_sys_uploadlog>;
string sPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, lUploads[0].path);
DataTable dtData = ExcelHelper.GetDataTableFromExcelFile(sPath);
// Parse Excel and Import
// DB Data
QueryDataSet qdsDB = selectAllTrans();
ExcelHelper.AddOrModifyRow(qdsDB.DATA.Tables[0], dtData, out List<DataRow> ldrAdd, out List<DataRow> ldrModify);
List<tb_sys_translation> lAdd = EntityHelper.FromDataTable<tb_sys_translation>(ldrAdd);
if (lAdd.Count > 0)
{
foreach (tb_sys_translation t in lAdd)
{
lCmds.Add(Command.SetupInsertCmd(t));
}
}
List<tb_sys_translation> lUpd = EntityHelper.FromDataTable<tb_sys_translation>(ldrModify);
if (lUpd.Count > 0)
{
foreach (tb_sys_translation t in lUpd)
{
tb_sys_translation tCond = new tb_sys_translation() { uid = t.uid };
lCmds.Add(Command.SetupUpdateCmd(t, tCond));
}
}
}
while (false);
}
catch (Exception ex)
{
LogHelper.DBLog(Util.GetLastExceptionMsg(ex), i_nCodeLine, i_sMemberName, i_sSourcePath);
sMsg = $"{nameof(importCommandGenerator)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine}).";
#if DEBUG
System.Diagnostics.Debug.WriteLine(sMsg);
#endif
}
o_lcResult = lCmds;
return sMsg;
}
protected QueryDataSet selectAllTrans()
{
tb_sys_translation tDisplay = new tb_sys_translation();
tDisplay.SetFullDirtyEx(EColumnFilter.ES_NO_SYSTEMCOLUMN);
Command cSelect = Command.SetupSelectCmd(tDisplay);
ArsenalInterface ai = ArsenalDBMgr.GetInst(cSelect, GetDefaultSystemColumnInfo());
return ai.RunQueryDataSet(cSelect);
}
}
}