using CK.SCP.Models.ExchangeCenterTables; using CK.SCP.Controller; using CK.SCP.Models; using CK.SCP.Models.Enums; using CK.SCP.Models.ScpEntity; using CK.SCP.Models.ScpEntity.ExcelExportEnttity; using CK.SCP.Utils; using FineUI; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace SCP.BasicData { public partial class Price : PageBase { private List _list; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (CurrentUser.ID != 0) { //读取 所有菜单列表 var mlist = GetMenus(CurrentUser.ID); if (mlist.Count > 0 && mlist.Contains("价格表管理")) { CheckRolesMenu(); //DDL_IMPORT.DataSource = DB.Users.Where(p => p.Roles.Select(q => q.Name).Contains("采购人员")).Select(p=>p.Name); //DDL_IMPORT.DataBind(); var site = CurrentUser.FactoryList.FirstOrDefault(); BindData(); BindFactory(); TranslatorAgents(Toolbar2); TranslatorAgents(gp1); TranslatorAgents(FormRow_1); TranslatorAgents(FormRow_2); TranslatorAgents(FormRow_3); TranslatorAgents(FormRow_4); TranslatorAgents(FormRow_5); TranslatorAgents(FormRow_6); TranslatorAgents(FormRow_7); TranslatorAgents(gp2); TranslatorAgent(factoryList); TranslatorAgent(Grid1); TranslatorAgent(ToolbarText1); } else { Response.Write(GetResourceKey("当前用户没有操作该页面权限")); Response.End(); return; } } else { Response.Write(GetResourceKey("当前用户没有操作该页面权限")); Response.End(); return; } } } private void CheckRolesMenu() { if (CurrentUser.RoleList.Contains("采购负责人")) { BtnSave.Hidden = true; btnConfirm.Hidden = false; Grid1.EnableCheckBoxSelect = true; Grid1.AllowCellEditing = false; DDL_State.SelectedValue = ((int)PriceState.New).ToString(); //BtnDelete.Hidden = true; } if (CurrentUser.RoleList.Contains("财务审核")) { BtnDelete.Hidden = false; } if (CurrentUser.RoleList.Contains("财务审核")) { //BtnSave.Hidden = true; btnConfirm.Hidden = false; Grid1.EnableCheckBoxSelect = true; Grid1.AllowCellEditing =false; BtnEdit.Hidden = false; DDL_State.SelectedValue = ((int)PriceState.PConfirm).ToString(); //BtnDelete.Hidden = true; } if (CurrentUser.RoleList.Contains("财务人员") || CurrentUser.RoleList.Contains("供应商")) { if (CurrentUser.RoleList.Contains("供应商")) { BtnSave.Hidden = true; } FileUp.Hidden = true; btnInput.Hidden = true; linkbutton.Hidden = true; //BtnDelete.Hidden = true; } } protected void Grid1_PreDataBound(object sender, EventArgs e) { if (CurrentUser.RoleList.Contains("财务人员") || CurrentUser.RoleList.Contains("供应商") || CurrentUser.RoleList.Contains("采购负责人")) { FineUI.LinkButtonField btn = Grid1.FindColumn("Grid1_ctl15") as FineUI.LinkButtonField; btn.Hidden = true; } } protected void Grid1_PreRowDataBound(object sender, FineUI.GridPreRowEventArgs e) { V_TB_PRICE _item = e.DataItem as V_TB_PRICE; if (_item.State == 0&&_item.IsPost==0) { FineUI.LinkButtonField deleteField = Grid1.FindColumn("Grid1_ctl15") as FineUI.LinkButtonField; deleteField.Enabled = true; deleteField.ToolTip = GetResourceKey("删除数据"); } else { FineUI.LinkButtonField deleteField = Grid1.FindColumn("Grid1_ctl15") as FineUI.LinkButtonField; deleteField.Enabled = false; deleteField.ToolTip = GetResourceKey("数据不能删除"); } } public void BindData() { highlightRows.Text = ""; SearchV_TB_PRICEData((result) => { Grid1.RecordCount = result.Count(); var list = SortAndPage(result, Grid1); Grid1.DataSource = list; Grid1.DataBind(); }); } //查询 protected void btnSearch_OnClick(object sender, EventArgs e) { BindData(); } public void SearchV_TB_PRICEData(Action> p_action) { V_TB_PRICE _entity = new V_TB_PRICE(); if (!string.IsNullOrEmpty(textVendId.Text)) { _entity.VendId = textVendId.Text; } if (!string.IsNullOrEmpty(textPartCode.Text)) { _entity.PartCode = textPartCode.Text; } if (!string.IsNullOrEmpty(textVendName.Text)) { _entity.Extend3 = textVendName.Text; } if (!string.IsNullOrEmpty(textPartName.Text)) { _entity.PartName = textPartName.Text; } if (!string.IsNullOrEmpty(textCreator.Text)) { _entity.Creator = textCreator.Text; } if (DP_StartDate.SelectedDate != null) { _entity.StartTime = DP_StartDate.SelectedDate; } if(DP_StartDate.SelectedDate != null&& Date_EndDate.SelectedDate == null) { _entity.EndTime = DateTime.Now; } if (DP_StartDate.SelectedDate == null && Date_EndDate.SelectedDate != null) { _entity.StartTime = DateTime.Now; } if (Date_EndDate.SelectedDate != null) { _entity.EndTime = Date_EndDate.SelectedDate; } if (!string.IsNullOrEmpty(DDL_State.SelectedValue)) { _entity.State = int.Parse(DDL_State.SelectedValue); } if (!string.IsNullOrEmpty(textCreator.Text)) { _entity.Creator = textCreator.Text; } if (!string.IsNullOrEmpty(NB_Amt.Text)) { _entity.Amt = decimal.Parse(NB_Amt.Text); } //_entity.Extend2 = !string.IsNullOrEmpty(DDL_Extend2.SelectedValue) ? DDL_Extend2.SelectedValue : string.Empty; if (!string.IsNullOrEmpty(NB_Extend2.Text)) { _entity.Extend2 = NB_Extend2.Text; } if (!string.IsNullOrEmpty(NB_TemporaryPrice.Text)) { _entity.TemporaryPrice = int.Parse(NB_TemporaryPrice.Text); } if (!string.IsNullOrEmpty(NB_SharingPrice.Text)) { _entity.SharingPrice = decimal.Parse(NB_SharingPrice.Text); } if (!string.IsNullOrEmpty(factoryList.SelectedValue)) { _entity.SubSite= factoryList.SelectedValue; } _entity.UserInAddress = CurrentUser.FactoryList; _entity.UserInVendIds = CurrentUser.VenderList; _entity.UserInSubSite = CurrentUser.SubSiteList; if (CurrentUser.RoleList.Contains("供应商") && CurrentUser.VenderList.Count == 0) { return; } SCP_TB_PRICE_CONTROLLER.Get_TB_PRICE_List(ckb_Priec.Checked, _entity, (_ret) => { if (_ret.State == ReturnStatus.Succeed) { p_action(_ret.Result); } }); } private void BindFactory() { var _ls = ScpCache.FactoryList; _ls.Insert(0, new TB_FACTORY() { FactoryId = "", FactoryName = "" }); factoryList.DataSource = _ls; factoryList.DataBind(); } protected void LinkButton_Click(object sender, EventArgs e) { Alert.Show($"{"价格导入模板.xls"}", GetResourceKey("请点击文件名下载"), MessageBoxIcon.Information); } /// /// 价格导入 /// /// /// protected void btnInput_Click(object sender, EventArgs e) { string _fileName = FileUp.FileName; if (string.IsNullOrEmpty(_fileName)) { Alert.Show(GetResourceKey("选择文件为空!")); return; } string _lx = _fileName.Split('.')[1]; Stream _stream = FileUp.PostedFile.InputStream; DataTable _dt = new DataTable(); if (_lx == "xls") { _dt = ExcelHelper.GetDataTable(_stream); } else { _dt = ExcelHelper.GetDataTableOfXlsx(_stream); } var list = ConvertHelper.ToList(ExcelHelper.RemoveEmpty(_dt)).ToList(); List partCodeList = list.Select(a => a.零件编码.Trim()).ToList(); if (partCodeList.Count == 0) { Alert.Show(GetResourceKey("未填写零件编码!")); FileUp.Reset(); return; } List list1 = new List(); list1 = CheckPartCode(partCodeList); if (list1.Count()>0 ) { Alert.Show(GetResourceKey(string.Format( "导入文件中有不存在的零件,如{0}", list1.FirstOrDefault()))); FileUp.Reset(); return; } var ret = SCP_PO_CONTROLLER.EXCEL_PRICE_MOD(list, CurrentUser.Name,CurrentUser.RoleList); if (ret.State == ReturnStatus.Succeed && ret.Result == true) { BindData(); Alert.Show(GetResourceKey("导入成功!")); return; } else { Alert.Show(GetResourceKey(string.Join("
", ret.MessageList))); FileUp.Reset(); return; } } /// /// 保存数据 /// /// /// public void BtnSave_OnClick(object sender, EventArgs e) { List _list = new List(); Dictionary> modifiedDict = Grid1.GetModifiedDict(); for (int i = 0, count = Grid1.Rows.Count; i < count; i++) { object[] rowDataKeys = Grid1.DataKeys[i]; GridRow row = Grid1.Rows[i]; TB_PRICE _entity = new TB_PRICE(); _entity.UID = ConvertHelper.To(rowDataKeys[0]); _entity.VendId = rowDataKeys[1] as string; _entity.State = ConvertHelper.To(rowDataKeys[2]); _entity.StartTime = ConvertHelper.To(rowDataKeys[3]); _entity.EndTime = ConvertHelper.To(rowDataKeys[4]); _entity.Curr = rowDataKeys[5] as string; _entity.Unit = rowDataKeys[6] as string; _entity.Amt = ConvertHelper.To(rowDataKeys[7]); _entity.Remarks = rowDataKeys[8] as string; _entity.TemporaryPrice = ConvertHelper.To(rowDataKeys[9]); _entity.PartCode = rowDataKeys[11] as string; _entity.Creator = rowDataKeys[12] as string; if (modifiedDict.Keys.Contains(i)) { var modifyValue = modifiedDict[i]; if (modifyValue.ContainsKey("Creator")) { if (modifyValue["Creator"] == null) { Alert.Show(GetResourceKey("导入者不能为空!")); return; } _entity.Creator = modifyValue["Creator"].ToString(); } if (modifyValue.ContainsKey("EndTime")) { if (modifyValue["EndTime"] == null) { Alert.Show(GetResourceKey("结束时间不能为空!")); return; } if (DateTime.Parse( modifyValue["EndTime"].ToString())< _entity.StartTime) { Alert.Show(GetResourceKey("结束时间不能小于开始时间!")); return; } _entity.EndTime = ConvertHelper.To(modifyValue["EndTime"]); //SCPDB.V_TB_ARRIVE_DETAIL.Count(p => p.ShipTime > _entity.EndTime && p.PartCode == _entity.PartCode && p.SubSite==_entity.SubSite && p.Site==p.Site); //SCPDB.V_TB_ASK_DETAIL.Count(p => p.BeginTime > _entity.EndTime && p.PartCode == _entity.PartCode && p.SubSite == _entity.SubSite && p.Site == p.Site); } if (modifyValue.Keys.Contains("Amt")) { if (modifyValue["Amt"] == null) { Alert.Show(GetResourceKey("价格不能为空!")); return; } _entity.Amt = ConvertHelper.To(modifyValue["Amt"]); } var _tpstring = modifyValue.Keys.Contains("Extend2") ? modifyValue["Extend2"].ToString() : "否"; if (_tpstring == "是") { _entity.TemporaryPrice = 1; } else { _entity.TemporaryPrice = 0; } if (_entity.State != -1) { _list.Add(_entity); } } } foreach (var price in _list) { if (string.IsNullOrEmpty(price.Creator)) { Alert.Show(GetResourceKey("导入者不能为空!")); return; } if (price.Creator.Trim().ToUpper() != CurrentUser.Name.Trim().ToUpper()) { Alert.Show(GetResourceKey("价格导入者不是当前登录人请修改!")); return; } } if(_list.Count==0) { Alert.Show(GetResourceKey("无修改数据!")); return; } foreach (var ls in _list) { if (ls.State ==2) { Alert.Show(GetResourceKey("财务已经审核的价格不能修改!")); return; } } var ret = SCP_TB_PRICE_CONTROLLER.Save_TB_PRICE(_list); if (ret.State == ReturnStatus.Succeed) { // var list = ret.Result; Alert.Show(GetResourceKey("保存成功!")); BindData(); } else { Alert.Show(GetResourceKey(ret.Message)); } } /// /// 价格导出 /// /// /// public void BtnOutPut_OnClick(object sender, EventArgs e) { // _list = SCP_TB_PRICE_CONTROLLER.Getlist(); SearchV_TB_PRICEData((result) => { var list = result.ToList(); Dictionary cellheader = new Dictionary(); string[] values = ckb1.SelectedValueArray; if (values.Contains("14")) { cellheader.Add("Extend1", "状态"); } if (values.Contains("1")) { cellheader.Add("VendId", "供应商编号"); } if (values.Contains("2")) { cellheader.Add("Extend3", "供应商名称"); } if (values.Contains("3")) { cellheader.Add("PartCode", "零件编号"); } if (values.Contains("4")) { cellheader.Add("PartName", "零件名称"); } if (values.Contains("5")) { cellheader.Add("SubSite", "地点"); } if (values.Contains("6")) { cellheader.Add("StartTime", "开始时间"); } if (values.Contains("7")) { cellheader.Add("EndTime", "结束时间"); } if (values.Contains("8")) { cellheader.Add("Curr", "币种"); } if (values.Contains("9")) { cellheader.Add("Unit", "单位"); } if (values.Contains("10")) { cellheader.Add("Amt", "零件基础价格"); } if (values.Contains("11")) { cellheader.Add("Extend2", "是否临时价格"); } //if (values.Contains("12")) //{ // cellheader.Add("Remarks", "备注"); //} if (values.Contains("13")) { cellheader.Add("SharingPrice", "零件分摊单价"); } if (values.Contains("15")) { cellheader.Add("Creator", "导入人员"); } string url = EntityListToExcel2003(cellheader, list, "价格信息"); }); // var list = Sort(_list.AsQueryable(), Grid1).ToList(); // 2.设置单元格抬头 // key:实体对象属性名称,可通过反射获取值 // value:Excel列的名称 } /// /// 确认 /// /// /// protected void btnConfirm_Click(object sender, EventArgs e) { int[] _selections = Grid1.SelectedRowIndexArray; if (_selections.Count()==0) { Alert.Show(GetResourceKey("请选择数据!")); return; } List _UidList = new List(); int ConfirmState = 0; if (CurrentUser.RoleList.Contains("采购负责人")) { ConfirmState = (int)PriceState.PConfirm; } if(CurrentUser.RoleList.Contains("财务审核")) { ConfirmState = (int)PriceState.FConfirm; } for (int i = 0, count = Grid1.Rows.Count; i < count; i++) { if (_selections.Contains(i)) { object[] rowDataKeys = Grid1.DataKeys[i]; int state = -3; if(ConfirmState==2) { state = 1; } if(ConfirmState==1) { state = 0; } if (!string.IsNullOrEmpty(rowDataKeys[0].ToString())&& Int32.Parse(rowDataKeys[2].ToString()) == state) { _UidList.Add(long.Parse(rowDataKeys[0].ToString())); } } } if (_UidList.Count != _selections.Count()) { Alert.Show(GetResourceKey("选择的记录,有已经确认的数据!")); return; } var res = SCP_DC_UNI_CONTROLLER.UpdateTES_PURCHASE_PRICE(_UidList, CurrentUser.FactoryList[0], CurrentUser.SubSiteList[0], CurrentUser.Name, CurrentUser.ConfigList.ContainsKey("数据中心接口"), ConfirmState); if (res.State == ReturnStatus.Succeed) { var ret = SCP_TB_PRICE_CONTROLLER.Save_TB_PRICE_STATE(_UidList, CurrentUser.Name, ConfirmState); if (ret.State == ReturnStatus.Succeed) { BindData(); Alert.Show(GetResourceKey("确认成功!")); return; } else { Alert.Show(GetResourceKey(ret.Message)); } } else { Alert.Show(GetResourceKey(res.Message)); } } //显示 protected void btnShow_OnClick(object sender, EventArgs e) { gp1.Hidden = false; } protected void btnShowGP_OnClick(object sender, EventArgs e) { gp2.Hidden = false; } //关闭 protected void btnClose_OnClick(object sender, EventArgs e) { gp1.Hidden = true; } protected void btnCloseCheck_OnClick(object sender, EventArgs e) { gp2.Hidden = true; } protected void Grid1_OnPageIndexChange(object sender, GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindData(); } protected void ddlGridPageSize_OnSelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlGridPageSize.SelectedValue); BindData(); } protected void Grid1_OnSort(object sender, GridSortEventArgs e) { BindData(); } protected void btnConfirm1_Click(object sender, EventArgs e) { } protected void DDL_State_SelectedIndexChanged(object sender, EventArgs e) { BindData(); } protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { int rowID = Convert.ToInt32(Grid1.DataKeys[e.RowIndex][0]); List _UidList = new List(); _UidList.Add(long.Parse(rowID.ToString())); var t1 = Grid1.DataKeys[e.RowIndex][12]; if (t1==null) { Alert.Show(GetResourceKey("当前价格导入者为空!")); return; } if (CurrentUser.Name.Trim().ToUpper() != t1.ToString().ToUpper()) { Alert.Show(GetResourceKey("删除价格导入者不是当前登录人!")); return; } var ret = SCP_TB_PRICE_CONTROLLER.Save_TB_PRICE_STATE(_UidList, CurrentUser.Name, (int)PriceState.Reject); if (ret.State == ReturnStatus.Succeed) { BindData(); Alert.Show(GetResourceKey("删除成功!")); return; } else { if (ret.MessageList.Count > 0) { Alert.Show(GetResourceKey(string.Join("
", ret.MessageList))); return; } else { Alert.Show(ret.Message); } } } if(e.CommandName=="Info") { object[] rowDataKeys = Grid1.DataKeys[e.RowIndex]; string VendID = rowDataKeys[1] as string; string PartCode = rowDataKeys[11] as string; string Site = rowDataKeys[13] as string; string SubSite = rowDataKeys[14] as string; PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("../BasicData/SCP_PRICE_DETAIL.aspx?VendId={0}&&PartCode={1}&&Site={2}&&SubSite={3}", VendID, PartCode, Site, SubSite))); } } /// /// 价格报废 /// /// /// protected void btnReject_Click(object sender, EventArgs e) { int[] _selections = Grid1.SelectedRowIndexArray; if (_selections.Count() == 0) { Alert.Show(GetResourceKey("请选择数据!")); return; } List _UidList = new List(); int ConfirmState = (int)PriceState.New; for (int i = 0, count = Grid1.Rows.Count; i < count; i++) { if (_selections.Contains(i)) { object[] rowDataKeys = Grid1.DataKeys[i]; if (!string.IsNullOrEmpty(rowDataKeys[0].ToString()) && Int32.Parse(rowDataKeys[2].ToString()) == ConfirmState) { _UidList.Add(long.Parse(rowDataKeys[0].ToString())); } } } if (_UidList.Count != _selections.Count()) { Alert.Show(GetResourceKey("选择的记录中包含不可报废数据,请从新选择!")); return; } var ret = SCP_TB_PRICE_CONTROLLER.Save_TB_PRICE_STATE(_UidList, CurrentUser.Name, (int)PriceState.Reject); if (ret.State == ReturnStatus.Succeed) { BindData(); Alert.Show(GetResourceKey("报废成功!")); return; } else { if (ret.MessageList.Count > 0) { Alert.Show(GetResourceKey(string.Join("
", ret.MessageList))); return; } else { Alert.Show(GetResourceKey(ret.Message)); } } } protected void BtnDelete_Click(object sender, EventArgs e) { //CurrentUser.Name int[] _selections = Grid1.SelectedRowIndexArray; if (_selections.Count() == 0) { Alert.Show(GetResourceKey("请选择数据!")); return; } List _UidList = new List(); int ConfirmState = (int)PriceState.PConfirm; for (int i = 0, count = Grid1.Rows.Count; i < count; i++) { if (_selections.Contains(i)) { object[] rowDataKeys = Grid1.DataKeys[i]; if (!string.IsNullOrEmpty(rowDataKeys[0].ToString()) && Int32.Parse(rowDataKeys[2].ToString()) == ConfirmState) { _UidList.Add(long.Parse(rowDataKeys[0].ToString())); } } } var ret = SCP_TB_PRICE_CONTROLLER.Save_TB_PRICE_STATE(_UidList, CurrentUser.Name, (int)PriceState.Reject); if (ret.State == ReturnStatus.Succeed) { BindData(); Alert.Show(GetResourceKey("删除成功!")); return; } else { if (ret.MessageList.Count > 0) { Alert.Show(GetResourceKey(string.Join("
", ret.MessageList))); return; } else { Alert.Show(GetResourceKey(ret.Message)); } } } protected void BtnEdit_Click(object sender, EventArgs e) { if (this.Grid1.SelectedRowIndexArray.Length == 0 || this.Grid1.SelectedRowIndexArray.Length>1) { Alert.Show(GetResourceKey("请选择一行要操作的记录,不能选多条记录!")); return; } string ID = GetSelectedDataKey(Grid1, 0); string STATE = GetSelectedDataKey(Grid1, 2); string url = String.Format("../BasicData/SCP_PRICE_EDIT.aspx?ID={0}&&State={1}",ID,STATE); PageContext.RegisterStartupScript(Window1.GetShowReference(url)); } protected void factoryList_SelectedIndexChanged(object sender, EventArgs e) { } protected void Grid_V_TB_PRICE_RowDataBound(object sender, GridRowEventArgs e) { var itm = e.DataItem as V_TB_PRICE; if (itm.Flag == "1"&&itm.State==(int)PriceState.FConfirm)//1未完成得 { highlightRows.Text += e.RowIndex.ToString() + ","; } object[] rowDataKeys = Grid1.DataKeys[e.RowIndex]; if (rowDataKeys != null) { e.Values[1] = GetResourceKey(itm.Extend1); } } } }