diff --git a/FactorySystemApi/Controllers/MaterialTeamworkController.cs b/FactorySystemApi/Controllers/MaterialTeamworkController.cs index 8f82072..84330ee 100644 --- a/FactorySystemApi/Controllers/MaterialTeamworkController.cs +++ b/FactorySystemApi/Controllers/MaterialTeamworkController.cs @@ -206,17 +206,29 @@ namespace FactorySystemApi.Controllers if (list != null && list.Count > 0) { - foreach(MaterialTeamworkRow row in list) + foreach (MaterialTeamworkRow row in list) { row.FIsShowView = false; row.FIsDownloadView = false; + row.FIsProcessShowView = false; + row.FIsProcessDownloadView = false; + row.FIsVersionShowView = false; + row.FIsVersionDownloadView = false; int factoryId = row.FCreateFactoryID; List viewPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("1")).ToList(); List operationPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("6")).ToList(); + List processViewPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("3")).ToList(); + List processOperationPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("8")).ToList(); + List versionViewPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("4")).ToList(); + List versionOperationPowers = powerList.FindAll(p => ((IDictionary)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary)p)["FFunctionID"].ToString().Equals("9")).ToList(); if (viewPowers != null && viewPowers.Count > 0) row.FIsShowView = true; if (operationPowers != null && operationPowers.Count > 0) row.FIsDownloadView = true; + if (processViewPowers != null && processViewPowers.Count > 0) row.FIsProcessShowView = true; + if (processOperationPowers != null && processOperationPowers.Count > 0) row.FIsProcessDownloadView = true; + if (versionViewPowers != null && versionViewPowers.Count > 0) row.FIsVersionShowView = true; + if (versionOperationPowers != null && versionOperationPowers.Count > 0) row.FIsVersionDownloadView = true; } } @@ -881,6 +893,382 @@ namespace FactorySystemApi.Controllers } + /// + /// 获取视图信息 + /// + [HttpPost] + public ApiResult GetTeamworkView(Dictionary inParam) + { + ApiResult apiResult = new ApiResult(); + return ExceptionHelper.TryReturnException(() => + { + if (inParam.ContainsKey("FTeamID")) + { + inParam.TryGetValue("FViewType", out object objType); + int intType = null == objType ? (int)Constant.TeamViewType.物料视图 : int.Parse(objType.ToString()); + string selectSql = "", joinSql = "", whereSql = string.Format("TFS_FMaterialTeamwork.FID={0} ", inParam["FTeamID"]); + string basePath = AppDomain.CurrentDomain.BaseDirectory.Trim('\\'); + string savePath = basePath + string.Format("\\File\\Temp\\{0}_{1}\\", inParam["FTeamID"], intType); + if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath); + string tempPath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\"); + if (!Directory.Exists(tempPath)) Directory.CreateDirectory(tempPath); + switch (intType) + { + case (int)Constant.TeamViewType.配方视图: + savePath += Constant.TeamViewType.配方视图.ToString(); + //原始配方 + whereSql = string.Format(@"dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_FTeamwork where FID={0}))>0 + and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]); + //生产、计划配方 + joinSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_FTeamwork where FID={0}))>0 + and TFS_Material.FSuccedaneumID<1) and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", + inParam["FTeamID"]); + break; + case (int)Constant.TeamViewType.生产工艺路线视图: + savePath += Constant.TeamViewType.生产工艺路线视图.ToString(); + //只要生产工厂 + whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID in(select FID from TFS_Factory where FType={0})", (int)Constant.FactoryType.单工厂); + //视图类型 + List tempInt3_1 = new List + { + (int)Constant.ViewType.成品视图, + (int)Constant.ViewType.半成品视图, + (int)Constant.ViewType.香基视图, + (int)Constant.ViewType.中间品视图 + }; + whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FViewType in({0})", string.Join(",", tempInt3_1)); + break; + case (int)Constant.TeamViewType.生产版本视图: + savePath += Constant.TeamViewType.生产版本视图.ToString(); + //只要生产工厂 + whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID in(select FID from TFS_Factory where FType={0})", (int)Constant.FactoryType.单工厂); + //视图类型 + List tempInt4_1 = new List + { + (int)Constant.ViewType.成品视图, + (int)Constant.ViewType.半成品视图, + (int)Constant.ViewType.中间品视图, + (int)Constant.ViewType.香基视图 + }; + whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FViewType in({0})", string.Join(",", tempInt4_1)); + break; + case (int)Constant.TeamViewType.组装BOM视图: + savePath += Constant.TeamViewType.组装BOM视图.ToString(); + //一级半成品、包材→无替代料的 + whereSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialHalfIDs from TFS_FTeamwork where FID={0}))>0 or ( + TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FMaterialID in(select FMaterialID from TFS_PackageChild where FTeamID={0}) or + FPackageID=(select FPackID from TFS_FTeamwork where FID={0}))) + ", inParam["FTeamID"]); + //只要生产工厂 + whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]); + break; + case (int)Constant.TeamViewType.物料视图: + default: + savePath += Constant.TeamViewType.物料视图.ToString(); + whereSql += " and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FMaterialID>0"; + break; + } + savePath += ".xlsx"; + + bool hasFinish = inParam.ContainsKey("FFinish"); + if (hasFinish) savePath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\"); + if (!File.Exists(savePath) || !hasFinish) + { + if (inParam.ContainsKey("HalfId")) + { + CreateExeclFile(intType, savePath, selectSql, whereSql, joinSql, inParam["FTeamID"].ToString(), inParam["HalfId"].ToString()); + } + else + { + CreateExeclFile(intType, savePath, selectSql, whereSql, joinSql, inParam["FTeamID"].ToString(), ""); + } + } + if (inParam.TryGetValue("FType", out objType) && objType.ToString().Equals("1")) + { + if (intType == (int)Constant.TeamViewType.配方视图) + { + apiResult.Data = new + { + List1 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "1.xlsx")), + List2 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "2.xlsx")), + List3 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "3.xlsx")) + }; + } + else if (intType == (int)Constant.TeamViewType.生产版本视图 || intType == (int)Constant.TeamViewType.组装BOM视图) + { + //生产和计划 + apiResult.Data = new + { + List1 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "1.xlsx")), + List2 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "2.xlsx")), + }; + } + else + { + apiResult.Data = new + { + List1 = NPOIHelper.ImportExceltoDt(savePath) + }; + } + } + else + { + if (savePath.Contains(Constant.TeamViewType.物料视图.ToString())) + { + apiResult.Data = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/").Replace(Constant.TeamViewType.物料视图.ToString(), "SAP视图"); + } + else + { + apiResult.Data = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/"); + } + } + } + else + { + apiResult.Error("获取协同信息失败"); + } + }, apiResult, Request, inParam); + } + /// + /// 创建Excel文件 + /// + private void CreateExeclFile(int intType, string savePath, string selectSql, string whereSql, string joinSql, string teamId, string halfId) + { + List filedList = MaterialTeamworkBll.GetTeamworkViewField(intType); + foreach (TFS_ViewFieldInfo field in filedList) + { + if (string.IsNullOrEmpty(field.FField)) + { + selectSql += string.Format("'{0}' as '{1}'", string.IsNullOrEmpty(field.FDefault) ? "" : field.FDefault, field.FName); + } + else + { + if (field.FName == "基本数量") + { + selectSql += string.Format("isnull({0},(select TFS_PackageMain.FBomUnit from TFS_PackageMain where TFS_PackageMain.FID =(select top 1 FPackID from TFS_FTeamwork where FID=@FTeamID@))) as '{1}'", field.FField, field.FName); + } + else if (field.FName == "组件数量") + { + selectSql += string.Format(@"isnull( ( CASE WHEN TFS_ViewMaterial.FExtraQuantity IS NULL OR TFS_ViewMaterial.FExtraQuantity= '' THEN TFS_PackageChild.FCount ELSE TFS_ViewMaterial.FExtraQuantity END ), (select TFS_PackageMain.FBomUnit from TFS_PackageMain where TFS_PackageMain.FID =(select top 1 FPackID from TFS_FTeamwork where FID=@FTeamID@)) ) AS '组件数量'"); + } + else + { + selectSql += string.Format("isnull({0},'') as '{1}'", field.FField, field.FName); + } + } + selectSql += ","; + } + selectSql = selectSql.Replace("@FTeamID@", teamId); + selectSql = selectSql.Replace("@FMaterialID@", halfId); + DataTable dataList = new DataTable(); + if (intType == (int)Constant.TeamViewType.组装BOM视图) + { + dataList = MaterialTeamworkBll.GetTeamworkViewData2(selectSql.Trim(','), whereSql, joinSql); + dataList.Columns.Remove("FMaterialID"); + DataTable dataList2 = dataList.Copy(); + List hasField = new List(); + hasField.Add(dataList.Columns.Contains("BOM用途")); + hasField.Add(dataList.Columns.Contains("子项序号")); + hasField.Add(dataList.Columns.Contains("组件损耗率")); + hasField.Add(dataList.Columns.Contains("固定损耗数量")); + int rowCount = dataList.Rows.Count; + + //生产组装BOM处理 + for (int i = 0; i < rowCount; i++) + { + if (hasField[0]) dataList.Rows[i]["BOM用途"] = "1"; + if (hasField[1]) dataList.Rows[i]["子项序号"] = (i + 1) * 10; + if (hasField[2]) dataList.Rows[i]["组件损耗率"] = ""; + if (hasField[3]) dataList.Rows[i]["固定损耗数量"] = ""; + + if (dataList.Rows[i]["计量单位"].ToString() == "G") + { + dataList.Rows[i]["组件数量"] = int.Parse(dataList.Rows[i]["组件数量"].ToString()) * 100; + } + if (dataList2.Rows[i]["计量单位"].ToString() == "G") + { + dataList2.Rows[i]["组件数量"] = int.Parse(dataList2.Rows[i]["组件数量"].ToString()) * 100; + } + dataList.Rows[i]["可选文本"] = "生产组装BOM"; + } + NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", "1.xlsx")); + + //计划组装BOM处理 + DataTable dataList3 = dataList2.Copy(); + for (int i = 0; i < rowCount; i++) + { + if (hasField[1]) + { + dataList2.Rows[i]["子项序号"] = (i + 1) * 10; + } + if (hasField[3] && !string.IsNullOrEmpty(dataList2.Rows[i]["固定损耗数量"].ToString()) && !dataList2.Rows[i]["固定损耗数量"].ToString().Equals("0")) + { + dataList3.Rows[i]["组件数量"] = dataList2.Rows[i]["固定损耗数量"].ToString(); + dataList3.Rows[i]["组件损耗率"] = ""; + dataList3.Rows[i]["固定损耗数量"] = "X"; + if (hasField[1]) dataList3.Rows[i]["子项序号"] = (i + rowCount + 1) * 10; + dataList3.Rows[i]["可选文本"] = "计划组装BOM"; + dataList2.ImportRow(dataList3.Rows[i]); + } + dataList2.Rows[i]["固定损耗数量"] = ""; + dataList2.Rows[i]["可选文本"] = "计划组装BOM"; + } + NPOIHelper.ExportDTtoExcel(dataList2, "Sheet1", savePath.Replace(".xlsx", "2.xlsx")); + for (int i = 0; i < dataList2.Rows.Count; i++) + { + if (i == 0) dataList.Rows.Add("[换色]"); + dataList.ImportRow(dataList2.Rows[i]); + } + } + else if (intType == (int)Constant.TeamViewType.配方视图) + { + + } + else + { + dataList = MaterialTeamworkBll.GetTeamworkViewData2(selectSql.Trim(','), whereSql, joinSql); + dataList.Columns.Remove("FMaterialID"); + if (intType == (int)Constant.TeamViewType.生产版本视图) + { + NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", "1.xlsx")); + int rowCount = dataList.Rows.Count; + bool isChange = dataList.Columns.Contains("BOM用途"); + + DataTable dataList2 = dataList.Copy(); + for (int i = 0; i < rowCount; i++) + { + if (isChange && dataList2.Rows[i]["BOM用途"].ToString() == "1") + { + dataList2.Rows[i]["BOM用途"] = "Y"; + } + } + NPOIHelper.ExportDTtoExcel(dataList2, "Sheet1", savePath.Replace(".xlsx", "2.xlsx")); + for (int i = 0; i < rowCount; i++) + { + if (i == 0) dataList.Rows.Add("[换色]"); + dataList.ImportRow(dataList2.Rows[i]); + } + } + } + if (intType == (int)Constant.TeamViewType.物料视图) + { + NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath); + //處理名字點 + dataList.Columns["组织级别.行业领域"].ColumnName = "行业领域\n(Industry Sector)"; + dataList.Columns["组织级别.物料类型"].ColumnName = "物料类型\n(Material Type)"; + dataList.Columns["组织级别.工厂"].ColumnName = "工厂\n(Plant)"; + dataList.Columns["组织级别.库存地点"].ColumnName = "库存地点\n(Stock Location)"; + dataList.Columns["组织级别.销售组织"].ColumnName = "销售组织\n(Sales Organization)"; + dataList.Columns["组织级别.分销渠道"].ColumnName = "分销渠道\n(distribution Channel)"; + dataList.Columns["基本视图.物料编号"].ColumnName = "物料编号\n(Material NO.)"; + dataList.Columns["基本视图.试验号"].ColumnName = "试验号\n(Test NO.)"; + dataList.Columns["基本视图.基本计量"].ColumnName = "基本计量\n(Base Unit of Measure)"; + dataList.Columns["基本视图.物料描述"].ColumnName = "物料描述\n(Material Description)"; + dataList.Columns["基本视图.物料组"].ColumnName = "物料组\n(Material Group)"; + dataList.Columns["基本视图.大小/量纲(规格)"].ColumnName = "大小/量纲(规格)\n(Specifications)"; + dataList.Columns["基本视图.物料长文本"].ColumnName = "物料长文本\n(Basic Data Text)"; + dataList.Columns["基本视图.标识符:固体/液体"].ColumnName = "实验室办公室(标识符:固体/液体/乳化)\n(In bulk/liquid)"; + dataList.Columns["基本视图.体积单位"].ColumnName = "体积单位\n(Volume Unit)"; + dataList.Columns["基本视图.毛重"].ColumnName = "毛重\n(Gross weight)"; + dataList.Columns["基本视图.净重"].ColumnName = "净重\n(Net weight)"; + dataList.Columns["基本视图.重量单位"].ColumnName = "重量单位\n(Weight unit)"; + dataList.Columns["基本视图.fame号"].ColumnName = "生产备忘录(fame号)"; + dataList.Columns["基本视图.业务量"].ColumnName = "业务量\n(Volume)"; + dataList.Columns["采购视图.采购组"].ColumnName = "采购组\n(Purchasing Group)"; + dataList.Columns["采购视图.采购单位"].ColumnName = "采购单位\n(Order Unit)"; + dataList.Columns["采购视图.采购单位数量"].ColumnName = "采购单位数量\n(Quantity Conversion of procument)"; + dataList.Columns["采购视图.采购基本单位数量"].ColumnName = "基本单位数量(Quantity Conversion of basic unit of measure)"; + dataList.Columns["采购视图.采购价值码"].ColumnName = "采购价值码\n(Purchasing value key)"; + dataList.Columns["采购视图.工厂特定状态"].ColumnName = "工厂特定状态\n(Plant-Specific Material Status)"; + dataList.Columns["采购视图.自动采购单标识"].ColumnName = "自动采购订单\n(automatic purchase order allowed)"; + dataList.Columns["采购视图.货源清单"].ColumnName = "货源清单\n(Source list requirement)"; + dataList.Columns["分类视图.类别种类"].ColumnName = "类别种类\n(Class Type)"; + dataList.Columns["分类视图.类别"].ColumnName = "类别\n(Class)"; + dataList.Columns["销售视图.交货工厂"].ColumnName = "交货工厂\n(Delivering Plant)"; + dataList.Columns["销售视图.税金分类"].ColumnName = "税金分类\n(Tax classification material)"; + dataList.Columns["销售视图.物料统计组"].ColumnName = "物料统计组\n(Material statistics group)"; + dataList.Columns["销售视图.销售单位"].ColumnName = "销售单位\n(Sales unit)"; + dataList.Columns["销售视图.基本单位数量"].ColumnName = "基本单位数量\n(Quantity Conversion of basic unit of measure)"; + dataList.Columns["销售视图.销售单位数量"].ColumnName = "销售单位数量\n(Quantity Conversion of Sales)"; + dataList.Columns["销售视图.科目设置组"].ColumnName = "科目设置组\n(Account Assignment Group for Material)"; + dataList.Columns["销售视图.普通项目类别组"].ColumnName = "普通项目类别组\n(General item category group)"; + dataList.Columns["销售视图.项目类别组"].ColumnName = "项目类别组\n(Item Category Group)"; + dataList.Columns["销售视图.可用性检查"].ColumnName = "可用性检查\n(Availability check)"; + dataList.Columns["销售视图.装载组"].ColumnName = "装载组\n(Loading Group)"; + dataList.Columns["销售视图.旧物料号"].ColumnName = "旧物料号\n(old material number)\n"; + dataList.Columns["仓储视图.存储条件"].ColumnName = "存储条件\n(Storage conditions)"; + dataList.Columns["仓储视图.批次管理"].ColumnName = "批次管理\n(Batch Management Requirement Indicator)"; + dataList.Columns["仓储视图.最大存储期间"].ColumnName = "最大存储期间\n(Maximum Storage Period)"; + dataList.Columns["仓储视图.时间单位"].ColumnName = "时间单位\n(Time unit)"; + dataList.Columns["仓储视图.最小剩余货架寿命"].ColumnName = "最小剩余货架寿命(Minimum Remaining Shelf Life)"; + dataList.Columns["仓储视图.总货架寿命"].ColumnName = "总货架寿命\n(Total shelf life)"; + dataList.Columns["仓储视图.SLED期间标识"].ColumnName = "SLED期间标识\n(Period Indicator for Shelf Life Expiration Date)"; + dataList.Columns["MRP1.MRP类型"].ColumnName = "MRP类型\n(MRP Type)"; + dataList.Columns["MRP1.再订货点"].ColumnName = "再订货点"; + dataList.Columns["MRP1.固定批量大小"].ColumnName = "固定批量大小"; + dataList.Columns["MRP1.最大库存水平"].ColumnName = "最大库存水平"; + dataList.Columns["MRP1.MRP控制者"].ColumnName = "MRP\n控制者\nMRP Controller"; + dataList.Columns["MRP1.批量大小"].ColumnName = "批量大小\nLot Sizing Procedure within Materials Planning"; + dataList.Columns["MRP1.最小批量大小"].ColumnName = "最小批\n量大小\nMaximum Lot Size"; + dataList.Columns["MRP1.最大批量大小"].ColumnName = "最大批\n量大小\nMinimum Lot Size"; + dataList.Columns["MRP1.MRP组"].ColumnName = "MRP组\nMRP Group"; + dataList.Columns["MRP1.舍入值"].ColumnName = "舍入值\nRounding value for purchase order quantity"; + dataList.Columns["MRP1.产品分类"].ColumnName = "产品分类\nProduct classification"; + dataList.Columns["MRP1.客户代码"].ColumnName = "客户代码"; + dataList.Columns["MRP1.大小料"].ColumnName = "大小料"; + dataList.Columns["MRP1.不计算缺料"].ColumnName = "不计算缺料 "; + dataList.Columns["MRP1.压膜"].ColumnName = "压膜"; + dataList.Columns["MRP1.安全库存带小样"].ColumnName = "安全库存带小样"; + dataList.Columns["MRP1.需求计算不考虑前置物料库存"].ColumnName = "需求计算不考虑前置物料库存"; + dataList.Columns["MRP1.小料标准(小于)"].ColumnName = " 小料标准(小于)"; + dataList.Columns["MRP2.采购类型"].ColumnName = "采购类型\nProcurement Type"; + dataList.Columns["MRP2.计划边际码"].ColumnName = "计划\n边际码\nSchedMargin key"; + dataList.Columns["MRP2.特殊采购类"].ColumnName = "特殊\n采购类\nSpecial procurement"; + dataList.Columns["MRP2.反冲"].ColumnName = "反冲\nBackflush"; + dataList.Columns["MRP2.自制生产时间"].ColumnName = "自制\n生产时间\nIn-house production time"; + dataList.Columns["MRP2.计划交货时间"].ColumnName = "计划交\n货时间\nPlanned Delivery Time in Days"; + dataList.Columns["MRP2.收货处理时间"].ColumnName = "收货处\n理时间\nGoods receipt processing time in days"; + dataList.Columns["MRP2.安全库存"].ColumnName = "安全库存\nSafety Stock"; + dataList.Columns["MRP2.发货库存地点"].ColumnName = "发货库\n存地点\nIssue Storage Location"; + dataList.Columns["MRP2.外部采购仓储地点"].ColumnName = "外部采购\n仓储地点\nDefault storage location for external procurement"; + dataList.Columns["MRP3.策略组"].ColumnName = "策略组\nStrategy Group"; + dataList.Columns["MRP3.消耗模式"].ColumnName = "消耗模式\nConsumption Mode"; + dataList.Columns["MRP3.向前消耗期间"].ColumnName = "向前消\n耗期间\n(Consumption period: forward)"; + dataList.Columns["MRP3.逆向消耗期"].ColumnName = "逆向\n消耗期\n(Consumption period: backward)"; + dataList.Columns["MRP3.混合MRP"].ColumnName = "混合MRP\nMixed MRP indicator"; + dataList.Columns["MRP3.可用性检查"].ColumnName = "可用性检查\n\nAvailability check"; + dataList.Columns["MRP4.单独或集中"].ColumnName = "单独或集中\nIndividual requirements/Collective requirements"; + dataList.Columns["MRP4.非连续标识"].ColumnName = "非连续标识"; + dataList.Columns["MRP4.生效期"].ColumnName = "生效期"; + dataList.Columns["MRP4.后续的物料"].ColumnName = "后续的物料"; + dataList.Columns["工作计划视图.生产计划参数文件"].ColumnName = "生产计划参数文件\nProduction Scheduling Profile"; + dataList.Columns["工作计划视图.无限制过量交货"].ColumnName = "无限制过\n量交货\n(Indicator: Unlimited Overdelivery Allowed)"; + dataList.Columns["工作计划视图.不足交货允差"].ColumnName = "不足交\n货允差\nUnderdelivery tolerance limit"; + dataList.Columns["工作计划视图.过度交货允差"].ColumnName = "过度交\n货允差\nOverdelivery tolerance limit"; + dataList.Columns["工作计划视图.发货单位"].ColumnName = "发货单位\nUnit of issue"; + dataList.Columns["工作计划视图.发货单位数量"].ColumnName = "发货单位数量\n(Quantity Conversion of Delivery)"; + dataList.Columns["工作计划视图.发货基本单位数量"].ColumnName = "基本单位数量\n\n(Quantity Conversion of basic unit of measure)"; + dataList.Columns["质检视图.检验类型1"].ColumnName = "检验类型1\nInspection Type 1"; + dataList.Columns["质检视图.检验类型2"].ColumnName = "检验类型2\nInspection Type 2"; + dataList.Columns["质检视图.检验类型3"].ColumnName = "检验类型3\nInspection Type 3"; + dataList.Columns["质检视图.检验类型4"].ColumnName = "检验类型4\nInspection Type 4"; + dataList.Columns["质检视图.检验类型5"].ColumnName = "检验类型5\nInspection Type 5"; + dataList.Columns["质检视图.检验类型6"].ColumnName = "检验类型6\nInspection Type 6"; + dataList.Columns["会计视图.价格控制"].ColumnName = "价格控制\n(Price control indicator)"; + dataList.Columns["会计视图.价格确定"].ColumnName = "价格确定\n(Material Price Determination: Control)"; + dataList.Columns["会计视图.价格单位"].ColumnName = "价格单位\n(Price Unit)"; + dataList.Columns["会计视图.评估分类"].ColumnName = "评估分类\nValuation Class"; + dataList.Columns["会计视图.VC: 销售订单库存"].ColumnName = "VC: 销售订单库存\nValuation Class for Sales Order Stock"; + dataList.Columns["会计视图.标准价格"].ColumnName = "标准价格\nStandard Price"; + dataList.Columns["会计视图.利润中心"].ColumnName = "利润中心\nProfit Center"; + dataList.Columns["会计视图.成本核算批量"].ColumnName = "成本核算批量\nLot Size for Product Costing"; + NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(Constant.TeamViewType.物料视图.ToString(), "SAP视图")); + } + else + { + NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath); + } + } } } diff --git a/FactorySystemBll/MaterialTeamworkBll.cs b/FactorySystemBll/MaterialTeamworkBll.cs index 28aa6ce..bc8fe06 100644 --- a/FactorySystemBll/MaterialTeamworkBll.cs +++ b/FactorySystemBll/MaterialTeamworkBll.cs @@ -1047,5 +1047,29 @@ Lot Size for Product Costing' DataTable data = db.Ado.GetDataTable(strSql); return data; } + + /// + /// 获取协同视图字段信息 + /// + public List GetTeamworkViewField(int intType) + { + return AppSettingsHelper.GetSqlSugar().Queryable().Where(s => s.FType == intType + && s.FDeleted != (int)Constant.DeleteCode.已删除).OrderBy(s => s.FOrder).ToList(); + } + + /// + /// 获取协同视图结果信息 + /// + public DataTable GetTeamworkViewData2(string selectSql, string whereSql, string joinSql = "") + { + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + string strSql = string.Format(@"select distinct {0},TFS_ViewMaterial.FMaterialID from TFS_ViewMaterial + left join TFS_Material on TFS_Material.FID=TFS_ViewMaterial.FMaterialID + left join TFS_MaterialInfo on TFS_ViewMaterial.FMaterialID=TFS_MaterialInfo.FDataID and TFS_MaterialInfo.FType=2 + left join TFS_PackageChild on TFS_PackageChild.FMaterialID =TFS_ViewMaterial.FMaterialID + left join TFS_FMaterialTeamwork on TFS_ViewMaterial.FTeamID=TFS_FMaterialTeamwork.FID + {2} where {1}", selectSql, whereSql, string.IsNullOrEmpty(joinSql) ? "" : joinSql); + return db.Ado.GetDataTable(strSql); + } } } diff --git a/FactorySystemModel/ResponseModel/MaterialTeamworkRow.cs b/FactorySystemModel/ResponseModel/MaterialTeamworkRow.cs index 5b951be..e3ed3f1 100644 --- a/FactorySystemModel/ResponseModel/MaterialTeamworkRow.cs +++ b/FactorySystemModel/ResponseModel/MaterialTeamworkRow.cs @@ -25,11 +25,39 @@ namespace FactorySystemModel.ResponseModel /// public bool FIsShowView { get; set; } + /// + /// Desc:是否具备生产工艺路线视图查看权限 + /// Default: + /// Nullable: + /// + public bool FIsProcessShowView { get; set; } + + /// + /// Desc:是否具备生产版本视图查看权限 + /// Default: + /// Nullable: + /// + public bool FIsVersionShowView { get; set; } + /// /// Desc:是否具备视图导出权限 /// Default: /// Nullable: /// public bool FIsDownloadView { get; set; } + + /// + /// Desc:是否具备生产工艺路线视图导出权限 + /// Default: + /// Nullable: + /// + public bool FIsProcessDownloadView { get; set; } + + /// + /// Desc:是否具备生产版本视图导出权限 + /// Default: + /// Nullable: + /// + public bool FIsVersionDownloadView { get; set; } } -} +} \ No newline at end of file