From 741bea9ffef48fa961b04d5aab62f956340fcd98 Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 29 Jul 2023 21:24:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=8F=E5=90=8C=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TeamworkController.cs | 101 ++++++++++++++++-- .../Controllers/ViewController.cs | 8 +- FactorySystemBll/TeamworkBll.cs | 87 +++++++++++++++ 3 files changed, 181 insertions(+), 15 deletions(-) diff --git a/FactorySystemApi/Controllers/TeamworkController.cs b/FactorySystemApi/Controllers/TeamworkController.cs index 92fc2de..c1de017 100644 --- a/FactorySystemApi/Controllers/TeamworkController.cs +++ b/FactorySystemApi/Controllers/TeamworkController.cs @@ -14,6 +14,8 @@ using Newtonsoft.Json.Linq; using FactorySystemApi.Plm_Formula; using System.Linq; using SqlSugar; +using Aspose.Cells; +using System.Web; namespace FactorySystemApi.Controllers { @@ -145,18 +147,18 @@ namespace FactorySystemApi.Controllers TeamworkBll.CreateProductView(teamwork, null, user.FID); // 20230726 不论新增或暂存,都在创建协同时生成成品事项 - //BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); - //BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); + BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); + BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); //开始BOM下载 DockGetBomData(teamwork.FID, user.FID); } else { TeamworkBll.CreateProductView(teamwork, materialList, user.FID); - + // 20230726 不论新增或暂存,都在创建协同时生成成品事项 - //BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); - //BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); + BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); + BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); TeamworkBll.HasMaterialTestCode(teamwork); @@ -189,10 +191,10 @@ namespace FactorySystemApi.Controllers else { // 20230726 不论新增或暂存,都在创建协同时生成成品事项 - //TFS_FTeamwork teamwork = BaseBll.GetTempModel(teamId); - //TeamworkBll.CreateProductView(teamwork, null, user.FID); - //BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); - //BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); + TFS_FTeamwork teamwork = BaseBll.GetTempModel(teamId); + TeamworkBll.CreateProductView(teamwork, null, user.FID); + BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); + BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); BaseBll.CreateTaskData(teamId, user.FID, ((int)Constant.TaskType.配方选择).ToString()); BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.协同发起, 1, 1); @@ -236,13 +238,20 @@ namespace FactorySystemApi.Controllers List materialList = TeamworkBll.CheckMaterialListByTest(teamwork.FTestCode, teamwork.FVersionCode); if (materialList.Count == 0) { - TeamworkBll.CreateProductView(teamwork, null, user.FID); + if (!TeamworkBll.UpdateProductView(teamwork, user.FID)) + { + TeamworkBll.CreateProductView(teamwork, null, user.FID); + } //开始BOM下载 DockGetBomData(teamwork.FID, user.FID); } else { - TeamworkBll.CreateProductView(teamwork, materialList, user.FID); + if (!TeamworkBll.UpdateProductView(teamwork, user.FID)) + { + TeamworkBll.CreateProductView(teamwork, materialList, user.FID); + } + TeamworkBll.HasMaterialTestCode(teamwork); /** @@ -267,6 +276,7 @@ namespace FactorySystemApi.Controllers //BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.成品视图, 2, 1); } TeamworkBll.ChangeTeamProcess(teamId); + TeamworkBll.CloseUpdateTeamTask(teamId); } } apiResult.Data = inParam["FID"]; @@ -795,6 +805,75 @@ namespace FactorySystemApi.Controllers return ""; } + /// + /// 获取JObject值 + /// + [HttpPost] + public ApiResult UploadTeamworkFile() + { + ApiResult apiResult = new ApiResult(); + string filePath = ""; + + return ExceptionHelper.TryReturnException(() => + { + var files = HttpContext.Current.Request.Files; + if (files != null && files.Count > 0) + { + ApiAuthInfo authInfo = Request.Properties["token"] as ApiAuthInfo; + string[] exts = ".xlsx,.xls".Split(','); + string saveBase = string.Format("/Upload/{0}/" + authInfo.FID + "/", "Teamwork"); + saveBase = System.Web.Hosting.HostingEnvironment.MapPath(saveBase); + if (!Directory.Exists(saveBase)) Directory.CreateDirectory(saveBase); + + for (int i = 0; i < files.Count; i++) + { + string ext = Path.GetExtension(files[i].FileName).ToLower(); + if (Array.IndexOf(exts, ext) != -1) + { + filePath = saveBase + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + i + ext; + files[i].SaveAs(filePath); + } + + ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo; + //apiResult.Data = CheckUploadFile(fileList, FFuncType, user.FID); + } + } + + }, apiResult, Request); + } + + /// + /// 批量上传协同信息 + /// + public int ReadTeamworkExcel(string file) + { + int teams = 0; + Workbook wb = new Workbook("file"); + Worksheet ws = wb.Worksheets[0]; + + // 遍历工作表中的所有单元格,读取其中的数据 + for (int row = 1; row <= ws.Cells.MaxDataRow; row++) + { + //ws.Cells[row, 0].Value; + + Dictionary inParam = new Dictionary(); + inParam.Add("FMaterialType", "ZMAT"); + inParam.Add("FSaleCode", ws.Cells[row, 0].Value); + inParam.Add("FPackCode", ws.Cells[row, 1].Value); + inParam.Add("FCreateFactoryID", ws.Cells[row, 2].Value); + inParam.Add("FMaterialGroup", ws.Cells[row, 3].Value); + inParam.Add("FTestCode", ws.Cells[row, 4].Value); + inParam.Add("FWeightUnit", ws.Cells[row, 5].Value); + inParam.Add("FFormulaName", ws.Cells[row, 6].Value); + inParam.Add("FState", ws.Cells[row, 7].Value); + inParam.Add("FFormulaID", ""); + inParam.Add("FVersionCode", ""); + inParam.Add("FFormulaTestCode", ""); + } + + return teams; + } + #endregion #region 内部方法 diff --git a/FactorySystemApi/Controllers/ViewController.cs b/FactorySystemApi/Controllers/ViewController.cs index d63c258..9472eeb 100644 --- a/FactorySystemApi/Controllers/ViewController.cs +++ b/FactorySystemApi/Controllers/ViewController.cs @@ -125,8 +125,6 @@ namespace FactorySystemApi.Controllers { var apiResult = new ApiResult(); - - return ExceptionHelper.TryReturnException(() => { if (!string.IsNullOrWhiteSpace(inParam["tempId"].ToString())) { @@ -220,7 +218,8 @@ namespace FactorySystemApi.Controllers //补充包材规格 BaseBll.CreateTaskData(teamId, user.FID, "14"); //成品视图 - BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); + // 20230726 成品事项新增改到新增协同时创建 + //BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID); //成品视图物料组复核,有权限的所有 BaseBll.CreateTaskData(teamwork.FID, user.FID, "12"); teamwork = BaseBll.GetTempModel(teamId); @@ -235,7 +234,8 @@ namespace FactorySystemApi.Controllers 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); + // 20230726 成品事项新增改到新增协同时创建 + // BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType.成品视图, 2, 1); SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); //List TFS_Materials= db.Queryable().Where(m => m.FTestCode == teamwork.FTestCode).ToList(); diff --git a/FactorySystemBll/TeamworkBll.cs b/FactorySystemBll/TeamworkBll.cs index 23cf128..a2ecb4a 100644 --- a/FactorySystemBll/TeamworkBll.cs +++ b/FactorySystemBll/TeamworkBll.cs @@ -700,6 +700,93 @@ namespace FactorySystemBll return true; } + // 20230728 确认暂存的协同时,根据修改的协同信息,更新已存在的成品视图 + public bool UpdateProductView(TFS_FTeamwork teamwork, int userId) + { + bool isProductViewExist = false; + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + + TFS_PackageMain package = db.Queryable().Where(s => s.FCode == teamwork.FPackCode).OrderBy(s => s.FID, OrderByType.Desc).First(); + + List viewList = db.Queryable() + .Where(v => v.FTeamID == teamwork.FID) + .Where(v => v.FTeamType == 0) + .Where(v => v.FViewType == 1).ToList(); + + if (viewList != null && viewList.Count > 0) + { + isProductViewExist = true; + + foreach (TFS_ViewMaterial view in viewList) + { + view.FViewType = (int)Constant.ViewType.成品视图; + view.FEditUser = userId; + view.FBaseTestCode = teamwork.FTestCode; + view.FBaseMaterialDesc = teamwork.FSaleCode; + view.FBaseMaterialGroup = teamwork.FMaterialGroup; + view.FOrganizeMaterialType = teamwork.FMaterialType; + + if (package != null) + { + view.FBaseSpecification = package != null ? package.FSpecs : ""; + view.FBaseGrossWeight = package != null ? package.FGrossWeight : ""; + view.FBaseNetWeight = package != null ? package.FNetWeight : ""; + } + + db.Updateable(view).IgnoreColumns(true).WhereColumns("FID").ExecuteCommand(); + } + + // 如果确认协同时,把单工厂改成了委托工厂,则新增一条成品视图 + if (teamwork.FCreateFactoryID != teamwork.FProdFactoryID && viewList.Count == 1) + { + TFS_ViewMaterial view = viewList[0]; + + // 如果已经存在的视图的工厂是CreateFactory,则新建一条ProdFactory,否则新建一条CreateFactory + if (view.FFactoryID == teamwork.FCreateFactoryID) + { + view.FFactoryID = teamwork.FProdFactoryID; + view.FFactoryCode = teamwork.FProdFactoryCode; + } + else + { + view.FFactoryID = teamwork.FCreateFactoryID; + view.FFactoryCode = teamwork.FCreateFactoryCode; + } + + db.Insertable(view).IgnoreColumns(true).ExecuteReturnIdentity(); + } + + // 如果确认协同时,把委托工厂改成了单工厂,则删除一条委托成品视图(把协同id改成负值) + if (teamwork.FCreateFactoryID == teamwork.FProdFactoryID && viewList.Count == 2) + { + foreach(TFS_ViewMaterial view in viewList) + { + if (view.FFactoryID != teamwork.FCreateFactoryID) + { + view.FTeamID = view.FTeamID * -1; + db.Updateable(view).IgnoreColumns(true).WhereColumns("FID").ExecuteCommand(); + } + } + } + } + + return isProductViewExist; + } + + public void CloseUpdateTeamTask(int teamId) + { + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + + TFS_Task task = db.Queryable().Where(t => t.FTeamID == teamId).Where(t => t.FType == 1).First(); + if (task != null) + { + task.FState = 2; + task.FCanEdit = 0; + + db.Updateable(task).IgnoreColumns(true).WhereColumns("FID").ExecuteCommand(); + } + } + /// /// 判断物料表里有这个实验号的数量 ///