using FineUIPro; using iWareCommon.Common.Entity; using iWareDataCore.BASE.Entity; using iWareDataCore.BASE.EnumType; using iWareDataCore.BASE.Service; using iWareExcel.EXCEL.Service; using iWareWms.Code.Excel.Service; using System; using System.Collections.Generic; using System.Linq; using System.Collections.ObjectModel; namespace iWareWms.View.InOut { public partial class CreateInOut : PageBase { protected void Page_Load(object sender, EventArgs e) { tbListNo.Text = DateTime.Now.ToFileTime().ToString(); } protected override Grid GetGrid() { return InOutMaterialGrid; } protected override DropDownList GetPageSizeDropDownList() { return ddlPageSize; } protected void btCreatCode_Click(object sender, EventArgs e) { tbListNo.Text = DateTime.Now.ToFileTime().ToString(); } protected override Window GetWindow() { return Window2; } protected override List GetDataSource(int pageIndex, int pageSize, out string msg, out int totalNum, out int currentPage) { var materials = InputMaterialService.GetInstance().QueryByParam(new QueryParam { Filter = new Dictionary { { "Status", "未生成" } }, PageIndex = pageIndex, PageSize = pageSize }, out msg, out totalNum, out currentPage); var material = new List(); materials.ForEach(x => material.Add(x)); return material; } protected override FineUIPro.Timer GetTimer() { return timer1; } protected void FileUpload1_FileSelected(object sender, EventArgs e) { string msg; if (!FileUpload1.HasFile) { Alert.ShowInTop("请选择上传文件!"); return; } var dt = DateTime.Now; string path = string.Format(@"c:\importExcel\{0}\{1}\{2}\{3}\", dt.Year, dt.Month, dt.Day, (long)(dt - Convert.ToDateTime("1970-01-01 08:00:00")).TotalMilliseconds); ; path += FileUpload1.FileName; FileUpload1.SaveAs(path); var workBooks = WorkBookService.GetInstance().QueryByParam(new QueryParam { Filter = new Dictionary { { "Name", "生成出入库单" } } }, out msg); InputMaterialService.GetInstance().DeleteAll(); InOutListDetailViewService.GetInstance().ImportExcel(path, workBooks[0], out msg); Alert.ShowInTop(string.IsNullOrEmpty(msg) ? "导入成功" : msg); btCreatCode_Click(sender, e); Query(1); AddBtn.Enabled = true; } /// /// 生成出入库单(确认是入库还是出库,入库的话确认不在库存中,且不在主任务中,出库的话也应该是必须在库中,而且两者都必须不在刚生成的未完成的出入库单明细中) /// /// /// protected void AddBtn_Click(object sender, EventArgs e) { string msg; string typeName = ddlTypeName.SelectedValue; var inputmaterials = InputMaterialService.GetInstance().QueryByParam(new QueryParam { Filter = new Dictionary { { "Status", "未生成" } } }, out msg); if (inputmaterials != null && inputmaterials.Count > 0) { var placeMaterial = PlaceMaterialViewService.GetInstance().QueryByParam(new QueryParam { }, out msg); var inoutdetails = InOutListDetailViewService.GetInstance().QueryByParam(new QueryParam { }, out msg); List codes = new List(); inputmaterials.ForEach(x => codes.Add(x.Code)); List ids = new List(); var materials = InputMaterialService.GetInstance().GetIds(codes); List detail = new List(); for (int i = 0; i < materials.Count; i++) { if (typeName == "入库") { if (placeMaterial.Select(x => x.MaterialId).Contains(materials[i].id)) { msg = materials[i].code + "已存在立库中,不能添加到入库单明细中!"; break; } if (inoutdetails.Select(x => x.MaterialId).Contains(materials[i].id)) { msg = materials[i].code + "已存在之前的入库单明细中,不能添加到当前入库单明细中!"; break; } } else { if (!placeMaterial.Select(x => x.MaterialId).Contains(materials[i].id)) { msg = materials[i].code + "不在立库中,不能添加到出库单明细中!"; break; } if (inoutdetails.Select(x => x.MaterialId).Contains(materials[i].id)) { var inoutdeta=inoutdetails.FirstOrDefault(x=>x.MaterialId==materials[i].id); if (inoutdeta.TypeName=="出库") { msg = materials[i].name + "已存在之前的出库单明细中,不能添加到当前出库单明细中!"; break; } } } InOutListDetailEntity inoutdetail = new InOutListDetailEntity() { MaterialId = materials[i].id, IsFinish = 0 }; detail.Add(inoutdetail); } if (!string.IsNullOrEmpty(msg)) { Alert.Show(msg); return; } InOutListService.GetInstance().CreateListAndDetial( new InOutListEntity { ListNo = tbListNo.Text, CreateTime = DateTime.Now, TypeName = ddlTypeName.SelectedText, Status = 0, Remark = "", InOutListDetail = detail }, out msg); Alert.ShowInTop("生成" + ddlTypeName.SelectedText + "单成功"); InOutMaterialGrid.DataSource = null; InOutMaterialGrid.DataBind(); InputMaterialService.GetInstance().DeleteAll(); } else { Alert.ShowInTop("请先确保出入库单物料明细不为空!"); } } protected override void GridRowCommand(object sender, GridCommandEventArgs e) { var grid = InOutMaterialGrid; //删除出入库单号 if (e.CommandName == "Delete") { int id = Convert.ToInt32(grid.Rows[e.RowIndex].DataKeys[0].ToString()); string msg; int count = InputMaterialService.GetInstance().Delete(id, out msg); if (count >= 0) { Alert.ShowInTop("删除成功!"); Query(1); } } } } }