From 2495dc5b1deebafdc310325bc0ea54523742b4fa Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 25 Aug 2023 16:40:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=96=99=E8=B7=AF=E7=BA=BF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=BB=84=E7=BC=96=E5=8F=B7=E7=94=B3=E8=AF=B7=E4=BA=8B?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/HalfMaterialTaskController.cs | 2 +- .../Controllers/MaterialTaskController.cs | 111 ++++++++++++++++++ .../Controllers/MaterialTeamworkController.cs | 6 + FactorySystemBll/MaterialTaskBll.cs | 67 +++++++++++ 4 files changed, 185 insertions(+), 1 deletion(-) diff --git a/FactorySystemApi/Controllers/HalfMaterialTaskController.cs b/FactorySystemApi/Controllers/HalfMaterialTaskController.cs index 8ba55e5..946972c 100644 --- a/FactorySystemApi/Controllers/HalfMaterialTaskController.cs +++ b/FactorySystemApi/Controllers/HalfMaterialTaskController.cs @@ -144,7 +144,7 @@ namespace FactorySystemApi.Controllers catch (Exception ex) { ExceptionHelper.WriteMessage("组编号申请对接失败:" + ex.Message, 1); - OperateLogBll.Add(2, viewList[0].FTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + ex.Message, user.FID); + OperateLogBll.Add(2, viewList[0].FHalfMaterialTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + ex.Message, user.FID); } } }, apiResult, Request, inParam); diff --git a/FactorySystemApi/Controllers/MaterialTaskController.cs b/FactorySystemApi/Controllers/MaterialTaskController.cs index dcbaf5e..8c07a9e 100644 --- a/FactorySystemApi/Controllers/MaterialTaskController.cs +++ b/FactorySystemApi/Controllers/MaterialTaskController.cs @@ -40,5 +40,116 @@ namespace FactorySystemApi.Controllers }; }, apiResult, Request); } + + /// + /// 组编号申请 + /// + [HttpPost] + public ApiResult DockMaterialGroup(Dictionary inParam) + { + ApiResult apiResult = new ApiResult(); + return ExceptionHelper.TryReturnException(() => + { + apiResult.Data = 0; + List viewList = MaterialTaskBll.GetDockGroupView(inParam); + if (viewList.Count > 0) + { + ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo; + try + { + List itemList = new List(); + foreach (TFS_ViewMaterial view in viewList) + { + TFS_Material material = BaseBll.GetTempModel(view.FMaterialID); + Sap_Group.dt_pp071_reqHEAD reqHead = new Sap_Group.dt_pp071_reqHEAD + { + WERKS = view.FFactoryCode,//工厂 + DATUV = "20210101",//生效日期 + MATNR = string.IsNullOrEmpty(view.FBaseMaterialCode) ? material.FCode : view.FBaseMaterialCode,//物料 + PLNAL = "1",//组计数器 + VERWE = "1",//用途 + STATU = "4",//状态 + LOSVN = "0",//从批量 + LOSBS = "99999999",//到批量 + KTEXT = material.FCraftPathDesc,//工艺路线描述 + ITEM = new Sap_Group.dt_pp071_reqHEADITEM[1] + }; + bool is4 = view.FViewType == (int)Constant.ViewType.香基视图; + reqHead.ITEM[0] = new Sap_Group.dt_pp071_reqHEADITEM() + { + BMSCH = view.FViewType == (int)Constant.ViewType.成品视图 ? "100" : "100000", //基本数量 + PLNME = view.FViewType == (int)Constant.ViewType.成品视图 ? "KG" : "G", //工序单位 + VORNR = "0010", //工序编号 + ARBPL = material.FWorkCenter, //工作中心 + STEUS = "ZP01", //控制码 + LTXA1 = material.FCraftDesc, //工序描述 + VGW01 = is4 ? "0.01" : "1", //人工(直接) + VGE01 = "H", //人工直接工时单位 + VGW02 = "", // 人工(间接)? + VGE02 = "", //人工间接工时单位? + VGW03 = "", //机器工时 + VGE03 = "H", //机器工时单位 + VGW04 = is4 ? "0.01" : "100", //电 + VGE04 = "KWH", //电单位 + VGW05 = "", //水? + VGE05 = "", //水单位? + VGW06 = is4 ? "0.01" : "100", //蒸汽 + VGE06 = "TO", //蒸汽单位 + VGW07 = is4 ? "0.01" : "100", //物耗仓储运输 + VGE07 = "H", //物耗仓储运输单位 + VGW08 = is4 ? "0.01" : "100", //其他 + VGE08 = "H", //其他单位 + VGW09 = "", //环保支出? + VGE09 = "", //环保支出单位? + }; + itemList.Add(reqHead); + } + Sap_Group.si_pp071_mcs_senderService sapService = new Sap_Group.si_pp071_mcs_senderService() + { + Credentials = new System.Net.NetworkCredential() + { + UserName = AppSettingsHelper.GetAppSettingVal("Sap_UserName"), + Password = AppSettingsHelper.GetAppSettingVal("Sap_Password") + } + }; + Sap_Group.dt_pp071_req reqDatas = new Sap_Group.dt_pp071_req() + { + SOURCESYS = "MCS", + TARGETSYS = "SAP", + UPDATETIME = DateTime.Now.ToString("yyyyMMddHHmmss"), + HEAD = itemList.ToArray() + }; + Sap_Group.dt_pp071_resDATA[] resData = sapService.si_pp071_mcs_sender(reqDatas); + ExceptionHelper.AddSystemJournal(Request, reqDatas, resData); + for (int i = 0; i < viewList.Count; i++) + { + viewList[i].FGroupCode = (string.IsNullOrEmpty(resData[i].PLNNR) || resData[i].PLNNR == "null") ? "" : resData[i].PLNNR; + } + if (viewList.Find(s => string.IsNullOrEmpty(s.FGroupCode)) == null) + { + OperateLogBll.Add(2, viewList[0].FTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接成功", user.FID); + apiResult.Data = MaterialTaskBll.DockMaterialGroup(viewList, user.FID); + } + else + { + string errorMsg = ""; + foreach (dt_pp071_resDATA res in resData) + { + errorMsg += res.MATNR + " :" + res.MSGTX; + } + OperateLogBll.Add(2, viewList[0].FTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + errorMsg + "。", user.FID); + apiResult.Data = 0; + apiResult.Message = errorMsg; + } + } + catch (Exception ex) + { + ExceptionHelper.WriteMessage("组编号申请对接失败:" + ex.Message, 1); + OperateLogBll.Add(2, viewList[0].FTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + ex.Message, user.FID); + apiResult.Message = ex.Message; + } + } + }, apiResult, Request, inParam); + } } } diff --git a/FactorySystemApi/Controllers/MaterialTeamworkController.cs b/FactorySystemApi/Controllers/MaterialTeamworkController.cs index 84330ee..3011311 100644 --- a/FactorySystemApi/Controllers/MaterialTeamworkController.cs +++ b/FactorySystemApi/Controllers/MaterialTeamworkController.cs @@ -372,6 +372,12 @@ namespace FactorySystemApi.Controllers // 创建物料编辑任务 int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 1, currentTask.FFactoryID, users); result.Add("TaskId", taskId); + + // 非原料视图情况下,创建工艺组编号申请任务 + if (!"5".Equals(viewType)) + { + MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 8, currentTask.FFactoryID, users); + } } else { diff --git a/FactorySystemBll/MaterialTaskBll.cs b/FactorySystemBll/MaterialTaskBll.cs index f3a4b98..84d4566 100644 --- a/FactorySystemBll/MaterialTaskBll.cs +++ b/FactorySystemBll/MaterialTaskBll.cs @@ -80,6 +80,11 @@ namespace FactorySystemBll materialTask.FName = "物料视图"; materialTask.FDesc = "物料视图编辑"; } + else if (type == 8) + { + materialTask.FName = "工艺组编号申请"; + materialTask.FDesc = "工艺组编号申请"; + } else { materialTask.FName = "确认视图"; @@ -178,5 +183,67 @@ namespace FactorySystemBll return users; } + + /// + /// 组编号申请获取视图 + /// + public List GetDockGroupView(Dictionary inParam) + { + int teamId = int.Parse(inParam["FTeamID"].ToString()); + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + TFS_FMaterialTeamwork teamwork = db.Queryable().Where(s => s.FID == teamId).First(); + List viewType = new List + { + (int)Constant.ViewType.半成品视图, + (int)Constant.ViewType.中间品视图, + (int)Constant.ViewType.香基视图 + }; + return db.Queryable().Where(s => s.FTeamID == teamId && s.FTeamType == 1 && s.FFactoryID == teamwork.FProdFactoryID + && SqlFunc.IsNullOrEmpty(s.FGroupCode) && viewType.Contains(s.FViewType)).ToList(); + } + + /// + /// 组编号申请处理视图 + /// + public int DockMaterialGroup(List viewList, int userId) + { + int result = 0; + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + db.BeginTran(); + try + { + int teamId = viewList.First().FTeamID; + foreach (var view in viewList) + { + result += db.Updateable(new { FGroupCode = view.FGroupCode, FEditUser = userId, FEditDate = DateTime.Now }) + .Where(s => s.FTeamID == teamId && s.FTeamType == 1 && s.FMaterialID == view.FMaterialID && s.FViewType == view.FViewType).ExecuteCommand(); + } + string taskSql = GetTaskSql(-1, 2, teamId, (int)Constant.TaskType.组编号申请, 2); + db.Ado.ExecuteCommand(taskSql); + db.CommitTran(); + } + catch (Exception) + { + db.RollbackTran(); + } + return result; + } + + /// + /// 事项变更SQL语句 + /// + private string GetTaskSql(int taskId, int taskState, int teamId = -1, int taskType = -1, int taskEdit = -1, string sqlAppend = "") + { + string updateSql = string.Format("a.FState={0}", taskState); + if (taskState == 2) updateSql += ",FFinishDate=isnull(a.FFinishDate, getdate())"; + if (taskEdit > 0) updateSql += string.Format(",a.FCanEdit={0}", taskEdit); + List whereSql = new List(); + if (taskId > 0) whereSql.Add(string.Format("a.FID={0}", taskId)); + if (teamId > 0) whereSql.Add(string.Format("a.FMaterialTeamID={0}", teamId)); + if (taskType > 0) whereSql.Add(string.Format("a.FType={0}", taskType)); + if (whereSql.Count == 0 && string.IsNullOrEmpty(sqlAppend)) return ""; + if (!string.IsNullOrEmpty(sqlAppend) && whereSql.Count > 0) sqlAppend = " and " + sqlAppend; + return string.Format(@"update a set {0} from TFS_FMaterialTask a where {1} {2};", updateSql, string.Join(" and ", whereSql), sqlAppend); + } } }