From a5efbf331c34403bd067e73761d7aa4e48e75094 Mon Sep 17 00:00:00 2001 From: Leo Date: Tue, 22 Aug 2023 11:49:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E9=AA=8C=E5=8F=B7=E8=B7=AF=E7=BA=BF?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8F=98=E6=9B=B4=201=E3=80=81=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=202=E3=80=81=E5=A2=9E=E5=8A=A0=E5=B7=A5=E8=89=BA?= =?UTF-8?q?=E8=B7=AF=E7=BA=BF=E8=A7=86=E5=9B=BE=E3=80=81=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/HalfMaterialTaskController.cs | 109 ++++++++++++++++++ .../Controllers/ViewController.cs | 10 ++ FactorySystemBll/HalfMaterialTaskBll.cs | 77 +++++++++++++ 3 files changed, 196 insertions(+) diff --git a/FactorySystemApi/Controllers/HalfMaterialTaskController.cs b/FactorySystemApi/Controllers/HalfMaterialTaskController.cs index bf27c52..8ba55e5 100644 --- a/FactorySystemApi/Controllers/HalfMaterialTaskController.cs +++ b/FactorySystemApi/Controllers/HalfMaterialTaskController.cs @@ -41,5 +41,114 @@ namespace FactorySystemApi.Controllers }, apiResult, Request); } + /// + /// 组编号申请 + /// + [HttpPost] + public ApiResult DockMaterialGroup(Dictionary inParam) + { + ApiResult apiResult = new ApiResult(); + return ExceptionHelper.TryReturnException(() => + { + apiResult.Data = 0; + List viewList = _taskBll.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].FHalfMaterialTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接成功", user.FID); + apiResult.Data = _taskBll.DockMaterialGroup(viewList, user.FID); + } + else + { + string errorMsg = ""; + foreach (dt_pp071_resDATA res in resData) + { + errorMsg += res.MATNR + " :" + res.MSGTX; + } + OperateLogBll.Add(2, viewList[0].FHalfMaterialTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + errorMsg + "。", user.FID); + apiResult.Data = 0; + } + } + catch (Exception ex) + { + ExceptionHelper.WriteMessage("组编号申请对接失败:" + ex.Message, 1); + OperateLogBll.Add(2, viewList[0].FTeamID, (int)Constant.TaskType.组编号申请, "组编号申请对接失败:" + ex.Message, user.FID); + } + } + }, apiResult, Request, inParam); + } + } } diff --git a/FactorySystemApi/Controllers/ViewController.cs b/FactorySystemApi/Controllers/ViewController.cs index 9472eeb..2af327c 100644 --- a/FactorySystemApi/Controllers/ViewController.cs +++ b/FactorySystemApi/Controllers/ViewController.cs @@ -305,6 +305,16 @@ namespace FactorySystemApi.Controllers halfMaterialTaskBll.CloseHalfMaterialTask(teamId, user.FID, (int)Constant.HalfMaterialProcessType.物料分类); BaseBll.CreateTaskData2(teamId, user.FID, "2"); + // 修改路线,增加生产工艺路线视图和生产版本视图 + TFS_HalfMaterialFTeamwork teamwork = BaseBll.GetTempModel(teamId); + if (!teamwork.FViewType.Contains("3") && !teamwork.FViewType.Contains("4")) + { + teamwork.FViewType = teamwork.FViewType + ",3,4"; + BaseBll.UpdateDataModel(teamwork); + } + // 增加组编号申请事项 + BaseBll.CreateTaskData2(teamId, user.FID, "8"); + BaseBll.UpdateTeamProcess2(teamId, (int)Constant.HalfMaterialProcessType.物料分类, 2, 2); BaseBll.UpdateTeamProcess2(teamId, (int)Constant.HalfMaterialProcessType.物料编辑, 2, 1); diff --git a/FactorySystemBll/HalfMaterialTaskBll.cs b/FactorySystemBll/HalfMaterialTaskBll.cs index ddb04a5..41d0006 100644 --- a/FactorySystemBll/HalfMaterialTaskBll.cs +++ b/FactorySystemBll/HalfMaterialTaskBll.cs @@ -89,5 +89,82 @@ namespace FactorySystemBll } return result; } + + /// + /// 组编号申请获取视图 + /// + public List GetDockGroupView(Dictionary inParam) + { + int teamId = int.Parse(inParam["FTeamID"].ToString()); + SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); + TFS_HalfMaterialFTeamwork 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.FHalfMaterialTeamID == teamId && 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().FHalfMaterialTeamID; + foreach (var view in viewList) + { + result += db.Updateable(new { FGroupCode = view.FGroupCode, FEditUser = userId, FEditDate = DateTime.Now }) + .Where(s => s.FHalfMaterialTeamID == teamId && s.FMaterialID == view.FMaterialID && s.FViewType == view.FViewType).ExecuteCommand(); + } + string taskSql = GetTaskSql(-1, 2, teamId, (int)Constant.TaskType.组编号申请, 2); + taskSql += GetProcessSql(teamId, (int)Constant.ProcessType.生成版本, "F3", 2); + db.Ado.ExecuteCommand(taskSql); + HalfMaterialTeamworkBll.ChangeTeamProcess(teamId); + 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.FTeamID={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_HalfMaterialTask a where {1} {2};", updateSql, string.Join(" and ", whereSql), sqlAppend); + } + + /// + /// 流程变更SQL语句 + /// + private string GetProcessSql(int teamId, int proType, string viewDesc, int proState, string sqlAppend = "") + { + string timeSql = proState.ToString(); + if (proState == 1) timeSql += ",FStartDate=getdate()"; + else if (proState == 2) timeSql += ",FFinishDate=getdate()"; + return string.Format(@"update a set a.FDesc=(select {2} from TBasicCode where FType=34 and FValue={1}), + FState={3} from TFS_HalfMaterialFTeamProcess a where a.FTeamID={0} {5} and FType={1} {4};", teamId, + proType, viewDesc, timeSql, sqlAppend, proState > 0 ? ("and FState<" + proState) : ""); + } } }