using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using WMS.Model.Strategy;
using WMS.IData;using Oracle.ManagedDataAccess.Client;
using WMS.IData.IStrategy;
namespace WMS.SqlServerData.Strategy
{
public class ProRepStrategyData : IProRepStrategy
{
///
/// 获得流水号
///
///
public string GetNextValNum()
{
string strSqlSeq = "select NEXT VALUE FOR [SEQ_STR_PRO_GOODS] ";
// strSqlSeq = "select SEQ_STR_PRO_GOODS.Nextval from dual ";
DataTable dt = SystemDataObject.Instance.GetDataTable(strSqlSeq);
string strSEQ = "GBCL" + DateTime.Now.ToString("yyyyMMdd") + dt.Rows[0][0].ToString();
return strSEQ;
}
#region 供应商补货策略主表
#region 查主表
///
/// 获得供应商补货策略信息集
///
///
///
public DataTable GetProRepStrategyData(ProRepStrategyModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(@"select t.rep_time,
t.strategy_id,
t.strategy_name,
t.strategy_status,
t.create_man,
c.Name CREATE_MAN_NAME,
t.create_date,
t.update_man,
u.Name UPDATE_MAN_NAME,
t.update_date,
t.operatorid,
t.operatedate,
d.Name OPERATOR_NAME,
t.remark
from t_str_prorep t
left join T_BASE_USERINFO c
on t.create_man = c.user_id
left join T_BASE_USERINFO u
on t.update_man = u.user_id
left join t_Base_Userinfo d
on t.operatorid = d.user_id ");
strSql.Append(" where 1 = 1");
if (!string.IsNullOrEmpty(model.STRATEGY_ID))
{
strSql.Append(" and t.STRATEGY_ID ='" + model.STRATEGY_ID + "'");
}
return SystemDataObject.Instance.GetDataTable(strSql.ToString());
}
#endregion
#region 增主表
///
/// 新增供应商补货策略
///
///
public void AddProRepStrategyData(ProRepStrategyModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(@"insert into t_str_prorep
(rep_time,
strategy_id,
strategy_name,
strategy_status,
create_man,
create_date,
update_man,
update_date,
remark,
version,operatorid, operatedate)
values
(:rep_time,
:strategy_id,
:strategy_name,
:strategy_status,
:create_man,
:create_date,
:update_man,
:update_date,
:remark,
:version, :operatorid, :operatedate)");
OracleParameter[] param = new OracleParameter[] {
new OracleParameter(":rep_time",OracleDbType.Decimal),
new OracleParameter(":strategy_id",OracleDbType.Varchar2),
new OracleParameter(":strategy_name",OracleDbType.Varchar2),
new OracleParameter(":strategy_status",OracleDbType.Varchar2),
new OracleParameter(":create_man",OracleDbType.Varchar2),
new OracleParameter(":create_date",OracleDbType.Date),
new OracleParameter(":update_man",OracleDbType.Varchar2),
new OracleParameter(":update_date",OracleDbType.Date),
new OracleParameter(":remark",OracleDbType.Varchar2),
new OracleParameter(":version",OracleDbType.Varchar2),
new OracleParameter(":operatorid",OracleDbType.Varchar2,50),
new OracleParameter(":operatedate",OracleDbType.Date)
};
param[0].Value = model.REP_TIME;
param[1].Value = model.STRATEGY_ID;
param[2].Value = model.STRATEGY_NAME;
param[3].Value = model.STRATEGY_STATUS;
param[4].Value = model.CREATE_MAN;
param[5].Value = model.CREATE_DATE;
param[6].Value = model.UPDATE_MAN;
param[7].Value = model.UPDATE_DATE;
param[8].Value = model.REMARK;
param[9].Value = model.VERSION;
param[10].Value = model.OPERATORID;
param[11].Value = model.OPERATEDATE;
SystemDataObject.Instance.ExecuteSql(strSql.ToString(), param);
}
#endregion
#region 改主表
///
/// 修改供应商补货策略
///
///
public void UpdateProRepStrategyData(ProRepStrategyModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(@"update t_str_prorep
set rep_time =:rep_time,
strategy_id =:strategy_id,
strategy_name =:strategy_name,
strategy_status =:strategy_status,
create_man =:create_man,
create_date =:create_date,
update_man =:update_man,
update_date =:update_date,
remark =:remark,
operatorid =:operatorid,
operatedate =:operatedate,
version =:version
where 1 = 1
");
if (!string.IsNullOrEmpty(model.STRATEGY_ID))
{
strSql.Append(" and strategy_id =:strategy_id;");
}
OracleParameter[] param = new OracleParameter[] {
new OracleParameter(":rep_time",OracleDbType.Decimal),
new OracleParameter(":strategy_name",OracleDbType.Varchar2),
new OracleParameter(":strategy_status",OracleDbType.Varchar2),
new OracleParameter(":create_man",OracleDbType.Varchar2),
new OracleParameter(":create_date",OracleDbType.Date),
new OracleParameter(":update_man",OracleDbType.Varchar2),
new OracleParameter(":update_date",OracleDbType.Date),
new OracleParameter(":remark",OracleDbType.Varchar2),
new OracleParameter(":operatorid",OracleDbType.Varchar2,50),
new OracleParameter(":operatedate",OracleDbType.Date),
new OracleParameter(":version",OracleDbType.Varchar2),
new OracleParameter(":strategy_id",OracleDbType.Varchar2)
};
param[0].Value = model.REP_TIME;
param[1].Value = model.STRATEGY_NAME;
param[2].Value = model.STRATEGY_STATUS;
param[3].Value = model.CREATE_MAN;
param[4].Value = model.CREATE_DATE;
param[5].Value = model.UPDATE_MAN;
param[6].Value = model.UPDATE_DATE;
param[7].Value = model.REMARK;
param[8].Value = model.OPERATORID;
param[9].Value = model.OPERATEDATE;
param[10].Value = model.VERSION;
param[11].Value = model.STRATEGY_ID;
SystemDataObject.Instance.ExecuteSql(strSql.ToString(), param);
}
#endregion
#region 删主表
///
/// 删除供应商策略补货明细
///
///
public void DelProRepStrategyData(string strategyID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(@"delete t_str_prorep where strategy_id =:strategy_id;");
OracleParameter[] parm = new OracleParameter[] {
new OracleParameter(":strategy_id",OracleDbType.Varchar2)
};
parm[0].Value = strategyID;
SystemDataObject.Instance.ExecuteSql(strSql.ToString(), parm);
}
#endregion
#endregion
#region 同时操作主表明细表数据
#region 同时新增主表明细表数据
///
/// 同时新增主表明细数据
///
///
///
public void InsertStrategyDataAndInfo(ProRepStrategyModel model, List list)
{
StringBuilder strSql = new StringBuilder();
List liststrSql = new List();
List liststrparam = new List();
strSql.Append(@"insert into t_str_prorep
(rep_time,
strategy_id,
strategy_name,
strategy_status,
create_man,
create_date,
update_man,
update_date,
remark,
version,operatorid, operatedate)
values
(:rep_time,
:strategy_id,
:strategy_name,
:strategy_status,
:create_man,
:create_date,
:update_man,
:update_date,
:remark,
:version, :operatorid, :operatedate)");
OracleParameter[] param = new OracleParameter[] {
new OracleParameter(":rep_time",OracleDbType.Decimal),
new OracleParameter(":strategy_id",OracleDbType.Varchar2),
new OracleParameter(":strategy_name",OracleDbType.Varchar2),
new OracleParameter(":strategy_status",OracleDbType.Varchar2),
new OracleParameter(":create_man",OracleDbType.Varchar2),
new OracleParameter(":create_date",OracleDbType.Date),
new OracleParameter(":update_man",OracleDbType.Varchar2),
new OracleParameter(":update_date",OracleDbType.Date),
new OracleParameter(":remark",OracleDbType.Varchar2),
new OracleParameter(":version",OracleDbType.Varchar2),
new OracleParameter(":operatorid",OracleDbType.Varchar2,50),
new OracleParameter(":operatedate",OracleDbType.Date)
};
param[0].Value = model.REP_TIME;
param[1].Value = model.STRATEGY_ID;
param[2].Value = model.STRATEGY_NAME;
param[3].Value = model.STRATEGY_STATUS;
param[4].Value = model.CREATE_MAN;
param[5].Value = model.CREATE_DATE;
param[6].Value = model.UPDATE_MAN;
param[7].Value = model.UPDATE_DATE;
param[8].Value = model.REMARK;
param[9].Value = model.VERSION;
param[10].Value = model.OPERATORID;
param[11].Value = model.OPERATEDATE;
liststrSql.Add(strSql.ToString());
liststrparam.Add(param);
foreach (ProRepStrategyInfoModel item in list)
{
strSql = new StringBuilder();
strSql.Append("insert into T_STR_PROREP_GOODS(");
strSql.Append("STRATEGY_ID,STORAGE_ID,PRO_ID,GOODS_ID,STOCK_NUM,COUNT_NUM,UNIT,GOODS_TYPE_ID)");
strSql.Append(" values (");
strSql.Append(":STRATEGY_ID,:STORAGE_ID,:PRO_ID,:GOODS_ID,:STOCK_NUM,:COUNT_NUM,:UNIT,:GOODS_TYPE_ID)");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STORAGE_ID",OracleDbType.Varchar2,50),
new OracleParameter(":PRO_ID",OracleDbType.Varchar2,50),
new OracleParameter(":GOODS_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STOCK_NUM", OracleDbType.Decimal,4),
new OracleParameter(":COUNT_NUM", OracleDbType.Decimal,4),
new OracleParameter(":UNIT", OracleDbType.Char),
new OracleParameter(":GOODS_TYPE_ID",OracleDbType.Varchar2,50)};
parameters[0].Value = model.STRATEGY_ID;
parameters[1].Value = item.STORAGE_ID;
parameters[2].Value = item.PRO_ID;
parameters[3].Value = item.GOODS_ID;
parameters[4].Value = item.STOCK_NUM;
parameters[5].Value = item.COUNT_NUM;
parameters[6].Value = item.UNIT;
parameters[7].Value = item.GOODS_TYPE_ID;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parameters);
}
SystemDataObject.Instance.ExecuteList(liststrSql, liststrparam);
}
#endregion
#region 同时改主表明细表数据
///
/// 同时修改主表明细表数据
///
///
///
public void UpdateStrategyDataAndInfo(ProRepStrategyModel model, List list)
{
StringBuilder strSql = new StringBuilder();
List liststrSql = new List();
List liststrparam = new List();
strSql.Append(@"delete t_str_prorep where strategy_id =:strategy_id");
OracleParameter[] parm = new OracleParameter[] {
new OracleParameter(":strategy_id",OracleDbType.Varchar2) };
parm[0].Value = model.STRATEGY_ID;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parm);
strSql = new StringBuilder();
strSql.Append("delete from T_STR_PROREP_GOODS ");
strSql.Append(" where STRATEGY_ID=:STRATEGY_ID ");
OracleParameter[] parameterss = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50)};
parameterss[0].Value = model.STRATEGY_ID;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parameterss);
strSql = new StringBuilder();
strSql.Append(@"insert into t_str_prorep
(rep_time,
strategy_id,
strategy_name,
strategy_status,
create_man,
create_date,
update_man,
update_date,
remark,
version,operatorid, operatedate)
values
(:rep_time,
:strategy_id,
:strategy_name,
:strategy_status,
:create_man,
:create_date,
:update_man,
:update_date,
:remark,
:version, :operatorid, :operatedate)");
OracleParameter[] param = new OracleParameter[] {
new OracleParameter(":rep_time",OracleDbType.Decimal),
new OracleParameter(":strategy_id",OracleDbType.Varchar2),
new OracleParameter(":strategy_name",OracleDbType.Varchar2),
new OracleParameter(":strategy_status",OracleDbType.Varchar2),
new OracleParameter(":create_man",OracleDbType.Varchar2),
new OracleParameter(":create_date",OracleDbType.Date),
new OracleParameter(":update_man",OracleDbType.Varchar2),
new OracleParameter(":update_date",OracleDbType.Date),
new OracleParameter(":remark",OracleDbType.Varchar2),
new OracleParameter(":version",OracleDbType.Varchar2),
new OracleParameter(":operatorid",OracleDbType.Varchar2,50),
new OracleParameter(":operatedate",OracleDbType.Date)
};
param[0].Value = model.REP_TIME;
param[1].Value = model.STRATEGY_ID;
param[2].Value = model.STRATEGY_NAME;
param[3].Value = model.STRATEGY_STATUS;
param[4].Value = model.CREATE_MAN;
param[5].Value = model.CREATE_DATE;
param[6].Value = model.UPDATE_MAN;
param[7].Value = model.UPDATE_DATE;
param[8].Value = model.REMARK;
param[9].Value = model.VERSION;
param[10].Value = model.OPERATORID;
param[11].Value = model.OPERATEDATE;
liststrSql.Add(strSql.ToString());
liststrparam.Add(param);
foreach (ProRepStrategyInfoModel item in list)
{
strSql = new StringBuilder();
strSql.Append("insert into T_STR_PROREP_GOODS(");
strSql.Append("STRATEGY_ID,STORAGE_ID,PRO_ID,GOODS_ID,STOCK_NUM,COUNT_NUM,UNIT,GOODS_TYPE_ID)");
strSql.Append(" values (");
strSql.Append(":STRATEGY_ID,:STORAGE_ID,:PRO_ID,:GOODS_ID,:STOCK_NUM,:COUNT_NUM,:UNIT,:GOODS_TYPE_ID)");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STORAGE_ID",OracleDbType.Varchar2,50),
new OracleParameter(":PRO_ID",OracleDbType.Varchar2,50),
new OracleParameter(":GOODS_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STOCK_NUM", OracleDbType.Decimal,4),
new OracleParameter(":COUNT_NUM", OracleDbType.Decimal,4),
new OracleParameter(":UNIT", OracleDbType.Char),
new OracleParameter(":GOODS_TYPE_ID",OracleDbType.Varchar2,50)};
parameters[0].Value = model.STRATEGY_ID;
parameters[1].Value = item.STORAGE_ID;
parameters[2].Value = item.PRO_ID;
parameters[3].Value = item.GOODS_ID;
parameters[4].Value = item.STOCK_NUM;
parameters[5].Value = item.COUNT_NUM;
parameters[6].Value = item.UNIT;
parameters[7].Value = item.GOODS_TYPE_ID;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parameters);
}
SystemDataObject.Instance.ExecuteList(liststrSql, liststrparam);
}
#endregion
#region 同时删除主表明细表数据
///
/// 根据策略编号 同时删除主表明细表数据
///
///
public void DeleteStrategyDataAndInfo(string strategy_id)
{
StringBuilder strSql = new StringBuilder();
List liststrSql = new List();
List liststrparam = new List();
strSql.Append(@"delete t_str_prorep where strategy_id =:strategy_id;");
OracleParameter[] parm = new OracleParameter[] {
new OracleParameter(":strategy_id",OracleDbType.Varchar2)};
parm[0].Value = strategy_id;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parm);
strSql = new StringBuilder();
strSql.Append("delete from T_STR_PROREP_GOODS ");
strSql.Append(" where STRATEGY_ID=:STRATEGY_ID");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50)};
parameters[0].Value = strategy_id;
liststrSql.Add(strSql.ToString());
liststrparam.Add(parameters);
SystemDataObject.Instance.ExecuteList(liststrSql, liststrparam);
}
#endregion
#endregion
#region 供应商补货策略明细表
#region 查明细
///
/// 查明细
///
///
public DataTable GetProRepInfoData(ProRepStrategyInfoModel model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(@"select strategy_id,
t.storage_id,
s.storage_name STORAGE_NAME,
t.pro_id,
p.provider_name PRO_NAME,
t.goods_type_id,
t.goods_id,
g.GOODS_NAME GOODS_NAME,
t.stock_num,
t.count_num,
t.unit
from t_str_prorep_goods t
left join t_Base_Provider_Dictionary p
on t.pro_id = p.provider_id
left join T_BASE_STORAGEINFO s
on t.storage_id = s.storage_id
left join T_BASE_GOODS g
on t.goods_id = g.goods_id
where t.strategy_id='" + model.STRATEGY_ID + "'");
return SystemDataObject.Instance.GetDataTable(strSql.ToString());
}
#endregion
#region 增明细
///
/// 增加策略明细数据
///
public void AddStrategyInfo(List list)
{
StringBuilder strSql = new StringBuilder();
List liststrSql = new List();
List listparam = new List();
foreach (ProRepStrategyInfoModel item in list)
{
strSql = new StringBuilder();
strSql.Append("insert into T_STR_PROREP_GOODS(");
strSql.Append("STRATEGY_ID,STORAGE_ID,PRO_ID,GOODS_ID,STOCK_NUM,COUNT_NUM,UNIT,GOODS_TYPE_ID)");
strSql.Append(" values (");
strSql.Append(":STRATEGY_ID,:STORAGE_ID,:PRO_ID,:GOODS_ID,:STOCK_NUM,:COUNT_NUM,:UNIT,:GOODS_TYPE_ID)");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STORAGE_ID",OracleDbType.Varchar2,50),
new OracleParameter(":PRO_ID",OracleDbType.Varchar2,50),
new OracleParameter(":GOODS_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STOCK_NUM", OracleDbType.Decimal,4),
new OracleParameter(":COUNT_NUM", OracleDbType.Decimal,4),
new OracleParameter(":UNIT", OracleDbType.Char),
new OracleParameter(":GOODS_TYPE_ID",OracleDbType.Varchar2,50)};
parameters[0].Value = item.STRATEGY_ID;
parameters[1].Value = item.STORAGE_ID;
parameters[2].Value = item.PRO_ID;
parameters[3].Value = item.GOODS_ID;
parameters[4].Value = item.STOCK_NUM;
parameters[5].Value = item.COUNT_NUM;
parameters[6].Value = item.UNIT;
parameters[7].Value = item.GOODS_TYPE_ID;
liststrSql.Add(strSql.ToString());
listparam.Add(parameters);
strSql.Clear();
}
SystemDataObject.Instance.ExecuteList(liststrSql, listparam);
}
#endregion
#region 更明细
///
/// 更新策略明细数据
///
public void UpdateStrategyInfo(List list)
{
StringBuilder strSql = new StringBuilder();
List liststrSql = new List();
List listparma = new List();
foreach (ProRepStrategyInfoModel item in list)
{
strSql = new StringBuilder();
strSql.Append("update T_STR_PROREP_GOODS set ");
strSql.Append("STRATEGY_ID=:STRATEGY_ID,");
strSql.Append("STORAGE_ID=:STORAGE_ID,");
strSql.Append("PRO_ID=:PRO_ID,");
strSql.Append("GOODS_ID=:GOODS_ID,");
strSql.Append("STOCK_NUM=:STOCK_NUM,");
strSql.Append("COUNT_NUM=:COUNT_NUM,");
strSql.Append("UNIT=:UNIT,");
strSql.Append("GOODS_TYPE_ID=:GOODS_TYPE_ID");
strSql.Append(" where STRATEGY_ID=:STRATEGY_ID and STORAGE_ID=:STORAGE_ID ");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STORAGE_ID",OracleDbType.Varchar2,50),
new OracleParameter(":PRO_ID",OracleDbType.Varchar2,50),
new OracleParameter(":GOODS_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STOCK_NUM", OracleDbType.Decimal,4),
new OracleParameter(":COUNT_NUM", OracleDbType.Decimal,4),
new OracleParameter(":UNIT", OracleDbType.Char),
new OracleParameter(":GOODS_TYPE_ID",OracleDbType.Varchar2,50)};
parameters[0].Value = item.STRATEGY_ID;
parameters[1].Value = item.STORAGE_ID;
parameters[2].Value = item.PRO_ID;
parameters[3].Value = item.GOODS_ID;
parameters[4].Value = item.STOCK_NUM;
parameters[5].Value = item.COUNT_NUM;
parameters[6].Value = item.UNIT;
parameters[7].Value = item.GOODS_TYPE_ID;
liststrSql.Add(strSql.ToString());
listparma.Add(parameters);
strSql.Clear();
}
SystemDataObject.Instance.ExecuteList(liststrSql, listparma);
}
#endregion
#region 删明细
///
/// 删除策略明细数据
///
public void DeleteStrategyInfo(string STRATEGY_ID, string STORAGE_ID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from T_STR_PROREP_GOODS ");
strSql.Append(" where STRATEGY_ID=:STRATEGY_ID and STORAGE_ID=:STORAGE_ID ");
OracleParameter[] parameters = {
new OracleParameter(":STRATEGY_ID",OracleDbType.Varchar2,50),
new OracleParameter(":STORAGE_ID",OracleDbType.Varchar2,50) };
parameters[0].Value = STRATEGY_ID;
parameters[1].Value = STORAGE_ID;
SystemDataObject.Instance.ExecuteSql(strSql.ToString(), parameters);
}
#endregion
#endregion
///
/// 检验是否具有唯一性
///
///
///
public string Exists(string StrategyID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from T_STR_PROREP");
strSql.Append(" where STRATEGY_ID='" + StrategyID + "'");
DataTable table = SystemDataObject.Instance.GetDataTable(strSql.ToString());
if (table != null)
{
if (table.Rows.Count > 0)
{
return table.Rows[0][0].ToString();
}
}
return "0";
}
}
}