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.
325 lines
19 KiB
325 lines
19 KiB
using EasyBL.WebApi.Message;
|
|
using Entity.Sugar;
|
|
using Entity.ViewModels;
|
|
using SqlSugar;
|
|
using SqlSugar.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
|
|
namespace EasyBL.WEBAPP.OPM
|
|
{
|
|
public class Exhibition_QryService : ServiceBase
|
|
{
|
|
#region 展覽管理分頁查詢
|
|
|
|
/// <summary>
|
|
/// 展覽管理分頁查詢
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
public ResponseMessage QueryPage(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var pml = new PageModel
|
|
{
|
|
PageIndex = _fetchInt(i_crm, @"pageIndex"),
|
|
PageSize = _fetchInt(i_crm, @"pageSize")
|
|
};
|
|
var iPageCount = 0;
|
|
var sSortField = _fetchString(i_crm, @"sortField");
|
|
var sSortOrder = _fetchString(i_crm, @"sortOrder");
|
|
|
|
var sExhibitionCode = _fetchString(i_crm, @"ExhibitionCode");
|
|
var sExhibitioname = _fetchString(i_crm, @"Exhibitioname");
|
|
var sExhibitionDateStart = _fetchString(i_crm, @"ExhibitionDateStart");
|
|
var sExhibitionDateEnd = _fetchString(i_crm, @"ExhibitionDateEnd");
|
|
var sCreateDateStart = _fetchString(i_crm, @"CreateDateStart");
|
|
var sCreateDateEnd = _fetchString(i_crm, @"CreateDateEnd");
|
|
var sModifyDateStart = _fetchString(i_crm, @"ModifyDateStart");
|
|
var sModifyDateEnd = _fetchString(i_crm, @"ModifyDateEnd");
|
|
var sIsShowWebSite = _fetchString(i_crm, @"IsShowWebSite");
|
|
var sCreateUser = _fetchString(i_crm, @"CreateUser");
|
|
var sArea = _fetchString(i_crm, @"Area");
|
|
var sState = _fetchString(i_crm, @"State");
|
|
var sExhibitionAddress = _fetchString(i_crm, @"ExhibitionAddress");
|
|
var sEffective = _fetchString(i_crm, @"Effective");
|
|
var sIsTransfer = _fetchString(i_crm, @"IsTransfer");
|
|
var bExcel = _fetchBool(i_crm, @"Excel");
|
|
var sExcelType = _fetchString(i_crm, @"ExcelType");
|
|
|
|
var rExhibitionDateStart = new DateTime();
|
|
var rExhibitionDateEnd = new DateTime();
|
|
var rCreateDateStart = new DateTime();
|
|
var rCreateDateEnd = new DateTime();
|
|
var rModifyDateStart = new DateTime();
|
|
var rModifyDateEnd = new DateTime();
|
|
if (!string.IsNullOrEmpty(sExhibitionDateStart))
|
|
{
|
|
rExhibitionDateStart = SqlFunc.ToDate(sExhibitionDateStart);
|
|
}
|
|
if (!string.IsNullOrEmpty(sExhibitionDateEnd))
|
|
{
|
|
rExhibitionDateEnd = SqlFunc.ToDate(sExhibitionDateEnd).AddDays(1);
|
|
}
|
|
if (!string.IsNullOrEmpty(sCreateDateStart))
|
|
{
|
|
rCreateDateStart = SqlFunc.ToDate(sCreateDateStart);
|
|
}
|
|
if (!string.IsNullOrEmpty(sCreateDateEnd))
|
|
{
|
|
rCreateDateEnd = SqlFunc.ToDate(sCreateDateEnd).AddDays(1);
|
|
}
|
|
if (!string.IsNullOrEmpty(sModifyDateStart))
|
|
{
|
|
rModifyDateStart = SqlFunc.ToDate(sModifyDateStart);
|
|
}
|
|
if (!string.IsNullOrEmpty(sModifyDateEnd))
|
|
{
|
|
rModifyDateEnd = SqlFunc.ToDate(sModifyDateEnd).AddDays(1);
|
|
}
|
|
|
|
pml.DataList = db.Queryable<OTB_OPM_Exhibition, OTB_SYS_Members, OTB_SYS_Arguments, OTB_SYS_Arguments, OTB_SYS_Arguments>
|
|
((t1, t2, t3, t4, t5) =>
|
|
new object[] {
|
|
JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID,
|
|
JoinType.Left, t1.OrgID == t3.OrgID && t1.Area == t3.ArgumentID && t3.ArgumentClassID == "Area",
|
|
JoinType.Left, t1.OrgID == t4.OrgID && t1.State == t4.ArgumentID && t4.ArgumentClassID == "Area",
|
|
JoinType.Left, t1.OrgID == t5.OrgID && t1.ExhibitionAddress == t5.ArgumentID && t5.ArgumentClassID == "EHalls"
|
|
}
|
|
)
|
|
.Where((t1, t2, t3, t4, t5) => t1.OrgID == i_crm.ORIGID && t1.ExhibitionCode.Contains(sExhibitionCode) && sIsShowWebSite.Contains(t1.IsShowWebSite) && sEffective.Contains(t1.Effective) && sIsTransfer.Contains(t1.IsTransfer) && (t1.Exhibitioname_EN.Contains(sExhibitioname) || t1.Exhibitioname_TW.Contains(sExhibitioname) || t1.Exhibitioname_CN.Contains(sExhibitioname) || t1.ExhibitioShotName_TW.Contains(sExhibitioname) || t1.ExhibitioShotName_CN.Contains(sExhibitioname) || t1.ExhibitioShotName_EN.Contains(sExhibitioname)))
|
|
.WhereIF(!string.IsNullOrEmpty(sExhibitionDateStart), (t1, t2, t3, t4, t5) => t1.ExhibitionDateStart >= rExhibitionDateStart.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sExhibitionDateEnd), (t1, t2, t3, t4, t5) => t1.ExhibitionDateEnd <= rExhibitionDateEnd.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sCreateDateStart), (t1, t2, t3, t4, t5) => t1.CreateDate >= rCreateDateStart.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sCreateDateEnd), (t1, t2, t3, t4, t5) => t1.CreateDate <= rCreateDateEnd.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sModifyDateStart), (t1, t2, t3, t4, t5) => t1.ModifyDate >= rModifyDateStart.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sModifyDateEnd), (t1, t2, t3, t4, t5) => t1.ModifyDate <= rModifyDateEnd.Date)
|
|
.WhereIF(!string.IsNullOrEmpty(sArea), (t1, t2, t3, t4, t5) => t1.Area == sArea)
|
|
.WhereIF(!string.IsNullOrEmpty(sState), (t1, t2, t3, t4, t5) => t1.State == sState)
|
|
.WhereIF(!string.IsNullOrEmpty(sExhibitionAddress), (t1, t2, t3, t4, t5) => t1.ExhibitionAddress == sExhibitionAddress)
|
|
.WhereIF(!string.IsNullOrEmpty(sCreateUser), (t1, t2, t3, t4, t5) => t1.CreateUser == sCreateUser)
|
|
.Select((t1, t2, t3, t4, t5) => new View_OPM_Exhibition
|
|
{
|
|
SN = SqlFunc.GetSelfAndAutoFill(t1.SN),
|
|
CreateUserName = t2.MemberName,
|
|
AreaName = t3.ArgumentValue,
|
|
Area_CN = t3.ArgumentValue_CN,
|
|
Area_EN = t3.ArgumentValue_EN,
|
|
StateName = t4.ArgumentValue,
|
|
State_CN = t4.ArgumentValue_CN,
|
|
State_EN = t4.ArgumentValue_EN,
|
|
ExhibitionAddressName = t5.ArgumentValue,
|
|
ExhibitionAddress_CN = t5.ArgumentValue_CN,
|
|
ExhibitionAddress_EN = t5.ArgumentValue_EN,
|
|
ExhibitioFullName = SqlFunc.IIF(SqlFunc.HasValue(t1.ExhibitioShotName_TW), "(" + SqlFunc.IsNull(t1.ExhibitioShotName_TW, "") + ")", "") + t1.Exhibitioname_TW,
|
|
Exhibitioname = t1.Exhibitioname_CN + t1.Exhibitioname_EN
|
|
})
|
|
.MergeTable()
|
|
.OrderBy(sSortField, sSortOrder)
|
|
.ToPageList(pml.PageIndex, bExcel ? 100000 : pml.PageSize, ref iPageCount);
|
|
pml.Total = iPageCount;
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
if (bExcel)
|
|
{
|
|
var sFileName = "";
|
|
var oHeader = new Dictionary<string, string>();
|
|
var listMerge = new List<Dictionary<string, int>>();
|
|
var dicAlain = new Dictionary<string, string>();
|
|
var dt_new = new DataTable();
|
|
var saCustomers1 = pml.DataList;
|
|
var saExhibition = pml.DataList as List<View_OPM_Exhibition>;
|
|
switch (sExcelType)
|
|
{
|
|
case "Exhibition_BasicInformation":
|
|
{
|
|
sFileName = "展覽管理基本資料";
|
|
oHeader = new Dictionary<string, string>
|
|
{
|
|
{ "RowIndex", "項次" },
|
|
{ "ExhibitionCode", "專案代號" },
|
|
{ "ExhibitioShotName_TW", "活動/展覽簡稱" },
|
|
{ "Exhibitioname_TW", "活動/展覽名稱" },
|
|
{ "Exhibitioname_EN", "活動/展覽英文展名" },
|
|
{ "ExhibitionDateStart", "展覽期間" },
|
|
{ "CreateUserName", "創建人" },
|
|
{ "CreateDate", "創建時間" }
|
|
};
|
|
dt_new.Columns.Add("RowIndex");
|
|
dt_new.Columns.Add("ExhibitionCode");
|
|
dt_new.Columns.Add("ExhibitioShotName_TW");
|
|
dt_new.Columns.Add("Exhibitioname_TW");
|
|
dt_new.Columns.Add("Exhibitioname_EN");
|
|
dt_new.Columns.Add("ExhibitionDateStart");
|
|
dt_new.Columns.Add("CreateUserName");
|
|
dt_new.Columns.Add("CreateDate");
|
|
foreach (var exhibition in saExhibition)
|
|
{
|
|
var row_new = dt_new.NewRow();
|
|
var sStart = "";
|
|
var sEnd = "";
|
|
if (exhibition.ExhibitionDateStart != null)
|
|
{
|
|
sStart = Convert.ToDateTime(exhibition.ExhibitionDateStart).ToString("yyyy/MM/dd");
|
|
}
|
|
if (exhibition.ExhibitionDateEnd != null)
|
|
{
|
|
sEnd = Convert.ToDateTime(exhibition.ExhibitionDateEnd).ToString("yyyy/MM/dd");
|
|
}
|
|
if (exhibition.CreateDate != null)
|
|
{
|
|
row_new["CreateDate"] = Convert.ToDateTime(exhibition.CreateDate).ToString("yyyy/MM/dd HH:mm");
|
|
}
|
|
else
|
|
{
|
|
row_new["CreateDate"] = @"";
|
|
}
|
|
row_new["RowIndex"] = exhibition.RowIndex;
|
|
row_new["ExhibitionCode"] = exhibition.ExhibitionCode;
|
|
row_new["ExhibitioShotName_TW"] = exhibition.ExhibitioShotName_TW;
|
|
row_new["Exhibitioname_TW"] = exhibition.Exhibitioname_TW;
|
|
row_new["Exhibitioname_EN"] = exhibition.Exhibitioname_EN;
|
|
row_new["CreateUserName"] = exhibition.CreateUserName;
|
|
row_new["ExhibitionDateStart"] = sStart + "~" + sEnd;
|
|
dt_new.Rows.Add(row_new);
|
|
}
|
|
dicAlain = ExcelService.GetExportAlain(oHeader, "ExhibitionCode,ExhibitionDateStart,IsShowWebSite,CreateUserName,CreateDate");
|
|
}
|
|
break;
|
|
|
|
case "Exhibition_WenzhongPrjFile":
|
|
{
|
|
sFileName = "文中專案檔";
|
|
oHeader = new Dictionary<string, string>
|
|
{
|
|
{ "RowIndex", "項次" },
|
|
{ "ExhibitionCode", "專案代號" },
|
|
{ "ExhibitioShotName_TW", "專案名稱" },
|
|
{ "CusField1", "專案負責人" },
|
|
{ "CusField2", "失效日期" }
|
|
};
|
|
dt_new.Columns.Add("RowIndex");
|
|
dt_new.Columns.Add("ExhibitionCode");
|
|
dt_new.Columns.Add("ExhibitioShotName_TW");
|
|
dt_new.Columns.Add("CusField1");
|
|
dt_new.Columns.Add("CusField2");
|
|
foreach (var exhibition in saExhibition)
|
|
{
|
|
var row_new = dt_new.NewRow();
|
|
row_new["RowIndex"] = exhibition.RowIndex;
|
|
row_new["ExhibitionCode"] = exhibition.ExhibitionCode;
|
|
row_new["ExhibitioShotName_TW"] = exhibition.ExhibitioShotName_TW;
|
|
row_new["CusField1"] = exhibition.CreateUser.Split('.')[0];
|
|
row_new["CusField2"] = "";
|
|
dt_new.Rows.Add(row_new);
|
|
}
|
|
dicAlain = ExcelService.GetExportAlain(oHeader, new string[] { "ExhibitionCode", "CusField1", "CusField2" });
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
var bOk = new ExcelService().CreateExcelByTb(dt_new, out string sPath, oHeader, dicAlain, listMerge, sFileName);
|
|
|
|
rm.DATA.Add(BLWording.REL, sPath);
|
|
}
|
|
else
|
|
{
|
|
rm.DATA.Add(BLWording.REL, pml);
|
|
}
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.OPM.Exhibition_QryService", "", "QueryPage(展覽管理分頁查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 展覽管理分頁查詢
|
|
|
|
#region 展覽管理單筆查詢
|
|
|
|
/// <summary>
|
|
/// 展覽管理單筆查詢
|
|
/// </summary>
|
|
/// <param name="i_crm"></param>
|
|
/// <returns></returns>
|
|
public ResponseMessage QueryOne(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var iId = _fetchInt(i_crm, @"Guid");
|
|
|
|
var oExportExhibition = db.Queryable<OTB_OPM_Exhibition, OTB_SYS_Members, OTB_SYS_Arguments, OTB_SYS_Arguments, OTB_SYS_Arguments>
|
|
((t1, t2, t3, t4, t5) =>
|
|
new object[] {
|
|
JoinType.Left, t1.OrgID == t2.OrgID && t1.CreateUser == t2.MemberID,
|
|
JoinType.Left, t1.OrgID == t3.OrgID && t1.Area == t3.ArgumentID && t3.ArgumentClassID == "Area",
|
|
JoinType.Left, t1.OrgID == t4.OrgID && t1.State == t4.ArgumentID && t4.ArgumentClassID == "Area",
|
|
JoinType.Left, t1.OrgID == t5.OrgID && t1.ExhibitionAddress == t5.ArgumentID && t5.ArgumentClassID == "EHalls"
|
|
}
|
|
)
|
|
.Where((t1, t2, t3) => t1.OrgID == i_crm.ORIGID && t1.SN == iId)
|
|
.Select((t1, t2, t3, t4, t5) => new View_OPM_Exhibition
|
|
{
|
|
SN = SqlFunc.GetSelfAndAutoFill(t1.SN),
|
|
CreateUserName = t2.MemberName,
|
|
AreaName = t3.ArgumentValue,
|
|
Area_CN = t3.ArgumentValue_CN,
|
|
Area_EN = t3.ArgumentValue_EN,
|
|
StateName = t4.ArgumentValue,
|
|
State_CN = t4.ArgumentValue_CN,
|
|
State_EN = t4.ArgumentValue_EN,
|
|
ExhibitionAddressName = t5.ArgumentValue,
|
|
ExhibitionAddress_CN = t5.ArgumentValue_CN,
|
|
ExhibitionAddress_EN = t5.ArgumentValue_EN,
|
|
ExhibitioFullName = SqlFunc.IIF(SqlFunc.HasValue(t1.ExhibitioShotName_TW), "(" + SqlFunc.IsNull(t1.ExhibitioShotName_TW, "") + ")", "") + t1.Exhibitioname_TW,
|
|
Exhibitioname = t1.Exhibitioname_CN + t1.Exhibitioname_EN
|
|
}).Single();
|
|
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, oExportExhibition);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.OPM.Exhibition_QryService", "", "QueryOne(展覽管理單筆查詢)", "", "", "");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 展覽管理單筆查詢
|
|
}
|
|
}
|