试验号路线需求变更

1、增加组编号申请事项
2、增加工艺路线视图、生产版本视图
master
Leo 2 years ago
parent 9174a791f2
commit a5efbf331c

@ -41,5 +41,114 @@ namespace FactorySystemApi.Controllers
}, apiResult, Request);
}
/// <summary>
/// 组编号申请
/// </summary>
[HttpPost]
public ApiResult DockMaterialGroup(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
apiResult.Data = 0;
List<TFS_ViewMaterial> viewList = _taskBll.GetDockGroupView(inParam);
if (viewList.Count > 0)
{
ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo;
try
{
List<Sap_Group.dt_pp071_reqHEAD> itemList = new List<Sap_Group.dt_pp071_reqHEAD>();
foreach (TFS_ViewMaterial view in viewList)
{
TFS_Material material = BaseBll.GetTempModel<TFS_Material>(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);
}
}
}

@ -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<TFS_HalfMaterialFTeamwork>(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);

@ -89,5 +89,82 @@ namespace FactorySystemBll
}
return result;
}
/// <summary>
/// 组编号申请获取视图
/// </summary>
public List<TFS_ViewMaterial> GetDockGroupView(Dictionary<string, object> inParam)
{
int teamId = int.Parse(inParam["FTeamID"].ToString());
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
TFS_HalfMaterialFTeamwork teamwork = db.Queryable<TFS_HalfMaterialFTeamwork>().Where(s => s.FID == teamId).First();
List<int> viewType = new List<int>
{
(int)Constant.ViewType.,
(int)Constant.ViewType.,
(int)Constant.ViewType.
};
return db.Queryable<TFS_ViewMaterial>().Where(s => s.FHalfMaterialTeamID == teamId && s.FFactoryID == teamwork.FProdFactoryID
&& SqlFunc.IsNullOrEmpty(s.FGroupCode) && viewType.Contains(s.FViewType)).ToList();
}
/// <summary>
/// 组编号申请处理视图
/// </summary>
public int DockMaterialGroup(List<TFS_ViewMaterial> 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<TFS_ViewMaterial>(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;
}
/// <summary>
/// 事项变更SQL语句
/// </summary>
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<string> whereSql = new List<string>();
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);
}
/// <summary>
/// 流程变更SQL语句
/// </summary>
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) : "");
}
}
}

Loading…
Cancel
Save