diff --git a/FactorySystemApi/Controllers/FormulaController.cs b/FactorySystemApi/Controllers/FormulaController.cs index 6315c97..16cbd23 100644 --- a/FactorySystemApi/Controllers/FormulaController.cs +++ b/FactorySystemApi/Controllers/FormulaController.cs @@ -33,6 +33,20 @@ namespace FactorySystemApi.Controllers UpdateField = ""; } + /// + /// 更具试验号获取配方视图 + /// + /// + /// + [HttpPost] + public ApiResult GetFormulaByFTestCode(Dictionary data) + { + ApiResult apiResult = new ApiResult(); + return ExceptionHelper.TryReturnException(() => + { + apiResult.Data = FormulaBll.GetFormulaByFTestCode(data["code"].ToString()); + }, apiResult, Request); + } /// /// 获取配方集合 /// diff --git a/FactorySystemApi/Controllers/HalfMaterialTeamworkController.cs b/FactorySystemApi/Controllers/HalfMaterialTeamworkController.cs index 51531c2..9ae0d3d 100644 --- a/FactorySystemApi/Controllers/HalfMaterialTeamworkController.cs +++ b/FactorySystemApi/Controllers/HalfMaterialTeamworkController.cs @@ -149,8 +149,8 @@ namespace FactorySystemApi.Controllers //创建 TFS_FTeamwork int teamId = BaseBll.InsertDataModel(inParam, "TFS_HalfMaterialFTeamwork"); - ids = MaterialTeamworkBll.UpdateFormula(inParam["FTestCode"].ToString(), inParam["FNewTestCode"].ToString()); - + List editMaterialList = MaterialTeamworkBll.UpdateFormula(inParam["FTestCode"].ToString(), inParam["FNewTestCode"].ToString(), teamId); + ids = editMaterialList.Select(m => m.FID).Distinct().ToList(); apiResult.Data = teamId; if (teamId > 0) @@ -164,43 +164,15 @@ namespace FactorySystemApi.Controllers if (state.ToString().Contains("1")) { TFS_HalfMaterialFTeamwork teamwork = BaseBll.GetTempModel(teamId); - List materialList = MaterialTeamworkBll.CheckMaterialListByTest2(teamwork.FNewTestCode, teamwork.FCreateFactoryID); - if (materialList.Count == 0) - { - MaterialTeamworkBll.CreateProductView(teamwork, null, user.FID); - //开始BOM下载 - DockGetBomData(teamwork.FID, user.FID); - } - else - { - MaterialTeamworkBll.CreateProductView(teamwork, materialList, user.FID); - MaterialTeamworkBll.HasMaterialTestCode(teamwork); - /** - * 20230414 需求变更 - * 在创建各类事项前,先创建物料分类事项 - * 此处创建各类事项流程中断,转移至物料分类事项提交后进行 - * **/ - BaseBll.CreateTaskData2(teamwork.FID, user.FID, "1"); //新增物料分类事项 - BaseBll.UpdateTeamProcess2(teamId, (int)Constant.HalfMaterialProcessType.物料分类, 2, 1); // 更新物料分类流程 + MaterialTeamworkBll.CreateProductView(teamwork, editMaterialList, user.FID); + //开始BOM下载 + DockGetBomData(teamwork.FID, user.FID); + MaterialTeamworkBll.HasMaterialTestCode(teamwork); - ////补充包材规格 - //BaseBll.CreateTaskData(teamId, user.FID, "14"); - ////成品视图 - //BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); - ////成品视图物料组复核,有权限的所有 - //BaseBll.CreateTaskData(teamwork.FID, user.FID, "12"); - //teamwork = BaseBll.GetTempModel(teamId); - //if (teamwork.FPackID == -1) { - // //新增新包材事项 - // BaseBll.CreateTaskData(teamId, user.FID, "9"); - // BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.组装BOM包含新包材, 2, 1); - //} else { - // BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.组装BOM包含新包材, 3, 2); - //} - //BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.协同发起, 3, 2); - //BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); - } + BaseBll.CreateTaskData2(teamwork.FID, user.FID, "1"); //新增物料分类事项 + BaseBll.UpdateTeamProcess2(teamId, (int)Constant.HalfMaterialProcessType.物料分类, 2, 1); // 更新物料分类流程 + } else { @@ -219,7 +191,7 @@ namespace FactorySystemApi.Controllers catch (Exception ex) { //失败则把修改的更新回去 - ids = MaterialTeamworkBll.UpdateFormula(inParam["FTestCode"].ToString(), inParam["FNewTestCode"].ToString(),string.Join(",",ids)); + MaterialTeamworkBll.UpdateFormula(inParam["FTestCode"].ToString(), inParam["FNewTestCode"].ToString(),0,string.Join(",",ids)); throw; } @@ -326,7 +298,7 @@ namespace FactorySystemApi.Controllers { inParam.TryGetValue("FViewType", out object objType); int intType = null == objType ? (int)Constant.TeamViewType.物料视图 : int.Parse(objType.ToString()); - string selectSql = "", joinSql = "", whereSql = string.Format("TFS_FTeamwork.FID={0} ", inParam["FTeamID"]); + string selectSql = "", joinSql = "", whereSql = string.Format("TFS_HalfMaterialFTeamwork.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); @@ -337,11 +309,11 @@ namespace FactorySystemApi.Controllers 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.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]); + whereSql = string.Format(@"dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_HalfMaterialFTeamwork where FID={0}))>0 + and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_HalfMaterialFTeamwork 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.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", + joinSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_HalfMaterialFTeamwork where FID={0}))>0 + and TFS_Material.FSuccedaneumID<1)and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_HalfMaterialFTeamwork where FID={0})", inParam["FTeamID"]); break; case (int)Constant.TeamViewType.生产工艺路线视图: @@ -375,12 +347,12 @@ namespace FactorySystemApi.Controllers 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 + whereSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialHalfIDs from TFS_HalfMaterialFTeamwork where FID={0}))>0 or TFS_ViewMaterial.FMaterialID in(select FMaterialID from TFS_PackageChild where FTeamID={0} or - FPackageID=(select FPackID from TFS_FTeamwork where FID={0}))) + FPackageID=(select FPackID from TFS_HalfMaterialFTeamwork where FID={0}))) ", inParam["FTeamID"]); //只要生产工厂 - whereSql += string.Format(" and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]); + whereSql += string.Format(" and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_HalfMaterialFTeamwork where FID={0})", inParam["FTeamID"]); break; case (int)Constant.TeamViewType.物料视图: default: @@ -572,9 +544,9 @@ namespace FactorySystemApi.Controllers TFS_HalfMaterialFTeamwork teamwork = BaseBll.GetTempModel(teamId); try { - TFS_Formula formula = BaseBll.GetTempModel(teamwork.FFormulaID); + TFS_Formula formula = BaseBll.GetTempModel(string.Format("FTestCode='{0}'", teamwork.FNewTestCode)); OAService oAService = new OAService(); - specifList[0].Code = formula.FTestCode; + specifList[0].Code = teamwork.FTestCode; specifList[0].Version = formula.FVersionCode; RestResult restResult = oAService.GetSpecificationsList(specifList.ToArray()); string bomStr = restResult.data == null ? "[]" : restResult.data.ToString(); @@ -818,15 +790,27 @@ namespace FactorySystemApi.Controllers private void CreateExeclFile(int intType, string savePath, string selectSql, string whereSql, string joinSql, string teamId, string halfId) { List filedList = MaterialTeamworkBll.GetTeamworkViewField(intType); + + List fieldLists = new List { "父项编码", "父项描述", "基本数量" }; 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); + string str = field.FDefault; + if (fieldLists.Contains(field.FName)) + { + str=field.FDefault.Replace("a.FTeamID", "a.FHalfMaterialTeamID"); + } + selectSql += string.Format("'{0}' as '{1}'", string.IsNullOrEmpty(field.FDefault) ? "" : str, field.FName); } else { - selectSql += string.Format("isnull({0},'') as '{1}'", field.FField, field.FName); + string str = field.FField; + if (fieldLists.Contains(field.FName)) + { + str = field.FField.Replace("a.FTeamID", "a.FHalfMaterialTeamID"); + } + selectSql += string.Format("isnull({0},'') as '{1}'", str, field.FName); } selectSql += ","; } @@ -887,7 +871,7 @@ namespace FactorySystemApi.Controllers { //原始配方 DataTable dataList1 = MaterialTeamworkBll.GetTeamworkViewData2(selectSql.Trim(','), whereSql); - TFS_FTeamwork teamwork = BaseBll.GetTempModel("FID=" + teamId); + TFS_HalfMaterialFTeamwork teamwork = BaseBll.GetTempModel("FID=" + teamId); List bfList = JsonConvert.DeserializeObject>(teamwork.FBomFormula); //SetBFData(null, bfList, dataList1); List forIdList = teamwork.FMaterialFormulaIDs.Split(',').ToList(); diff --git a/FactorySystemApi/Controllers/ViewController.cs b/FactorySystemApi/Controllers/ViewController.cs index f0be068..a44660f 100644 --- a/FactorySystemApi/Controllers/ViewController.cs +++ b/FactorySystemApi/Controllers/ViewController.cs @@ -59,6 +59,34 @@ namespace FactorySystemApi.Controllers }, apiResult, Request); } + + + /// + /// 根据替换试验号TeamID获取物料视图 + /// + [HttpPost] + public ApiResult GetListByHalfMaterialTeamId(Dictionary inParam) + { + var apiResult = new ApiResult(); + return ExceptionHelper.TryReturnException(() => + { + if (Request.Properties["token"] is ApiAuthInfo user) + { + int teamId = int.Parse(inParam["teamId"].ToString()); + apiResult.Data = new + { + columns = _viewBll.GetColumns(), + rows = _viewBll.GetListByHalfMaterialTeamId(teamId, user.FID, out List materialId, out string FGuaranteePeriod, out string FStorageConditions, !inParam.ContainsKey("FAllView")), + infos = _viewBll.GetMaterialInfoList(materialId, FGuaranteePeriod, FStorageConditions, user.FID), + types = _viewBll.GetMaterialTypeList() + }; + } + }, apiResult, Request); + } + + + + /// /// 根据物料路线ID获取物料视图 /// diff --git a/FactorySystemBll/FormulaBll.cs b/FactorySystemBll/FormulaBll.cs index b9ae9de..fda9107 100644 --- a/FactorySystemBll/FormulaBll.cs +++ b/FactorySystemBll/FormulaBll.cs @@ -29,6 +29,12 @@ namespace FactorySystemBll return AppSettingsHelper.GetSqlSugar().Queryable().Where(s => s.FDeleted != isDelete).Distinct().ToList(); } + public object GetFormulaByFTestCode(string code) + { + int isDelete = (int)Constant.DeleteCode.已删除; + return AppSettingsHelper.GetSqlSugar().Queryable().Where(s => s.FDeleted != isDelete&&s.FTestCode==code).First(); + } + public List GetList(FormulaQuery tr, out int totalNumber) { diff --git a/FactorySystemBll/HalfMaterialTeamworkBll.cs b/FactorySystemBll/HalfMaterialTeamworkBll.cs index 5e15f0c..2cbc2de 100644 --- a/FactorySystemBll/HalfMaterialTeamworkBll.cs +++ b/FactorySystemBll/HalfMaterialTeamworkBll.cs @@ -162,7 +162,7 @@ namespace FactorySystemBll //} SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); - string searchKey = string.Format(@"a.FID AS 'FID',a.FTestCode AS 'FTestCode',b.FVersionCode AS 'FVersionCode',a.FNewTestCode AS 'NewFTestCode',c.FVersionCode AS 'NewFVersionCode',c.FType,a.FAddDate,d.FName,a.FDeleted AS 'FDeleted'"); + string searchKey = string.Format(@"a.FID AS 'FID',a.FTestCode AS 'FTestCode',b.FVersionCode AS 'FVersionCode',a.FNewTestCode AS 'NewFTestCode',c.FVersionCode AS 'NewFVersionCode',c.FType,a.FAddDate,d.FName,a.FDeleted AS 'FDeleted',b.FDesc,c.FDesc AS 'NewFDesc',a.FMaterialHalfIDs"); var temp =db.Queryable((a, b, c, d) => new JoinQueryInfos(JoinType.Left, a.FTestCode == b.FTestCode, JoinType.Left, a.FNewTestCode == c.FTestCode, JoinType.Left, a.FAddUser == d.FID)).Select(searchKey); List result = db.Queryable(temp).Where(string.Join(" and ", paramName), paramVal) @@ -374,7 +374,7 @@ namespace FactorySystemBll { if (factory == null) { - string tempSql = @"select * from TFS_Factory where FID=(SELECT FCreateFactoryID FROM TFS_MaterialFTeamwork WHERE FID={0})"; + string tempSql = @"select * from TFS_Factory where FID=(SELECT FCreateFactoryID FROM TFS_HalfMaterialFTeamwork WHERE FID={0})"; factory = db.SqlQueryable(string.Format(tempSql, teamId)).First(); } if (factory != null) @@ -403,7 +403,7 @@ namespace FactorySystemBll hasCreate = isAddFormula = true; vItem.FFactoryID = teamInfo.FCreateFactoryID; vItem.FFactoryCode = teamInfo.FCreateFactoryCode; - vItem.FTeamID = teamInfo.FID; + vItem.FHalfMaterialTeamID = teamInfo.FID; vItem.FMaterialID = mItem.FID; vItem.FBaseMaterialGroup = mItem.FMaterialGroup; vItem.FBaseBasicMeter = mItem.FBaseUnit; @@ -418,7 +418,7 @@ namespace FactorySystemBll isAddFormula = true; vItem.FFactoryID = teamInfo.FProdFactoryID; vItem.FFactoryCode = teamInfo.FProdFactoryCode; - vItem.FTeamID = teamInfo.FID; + vItem.FHalfMaterialTeamID = teamInfo.FID; vItem.FMaterialID = mItem.FID; vItem.FBaseMaterialGroup = mItem.FMaterialGroup; vItem.FBaseBasicMeter = mItem.FBaseUnit; @@ -780,7 +780,7 @@ namespace FactorySystemBll /// 原配方 /// 新配方 /// - public List UpdateFormula(string testCode, string testCode2,int temId, string idList="") + public List UpdateFormula(string testCode, string testCode2,int temId, string idList="") { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); @@ -801,7 +801,7 @@ namespace FactorySystemBll db.Ado.ExecuteCommand(sql); - return ids; + return materialList; } } } diff --git a/FactorySystemBll/ViewBll.cs b/FactorySystemBll/ViewBll.cs index bbeda3c..6b46844 100644 --- a/FactorySystemBll/ViewBll.cs +++ b/FactorySystemBll/ViewBll.cs @@ -197,6 +197,70 @@ namespace FactorySystemBll } + + /// + /// 根据替换物料TeamID获取物料视图 + /// + public List> GetListByHalfMaterialTeamId(int teamId, int currUserId, out List materialId, out string FGuaranteePeriod, out string FStorageConditions, bool byFactory = true) + { + TUser currUser = null; + FGuaranteePeriod = ""; + FStorageConditions = ""; + //if (byFactory == true) currUser = BaseBll.GetTempModel(currUserId, "FFactoryID"); + var db = AppSettingsHelper.GetSqlSugar(); + List> viewList = db.Queryable((a, b) => + new JoinQueryInfos(JoinType.Inner, a.FMaterialID == b.FID)) + .Where((a, b) => a.FHalfMaterialTeamID == teamId) + //.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID) + .Select("distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode").ToDictionaryList(); + + + foreach (var item in viewList) + { + if (item["FViewType"].ToString() == "1") + { + int viewType = int.Parse(item["FViewType"].ToString()); + if (viewType == 1) + { + List> viewList1 = db.Queryable((a, b) => + new JoinQueryInfos(JoinType.Inner, a.FMaterialID == b.FID)) + .Where((a, b) => a.FTeamID == teamId) + .WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID) + .WhereIF(viewType > 0, (a, b) => a.FViewType == 2) + .Select("distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode").ToDictionaryList(); + List Minfo = GetMaterialInfoList(viewList1.GroupBy(s => s["FMaterialID"]).Select(s => int.Parse(s.Key.ToString())).ToList(), "", "", currUserId); + if (Minfo.Count > 0) + { + FGuaranteePeriod = Minfo[0].FGuaranteePeriod; + FStorageConditions = Minfo[0].FStorageConditions; + } + + TFS_FTeamwork teamWork = db.Queryable().Where(s => s.FID == teamId).First(); + TFS_PackageMain packAge = db.Queryable().Where(s => s.FCode == teamWork.FPackCode).First(); + + if (packAge != null) + { + item.Remove("FBaseGrossWeight"); + item.Add("FBaseGrossWeight", packAge.FGrossWeight); + item.Remove("FBaseNetWeight"); + item.Add("FBaseNetWeight", packAge.FNetWeight); + item.Remove("FBaseSpecification"); + item.Add("FBaseSpecification", packAge.FSpecs); + item.Add("HalfCode", teamWork.FMaterialHalfIDs); + } + var FBaseMaterialDesc = viewList1.GroupBy(s => s["FBaseMaterialDesc"]).Select(s => s.Key).ToList(); + + if (FBaseMaterialDesc.Count > 0) + { + viewList[0].Add("HalfDesc", FBaseMaterialDesc[0]); + } + } + } + } + materialId = viewList.GroupBy(s => s["FMaterialID"]).Select(s => int.Parse(s.Key.ToString())).ToList(); + return viewList; + } + /// /// 根据物料获取基本信息 ///