public string SaveFLDetailInfo(FlowChartDetailDTO dto, int AccountID) { string errorInfo = string.Empty; //switch (site) //{ // case StructConstants.Site.CTU: // errorInfo = CallSaveFLDetailInfo(SaveFLDetailCTUInfo, dto, AccountID); // break; // case StructConstants.Site.WUXI_M: // errorInfo = CallSaveFLDetailInfo(SaveFLDetailWUXI_MInfo, dto, AccountID); // break; //} // try { AddWIPChangeHistory(dto, AccountID); } catch (Exception) { } errorInfo = CallSaveFLDetailInfo(SaveFLDetailCTUInfo, dto, AccountID); return(errorInfo); }
/// <summary> /// 添加Wip的修改记录 /// </summary> /// <returns></returns> private void AddWIPChangeHistory(FlowChartDetailDTO dto, int Modified_UID) { //查询 var OriWIPValue = flowChartDetailRepository.GetWIPValueByFLID(dto.FlowChart_Detail_UID); WIP_Change_History WIPHistoryModel = new WIP_Change_History(); WIPHistoryModel.Change_Type = "PPCheck"; WIPHistoryModel.Comment = "FlowChart_Detial"; WIPHistoryModel.FlowChart_Detail_UID = dto.FlowChart_Detail_UID; WIPHistoryModel.Modified_Date = DateTime.Now; WIPHistoryModel.Product_UID = 0; WIPHistoryModel.Modified_UID = Modified_UID; WIPHistoryModel.WIP_Old = OriWIPValue; WIPHistoryModel.WIP_Add = dto.WIP_QTY - OriWIPValue; if (WIPHistoryModel.WIP_Add != 0) { _wipChangeHistoryRepository.Add(WIPHistoryModel); } unitOfWork.Commit(); }
public string SetAndCheckExcelContent(List <FlowChartImportDetailDTO> detailDTOList, bool isEdit, ExcelWorksheet worksheet, int iRow, int totalRows, FlowChartMasterDTO newMaster, string FlowChart_Version_Comment, CustomUserInfoVM userInfo) { string errorInfo = string.Empty; //内容样式设置 var propertiesContent = FlowchartImportCommon.GetEtransferContentColumn(); //获取所有厂别 //不考虑跨厂区权限,他们不会操作只会浏览,默认取第一个,通过三级权限获取四级 var plantAPI = "FlowChart/QueryAllFunctionPlantsAPI?optypeUID=" + userInfo.OrgInfo.First().OPType_OrganizationUID; //HttpResponseMessage message = APIHelper.APIPostAsync(null,plantAPI); HttpResponseMessage message = APIHelper.APIGetAsync(plantAPI); var jsonPlants = message.Content.ReadAsStringAsync().Result; var functionPlants = JsonConvert.DeserializeObject <List <SystemFunctionPlantDTO> >(jsonPlants); //从第四行开始读取 iRow = iRow + 2; //绑定序号 //制程序号没用 //厂别 //阶层 int Binding_Seq, Process_Seq = 1, System_FunPlant_UID, Product_Stage; //DRI //场地 //工站名稱 //厂别 //颜色 //工站說明 //返工设定 //检测设定 //制程序号 string DRI, Place, Process, plantName, Color, Process_Desc, Rework_Setting, Check_Setting, ItemNo, Edition, FromWHS, ToWHSOK, ToWHSNG; //返修站点数量,每个FlowChart只能允许1个站点是返工站点,颜色可以不同 List <int> CheckRepair = new List <int>(); //这是真正的excel行数,totalRows的行数是错误的 int realTotalRows = 0; string lastItemNo = string.Empty, lastFromWHS = string.Empty, lastToWHSOK = string.Empty, lastToWHSNG = string.Empty; bool firstRow = true; for (var i = iRow; i <= totalRows; i++) { //绑定序号 Binding_Seq = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "绑定序号")].Value); //制程序号 ItemNo = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "制程序号")].Value); FromWHS = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "FromWHS")].Value); ToWHSOK = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "ToWHSOK")].Value); ToWHSNG = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "ToWHSNG")].Value); if (firstRow)//如果是第一行开始循环则赋值 { lastItemNo = ItemNo; lastFromWHS = FromWHS; lastToWHSNG = ToWHSNG; lastToWHSOK = ToWHSOK; } else //如果不是第一行则开始判断 { if (lastItemNo == ItemNo)//如果上一个制程等于这一个制程的序号,则说明是同一制程 { if (lastFromWHS != FromWHS || lastToWHSNG != ToWHSNG || lastToWHSOK != ToWHSOK) { //跳出循环 errorInfo = string.Format("第[{0}]行FromWHS,ToWHSOK,ToWHSNG不跟上一制程一致", i); return(errorInfo); } } else { lastItemNo = ItemNo; lastFromWHS = FromWHS; lastToWHSNG = ToWHSNG; lastToWHSOK = ToWHSOK; } } firstRow = false; DRI = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "DRI")].Value); if (string.IsNullOrWhiteSpace(DRI)) { //跳出循环 errorInfo = string.Format("第[{0}]行DRI不能为空", i); return(errorInfo); } Place = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "场地")].Value); if (string.IsNullOrWhiteSpace(Place)) { //跳出循环 errorInfo = string.Format("第[{0}]行场地不能为空", i); return(errorInfo); } Process = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站名稱")].Value); if (string.IsNullOrWhiteSpace(Process)) { //跳出循环 errorInfo = string.Format("第[{0}]行工站名稱不能为空", i); return(errorInfo); } plantName = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "厂别")].Value) ?? string.Empty; if (string.IsNullOrWhiteSpace(plantName)) { //跳出循环 errorInfo = string.Format("第[{0}]行厂别不能为空", i); return(errorInfo); } var hasItem = functionPlants.FirstOrDefault(m => m.FunPlant.ToLower() == plantName.ToLower().Trim()); if (hasItem != null) { System_FunPlant_UID = hasItem.System_FunPlant_UID; } else { //跳出循环 errorInfo = string.Format("厂别[{0}]输入不正确", plantName); return(errorInfo); } Product_Stage = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "阶层")].Value); Color = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "颜色")].Value) ?? string.Empty; Edition = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "Edition")].Value); Process_Desc = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站說明")].Value); Rework_Setting = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "返工设定")].Value); if (Rework_Setting == "Repair") { CheckRepair.Add(Process_Seq); } if (CheckRepair.Distinct().ToList().Count > 1) { //跳出循环 errorInfo = string.Format("第[{0}]行出现重复的修复站点!", i); return(errorInfo); } //检测站点赋值 var CheckTemp = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "检测设定")].Value); if (!string.IsNullOrWhiteSpace(CheckTemp)) { CheckTemp = CheckTemp.Trim(); } switch (CheckTemp) { case StructConstants.IsQAProcessType.InspectText: //IPQC全检 Check_Setting = StructConstants.IsQAProcessType.InspectKey; break; case StructConstants.IsQAProcessType.PollingText: //IPQC巡检 Check_Setting = StructConstants.IsQAProcessType.PollingKey; break; case StructConstants.IsQAProcessType.InspectOQCText: //OQC检测 Check_Setting = StructConstants.IsQAProcessType.InspectOQCKey; break; case StructConstants.IsQAProcessType.InspectAssembleText: //组装检测 Check_Setting = StructConstants.IsQAProcessType.InspectAssembleKey; break; case StructConstants.IsQAProcessType.AssembleOQCText: //组装&OQC检测 Check_Setting = StructConstants.IsQAProcessType.AssembleOQCKey; break; default: Check_Setting = string.Empty; break; } FlowChartImportDetailDTO detailDTOItem = new FlowChartImportDetailDTO(); FlowChartDetailDTO newDetailDtoItem = new FlowChartDetailDTO(); newDetailDtoItem.FlowChart_Master_UID = newMaster.FlowChart_Master_UID; newDetailDtoItem.System_FunPlant_UID = System_FunPlant_UID; newDetailDtoItem.Binding_Seq = Binding_Seq; var seq = Process_Seq++; newDetailDtoItem.Process_Seq = seq.ToString(); newDetailDtoItem.DRI = DRI; newDetailDtoItem.Place = Place; newDetailDtoItem.Process = Process; newDetailDtoItem.Product_Stage = Product_Stage; newDetailDtoItem.Color = Color; newDetailDtoItem.Edition = Edition; newDetailDtoItem.Process_Desc = Process_Desc; newDetailDtoItem.FlowChart_Version_Comment = FlowChart_Version_Comment; newDetailDtoItem.Rework_Flag = Rework_Setting; //新增QA字段 newDetailDtoItem.IsQAProcess = Check_Setting; newDetailDtoItem.Modified_UID = newMaster.Modified_UID; newDetailDtoItem.Modified_Date = newMaster.Modified_Date; newDetailDtoItem.BeginTime = DateTime.Now; newDetailDtoItem.ItemNo = ItemNo; newDetailDtoItem.FromWHS = FromWHS; newDetailDtoItem.ToWHSNG = ToWHSNG; newDetailDtoItem.ToWHSOK = ToWHSOK; if (isEdit) { //存到临时表里面的数据所以要加1 newDetailDtoItem.FlowChart_Version = newMaster.FlowChart_Version + 1; } else { //存到正式表里面的数据不用加1 newDetailDtoItem.FlowChart_Version = newMaster.FlowChart_Version; } detailDTOItem.FlowChartDetailDTO = newDetailDtoItem; //detailDTOItem.FlowChartMgDataDTO = newMgDataDtoItem; detailDTOList.Add(detailDTOItem); //行数加1 realTotalRows++; } var bindingSeqCount = detailDTOList.GroupBy(m => m.FlowChartDetailDTO.Binding_Seq).Select(m => m.Key).Count(); //var processSeqCount = detailDTOList.GroupBy(m => m.FlowChartDetailDTO.Process_Seq).Select(m => m.Key).Count(); var rowCount = realTotalRows; if (bindingSeqCount != rowCount) { errorInfo = "绑定序号有重复项,请修改"; return(errorInfo); } //if (processSeqCount != rowCount) //{ // errorInfo = "制程序号有重复项,请修改"; // return errorInfo; //} return(errorInfo); }
public IHttpActionResult SaveFLDetailInfoAPI(FlowChartDetailDTO dto, int AccountID) { var result = flowChartDetailService.SaveFLDetailInfo(dto, AccountID); return(Ok(result)); }
private string SaveFLDetailWUXI_MInfo(FlowChartDetailDTO dto, int AccountID) { string errorInfo = ""; List <FlowChart_Detail> detailLit = new List <FlowChart_Detail>(); var item = flowChartDetailRepository.GetById(dto.FlowChart_Detail_UID); item.DRI = dto.DRI; item.Place = dto.Place; item.System_FunPlant_UID = dto.System_FunPlant_UID; item.Process_Desc = dto.Process_Desc; item.Modified_UID = AccountID; item.Modified_Date = DateTime.Now; item.FatherProcess_UID = dto.FatherProcess_UID; //获取相同制程的信息 detailLit = flowChartDetailRepository.GetMany(m => m.FlowChart_Master_UID == item.FlowChart_Master_UID && m.FlowChart_Version == item.FlowChart_Version //没合并前注释 //&& m.ItemNo == item.ItemNo ).ToList(); //设置QA站点--------------------Sidney if (dto.IsQAProcess == "NULL") { dto.IsQAProcess = ""; } if (item.IsQAProcess != dto.IsQAProcess) { foreach (var isSameProcessItem in detailLit) { isSameProcessItem.IsQAProcess = dto.IsQAProcess; } } //更新Rework或Repair if (dto.Rework_Flag == "NULL") { dto.Rework_Flag = null; } if (item.Rework_Flag != dto.Rework_Flag) { //检查是否已经存在Rework_Flag==Repair,是则不能更新 var masterVersion = flowChartMasterRepository.GetById(item.FlowChart_Master_UID).FlowChart_Version; var isExsitRepair = flowChartDetailRepository.GetMany(m => m.Rework_Flag == "Repair" && //没合并前注释 //m.ItemNo != item.ItemNo && m.FlowChart_Master_UID == item.FlowChart_Master_UID && m.FlowChart_Version == masterVersion).Count(); if (isExsitRepair == 0 || dto.Rework_Flag != "Repair") { foreach (var r in detailLit) { r.Rework_Flag = dto.Rework_Flag; } } else { errorInfo = "已经存在修复站点,不能多余1个修复站点"; } } unitOfWork.Commit(); return(errorInfo); }
private string SaveFLDetailCTUInfo(FlowChartDetailDTO dto, int AccountID) { string errorInfo = ""; List <FlowChart_Detail> detailLit = new List <FlowChart_Detail>(); var item = flowChartDetailRepository.GetById(dto.FlowChart_Detail_UID); item.DRI = dto.DRI; item.Place = dto.Place; item.Location_Flag = dto.Location_Flag; item.System_FunPlant_UID = dto.System_FunPlant_UID; item.Process_Desc = dto.Process_Desc; item.Modified_UID = AccountID; item.Modified_Date = DateTime.Now; item.FatherProcess_UID = dto.FatherProcess_UID; item.WIP_QTY = dto.WIP_QTY; item.Current_WH_QTY = dto.Current_WH_QTY; item.NullWip = dto.NullWip; item.Data_Source = dto.Data_Source; item.Is_Synchronous = dto.Is_Synchronous; //获取相同制程的信息 detailLit = flowChartDetailRepository.GetMany(m => m.FlowChart_Master_UID == item.FlowChart_Master_UID && m.FlowChart_Version == item.FlowChart_Version && m.Process_Seq == item.Process_Seq).ToList(); //设置QA站点--------------------Sidney if (dto.IsQAProcess == "NULL") { dto.IsQAProcess = ""; } if (item.IsQAProcess != dto.IsQAProcess) { foreach (var isSameProcessItem in detailLit) { isSameProcessItem.IsQAProcess = dto.IsQAProcess; } } //更新Rework或Repair if (dto.Rework_Flag == "NULL") { dto.Rework_Flag = null; } if (item.Rework_Flag != dto.Rework_Flag || (dto.Rework_Flag == "Rework" && item.RelatedRepairUID != dto.RelatedRepairUID)) { if (dto.Rework_Flag == null) { item.Rework_Flag = string.Empty; item.RelatedRepairUID = null; } else { switch (dto.Rework_Flag.ToLower()) { case "rework": //若RelatedRepairUID 没值,不保存 //Modified By Rock 2017-10-16 修改RelatedRepairUID为String类型 if (!string.IsNullOrEmpty(dto.RelatedRepairUID)) { item.Rework_Flag = dto.Rework_Flag; item.RelatedRepairUID = dto.RelatedRepairUID; } break; case "repair": item.Rework_Flag = "Repair"; item.RelatedRepairUID = null; break; default: break; } } } unitOfWork.Commit(); return(errorInfo); }
public string CallSaveFLDetailInfo(CallSaveFL call, FlowChartDetailDTO dto, int AccountID) { return(call(dto, AccountID)); }
public override string AddOrUpdateExcel(HttpPostedFileBase uploadName, int FlowChart_Master_UID, string FlowChart_Version_Comment, bool isEdit, FlowChartImport importItem) { string apiUrl = string.Empty; string errorInfo = string.Empty; FlowChartMasterDTO newMaster = new FlowChartMasterDTO(); List <FlowChartImportDetailDTO> detailDTOList = new List <FlowChartImportDetailDTO>(); importItem = new FlowChartImport(); importItem.FlowChartMasterDTO = newMaster; importItem.FlowChartImportDetailDTOList = detailDTOList; var userInfo = HttpContext.Current.Session[SessionConstants.CurrentUserInfo] as CustomUserInfoVM; if (userInfo == null) { return("Session is Null"); } try { using (var xlPackage = new ExcelPackage(uploadName.InputStream)) { var worksheet = xlPackage.Workbook.Worksheets.FirstOrDefault(); int totalRows = worksheet.Dimension.End.Row; if (worksheet == null) { errorInfo = "没有worksheet内容"; return(errorInfo); } //头样式设置 var propertiesHead = FlowchartImportCommon.GetHeadColumn(); //内容样式设置 var propertiesContent = FlowchartImportCommon.GetEtransferContentColumn(); int iRow = 2; bool allColumnsAreEmpty = true; for (var i = 1; i <= propertiesHead.Length; i++) { if (worksheet.Cells[iRow, i].Value != null && !String.IsNullOrEmpty(worksheet.Cells[iRow, i].Value.ToString())) { allColumnsAreEmpty = false; break; } } if (allColumnsAreEmpty) { errorInfo = "Excel格式不正确"; return(errorInfo); } string BU_D_Name = ExcelHelper.ConvertColumnToString(worksheet.Cells[iRow, ExcelHelper.GetColumnIndex(propertiesHead, "客户")].Value); string Project_Name = ExcelHelper.ConvertColumnToString(worksheet.Cells[iRow, ExcelHelper.GetColumnIndex(propertiesHead, "专案名称")].Value); string Part_Types = ExcelHelper.ConvertColumnToString(worksheet.Cells[iRow, ExcelHelper.GetColumnIndex(propertiesHead, "部件")].Value); string Product_Phase = ExcelHelper.ConvertColumnToString(worksheet.Cells[iRow, ExcelHelper.GetColumnIndex(propertiesHead, "阶段")].Value); if (string.IsNullOrWhiteSpace(BU_D_Name) || string.IsNullOrWhiteSpace(Project_Name) || string.IsNullOrWhiteSpace(Part_Types) || string.IsNullOrWhiteSpace(Product_Phase)) { errorInfo = "客户,专案名称,部件,阶段不能为空Excel格式不正确"; return(errorInfo); } FlowChartExcelImportParas paraItem = new FlowChartExcelImportParas(); paraItem.BU_D_Name = BU_D_Name.Trim(); paraItem.Project_Name = Project_Name.Trim(); paraItem.Part_Types = Part_Types.Trim(); paraItem.Product_Phase = Product_Phase.Trim(); paraItem.FlowChart_Master_UID = FlowChart_Master_UID; if (isEdit) { paraItem.isEdit = true; } else { paraItem.isEdit = false; } apiUrl = string.Format("FlowChart/CheckFlowChartAPI"); HttpResponseMessage responMessage = APIHelper.APIPostAsync(paraItem, apiUrl); var projectUIDOrFLMasterUID = responMessage.Content.ReadAsStringAsync().Result; projectUIDOrFLMasterUID = projectUIDOrFLMasterUID.Replace("\"", ""); if (!FlowchartImportCommon.ValidIsInt(projectUIDOrFLMasterUID, isEdit)) { errorInfo = projectUIDOrFLMasterUID; return(errorInfo); } if (isEdit) { var idList = projectUIDOrFLMasterUID.Split('_').ToList(); newMaster.FlowChart_Master_UID = Convert.ToInt32(idList[0]); newMaster.Project_UID = Convert.ToInt32(idList[1]); newMaster.FlowChart_Version = Convert.ToInt32(idList[2]); //检查当前时间段是否包含有ProductInput的制程信息 string productapiUrl = string.Format("ProductInput/CheckHasExistProcessAPI?MasterUID={0}&Version={1}", newMaster.FlowChart_Master_UID, newMaster.FlowChart_Version); HttpResponseMessage productResponMessage = APIHelper.APIGetAsync(productapiUrl); var hasProcess = productResponMessage.Content.ReadAsStringAsync().Result; if (hasProcess == "true") { errorInfo = "当前Flowchart的相关制程还未完全录入,不能导入新版本"; return(errorInfo); } } else { newMaster.Project_UID = Convert.ToInt32(projectUIDOrFLMasterUID); newMaster.FlowChart_Version = 1; } newMaster.Part_Types = Part_Types.Trim(); newMaster.FlowChart_Version_Comment = FlowChart_Version_Comment; newMaster.Is_Latest = true; newMaster.Is_Closed = false; newMaster.Modified_UID = userInfo.Account_UID; newMaster.Modified_Date = DateTime.Now; //获取所有厂别 //不考虑跨厂区的权限,跨厂区不会操作flowchart导入,默认取第一个optypes var plantAPI = "FlowChart/QueryAllFunctionPlantsAPI?optype=" + userInfo.OrgInfo.First().OPType; HttpResponseMessage message = APIHelper.APIGetAsync(plantAPI); var jsonPlants = message.Content.ReadAsStringAsync().Result; var functionPlants = JsonConvert.DeserializeObject <List <SystemFunctionPlantDTO> >(jsonPlants); //从第四行开始读取 iRow = iRow + 2; //制程序号 string ItemNo = string.Empty; int Process_Seq = 0; //DRI string DRI; //场地 string Place; //工站名稱 string Process; //厂别 int System_FunPlant_UID = 20; string plantName; //阶层 int Product_Stage = 0; //颜色 string Color; //工站說明 string Process_Desc; //返工设定 string Rework_Setting; //检测设定 string Check_Setting = string.Empty; ///eTransfer所需属性---Robert 2016、10、31 string FromWHS = string.Empty; string ToWHSOK = string.Empty; string ToWHSNG = string.Empty; //返修站点数量,每个FlowChart只能允许1个站点是返工站点 int Repair_Count = 0; int Process_Sign = 0; for (var i = iRow; i <= totalRows; i++) { //列名,列名序号是0 var value = worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "制程序号")].Value; if (value == null) { break; } ItemNo = ExcelHelper.ConvertColumnToString(value); //循环结束,防止有空行 DRI = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "DRI")].Value); if (string.IsNullOrWhiteSpace(DRI)) { //跳出循环 errorInfo = string.Format("第[{0}]行DRI不能为空", i); return(errorInfo); } Place = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "场地")].Value); if (string.IsNullOrWhiteSpace(Place)) { //跳出循环 errorInfo = string.Format("第[{0}]行场地不能为空", i); return(errorInfo); } Process = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站名稱")].Value); if (string.IsNullOrWhiteSpace(Process)) { //跳出循环 errorInfo = string.Format("第[{0}]行工站名稱不能为空", i); return(errorInfo); } plantName = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "厂别")].Value) ?? string.Empty; if (string.IsNullOrWhiteSpace(plantName)) { //跳出循环 errorInfo = string.Format("第[{0}]行厂别不能为空", i); return(errorInfo); } //获取到当前的OP类型 //var nowOpTypes = this.CurrentUser.DataPermissions.Op_Types.FirstOrDefault(); //获取到当前账号所在的功能厂 //var nowFuncPlant = this.CurrentUser.DataPermissions.UserOrgInfo.Org_FuncPlant; //var nowFuncPlant = userInfo.OrgInfo.Org_FuncPlant; var hasItem = functionPlants.FirstOrDefault(m => m.FunPlant.ToLower() == plantName.ToLower().Trim()); if (hasItem != null) { System_FunPlant_UID = hasItem.System_FunPlant_UID; } //else //{ // //跳出循环 // errorInfo = string.Format("厂别[{0}", plantName); // return errorInfo; //} Product_Stage = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "阶层")].Value); Color = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "颜色")].Value) ?? string.Empty; Process_Desc = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站說明")].Value); Rework_Setting = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "返工设定")].Value); if (Process_Sign != Process_Seq && Rework_Setting == "Repair") { Repair_Count++; } if (Repair_Count > 1) { //跳出循环 errorInfo = string.Format("第[{0}]行出现重复的修复站点!", i); return(errorInfo); } Process_Sign = Process_Seq; //检测站点赋值 var CheckTemp = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "检测设定")].Value); if (!string.IsNullOrWhiteSpace(CheckTemp)) { CheckTemp = CheckTemp.Trim(); } switch (CheckTemp) { case StructConstants.IsQAProcessType.InspectText: //IPQC全检 Check_Setting = StructConstants.IsQAProcessType.InspectKey; break; case StructConstants.IsQAProcessType.PollingText: //IPQC巡检 Check_Setting = StructConstants.IsQAProcessType.PollingKey; break; case StructConstants.IsQAProcessType.InspectOQCText: //OQC检测 Check_Setting = StructConstants.IsQAProcessType.InspectOQCKey; break; case StructConstants.IsQAProcessType.InspectAssembleText: //组装检测 Check_Setting = StructConstants.IsQAProcessType.InspectAssembleKey; break; case StructConstants.IsQAProcessType.AssembleOQCText: //组装&OQC检测 Check_Setting = StructConstants.IsQAProcessType.AssembleOQCKey; break; default: Check_Setting = string.Empty; break; } //eTransfer部分获取值 FromWHS = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "FromWHS")].Value); ToWHSNG = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "ToWHSNG")].Value); ToWHSOK = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "ToWHSOK")].Value); var listColor = Color.Split('/').ToList(); foreach (var itemColor in listColor) { FlowChartImportDetailDTO detailDTOItem = new FlowChartImportDetailDTO(); FlowChartDetailDTO newDetailDtoItem = new FlowChartDetailDTO(); newDetailDtoItem.FlowChart_Master_UID = newMaster.FlowChart_Master_UID; newDetailDtoItem.System_FunPlant_UID = System_FunPlant_UID; newDetailDtoItem.Process_Seq = Process_Seq.ToString(); newDetailDtoItem.ItemNo = ItemNo; newDetailDtoItem.DRI = DRI; newDetailDtoItem.Place = Place; newDetailDtoItem.Process = Process; newDetailDtoItem.Product_Stage = Product_Stage; newDetailDtoItem.Color = itemColor; newDetailDtoItem.Process_Desc = Process_Desc; newDetailDtoItem.FlowChart_Version_Comment = FlowChart_Version_Comment; newDetailDtoItem.Rework_Flag = Rework_Setting; //新增QA字段 newDetailDtoItem.IsQAProcess = Check_Setting; newDetailDtoItem.Modified_UID = newMaster.Modified_UID; newDetailDtoItem.Modified_Date = newMaster.Modified_Date; newDetailDtoItem.FromWHS = FromWHS; newDetailDtoItem.ToWHSNG = ToWHSNG; newDetailDtoItem.ToWHSOK = ToWHSOK; if (isEdit) { //存到临时表里面的数据所以要加1 newDetailDtoItem.FlowChart_Version = newMaster.FlowChart_Version + 1; } else { //存到正式表里面的数据不用加1 newDetailDtoItem.FlowChart_Version = newMaster.FlowChart_Version; } detailDTOItem.FlowChartDetailDTO = newDetailDtoItem; //detailDTOItem.FlowChartMgDataDTO = newMgDataDtoItem; detailDTOList.Add(detailDTOItem); } } } } catch (Exception exc) { errorInfo = "上传的文件类型不正确 " + exc.ToString(); } return(errorInfo); }
public string SetAndCheckExcelContent(List <FlowChartImportDetailDTO> detailDTOList, bool isEdit, ExcelWorksheet worksheet, int iRow, int totalRows, FlowChartMasterDTO newMaster, string FlowChart_Version_Comment, CustomUserInfoVM userInfo) { string errorInfo = string.Empty; //内容样式设置 var propertiesContent = FlowchartImportCommon.GetContentColumn(); //获取所有厂别 //不考虑跨厂区权限,他们不会操作只会浏览,默认取第一个,通过三级权限获取四级 var plantAPI = "FlowChart/QueryAllFunctionPlantsAPI?optypeUID=" + userInfo.OrgInfo.First().OPType_OrganizationUID; //HttpResponseMessage message = APIHelper.APIPostAsync(null,plantAPI); HttpResponseMessage message = APIHelper.APIGetAsync(plantAPI); var jsonPlants = message.Content.ReadAsStringAsync().Result; var functionPlants = JsonConvert.DeserializeObject <List <SystemFunctionPlantDTO> >(jsonPlants); //从第四行开始读取 iRow = iRow + 2; //绑定序号 //制程序号 //厂别 //阶层 //WIP数量 int Binding_Seq, Process_Seq, System_FunPlant_UID, Product_Stage, WIP, NullWip, Current_WH_QTY; //DRI //场地 //工站名稱 //厂别 //颜色 //工站說明 //检测设定 //是否分楼栋 //返工设定 //对应返修站点 string DRI, Place, Process, plantName, Color, Process_Desc, Check_Setting, Location_Flag, Rework_Setting, RelatedRepairBingdingSeq; //用来测试返工的填写是否正确 List <int> idList = new List <int>(); //这是真正的excel行数,totalRows的行数是错误的 int realTotalRows = 0; var col = worksheet.SelectedRange[1, 2]; for (var i = iRow; i <= totalRows; i++) { //绑定序号 Binding_Seq = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "绑定序号")].Value); //制程序号 Process_Seq = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "制程序号")].Value); //循环结束,防止有空行 if (Process_Seq == 0) { break; } DRI = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "DRI")].Value); if (string.IsNullOrWhiteSpace(DRI)) { //跳出循环 errorInfo = string.Format("第[{0}]行DRI不能为空", i); return(errorInfo); } Place = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "场地")].Value); if (string.IsNullOrWhiteSpace(Place)) { //跳出循环 errorInfo = string.Format("第[{0}]行场地不能为空", i); return(errorInfo); } //接收空白字符,Y,N Location_Flag = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "是否分楼栋")].Value); if (string.IsNullOrWhiteSpace(Location_Flag)) { worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "是否分楼栋")].Value = "N"; } else if (Location_Flag.ToUpper() != "Y" && Location_Flag.ToUpper() != "N") { //跳出循环 errorInfo = string.Format("第[{0}]行是否分楼栋只能为Y,N 或空白字符", i); return(errorInfo); } Process = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站名稱")].Value); if (string.IsNullOrWhiteSpace(Process)) { //跳出循环 errorInfo = string.Format("第[{0}]行工站名稱不能为空", i); return(errorInfo); } else { Process = Process.Trim(); //去掉前后空格 } plantName = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "厂别")].Value) ?? string.Empty; if (string.IsNullOrWhiteSpace(plantName)) { //跳出循环 errorInfo = string.Format("第[{0}]行厂别不能为空", i); return(errorInfo); } var hasItem = functionPlants.FirstOrDefault(m => m.FunPlant.ToLower() == plantName.ToLower().Trim()); if (hasItem != null) { System_FunPlant_UID = hasItem.System_FunPlant_UID; } else { //跳出循环 errorInfo = string.Format("厂别[{0}]输入不正确", plantName); return(errorInfo); } Product_Stage = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "阶层")].Value); Color = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "颜色")].Value) ?? string.Empty; Process_Desc = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "工站說明")].Value); Rework_Setting = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "返工设定")].Value); RelatedRepairBingdingSeq = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "对应修复站点")].Value); WIP = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "WIP")].Value); NullWip = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "不可用WIP")].Value); Current_WH_QTY = Convert.ToInt32(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "当前库存数")].Value); string Data_Source = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "数据来源")].Value); var Is_Synchronous = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "是否同步")].Value); bool bool_Is_Synchronous = false; try { bool_Is_Synchronous = Convert.ToBoolean(Is_Synchronous == "Y" ? true : false); } catch { errorInfo = string.Format("第{0}行是否同步[{1}]输入错误,请输入Y或N", i, Is_Synchronous); return(errorInfo); } if (!string.IsNullOrEmpty(Rework_Setting) && Rework_Setting.ToLower() == "rework") { if (string.IsNullOrWhiteSpace(RelatedRepairBingdingSeq)) { errorInfo = string.Format("返工设定为Rework时,第[{0}]行对应修复站点不能为空", i); return(errorInfo); } var ids = RelatedRepairBingdingSeq.Split(',').ToList(); var intIdList = ids.Select <string, int>(x => Convert.ToInt32(x)); //把所有id都添加进队列里面后面一起判断 idList.AddRange(intIdList); } //检测站点赋值 var CheckTemp = ExcelHelper.ConvertColumnToString(worksheet.Cells[i, ExcelHelper.GetColumnIndex(propertiesContent, "检测设定")].Value); if (!string.IsNullOrWhiteSpace(CheckTemp)) { CheckTemp = CheckTemp.Trim(); } switch (CheckTemp) { case StructConstants.IsQAProcessType.InspectText: //IPQC全检 Check_Setting = StructConstants.IsQAProcessType.InspectKey; break; case StructConstants.IsQAProcessType.PollingText: //IPQC巡检 Check_Setting = StructConstants.IsQAProcessType.PollingKey; break; case StructConstants.IsQAProcessType.InspectOQCText: //OQC检测 Check_Setting = StructConstants.IsQAProcessType.InspectOQCKey; break; case StructConstants.IsQAProcessType.InspectAssembleText: //组装检测 Check_Setting = StructConstants.IsQAProcessType.InspectAssembleKey; break; case StructConstants.IsQAProcessType.AssembleOQCText: //组装&OQC检测 Check_Setting = StructConstants.IsQAProcessType.AssembleOQCKey; break; default: Check_Setting = string.Empty; break; } #region 添加FlowChartDetail FlowChartImportDetailDTO detailDTOItem = new FlowChartImportDetailDTO(); FlowChartDetailDTO newDetailDtoItem = new FlowChartDetailDTO() { FlowChart_Master_UID = newMaster.FlowChart_Master_UID, System_FunPlant_UID = System_FunPlant_UID, Binding_Seq = Binding_Seq, Process_Seq = Process_Seq.ToString(), DRI = DRI, Place = Place, Location_Flag = (Location_Flag == "Y" || Location_Flag == "y") ? true : false, Process = Process, Product_Stage = Product_Stage, Color = Color, Process_Desc = Process_Desc, FlowChart_Version_Comment = FlowChart_Version_Comment, Rework_Flag = Rework_Setting, IsQAProcess = Check_Setting, Modified_UID = newMaster.Modified_UID, Modified_Date = newMaster.Modified_Date, BeginTime = DateTime.Now, //存到临时表里面的数据所以要加1,存到正式表里面的数据不用加1 FlowChart_Version = isEdit ? newMaster.FlowChart_Version + 1 : newMaster.FlowChart_Version, WIP_QTY = WIP, NullWip = NullWip, Current_WH_QTY = Current_WH_QTY, Data_Source = Data_Source, Is_Synchronous = bool_Is_Synchronous }; if (Rework_Setting == "Rework") { newDetailDtoItem.RelatedRepairBindingSeq = RelatedRepairBingdingSeq; } else { newDetailDtoItem.RelatedRepairBindingSeq = null; } detailDTOItem.FlowChartDetailDTO = newDetailDtoItem; //detailDTOItem.FlowChartMgDataDTO = newMgDataDtoItem; detailDTOList.Add(detailDTOItem); #endregion //行数加1 realTotalRows++; } var bindingSeqCount = detailDTOList.GroupBy(m => m.FlowChartDetailDTO.Binding_Seq).Select(m => m.Key).Count(); //var processSeqCount = detailDTOList.GroupBy(m => m.FlowChartDetailDTO.Process_Seq).Select(m => m.Key).Count(); var rowCount = realTotalRows; if (bindingSeqCount != rowCount) { errorInfo = "绑定序号有重复项,请修改"; return(errorInfo); } //判断设定的返工信息是否正确 var bindSeqList = detailDTOList.Select(m => m.FlowChartDetailDTO.Binding_Seq).ToList(); var notExistId = idList.Distinct().ToList().Except(bindSeqList).ToList(); if (notExistId.Count() > 0) { errorInfo = string.Format("对应修复站点的绑定序号:{0},设定有问题", notExistId.First()); return(errorInfo); } return(errorInfo); }