using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace SiaSun.LMS.Implement { public class PlanBase:S_BaseService { private static readonly object lockObj = new object(); public PlanBase() { } /// /// 计划创建 /// /// 计划模型 /// 计划列表 /// 返回结果 /// public bool PlanCreate(SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN, DataTable dtPLAN_LIST, out int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; PLAN_ID = 0; try { this._P_Base_House.BeginTransaction(); if (null != this._P_PLAN_MAIN.GetModel(mPLAN_MAIN.PLAN_ID)) { if (mPLAN_MAIN.PLAN_STATUS.Equals(SiaSun.LMS.Enum.PLAN_STATUS.Complete.ToString())) { bResult = false; sResult = string.Format("{0}单号已经完成 不能编辑!", mPLAN_MAIN.PLAN_CODE); this._P_Base_House.RollBackTransaction(); return bResult; } this._P_PLAN_MAIN.Update(mPLAN_MAIN); } else { if (null != this._P_PLAN_MAIN.GetModelPlanCode(mPLAN_MAIN.PLAN_CODE)) { bResult = false; sResult = string.Format("{0}单号已经存在!", mPLAN_MAIN.PLAN_CODE); this._P_Base_House.RollBackTransaction(); return bResult; } this._P_PLAN_MAIN.Add(mPLAN_MAIN); } foreach (DataRow drPLAN_LIST in dtPLAN_LIST.Rows) { if (drPLAN_LIST.RowState != DataRowState.Deleted) { drPLAN_LIST["PLAN_ID"] = mPLAN_MAIN.PLAN_ID; } } this.Save(dtPLAN_LIST, "PLAN_LIST"); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } PLAN_ID = mPLAN_MAIN.PLAN_ID; return bResult; } /// 创建 /// 创建 /// /// 计划模型 /// 计划列表 /// 返回结果 /// public bool PlanCreate(SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN, IList lsPLAN_LIST, out int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; PLAN_ID = 0; try { this._P_Base_House.BeginTransaction(); if (null != this._P_PLAN_MAIN.GetModel(mPLAN_MAIN.PLAN_ID)) { if (mPLAN_MAIN.PLAN_STATUS.Equals(SiaSun.LMS.Enum.PLAN_STATUS.Complete.ToString())) { bResult = false; sResult = string.Format("{0}单号已经完成 不能编辑!", mPLAN_MAIN.PLAN_CODE); return bResult; } this._P_PLAN_MAIN.Update(mPLAN_MAIN); } else { if (null != this._P_PLAN_MAIN.GetModelPlanCode(mPLAN_MAIN.PLAN_CODE)) { bResult = false; sResult = string.Format("{0}单号已经存在!", mPLAN_MAIN.PLAN_CODE); return bResult; } this._P_PLAN_MAIN.Add(mPLAN_MAIN); } foreach (SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST in lsPLAN_LIST) { bResult = this._S_GoodsService.GoodsPropertyCheck(mPLAN_LIST.GOODS_ID, mPLAN_LIST, out sResult); if (!bResult) { sResult = string.Format("属性校验错误: {0}", sResult); return bResult; } if (mPLAN_LIST.PLAN_ID.Equals(0)) { mPLAN_LIST.PLAN_ID = mPLAN_MAIN.PLAN_ID; this._P_PLAN_LIST.Add(mPLAN_LIST); } else { this._P_PLAN_LIST.Update(mPLAN_LIST); } } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } finally { if (bResult) { this._P_Base_House.CommitTransaction(); } else { this._P_Base_House.RollBackTransaction(); } } PLAN_ID = mPLAN_MAIN.PLAN_ID; return bResult; } public bool PlanImport(SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN, IList lsPLAN_LIST, out int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; PLAN_ID = 0; //try //{ // this._P_Base_House.BeginTransaction(); // if (null != this._P_PLAN_MAIN.GetModel(mPLAN_MAIN.PLAN_ID)) // { // if (mPLAN_MAIN.PLAN_STATUS.Equals(SiaSun.LMS.Enum.PLAN_STATUS.Complete.ToString())) // { // bResult = false; // sResult = string.Format("{0}单号已经完成 不能编辑!", mPLAN_MAIN.PLAN_CODE); // return bResult; // } // this._P_PLAN_MAIN.Update(mPLAN_MAIN); // } // else // { // if (null != this._P_PLAN_MAIN.GetModel(mPLAN_MAIN.PLAN_CODE)) // { // bResult = false; // sResult = string.Format("{0}单号已经存在!", mPLAN_MAIN.PLAN_CODE); // return bResult; // } // this._P_PLAN_MAIN.Add(mPLAN_MAIN); // mPLAN_RELATE.PLAN_ID = mPLAN_MAIN.PLAN_ID; // this._P_PLAN_RELATE.Add(mPLAN_RELATE); // } // foreach (SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST in lsPLAN_LIST) // { // bResult = this._S_Goods.GoodsPropertyCheck(mPLAN_LIST.GOODS_ID, mPLAN_LIST, out sResult); // if (!bResult) // { // sResult = string.Format("属性校验错误: {0}", sResult); // return bResult; // } // if (mPLAN_LIST.PLAN_ID.Equals(0)) // { // mPLAN_LIST.PLAN_ID = mPLAN_MAIN.PLAN_ID; // this._P_PLAN_LIST.Add(mPLAN_LIST); // } // else // { // this._P_PLAN_LIST.Update(mPLAN_LIST); // } // } //} //catch (Exception ex) //{ // bResult = false; // sResult = ex.Message; //} //finally //{ // if (bResult) // { // this._P_Base_House.CommitTransaction(); // } // else // { // this._P_Base_House.RollBackTransaction(); // } //} //PLAN_ID = mPLAN_MAIN.PLAN_ID; return bResult; } /// 取消 /// 取消 /// /// 计划编号 /// 返回结果 /// public bool PlanCancel(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; try { SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID.ToString()); return bResult; } IList lsMANAGE_MAIN = this._P_MANAGE_MAIN.GetListPlanID(PLAN_ID); if (lsMANAGE_MAIN.Count > 0) { bResult = false; sResult = string.Format("此计划存在任务。不能删除"); return bResult; } IList lsRECORD_MAIN = this._P_RECORD_MAIN.GetListPlanCode(mPLAN_MAIN.PLAN_CODE); if (lsRECORD_MAIN.Count > 0) { bResult = false; sResult = string.Format("此计划已经存在出入库记录。不能删除"); return bResult; } this._P_Base_House.BeginTransaction(); this._P_PLAN_LIST.DeletePlanID(PLAN_ID); this._P_PLAN_MAIN.Delete(PLAN_ID); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } /// 检验计划是否可以完成 /// 检验计划是否可以完成 /// /// 计划编号 /// 返回结果 /// public bool PlanCheckComplete(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID.ToString()); return bResult; } IList lsPLAN_LIST = this._P_PLAN_LIST.GetListNoComplete(PLAN_ID); if (lsPLAN_LIST.Count <= 0) { bResult = false; return bResult; } return bResult; } /// 计划完成 /// 计划完成 /// /// 计划编号 /// 返回结果 /// public bool PlanComplete(int PLAN_ID, out string sResult) { return this.PlanComplete(PLAN_ID, true, out sResult); } /// 完成-支持事务 /// 完成-支持事务 /// /// 计划编号 /// 返回结果 /// public bool PlanComplete(int PLAN_ID, bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID.ToString()); return bResult; } try { this._P_Base_House.BeginTransaction(bTrans); mPLAN_MAIN.PLAN_END_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); mPLAN_MAIN.PLAN_STATUS = SiaSun.LMS.Enum.PLAN_STATUS.Complete.ToString(); this._P_PLAN_MAIN.Update(mPLAN_MAIN); this._P_PLAN_MAIN.Delete(PLAN_ID); this._P_PLAN_LIST.DeletePlanID(PLAN_ID); } catch (Exception ex) { bResult = false; sResult = ex.Message; } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 计划完成 /// 计划删除 /// erp获取到wms的信息标志位写0 /// 返回结果 /// public bool PlanComplete_det(bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); DataTable plan_det = this.GetList(string.Format(@"SELECT PLAN_LIST_ID FROM PLAN_LIST WHERE GOODS_PROPERTY4 = 0")); for (int i = 0; i < plan_det.Rows.Count; i++) { this._P_PLAN_LIST.Delete(Convert.ToInt32(plan_det.Rows[i]["PLAN_LIST_ID"])); } } catch (Exception ex) { bResult = false; sResult = ex.Message; } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// /// 计划执行 /// /// 计划编号 /// 返回结果 /// public bool PlanExecute(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID); return bResult; } try { this._P_Base_House.BeginTransaction(); if( string.IsNullOrEmpty(mPLAN_MAIN.PLAN_BEGIN_TIME)) mPLAN_MAIN.PLAN_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); mPLAN_MAIN.PLAN_STATUS = SiaSun.LMS.Enum.PLAN_STATUS.Executing.ToString(); this._P_PLAN_MAIN.Update(mPLAN_MAIN); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } /// /// 计划自动执行 /// /// 计划编号 /// 返回结果 /// public bool PlanAutoExecute(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID); return bResult; } try { this._P_Base_House.BeginTransaction(); if (string.IsNullOrEmpty(mPLAN_MAIN.PLAN_BEGIN_TIME)) mPLAN_MAIN.PLAN_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); mPLAN_MAIN.PLAN_STATUS = SiaSun.LMS.Enum.PLAN_STATUS.Executing.ToString(); mPLAN_MAIN.PLAN_CONFIRM_USER = "管理系统"; this._P_PLAN_MAIN.Update(mPLAN_MAIN); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } /// 计划执行默认动作 /// 计划执行默认动作 /// /// 计划编号 /// 返回结果 /// public bool PlanExcuteDefault(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; string ACTION_EVENT = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); DataTable dtPlan = this.GetList(string.Format("SELECT * FROM V_PLAN WHERE PLAN_ID = {0}", PLAN_ID)); DataTable dtACTION = this._S_FlowService.PlanGetAction(PLAN_ID.ToString(), "1"); if (dtACTION.Rows.Count.Equals(0)) { return bResult; } foreach (DataRow drPlan in dtPlan.Rows) { foreach (DataRow drACTION in dtACTION.Rows) { IList lsFLOW_PARA = this._S_FlowService.FlowGetParameters("FLOW_PLAN"); string[] aFLOW_PARA = new string[lsFLOW_PARA.Count]; int i = 0; foreach (SiaSun.LMS.Model.FLOW_PARA mFLOW_PARA in lsFLOW_PARA) { aFLOW_PARA[i] = drPlan[mFLOW_PARA.FLOW_PARA_CODE].ToString(); i++; } SiaSun.LMS.Model.PLAN_ACTION_EXCUTE mPLAN_ACTION_EXCUTE = new SiaSun.LMS.Model.PLAN_ACTION_EXCUTE(); mPLAN_ACTION_EXCUTE.PLAN_ID = Convert.ToInt32(drPlan["PLAN_ID"]); mPLAN_ACTION_EXCUTE.ACTION_EVENT = string.Format(drACTION["FLOW_ACTION_EVENT"].ToString(), aFLOW_PARA); bResult = this._S_FlowService.EventExecute(mPLAN_ACTION_EXCUTE.ACTION_EVENT, out sResult); } } if (bResult) { mPLAN_MAIN.PLAN_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); bResult = this.PlanExcuteDefault(PLAN_ID, out sResult); } return bResult; } /// /// 计划暂停 /// /// 计划编号 /// 返回结果 /// public bool PlanPause(int PLAN_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(PLAN_ID); if (null == mPLAN_MAIN) { bResult = false; sResult = string.Format("未找到计划{0}", PLAN_ID); return bResult; } try { this._P_Base_House.BeginTransaction(); mPLAN_MAIN.PLAN_STATUS = SiaSun.LMS.Enum.PLAN_STATUS.Waiting.ToString(); this._P_PLAN_MAIN.Update(mPLAN_MAIN); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } } }