/// <summary> /// TrackoutPackageNo /// </summary> /// <param name="obj">批次对象。</param> /// <param name="model">包装模型对象。</param> /// <returns>返回结果。</returns> private MethodReturnResult TrackOutPackageNo(ZPVMLotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); //进行批次包装作业。 PackageParameter p = new PackageParameter() { Creator = User.Identity.Name, EquipmentCode = model.EquipmentCode, IsFinishPackage = model.IsFinishPackage, IsLastestPackage = model.IsLastestPackage, LineCode = model.LineCode, LotNumbers = new List <string>(), OperateComputer = Request.UserHostAddress, Operator = User.Identity.Name, PackageNo = model.PackageNo.ToUpper(), Remark = model.Description, RouteOperationName = model.RouteOperationName }; using (LotPackageServiceClient client = new LotPackageServiceClient()) { result = client.TrackOutPackage(p); if (result.Code == 0) { result.Message = string.Format("包装号 {0} 过账成功。" , model.PackageNo); } } return(result); }
private MethodReturnResult Package(ZPVMLotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); //进行批次包装作业。 PackageParameter p = new PackageParameter() { Creator = User.Identity.Name, EquipmentCode = model.EquipmentCode, IsFinishPackage = model.IsFinishPackage, IsLastestPackage = model.IsLastestPackage, LineCode = model.LineCode, LotNumbers = new List <string>(), OperateComputer = Request.UserHostAddress, Operator = User.Identity.Name, Remark = model.Description, RouteOperationName = model.RouteOperationName }; if (model.PackageNo != null && model.PackageNo != "") { p.PackageNo = model.PackageNo.ToUpper().Trim(); } else { p.PackageNo = model.PackageNo.ToUpper(); } if (model.IsFinishPackage == false) { p.LotNumbers.Add(model.LotNumber.ToUpper()); } if (p.IsFinishPackage == false && model.CurrentQuantity == model.FullQuantity) { p.IsFinishPackage = true; model.IsFinishPackage = true; } using (LotPackageServiceClient client = new LotPackageServiceClient()) { result = client.Package(p); if (result.Code == 0 && model.IsFinishPackage == false) { result.Message = string.Format("批次 {0} 成功包装到({1})。" , model.LotNumber , model.PackageNo.ToUpper().Trim()); } else if (result.Code == 0 && model.IsFinishPackage == true) { result.Message = string.Format("包 {0} 已完成。" , model.PackageNo.ToUpper().Trim()); } } return(result); }
public ActionResult TrackOutPackage(ZPVMLotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { //如果包装号为空。 if (string.IsNullOrEmpty(model.PackageNo)) { result.Code = 1001; result.Message = string.Format("包装号不能为空。"); return(Json(result)); } //如果当前数量为空,获取当前数量 using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { MethodReturnResult <Package> rst2 = client.Get(model.PackageNo); if (rst2.Code > 0) { return(Json(rst2)); } //检查包装状态 if (rst2.Data.PackageState != EnumPackageState.Packaged) { result.Code = 1001; result.Message = string.Format("包 {0} 非{1}状态,不能操作。" , model.PackageNo.ToUpper() , EnumPackageState.Packaged.GetDisplayName()); return(Json(result)); } } result = TrackOutPackageNo(model); //返回包装结果。 if (result.Code <= 0) { MethodReturnResult <ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult <ZPVMLotPackageViewModel>() { Code = result.Code, Data = model, Detail = result.Detail, HelpLink = result.HelpLink, Message = result.Message }; return(Json(rstFinal)); } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return(Json(result)); }
public async Task <ActionResult> ExportToExcel(LotPackageQueryViewModel model) { IList <PackageDetail> lstLotPackage = new List <PackageDetail>(); ZPVMLotPackageViewModel m = new ZPVMLotPackageViewModel(); using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { await Task.Run(() => { PagingConfig cfg = new PagingConfig() { IsPaging = false, OrderBy = "Key.PackageNo,ItemNo", Where = GetQueryCondition(model) }; MethodReturnResult <IList <PackageDetail> > result = client.GetDetail(ref cfg); if (result.Code == 0) { lstLotPackage = result.Data; } }); } //创建工作薄。 IWorkbook wb = new HSSFWorkbook(); //设置EXCEL格式 ICellStyle style = wb.CreateCellStyle(); style.FillForegroundColor = 10; //有边框 style.BorderBottom = BorderStyle.Thin; style.BorderLeft = BorderStyle.Thin; style.BorderRight = BorderStyle.Thin; style.BorderTop = BorderStyle.Thin; IFont font = wb.CreateFont(); font.Boldweight = 10; style.SetFont(font); ISheet ws = null; for (int j = 0; j < lstLotPackage.Count; j++) { if (j % 65535 == 0) { ws = wb.CreateSheet(); IRow row = ws.CreateRow(0); #region //列名 ICell cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue(StringResource.ItemNo); //项目号 cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("包装号"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("项目号"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("批次号"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("工单号"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("物料编码"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("等级"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("花色"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("功率"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("电流"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("最大电流"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("电压"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("最大电压"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("填充因子"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("分档名称"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("子分档代码"); cell = row.CreateCell(row.Cells.Count); cell.CellStyle = style; cell.SetCellValue("包装日期"); #endregion font.Boldweight = 5; } PackageDetail obj = lstLotPackage[j]; IRow rowData = ws.CreateRow(j + 1); Lot lot = m.GetLotData(obj.Key.ObjectNumber); IVTestData ivtest = m.GetIVTestData(obj.Key.ObjectNumber); List <string> dic = null; string ff = ""; OemData oemData = m.GetOemData(obj.Key.ObjectNumber); if (oemData != null) { dic = m.GetCodeAndItemNo(oemData); ff = (oemData.FF * 100).ToString("F4"); } else { lot = m.GetLotData(obj.Key.ObjectNumber); ivtest = m.GetIVTestData(obj.Key.ObjectNumber); } #region //数据 ICell cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(j + 1); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(obj.Key.PackageNo); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(obj.ItemNo); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(obj.Key.ObjectNumber); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(obj.OrderNumber); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(obj.MaterialCode); if (oemData != null) { cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.Grade); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.Color); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.PMAX); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.ISC); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.IPM); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.VOC); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.VPM); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ff); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.PnName == null ? string.Empty : oemData.PnName); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(oemData.PsSubCode); } else { cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(lot != null ? lot.Grade : string.Empty); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(lot != null ? lot.Color : string.Empty); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefPM : 0); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefISC : 0); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefIPM : 0); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefVOC : 0); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefVPM : 0); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.CoefFF : 0); string powerName = string.Empty; if (ivtest != null && !string.IsNullOrEmpty(ivtest.PowersetCode) && ivtest.PowersetItemNo != null) { powerName = m.GetPowersetName(ivtest.Key.LotNumber, ivtest.PowersetCode, ivtest.PowersetItemNo.Value); } cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(powerName); cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(ivtest != null ? ivtest.PowersetSubCode : string.Empty); } cellData = rowData.CreateCell(rowData.Cells.Count); cellData.CellStyle = style; cellData.SetCellValue(string.Format("{0:yyyy-MM-dd}", obj.CreateTime)); #endregion } MemoryStream ms = new MemoryStream(); wb.Write(ms); ms.Flush(); ms.Position = 0; return(File(ms, "application/vnd.ms-excel", "LotPackageData.xls")); }
public ActionResult Finish(ZPVMLotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { //如果包装号为空。 if (string.IsNullOrEmpty(model.PackageNo)) { result.Code = 1001; result.Message = string.Format("包装号不能为空。"); return(Json(result)); } else { model.PackageNo = model.PackageNo.ToUpper().Trim(); } Package obj = null; //如果当前数量为空,获取当前数量 using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { MethodReturnResult <Package> rst2 = client.Get(model.PackageNo.ToUpper().Trim()); if (rst2.Code > 0) { return(Json(rst2)); } //检查包装状态 if (rst2.Data.PackageState != EnumPackageState.Packaging) { result.Code = 1001; result.Message = string.Format("包 {0} 非{1}状态,不能操作。" , model.PackageNo.ToUpper().Trim() , EnumPackageState.Packaging.GetDisplayName()); return(Json(result)); } //设置当前数量。 if (rst2.Code <= 0 && rst2.Data != null) { obj = rst2.Data; model.CurrentQuantity = rst2.Data.Quantity; } } //如果满包数量为空,获取满包数量 if (model.FullQuantity == 0) { using (WorkOrderRuleServiceClient client = new WorkOrderRuleServiceClient()) { MethodReturnResult <WorkOrderRule> rst1 = client.Get(new WorkOrderRuleKey() { OrderNumber = obj.OrderNumber, MaterialCode = obj.MaterialCode }); if (rst1.Code == 0 && rst1.Data != null) { model.FullQuantity = rst1.Data.FullPackageQty; } } } //非尾包,不能完成包装并过站 if (model.IsFinishPackage == true && (model.IsLastestPackage == false && obj.IsLastPackage == false) && model.CurrentQuantity != model.FullQuantity) { result.Code = 1; result.Message = string.Format("包({0})非尾包,包装数量未达到满包数量,不能完成包装。" , model.PackageNo); return(Json(result)); } //判断批次所在车间和当前线所在车间是否匹配。 //获取线别车间。 string locationName = string.Empty; using (ProductionLineServiceClient client = new ProductionLineServiceClient()) { MethodReturnResult <ProductionLine> r = client.Get(model.LineCode); if (r.Code <= 0) { locationName = r.Data.LocationName; } } if (!string.IsNullOrEmpty(locationName)) { using (LocationServiceClient client = new LocationServiceClient()) { MethodReturnResult <Location> r = client.Get(locationName); if (r.Code <= 0) { locationName = r.Data.ParentLocationName; } } } //获取包装号所在车间。 string currentLocationName = string.Empty; using (WorkOrderServiceClient client = new WorkOrderServiceClient()) { MethodReturnResult <WorkOrder> rst1 = client.Get(obj.OrderNumber); if (rst1.Code <= 0 && rst1.Data != null) { currentLocationName = rst1.Data.LocationName; } } //检查包所在车间和线别车间是否匹配。 if (currentLocationName != locationName) { result.Code = 3; result.Message = string.Format("包({0})属于({1})车间,不能在({2})车间线别上操作。" , obj.Key , currentLocationName , locationName); return(Json(result)); } result = FinishPackage(model); //result = Package(model); //返回包装结果。 if (result.Code <= 0) { MethodReturnResult <ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult <ZPVMLotPackageViewModel>() { Code = result.Code, Data = model, Detail = result.Detail, HelpLink = result.HelpLink, Message = result.Message }; return(Json(rstFinal)); } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return(Json(result)); }
public ActionResult Save(ZPVMLotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { PackageParameter p = new PackageParameter() { LineCode = model.LineCode, RouteOperationName = model.RouteOperationName, EquipmentCode = model.EquipmentCode, LotNumbers = new List <string>(), IsLastestPackage = model.IsLastestPackage, Operator = User.Identity.Name, OperateComputer = Request.UserHostAddress }; if (model.PackageNo != null && model.PackageNo != "") { p.PackageNo = model.PackageNo.ToUpper().Trim(); } else { p.PackageNo = model.PackageNo; } p.LotNumbers.Add(model.LotNumber.ToString().Trim().ToUpper()); using (LotPackageServiceClient client = new LotPackageServiceClient()) { result = client.Package(p); if (result.Code == 0) { if (result.Detail == "1") { model.PackageNo = ""; } else { model.PackageNo = result.ObjectNo; } MethodReturnResult <ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult <ZPVMLotPackageViewModel>() { Code = result.Code, Data = model, Message = string.Format("批次[{0}]包装到托[{1}]。" , model.LotNumber , result.ObjectNo) }; return(Json(rstFinal)); } } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } return(Json(result)); #region 注释 //model.LotNumber = model.LotNumber.ToUpper(); //if (!string.IsNullOrEmpty(model.PackageNo)) //{ // model.PackageNo = model.PackageNo.ToUpper(); //} ////获取批次数据。 //string lotNumber = model.LotNumber; //result = GetLot(lotNumber); //if (result.Code > 0) //{ // return Json(result); //} //MethodReturnResult<Lot> rst = result as MethodReturnResult<Lot>; //Lot obj = rst.Data; ////如果包装号为空。生成包装号。 //if (string.IsNullOrEmpty(model.PackageNo)) //{ // using (LotPackageServiceClient client = new LotPackageServiceClient()) // { // MethodReturnResult<string> rst1 = client.Generate(model.LotNumber, model.IsLastestPackage); // if (rst1.Code > 0) // { // return Json(rst1); // } // else // { // model.PackageNo = rst1.Data; // } // } //} //if (model.PackageNo.Length < 12 || model.PackageNo.Length > 13) //{ // result.Code = 1001; // result.Message = string.Format("包装托号{0}系统生成异常,请联系IT。" // , model.PackageNo.ToUpper()); // return Json(result); //} ////重新获取当前数量。 //using (PackageQueryServiceClient client = new PackageQueryServiceClient()) //{ // MethodReturnResult<Package> rst2 = client.Get(model.PackageNo); // if (rst2.Code == 1000) // { // return Json(rst2); // } // //检查包装状态 // if (rst2.Data != null && rst2.Data.PackageState != EnumPackageState.Packaging) // { // result.Code = 1001; // result.Message = string.Format("包 {0} 非 [{1}] 状态,不能包装。" // , model.PackageNo.ToUpper() // , EnumPackageState.Packaging.GetDisplayName()); // return Json(result); // } // //设置当前数量。 // if (rst2.Code <= 0 && rst2.Data != null) // { // model.CurrentQuantity = rst2.Data.Quantity; // } //} ////如果满包数量为空,获取满包数量 //if (model.FullQuantity == 0) //{ // using (WorkOrderRuleServiceClient client = new WorkOrderRuleServiceClient()) // { // MethodReturnResult<WorkOrderRule> rst1 = client.Get(new WorkOrderRuleKey() // { // OrderNumber = obj.OrderNumber, // MaterialCode = obj.MaterialCode // }); // if (rst1.Code == 0 // && rst1.Data != null) // { // model.FullQuantity = rst1.Data.FullPackageQty; // } // } //} //double newCurrentQuantity = model.CurrentQuantity + obj.Quantity; ////当前数量超过满包数量,不能继续包装。 //if (newCurrentQuantity > model.FullQuantity) //{ // result.Code = 1; // result.Message = string.Format("包({0}) 当前数量({1})加上批次({2})数量({3}),超过满包数量。" // , model.PackageNo.ToUpper() // , model.CurrentQuantity // , obj.Key // , obj.Quantity); // return Json(result); //} //model.CurrentQuantity = newCurrentQuantity; ////判断批次工序是否在当前工序。 //if (obj.RouteStepName != model.RouteOperationName) //{ // result.Code = 2; // result.Message = string.Format("批次({0})当前所在工序({1}),不能在({2})工序上操作。" // , obj.Key // , obj.RouteStepName // , model.RouteOperationName); // return Json(result); //} ////判断批次所在车间和当前线所在车间是否匹配。 ////获取线别车间。 //string locationName = string.Empty; //using (ProductionLineServiceClient client = new ProductionLineServiceClient()) //{ // MethodReturnResult<ProductionLine> r = client.Get(model.LineCode); // if (r.Code <= 0) // { // locationName = r.Data.LocationName; // } //} //if (!string.IsNullOrEmpty(locationName)) //{ // using (LocationServiceClient client = new LocationServiceClient()) // { // MethodReturnResult<Location> r = client.Get(locationName); // if (r.Code <= 0) // { // locationName = r.Data.ParentLocationName; // } // } //} ////检查批次车间和线别车间是否匹配。 //if (obj.LocationName != locationName) //{ // result.Code = 3; // result.Message = string.Format("批次({0})属于({1})车间,不能在({2})车间线别上操作。" // , lotNumber.ToUpper() // , obj.LocationName // , locationName); // return Json(result); //} // result = Package(model); // model.PackageNo = result.ObjectNo; // //返回包装结果。 // if (result.Code <= 0) // { // MethodReturnResult<ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult<ZPVMLotPackageViewModel>() // { // Code = result.Code, // Data = model, // Detail = result.Detail, // HelpLink = result.HelpLink, // Message = result.Message // }; // return Json(rstFinal); // } //} //catch (Exception ex) //{ // result.Code = 1000; // result.Message = ex.Message; // result.Detail = ex.ToString(); //} //// 如果我们进行到这一步时某个地方出错,则重新显示表单 //return Json(result); #endregion }