using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using WMS.Model.SC; using WMS.Model.SystemManage; using WMS.Frm.Base; using WMS.Common; using WMS.Business.Common; using WMS.Business; using WMS.Business.SC; using WMS.Business.SystemManage; namespace WMS.FrmSC { public partial class FrmWorkingTask : FormBase { #region 全局变量声明 /// /// 计划Model /// ProcessPlanModel processPlanModel = new ProcessPlanModel(); /// /// 计划List集合 /// List planList = new List(); /// /// 计划商品Model /// List infoList = new List(); /// /// 商品原料对应Model /// GoodsMaterialModel gMaterialModel = new GoodsMaterialModel(); /// /// 商品原料对应List集合 /// List gMaterialList = new List(); /// /// 任务领取原料Model /// WorkingTaskModel wtask = new WorkingTaskModel(); /// /// 任务领取原料List集合 /// List wtasklist = new List(); #endregion #region 构造函数 /// /// 无参构造 /// public FrmWorkingTask() { InitializeComponent(); } #endregion #region 窗体加载 /// /// 窗体加载 /// /// /// private void FrmWorkingTask_Load(object sender, EventArgs e) { bgsWorking.DataSource = new WorkingTaskModel(); processPlanModel = new ProcessPlanModel() { DATESTAR = DateTime.Now, DATEEND = DateTime.Now.AddDays(7) }; bgsPlanTab.DataSource = processPlanModel; LEPStoSel.LoadData(); lkpTeam.LoadData(); lkpTeamUsers.LoadData(); this.ctrlPlan.selSql = "select plan_id, plan_name, plan_userid, plan_description, plan_startdate, plan_createtime, status, storage_id from t_sc_process_plan where status ='0'"; BindPlan(processPlanModel); //单位下拉框 lueUnit.NullText = ""; lueUnit.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("VC_DICTIONARY_NAME", "单位")); lueUnit.ValueMember = "VC_CHAR_VALUE"; lueUnit.DisplayMember = "VC_DICTIONARY_NAME"; DataTable tabUnit = null; try { tabUnit = IBussFactory.Instance().GetCustomCtrlData("t_sys_dictionary_tab", "VC_CHAR_VALUE", "VC_DICTIONARY_NAME", " VC_DICTIONARY_TYPE = 'vc_uom' and c_flag = '1'", ""); } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("加载单位列表出错了:" + ex.Message); } lueUnit.DataSource = tabUnit; try { if (frmButtonItem.ContainsKey("Confirm")) { frmButtonItem["Confirm"].Enabled = false; } if (frmButtonItem.ContainsKey("Refresh")) { frmButtonItem["Refresh"].Enabled = true; } if (frmButtonItem.ContainsKey("Edit")) { frmButtonItem["Edit"].Enabled = true; } if (frmButtonItem.ContainsKey("Search")) { frmButtonItem["Search"].Enabled = true; } PageGet.PageEnabled = false; } catch (Exception ex) { } } #endregion #region 按钮事件 /// /// 查询 /// public override void Search() { if (xtraTabControl1.SelectedTabPage == PageSel) { PageGet.PageEnabled = false; PageSel.PageEnabled = true; this.labelControl1.Focus(); bgsPlanTab.EndEdit(); processPlanModel = bgsPlanTab.DataSource as ProcessPlanModel; this.lkpTeam.LoadData(); lkpTeamUsers.LoadData(); BindPlan(processPlanModel); } else { xtraTabControl1.SelectedTabPage = PageSel; PageGet.PageEnabled = false; PageSel.PageEnabled = true; } } /// /// 编辑 领取计划 /// public override void Edit() { GCPlan_DoubleClick(null, null); } /// /// 刷新 /// public override void Refresh() { xtraTabControl1.SelectedTabPageIndex = 0; this.ctrlPlan.TextBoxFlag = string.Empty; this.ctrlPlan.TextBoxValue = string.Empty; this.txtPlanNameSel.Text = string.Empty; this.LEPStoSel.EditValue = string.Empty; this.LEPStoSel.Text = string.Empty; this.lkpTeam.EditValue = string.Empty; this.lkpTeamUsers.EditValue = string.Empty; ; this.datePlan.EditValue = DateTime.MinValue; this.dateGet.EditValue = DateTime.MinValue; this.txtStorage.EditValue = string.Empty; ; this.memoEdit1.Text = string.Empty; bgsWorkingTask.DataSource = null; bgsWorking.DataSource = new WorkingTaskModel(); processPlanModel = new ProcessPlanModel() { DATESTAR = DateTime.Now, DATEEND = DateTime.Now.AddDays(7) }; bgsPlanTab.DataSource = processPlanModel; this.lkpTeam.Properties.ReadOnly = false; this.lkpTeamUsers.Properties.ReadOnly = false; this.datePlan.Properties.ReadOnly = false; this.dateGet.Properties.ReadOnly = false; this.memoEdit1.Enabled = false; // this.GVPlanGoods.OptionsBehavior.Editable = false; this.GVWorkingTask.OptionsBehavior.Editable = true; LEPStoSel.LoadData(); lkpTeam.LoadData(); lkpTeamUsers.LoadData(); this.ctrlPlan.selSql = "select plan_id, plan_name, plan_userid, plan_description, plan_startdate, plan_createtime, status, storage_id from t_sc_process_plan where status ='1'"; BindPlan(processPlanModel); xtraTabControl1.SelectedTabPageIndex = 0; PageGet.PageEnabled = false; PageSel.PageEnabled = true; } /// /// 确认 表示生产计划已领取 /// public void Confirm() { this.labelControl1.Focus(); processPlanModel.STATUS = "1"; processPlanModel.DATESTAR = new DateTime(1901, 1, 1); processPlanModel.DATEEND = new DateTime(1901, 1, 1); //bgsPlanGoods.EndEdit(); bgsPlanTab.EndEdit(); bgsWorking.EndEdit(); bgsWorkingTask.EndEdit(); this.GVWorkingTask.CloseEditor(); //生产小组暂时注销 //foreach (PlanGoodsModel item in infoList) //{ // item.TEAM_ID = this.lkpTeam.EditValue.ToString(); // item.TEAM_NAME = this.lkpTeam.Text; //} string errText = IBussFactory.Instance().UpdatePlanGoodsAndInsertWorkingTask(processPlanModel, infoList, bgsWorkingTask.DataSource as List); if (!string.IsNullOrEmpty(errText)) { SystemCommon.ShowInfoMessageBox("操作失败:" + errText); } else { SystemCommon.ShowInfoMessageBox("操作成功!"); if (frmButtonItem.ContainsKey("Confirm")) { frmButtonItem["Confirm"].Enabled = false; } Refresh();//重新加载 //processPlanModel.STATUS = "0"; ////processPlanModel = new ProcessPlanModel(); //BindPlan(processPlanModel); //xtraTabControl1.SelectedTabPageIndex = 0; } } #endregion #region 数据绑定 计划 计划商品 /// /// 绑定计划 /// /// private void BindPlan(ProcessPlanModel model) { try { planList = IBussFactory.Instance().GetScPlanList(model); GCPlan.DataSource = planList; GVPlan.RefreshData(); if (planList.Count > 0) { processPlanModel = planList[0]; BindPlanGoods(new PlanGoodsModel() { PLAN_ID = processPlanModel.PLAN_ID }); } else { infoList = new List(); ; GCPlanGoods.DataSource = infoList; GVPlanGoods.RefreshData(); } } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("出错了:BindPlan" + ex.Message); } } /// /// 绑定计划商品 /// /// private void BindPlanGoods(PlanGoodsModel model) { try { infoList = IBussFactory.Instance().GetPlanGoodsList(model); GCPlanGoods.DataSource = infoList; GVPlanGoods.RefreshData(); } catch (Exception) { SystemCommon.ShowInfoMessageBox("获取数据失败,请检查网络连接!"); } } #endregion #region 计划 单击显示计划商品 /// /// 计划单击显示明细商品数据 /// /// /// private void GVPlan_Click(object sender, EventArgs e) { if (frmButtonItem.ContainsKey("Confirm")) { frmButtonItem["Confirm"].Enabled = false; } if (GVPlan.FocusedRowHandle > -1) { processPlanModel = GVPlan.GetFocusedRow() as ProcessPlanModel; BindPlanGoods(new PlanGoodsModel() { PLAN_ID = processPlanModel.PLAN_ID }); } } #endregion #region 计划 双击 跳转 领任务页面 /// /// 双击计划 跳转到领计划任务页面 /// /// /// private void GCPlan_DoubleClick(object sender, EventArgs e) { if (GVPlan.FocusedRowHandle < 0) { SystemCommon.ShowErrorMessageBox("请选择要编辑的数据!"); return; } if (GVPlan.FocusedRowHandle > -1) { PageGet.PageEnabled = true; processPlanModel = GVPlan.GetFocusedRow() as ProcessPlanModel; BindPlanGoods(new PlanGoodsModel() { PLAN_ID = processPlanModel.PLAN_ID }); if (!string.IsNullOrEmpty(lkpTeam.EditValue.ToString())) { this.lkpTeam.EditValue = infoList[0].TEAM_ID; } } xtraTabControl1.SelectedTabPageIndex = 1; ; PageGet.PageEnabled = true; PageSel.PageEnabled = false; this.ctrlPlan.TextBoxFlag = processPlanModel.PLAN_ID; this.ctrlPlan.TextBoxValue = processPlanModel.PLAN_NAME; this.ctrlPlan.Enabled = false; bgsPlan.DataSource = processPlanModel; string errText = string.Empty; gMaterialList = new List(); wtasklist = new List(); this.dateGet.EditValue = DateTime.Now; foreach (PlanGoodsModel p in infoList) { if (processPlanModel.STATUS == "0") { if (frmButtonItem.ContainsKey("Confirm")) { frmButtonItem["Confirm"].Enabled = true; } this.lkpTeam.EditValue = p.TEAM_ID; this.lkpTeam.Properties.ReadOnly = false; this.lkpTeamUsers.Properties.ReadOnly = false; this.datePlan.Properties.ReadOnly = true; this.dateGet.Properties.ReadOnly = false; this.txtStorage.Properties.ReadOnly = true; this.memoEdit1.Enabled = true; this.GVWorkingTask.OptionsBehavior.Editable = true; gMaterialModel = new GoodsMaterialModel(); gMaterialModel.GOODS_ID = p.GOODS_ID; gMaterialList = IBussFactory.Instance().GetGoodsMaterialList(gMaterialModel); if (gMaterialList.Count > 0) { foreach (GoodsMaterialModel item in gMaterialList) { wtask = new WorkingTaskModel(); wtask.PALAN_ID = p.PLAN_ID; wtask.PALAN_NAME = p.PLAN_NAME; wtask.GOODS_ID = item.GOODS_ID; wtask.GOODS_NAME = item.GOODS_NAME; wtask.MATERIAL_ID = item.MATERIAL_ID; wtask.MATERIAL_NAME = item.MATERIAL_NAME; wtask.STAND_NUM = item.STAND_NUM * p.GOODS_NUM; wtask.MAX_NUM = item.MAX_NUM * p.GOODS_NUM; wtask.REALITY_NUM = item.MAX_NUM * p.GOODS_NUM; wtask.LOSS_PERCENT = item.LOSS_PERCENT; wtask.GOODS_PLETENUM = p.GOODS_COMPLETENUM; wtask.GOODS_NUM = p.GOODS_NUM; //if (tlist.Count > 0) //{ //wtask.REALITY_MAN = tlist[0].USER_ID; //wtask.REALITY_MAN_NAME = tlist[0].USER_NAME; //} if (!string.IsNullOrEmpty(this.lkpTeamUsers.EditValue.ToString())) { wtask.REALITY_MAN = this.lkpTeamUsers.EditValue.ToString(); wtask.REALITY_MAN_NAME = this.lkpTeamUsers.Text; } wtask.OPERAT_MAN = userData.USER_ID; wtask.OPERAT_MAN_NAME = userData.NAME; wtask.OPERAT_DATE = DateTime.Now; wtask.REMARK = item.REMARK; wtask.UNIT = item.UNIT; wtask.PRICE = item.PRICE; wtask.REALITY_DATE = DateTime.Now; wtasklist.Add(wtask); } } } else if (processPlanModel.STATUS == "1") { this.lkpTeam.Properties.ReadOnly = true; this.lkpTeamUsers.Properties.ReadOnly = true; this.datePlan.Properties.ReadOnly = true; this.dateGet.Properties.ReadOnly = true; this.txtStorage.Properties.ReadOnly = true; this.memoEdit1.Enabled = false; // this.GVPlanGoods.OptionsBehavior.Editable = false; this.GVWorkingTask.OptionsBehavior.Editable = false; wtask = new WorkingTaskModel(); wtask.PALAN_ID = p.PLAN_ID; wtask.GOODS_ID = p.GOODS_ID; // wtask.PALAN_ID = this.ctrlPlan.TextBoxFlag; List l = IBussFactory.Instance().GetMaterialList(wtask); if (l.Count > 0) { this.lkpTeam.EditValue = l[0].TEAM_ID; this.lkpTeamUsers.EditValue = l[0].REALITY_MAN; wtasklist.AddRange(l); bgsWorking.DataSource = l[0]; } } } bgsWorkingTask.DataSource = wtasklist; this.GVWorkingTask.RefreshData(); } #endregion //PlanGoodsModel plll = new PlanGoodsModel(); #region 单位显示 private void GVWorkingTask_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { //if (e.Column.FieldName == "UNIT") //{ // if (e.Value == null) // { // return; // } // switch (e.Value.ToString().Trim()) // { // case "a": // e.DisplayText = "盒"; // break; // case "b": // e.DisplayText = "罐"; // break; // case "c": // e.DisplayText = "袋"; // break; // case "d": // e.DisplayText = "瓶"; // break; // case "e": // e.DisplayText = "个"; // break; // case "f": // e.DisplayText = "包"; // break; // case "g": // e.DisplayText = "把"; // break; // case "h": // e.DisplayText = "筒"; // break; // case "i": // e.DisplayText = "张"; // break; // case "j": // e.DisplayText = "套"; // break; // case "k": // e.DisplayText = "克"; // break; // case "l": // e.DisplayText = "泡"; // break; // case "m": // e.DisplayText = "片"; // break; // case "z": // e.DisplayText = "箱"; // break; // default: // e.DisplayText = ""; // break; // } //} } #endregion #region 班组改变事件 private void lkpTeam_EditValueChanged(object sender, EventArgs e) { //this.labelControl1.Focus(); //TeamUserModel tm = new TeamUserModel(); //string errText = string.Empty; //tm.TEAM_ID = this.lkpTeam.EditValue.ToString(); ////plll = this.GVPlanGoods.GetFocusedRow() as PlanGoodsModel; ////PlanGoodsModel p = this.GVPlanGoods.GetFocusedRow() as PlanGoodsModel; //List tlist = new List(); //// tm.TEAM_ID = p.TEAM_ID; //tlist = IBussFactory.Instance().GetList(tm); //if (tlist.Count > 0) //{ // this.lkpTeamUsers.Properties.DataSource = tlist; // this.lkpTeamUsers.Properties.DropDownRows = tlist.Count; // this.lkpTeamUsers.Properties.DisplayMember = "USER_NAME"; // this.lkpTeamUsers.Properties.ValueMember = "USER_ID"; // this.lkpTeamUsers.Properties.NullText = "请选择"; // this.lkpTeamUsers.ItemIndex = 0; // this.labelControl5.Focus(); // foreach (WorkingTaskModel item in wtasklist) // { // item.REALITY_MAN = tlist[0].USER_ID; ; // item.REALITY_MAN_NAME = tlist[0].USER_NAME; // } //} } #endregion #region 计划领取事件(放大镜) private void ctrlPlan_Button_Click(object sender, EventArgs e) { List plm = ConvertHelper.ConvertToList(this.ctrlPlan.SelectTable); if (plm.Count == 0) { return; } processPlanModel = plm[0]; BindPlanGoods(new PlanGoodsModel() { PLAN_ID = processPlanModel.PLAN_ID }); if (!string.IsNullOrEmpty(lkpTeam.EditValue.ToString())) { this.lkpTeam.EditValue = infoList[0].TEAM_ID; } bgsPlan.DataSource = processPlanModel; string errText = string.Empty; gMaterialList = new List(); wtasklist = new List(); this.dateGet.EditValue = DateTime.Now; foreach (PlanGoodsModel p in infoList) { if (processPlanModel.STATUS == "0") { this.lkpTeam.Properties.ReadOnly = false; this.lkpTeamUsers.Properties.ReadOnly = false; this.datePlan.Properties.ReadOnly = true; this.dateGet.Properties.ReadOnly = false; this.txtStorage.Properties.ReadOnly = true; this.memoEdit1.Enabled = false; this.GVWorkingTask.OptionsBehavior.Editable = true; gMaterialModel = new GoodsMaterialModel(); gMaterialModel.GOODS_ID = p.GOODS_ID; gMaterialList = IBussFactory.Instance().GetGoodsMaterialList(gMaterialModel); if (gMaterialList.Count > 0) { foreach (GoodsMaterialModel item in gMaterialList) { wtask = new WorkingTaskModel(); wtask.PALAN_ID = p.PLAN_ID; wtask.PALAN_NAME = p.PLAN_NAME; wtask.GOODS_ID = item.GOODS_ID; wtask.GOODS_NAME = item.GOODS_NAME; wtask.MATERIAL_ID = item.MATERIAL_ID; wtask.MATERIAL_NAME = item.MATERIAL_NAME; wtask.STAND_NUM = item.STAND_NUM * p.GOODS_NUM; wtask.MAX_NUM = item.MAX_NUM * p.GOODS_NUM; wtask.REALITY_NUM = item.MAX_NUM * p.GOODS_NUM; wtask.LOSS_PERCENT = item.LOSS_PERCENT; wtask.GOODS_PLETENUM = p.GOODS_COMPLETENUM; wtask.GOODS_NUM = p.GOODS_NUM; if (!string.IsNullOrEmpty(this.lkpTeamUsers.EditValue.ToString())) { wtask.REALITY_MAN = this.lkpTeamUsers.EditValue.ToString(); wtask.REALITY_MAN_NAME = this.lkpTeamUsers.Text; } wtask.OPERAT_MAN = userData.USER_ID; wtask.OPERAT_MAN_NAME = userData.NAME; wtask.OPERAT_DATE = DateTime.Now; wtask.REMARK = item.REMARK; wtask.UNIT = item.UNIT; wtask.PRICE = item.PRICE; wtask.REALITY_DATE = DateTime.Now; wtasklist.Add(wtask); } } } } bgsWorkingTask.DataSource = wtasklist; this.GVWorkingTask.RefreshData(); } #endregion #region 单元格 改变验证实际 private void GVWorkingTask_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (e.RowHandle < 0) { return; } this.labelControl1.Focus(); //实际领料数量 if (e.Column.Name == "colREALITY_NUM") { decimal REALITY_NUM = Convert.ToDecimal(this.GVWorkingTask.GetFocusedRowCellValue("REALITY_NUM")); decimal STAND_NUM = Convert.ToDecimal(GVWorkingTask.GetFocusedRowCellValue("STAND_NUM")); decimal MAX_NUM = Convert.ToDecimal(GVWorkingTask.GetFocusedRowCellValue("MAX_NUM")); if (REALITY_NUM < STAND_NUM || REALITY_NUM > MAX_NUM) { SystemCommon.ShowInfoMessageBox("请注意:" + Environment.NewLine + "您输入的实际领料数不合法,请重新输入!"); this.GVWorkingTask.SetFocusedRowCellValue("REALITY_NUM", GVWorkingTask.GetFocusedRowCellValue("MAX_NUM")); } } //this.labelControl2.Focus(); //if (e.Column.Name == "colREALITY_DATE") //{ // DateTime dtime = Convert.ToDateTime(this.GVWorkingTask.GetFocusedRowCellValue("REALITY_DATE")); // DateTime dNow = DateTime.Now; // if (dtime < dNow || dtime > dNow.AddDays(3)) // { // SystemCommon.ShowInfoMessageBox("请注意:" + Environment.NewLine + "您选择的领料时间不合法,请重新选择!"); // this.GVWorkingTask.SetFocusedRowCellValue("REALITY_DATE", DateTime.Now); // this.GVWorkingTask.RefreshData(); // return; // } //} } #endregion #region 已废弃 单独绑定一行数据中的下拉列 private void GVWorkingTask_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { // if (e.RowHandle < 0) // { // return; // } // if (e.Column.Name == "colREALITY_MAN") // { // WorkingTaskModel wm = new WorkingTaskModel(); // wm = this.GVWorkingTask.GetFocusedRow() as WorkingTaskModel; // string strResult = string.Empty; // if (wm != null && wm.GOODS_ID != null) // { // try // { // strResult = WebLockConfig.Instance.WebTeamUser.execTeamUserGetList(Newtonsoft.Json.JsonConvert.SerializeObject(plll)); // } // catch (Exception) // { // //SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!"); // } // } // if (wm.GOODS_ID == plll.GOODS_ID) // { // e.RepositoryItem = lkpTeamUser;//当前单元格绑定控件 // lkpTeamUser.Properties.DataSource = Newtonsoft.Json.JsonConvert.DeserializeObject(strResult); // } // } } #endregion #region 状态显示 private void GVPlan_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column.FieldName == "STATUS") { if (e.Value == null) { return; } switch (e.Value.ToString().Trim()) { case "0": e.DisplayText = "未领取"; break; case "1": e.DisplayText = "已领取"; break; case "2": e.DisplayText = "已完成"; break; case "3": e.DisplayText = "作废"; break; default: e.DisplayText = ""; break; } } } #endregion #region 领料人改变事件 /// /// 领料人下拉 改变GridView中数据 /// /// /// private void lkpTeamUsers_EditValueChanged(object sender, EventArgs e) { if (processPlanModel.STATUS == "1") { return; } if (this.GVWorkingTask.FocusedRowHandle > -1) { foreach (WorkingTaskModel item in wtasklist) { item.REALITY_MAN = this.lkpTeamUsers.EditValue.ToString(); item.REALITY_MAN_NAME = this.lkpTeamUsers.Text; } } this.GVWorkingTask.RefreshData(); } #endregion #region 领料时间改变事件 private void dateGet_EditValueChanged(object sender, EventArgs e) { if (!string.IsNullOrEmpty(dateGet.EditValue.ToString())) { foreach (WorkingTaskModel item in wtasklist) { item.REALITY_DATE = Convert.ToDateTime(this.dateGet.EditValue.ToString()); } } this.GVWorkingTask.RefreshData(); } #endregion } }