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);
+ }
}
}