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"; } } }