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.
 
 
 
 
 
 

491 lines
22 KiB

namespace CounsellorBL.GROUP.ConstDefinition
{
using MonumentDefine;
using OT.COM.ArsenalDB;
using OT.COM.ArsenalDB.SQL;
using SoldierData.EnterprizeV4;
using System;
using System.Collections.Generic;
using System.Reflection;
using static MonumentDefine.Enums;
public class SQLLib : DirectSQLLibBase
{
public enum Action
{
SELECT_IDONLY = 0,
SELECT_ALL = 1,
DELETE = 2
}
public delegate string DE_Gen_tb_grp_group(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp);
#region
public SQLLib(ADirectSQLHelper i_sqlLibBase) : base(i_sqlLibBase) { }
public virtual string GetArticleInRange(out Command o_cResult)
{
ADirectCmdParameter cp = GetParamter();
DateTime dtNow = DateTime.Now;
string sSQL = $@"SELECT a.{tb_grp_article.CN_UID},
a.{tb_grp_article.CN_RETRY},
a.{tb_grp_article.CN_NAME},
a.{tb_grp_article.CN_FB_ARTICLE_ID},
a.{tb_grp_article.CN_POST_STATUS},
a.{tb_grp_article.CN_POST_DATE},
a.{tb_grp_article.CN_RPA_STATUS},
a.{tb_grp_article.CN_GROUP_USER_UID}
FROM {GetFormalTableName<tb_grp_article>()} a
WHERE a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add(BLWording.STATUS_FLAG_ON)} AND
((a.{tb_grp_article.CN_RELEASE_DATE} IS NULL AND a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_ARTICLE_AND_PHOTO)})
OR
(a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_FAIL)} AND (a.{tb_grp_article.CN_UPDATE_DATE} <= {cp.Add(dtNow)} AND
a.{tb_grp_article.CN_UPDATE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ))
OR
(a.{tb_grp_article.CN_POST_STATUS} IN {cp.In(new List<object>() { (int)EPostStatus.EPS_SCHEDULE_WAITING, (int)EPostStatus.EPS_ARTICLE_AND_PHOTO }) }) AND (a.{tb_grp_article.CN_RELEASE_DATE} <= {cp.Add(dtNow)} AND
a.{tb_grp_article.CN_RELEASE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ))";
return GenerateCommand<tb_prd_product>(sSQL, cp, out o_cResult);
}
public virtual string GetScheduleWaitingArticleInRange(out Command o_cResult)
{
ADirectCmdParameter cp = GetParamter();
DateTime dtNow = DateTime.Now;
string sSQL = $@"SELECT a.{tb_grp_article.CN_UID},
a.{tb_grp_article.CN_RETRY},
a.{tb_grp_article.CN_NAME},
a.{tb_grp_article.CN_FB_ARTICLE_ID},
a.{tb_grp_article.CN_POST_STATUS},
a.{tb_grp_article.CN_POST_DATE},
a.{tb_grp_article.CN_RPA_STATUS},
a.{tb_grp_article.CN_GROUP_USER_UID},
a.{tb_grp_article.CN_GROUP_UID}
FROM {GetFormalTableName<tb_grp_article>()} a
WHERE
a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_SCHEDULE_WAITING)} AND
(a.{tb_grp_article.CN_RELEASE_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_RELEASE_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ) AND
a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}";
return GenerateCommand<tb_prd_product>(sSQL, cp, out o_cResult);
}
public virtual string GetMediadWaitingArticleInRange(out Command o_cResult)
{
ADirectCmdParameter cp = GetParamter();
DateTime dtNow = DateTime.Now;
string sSQL = $@"SELECT a.{tb_grp_article.CN_UID},
a.{tb_grp_article.CN_RETRY},
a.{tb_grp_article.CN_NAME},
a.{tb_grp_article.CN_FB_ARTICLE_ID},
a.{tb_grp_article.CN_POST_STATUS},
a.{tb_grp_article.CN_POST_DATE},
a.{tb_grp_article.CN_RPA_STATUS},
a.{tb_grp_article.CN_GROUP_USER_UID},
a.{tb_grp_article.CN_GROUP_UID}
FROM {GetFormalTableName<tb_grp_article>()} a
WHERE
a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NOT NULL AND
a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_COMPLETE)} AND
a.{tb_grp_article.CN_RPA_STATUS} = {cp.Add(0)} AND
a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND
(a.{tb_grp_article.CN_POST_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_POST_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ) AND
a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}";
return GenerateCommand<tb_prd_product>(sSQL, cp, out o_cResult);
}
public virtual string GetFailWaitingArticleInRange(out Command o_cResult)
{
ADirectCmdParameter cp = GetParamter();
DateTime dtNow = DateTime.Now;
string sSQL = $@"SELECT a.{tb_grp_article.CN_UID},
a.{tb_grp_article.CN_RETRY},
a.{tb_grp_article.CN_NAME},
a.{tb_grp_article.CN_FB_ARTICLE_ID},
a.{tb_grp_article.CN_POST_STATUS},
a.{tb_grp_article.CN_POST_DATE},
a.{tb_grp_article.CN_RPA_STATUS},
a.{tb_grp_article.CN_GROUP_USER_UID},
a.{tb_grp_article.CN_GROUP_UID}
FROM {GetFormalTableName<tb_grp_article>()} a
WHERE
a.{tb_grp_article.CN_POST_STATUS} = {cp.Add((int)EPostStatus.EPS_FAIL)} AND
a.{tb_grp_article.CN_RPA_STATUS} = {cp.Add(0)} AND
a.{tb_grp_article.CN_RETRY} < {cp.Add(5)} AND
(
(a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NULL)
OR
(a.{tb_grp_article.CN_FB_ARTICLE_ID} IS NOT NULL AND (a.{tb_grp_article.CN_POST_DATE} <= {cp.Add(dtNow)} AND a.{tb_grp_article.CN_POST_DATE} > {cp.Add(dtNow.AddMinutes(-30))} ))
) AND
a.{tb_grp_article.CN_STATUS_FLAG} = {cp.Add((int)BLWording.STATUS_FLAG_ON)}";
return GenerateCommand<tb_prd_product>(sSQL, cp, out o_cResult);
}
public virtual string GetArticleInRangeTest(out Command o_cResult)
{
ADirectCmdParameter cp = GetParamter();
string sSQL = $@"SELECT a.{tb_grp_article.CN_UID},
a.{tb_grp_article.CN_RETRY},
a.{tb_grp_article.CN_NAME},
a.{tb_grp_article.CN_FB_ARTICLE_ID},
a.{tb_grp_article.CN_POST_STATUS},
a.{tb_grp_article.CN_POST_DATE},
a.{tb_grp_article.CN_RPA_STATUS},
a.{tb_grp_article.CN_GROUP_USER_UID}
FROM {GetFormalTableName<tb_grp_article>()} a
a.{tb_grp_article.CN_GROUP_USER_UID} IS NOT NULL AND
WHERE a.{tb_grp_article.CN_FB_ARTICLE_ID} in ('274962260394168_378697063354020', '274962260394168_378746420015751')";
return GenerateCommand<tb_prd_product>(sSQL, cp, out o_cResult);
}
#endregion
public virtual string GetUIDs(Action i_aAction, string sFunctionName, List<object> i_asGroupName, out Command o_cResult)
{
string sMsg = null;
Command cResultTemp = null;
try
{
do
{
MethodInfo mi = this.GetType().GetMethod(sFunctionName);
ADirectCmdParameter cp = GetParamter();
string sSQL = (string)mi.Invoke(this, new object[] { i_aAction, i_asGroupName, cp });
sMsg = GenerateCommand(typeof(tb_meb_member), sSQL, cp, out cResultTemp);
if(sMsg != null)
{
break;
}
}
while (false);
}
catch (Exception ex)
{
sMsg = ex.Message;
}
o_cResult = cResultTemp;
return sMsg;
}
#region
public string Gen_tb_sys_user2role(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_user2role>(i_aAction,
tb_sys_user2role.CN_UID,
tb_sys_user2role.CN_ROLE_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_sys_role);
}
public string Gen_tb_sys_role2org(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_role2org>(i_aAction,
tb_sys_role2org.CN_UID,
tb_sys_role2org.CN_ROLE_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_sys_role);
}
public string Gen_tb_sys_role(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_role>(i_aAction,
tb_sys_role.CN_UID,
tb_sys_role.CN_GROUP_UID,
i_asGroupName, cp);
}
public string Gen_tb_sys_user2entercode(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_user2entercode>(i_aAction,
tb_sys_user2entercode.CN_UID,
tb_sys_user2entercode.CN_USER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_hr_employee);
}
public string Gen_tb_sys_user(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_user>(i_aAction,
tb_sys_user.CN_UID,
tb_sys_user.CN_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_hr_employee);
}
public string Gen_tb_grp_group2user(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_group2user>(i_aAction,
tb_grp_group2user.CN_UID,
tb_grp_group2user.CN_GROUP_UID,
i_asGroupName, cp);
}
public string Gen_tb_ord_message_log_record(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_message_log_record>(i_aAction,
tb_ord_message_log_record.CN_UID,
tb_ord_message_log_record.CN_MEMBER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member);
}
public string Gen_tb_ord_message_log(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_message_log>(i_aAction,
tb_ord_message_log.CN_UID,
tb_ord_message_log.CN_BRANCH_UID,
i_asGroupName, cp, false, Gen_tb_grp_branch);
}
public string Gen_tb_ord_purchase_detail(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_purchase_detail>(i_aAction,
tb_ord_purchase_detail.CN_UID,
tb_ord_purchase_detail.CN_BRANCH_UID,
i_asGroupName, cp, false, Gen_tb_grp_branch);
}
public string Gen_tb_prd_product(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_prd_product>(i_aAction,
tb_prd_product.CN_UID,
tb_prd_product.CN_GROUP_ID,
i_asGroupName, cp);
}
public string Gen_tb_sys_uploadlog(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_sys_uploadlog>(i_aAction,
tb_sys_uploadlog.CN_UID,
tb_sys_uploadlog.CN_UID,
i_asGroupName, cp, false, GenArticleMediaMediaIDsSQLByGroupName);
}
public string GenArticleMediaMediaIDsSQLByGroupName(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_article_media>(i_aAction,
tb_grp_article_media.CN_MEDIA_ID,
tb_grp_article_media.CN_ARTICLE_UID,
i_asGroupName, cp, false, Gen_tb_grp_article);
}
public string Gen_tb_grp_article_media(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_article_media>(i_aAction,
tb_grp_article_media.CN_UID,
tb_grp_article_media.CN_ARTICLE_UID,
i_asGroupName, cp, true, Gen_tb_grp_article);
}
public string Gen_tb_ord_purchase(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_purchase>(i_aAction,
tb_ord_purchase.CN_UID,
tb_ord_purchase.CN_MEMBER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member);
}
public string Gen_tb_prd_article2product(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
string sTarget = _ActionToSQL(i_aAction, false, tb_prd_article2product.CN_UID);
string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : "";
return $@"{sTarget}
FROM {GetFormalTableName<tb_prd_article2product>()} {sTableAlias}
WHERE {tb_prd_article2product.CN_ARTICLE_UID} IN ( {Gen_tb_grp_article(Action.SELECT_IDONLY, i_asGroupName, cp)})
OR {tb_prd_article2product.CN_PRD_UID} IN ( {Gen_tb_prd_product(Action.SELECT_IDONLY, i_asGroupName, cp)})
";
/*return GenIDsSQLByGroupName<tb_prd_article2product>(i_aAction,
tb_prd_article2product.CN_UID,
tb_prd_article2product.CN_ARTICLE_UID,
i_asGroupName, cp, false, Gen_tb_grp_article);*/
}
public string Gen_tb_grp_comment(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_comment>(i_aAction,
tb_grp_comment.CN_UID,
tb_grp_comment.CN_ARTICLE_UID,
i_asGroupName, cp, false, Gen_tb_grp_article);
}
public string Gen_tb_meb_shopping_points_record(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_meb_shopping_points_record>(i_aAction,
tb_meb_shopping_points_record.CN_UID,
tb_meb_shopping_points_record.CN_MEMBER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member);
}
protected string GenIDsSQLByGroupName<T>(Action i_aAction,
string i_sDisplayTarget,
string i_sWhereTarget,
List<object> i_asGroupName,
ADirectCmdParameter cp,
bool i_bDistinct = false,
DE_Gen_tb_grp_group i_dgFunc = null)
{
string sINCondition = (i_dgFunc == null) ? Gen_tb_grp_group(Action.SELECT_IDONLY, i_asGroupName, cp) : i_dgFunc(Action.SELECT_IDONLY, i_asGroupName, cp);
// string sTarget = i_aAction ? "DELETE" : (i_bDistinct ? $"SELECT distinct a01.{i_sDisplayTarget} " : $"SELECT a01.{i_sDisplayTarget} ");
string sTarget = _ActionToSQL(i_aAction, i_bDistinct, i_sDisplayTarget);
string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : "";
return $@"{sTarget}
FROM {GetFormalTableName<T>()} {sTableAlias}
WHERE {i_sWhereTarget} IN ( {sINCondition})";
}
public string Gen_tb_ord_checkout_list_master(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_checkout_list_master>(i_aAction,
tb_ord_checkout_list_master.CN_UID,
tb_ord_checkout_list_master.CN_GROUP_UID,
i_asGroupName, cp);
}
public string Gen_tb_ord_checkout_list_detail(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_checkout_list_detail>(i_aAction,
tb_ord_checkout_list_detail.CN_UID,
tb_ord_checkout_list_detail.CN_MEMBER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member);
}
public string Gen_tb_ord_order_master(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_order_master>(i_aAction,
tb_ord_order_master.CN_UID,
tb_ord_order_master.CN_GROUP_UID,
i_asGroupName, cp);
}
public string Gen_tb_ord_order_detail(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_order_detail>(i_aAction,
tb_ord_order_detail.CN_UID,
tb_ord_order_detail.CN_MEMBER_UID,
i_asGroupName, cp, i_dgFunc: Gen_tb_meb_member);
}
public string Gen_tb_hr_employee(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_hr_employee>(i_aAction,
tb_hr_employee.CN_UID,
tb_hr_employee.CN_RECEIVE_BRANCH_UID,
i_asGroupName, cp, false, Gen_tb_grp_branch);
}
public string Gen_tb_hr_employee2branch(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_hr_employee2branch>(i_aAction,
tb_hr_employee2branch.CN_UID,
tb_hr_employee2branch.CN_BRANCH_UID,
i_asGroupName, cp, false, Gen_tb_grp_branch);
}
public string Gen_tb_ord_incoming_return_record(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
string sTarget = _ActionToSQL(i_aAction, false, tb_ord_incoming_return_record.CN_UID);
string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : "";
return $@"{sTarget}
FROM {GetFormalTableName<tb_ord_incoming_return_record>()} {sTableAlias}
WHERE {tb_ord_incoming_return_record.CN_ORDER_UID} IN ( {Gen_tb_ord_order_master(Action.SELECT_IDONLY, i_asGroupName, cp)})
OR {tb_ord_incoming_return_record.CN_ARTICLE2PRODUCT_UID} IN ( {Gen_tb_prd_article2product(Action.SELECT_IDONLY, i_asGroupName, cp)})
";
/*return GenIDsSQLByGroupName<tb_ord_incoming_return_record>(i_aAction,
tb_ord_incoming_return_record.CN_UID,
tb_ord_incoming_return_record.CN_ORDER_UID,
i_asGroupName, cp, true, Gen_tb_ord_order_master);*/
}
/*
public string Gen2_tb_ord_incoming_return_record(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_ord_incoming_return_record>(i_aAction,
tb_ord_incoming_return_record.CN_UID,
tb_ord_incoming_return_record.CN_ARTICLE2PRODUCT_UID,
i_asGroupName, cp, false, Gen_tb_prd_article2product);
}*/
#endregion
public string Gen_tb_meb_member(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_meb_member>(i_aAction,
tb_meb_member.CN_UID,
tb_meb_member.CN_GROUP_ID,
i_asGroupName, cp, i_dgFunc: GenFBIDsSQLByGroupName);
}
public string Gen_tb_grp_branch(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_branch>(i_aAction,
tb_grp_branch.CN_UID,
tb_grp_branch.CN_GROUP_UID,
i_asGroupName, cp);
}
public string Gen_tb_grp_article(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
return GenIDsSQLByGroupName<tb_grp_article>(i_aAction,
tb_grp_article.CN_UID,
tb_grp_article.CN_GROUP_UID,
i_asGroupName, cp);
}
private string _ActionToSQL(Action i_aAction, bool i_bDistinct, string i_sSpecificIDName = BLWording.UID)
{
string sRes = null;
switch(i_aAction)
{
case Action.SELECT_ALL:
sRes = $"SELECT * ";
break;
case Action.DELETE:
sRes = "DELETE ";
break;
case Action.SELECT_IDONLY:
sRes = i_bDistinct ? $"SELECT distinct a01.{i_sSpecificIDName} " : $"SELECT a01.{i_sSpecificIDName} ";
break;
}
return sRes;
}
public string GenFBIDsSQLByGroupName(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
string sTarget = _ActionToSQL(i_aAction, false, tb_grp_group.CN_FB_GROUP_ID);
string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : "";
return $@"{sTarget}
FROM {GetFormalTableName<tb_grp_group>()} {sTableAlias}
WHERE {tb_grp_group.CN_NAME} IN {cp.In(i_asGroupName)}";
}
public string Gen_tb_grp_group(Action i_aAction, List<object> i_asGroupName, ADirectCmdParameter cp)
{
string sTarget = _ActionToSQL(i_aAction, false, tb_grp_group.CN_UID);
string sTableAlias = (i_aAction == Action.SELECT_ALL) || (i_aAction == Action.SELECT_IDONLY) ? "a01" : "";
return $@"{sTarget}
FROM {GetFormalTableName<tb_grp_group>()} {sTableAlias}
WHERE {tb_grp_group.CN_NAME} IN {cp.In(i_asGroupName)}";
}
}
}