修改物料新增路线的权限

master
leo 3 years ago
parent d3b0e7b80f
commit a603c1d45b

@ -13,6 +13,7 @@ using System.Reflection;
using System.Data;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;
namespace FactorySystemApi.Controllers
{
@ -127,37 +128,48 @@ namespace FactorySystemApi.Controllers
}
inParam.Add("FTeamworkType", 1);
// 获取具备相应权限的用户
List<TUser> users = MaterialTaskBll.GetTaskUsers(0, "10", factory.FID);
int teamId = BaseBll.InsertDataModel(inParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
if (teamId > 0)
// 如果没有获取到用户,则不创建路线、任务、物料和视图
if (users != null && users.Count > 0)
{
inParam.Add("FID", teamId);
int teamId = BaseBll.InsertDataModel(inParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
if (state.ToString().Contains("1"))
if (teamId > 0)
{
TFS_FMaterialTeamwork teamwork = BaseBll.GetTempModel<TFS_FMaterialTeamwork>(teamId);
// 创建物料和物料视图
Dictionary<string, object> materialInfo = CreateMaterialData(inParam, factory, teamwork);
inParam.Add("FID", teamId);
if (materialInfo.ContainsKey("FMaterialCode") && !string.IsNullOrEmpty(materialInfo["FMaterialCode"].ToString()))
if (state.ToString().Contains("1"))
{
teamwork.FMaterialCode = materialInfo["FMaterialCode"].ToString();
MaterialTeamworkBll.UpdateMaterialTeamwork(teamwork);
}
TFS_FMaterialTeamwork teamwork = BaseBll.GetTempModel<TFS_FMaterialTeamwork>(teamId);
foreach(string key in materialInfo.Keys)
{
result.Add(key, materialInfo[key]);
}
// 创建物料和物料视图
Dictionary<string, object> materialInfo = CreateMaterialData(inParam, factory, teamwork);
if (materialInfo.ContainsKey("FMaterialCode") && !string.IsNullOrEmpty(materialInfo["FMaterialCode"].ToString()))
{
teamwork.FMaterialCode = materialInfo["FMaterialCode"].ToString();
MaterialTeamworkBll.UpdateMaterialTeamwork(teamwork);
}
// 创建物料分类任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, 1, user.FID, 0, factory.FID);
result.Add("TaskId", taskId);
foreach (string key in materialInfo.Keys)
{
result.Add(key, materialInfo[key]);
}
// 创建物料分类任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, 1, user.FID, 0, factory.FID, users);
result.Add("TaskId", taskId);
}
}
}
else
{
result.Add("TaskId", -9);
}
apiResult.Data = result;
}, apiResult, Request, inParam);
@ -219,6 +231,7 @@ namespace FactorySystemApi.Controllers
{
var apiResult = new ApiResult();
int step = -1;
Dictionary<string, object> result = new Dictionary<string, object>();
return ExceptionHelper.TryReturnException(() => {
if (Request.Properties["token"] is ApiAuthInfo user)
@ -232,6 +245,8 @@ namespace FactorySystemApi.Controllers
int teamId = int.Parse(inParam["FTeamID"].ToString());
int teamworkType = int.Parse(inParam["FTeamworkType"].ToString());
string viewType = GetViewType(viewList);
// 更新视图
MaterialTeamworkBll.UpdateMaterialViewById(viewList, user.FID, teamId, teamworkType);
// 更新物料
@ -252,61 +267,49 @@ namespace FactorySystemApi.Controllers
}
else if((task = tasks.FindLast(t => t.FType == 1)) != null)
{
// 结束物料编辑任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 1);
// 创建物料确认任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 2, task.FFactoryID);
List<TUser> users = MaterialTaskBll.GetTaskUsers(0, viewType, task.FFactoryID);
if (users != null && users.Count > 0)
{
// 结束物料编辑任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 1);
// 创建物料确认任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 2, task.FFactoryID, users);
result.Add("TaskId", taskId);
}
else
{
result.Add("TaskId", -9);
}
}
else if ((task = tasks.FindLast(t => t.FType == 0)) != null)
{
// 结束物料分类任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 0);
// 创建物料编辑任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 1, task.FFactoryID);
List<TUser> users = MaterialTaskBll.GetTaskUsers(0, viewType, task.FFactoryID);
if (users != null && users.Count > 0)
{
// 结束物料分类任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 0);
// 创建物料编辑任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 1, task.FFactoryID, users);
result.Add("TaskId", taskId);
}
else
{
result.Add("TaskId", -9);
}
}
//if (tasks != null && tasks.Count == 1)
//{
// TFS_FMaterialTask task = tasks[0];
// if (task.FType == 0)
// {
// // 结束物料分类任务
// MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 0);
// // 创建物料编辑任务
// int taskId = MaterialTaskBll.CreateMaterialTask(teamId, user.FID, 1, task.FFactoryID);
// }
//}
//else if (tasks.Count == 2)
//{
// TFS_FMaterialTask task = tasks.FindLast(t => t.FType == 1);
// if (task != null)
// {
// // 结束物料编辑任务
// MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 1);
// // 创建物料确认任务
// int taskId = MaterialTaskBll.CreateMaterialTask(teamId, user.FID, 2, task.FFactoryID);
// }
//}
//else if (tasks.Count == 3)
//{
// TFS_FMaterialTask task = tasks.FindLast(t => t.FType == 2);
// if (task != null)
// {
// // 结束物料确认任务
// MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 2);
// MaterialTeamworkBll.CloseMaterialTeamwork(teamId, user.FID);
// }
//}
apiResult.Data = teamId;
result.Add("TeamId", teamId);
apiResult.Data = result;
}
}, apiResult, Request, inParam);
}
private Dictionary<string, object> CreateMaterialData(Dictionary<string, object> inParam, TFS_Factory factory, TFS_FMaterialTeamwork teamwork)
{
Dictionary<string, object> result = new Dictionary<string, object>();
@ -432,70 +435,79 @@ namespace FactorySystemApi.Controllers
result.Add("ViewId", vmId);
}
// 设置物料修改路线
teamworkParam.Add("FTeamworkType", 2); // 路线类型-修改
teamworkParam.Add("FState", 1); // 路线状态-进行中
teamworkParam.Add("FMaterialCode", material.FCode); // 物料编号
teamworkParam.Add("FMaterialName", material.FName); // 物料描述
teamworkParam.Add("FTestCode", material.FTestCode); // 试验号
teamworkParam.Add("FMaterialType", material.FType); // 物料类型产品分类TBasicCode.FType=32
teamworkParam.Add("FMaterialGroup", material.FMaterialGroup); // 物料组TDataCode.FType=2
teamworkParam.Add("FWeightUnit", material.FBaseUnit); // 计量单位
teamworkParam.Add("FAddUser", user.FID); // 创建用户
teamworkParam.Add("FAddDate", DateTime.Now); // 创建时间
teamworkParam.Add("FEditUser", user.FID); // 修改用户
teamworkParam.Add("FEditDate", DateTime.Now); // 修改时间
teamworkParam.Add("FCreateFactoryID", factory.FID); // 工厂ID
teamworkParam.Add("FCreateFactoryCode", factory.FCode); // 工厂Code
teamworkParam.Add("FCreateFactoryType", factory.FType); // 工厂类型
// 如果当前模式是委托,获取委托工厂
if (factory.FType == 1)
{
int prodFactoryId = factory.FFactoryID;
prodFactory = BaseBll.GetTempModel<TFS_Factory>(prodFactoryId);
teamworkParam.Add("FProdFactoryID", prodFactory.FID); // 委托工厂ID
teamworkParam.Add("FProdFactoryCode", prodFactory.FCode); // 委托工厂Code
prodView = MaterialTeamworkBll.GetMaterialViewsByFactoryAndMaterial(prodFactoryId, materialId);
// 新增委托工厂视图
if (prodView == null)
List<TUser> users = MaterialTaskBll.GetTaskUsers(0, view.FMRP1ProductType, factory.FID);
if (users == null || users.Count > 0)
{
// 设置物料修改路线
teamworkParam.Add("FTeamworkType", 2); // 路线类型-修改
teamworkParam.Add("FState", 1); // 路线状态-进行中
teamworkParam.Add("FMaterialCode", material.FCode); // 物料编号
teamworkParam.Add("FMaterialName", material.FName); // 物料描述
teamworkParam.Add("FTestCode", material.FTestCode); // 试验号
teamworkParam.Add("FMaterialType", material.FType); // 物料类型产品分类TBasicCode.FType=32
teamworkParam.Add("FMaterialGroup", material.FMaterialGroup); // 物料组TDataCode.FType=2
teamworkParam.Add("FWeightUnit", material.FBaseUnit); // 计量单位
teamworkParam.Add("FAddUser", user.FID); // 创建用户
teamworkParam.Add("FAddDate", DateTime.Now); // 创建时间
teamworkParam.Add("FEditUser", user.FID); // 修改用户
teamworkParam.Add("FEditDate", DateTime.Now); // 修改时间
teamworkParam.Add("FCreateFactoryID", factory.FID); // 工厂ID
teamworkParam.Add("FCreateFactoryCode", factory.FCode); // 工厂Code
teamworkParam.Add("FCreateFactoryType", factory.FType); // 工厂类型
// 如果当前模式是委托,获取委托工厂
if (factory.FType == 1)
{
prodView = Clone(view);
prodView.FFactoryID = prodFactoryId;
prodView.FFactoryCode = prodFactory.FCode;
prodView.FAddDate = DateTime.Now;
int prodFactoryId = factory.FFactoryID;
prodFactory = BaseBll.GetTempModel<TFS_Factory>(prodFactoryId);
teamworkParam.Add("FProdFactoryID", prodFactory.FID); // 委托工厂ID
teamworkParam.Add("FProdFactoryCode", prodFactory.FCode); // 委托工厂Code
prodView = MaterialTeamworkBll.GetMaterialViewsByFactoryAndMaterial(prodFactoryId, materialId);
// 新增委托工厂视图
if (prodView == null)
{
prodView = Clone(view);
prodView.FFactoryID = prodFactoryId;
prodView.FFactoryCode = prodFactory.FCode;
prodView.FAddDate = DateTime.Now;
// 插入视图
int prodVmId = MaterialTeamworkBll.InsertMaterialView(prodView);
prodView.FID = prodVmId;
// 插入视图
int prodVmId = MaterialTeamworkBll.InsertMaterialView(prodView);
prodView.FID = prodVmId;
result.Add("ProdViewId", prodVmId);
result.Add("ProdViewId", prodVmId);
}
}
}
// 创建物料修改路线
int teamId = BaseBll.InsertDataModel(teamworkParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
// 创建物料修改路线
int teamId = BaseBll.InsertDataModel(teamworkParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
// 更新视图
view.FMdfMaterialTeamID = teamId;
view.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(view);
// 更新视图
view.FMdfMaterialTeamID = teamId;
view.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(view);
if (prodView != null)
{
prodView.FMdfMaterialTeamID = teamId;
prodView.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(prodView);
}
if (prodView != null)
// 创建物料修改事项
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, 2, user.FID, 1, factory.FID, users);
result.Add("TaskId", taskId);
}
else
{
prodView.FMdfMaterialTeamID = teamId;
prodView.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(prodView);
result.Add("TaskId", -9);
}
// 创建物料修改事项
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, 2, user.FID, 1, factory.FID);
result.Add("TaskId", taskId);
apiResult.Data = result;
}, apiResult, Request);
@ -544,6 +556,44 @@ namespace FactorySystemApi.Controllers
return result;
}
private string GetViewType(List<Dictionary<string, object>> viewList)
{
string vType = null;
if (viewList != null && viewList.Count > 0)
{
Dictionary<string, object> view = viewList[0];
// 成品视图
if (view.ContainsKey("FMRP1ProductType") && "10".Equals(view["FMRP1ProductType"].ToString()))
{
vType = "1";
}
// 半成品视图
else if (view.ContainsKey("FMRP1ProductType") && "20".Equals(view["FMRP1ProductType"].ToString()))
{
vType = "2";
}
// 中间品视图
else if (view.ContainsKey("FMRP1ProductType") && "30".Equals(view["FMRP1ProductType"].ToString()))
{
vType = "3";
// 香基视图
if (view.ContainsKey("FBaseMaterialDesc") && view["FBaseMaterialDesc"].ToString().Contains("香基"))
{
vType = "4";
}
}
// 原料视图
else if (view.ContainsKey("FMRP1ProductType") && "40".Equals(view["FMRP1ProductType"].ToString()))
{
vType = "5";
}
}
return vType;
}
#endregion
public T Clone<T>(T obj) where T : class

@ -48,36 +48,15 @@ namespace FactorySystemBll
/// <summary>
/// 创建物料新增事项
/// </summary>
public int CreateMaterialTask(int teamId, int teamworkType, int userId, int type, int factoryId)
public int CreateMaterialTask(int teamId, int teamworkType, int userId, int type, int factoryId, List<TUser> users)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
int funcType = (int)Constant.RoleType.;
string tType = type == 0 ? "10" : "11";
int taskId = -1;
try
{
List<string> funcVal = db.Queryable<TBasicCode>().Where(s => s.FType == (int)Constant.BasicCode. && s.F1 == tType && s.FState == 1).Select(s => s.FValue).ToList();
//List<TUser> users = db.Queryable<TUser, TRole_Right, FPower>((a, b, c) => new JoinQueryInfos(JoinType.Left, a.FRoleID == b.FRoleID,
// JoinType.Left, a.FID == int.Parse(c.FUserID)))
// .Where((a, b) => a.FState == 1 && a.FDeleted != 1 && b.FType == funcType && funcVal.Contains(b.FFunctionID.ToString()))
// .Where(factoryId<=0 ? "1=1" : string.Format("c.FFactoryID in({0})", factoryId))
// .GroupBy("a.FID,c.FFactoryID,a.FName,a.FUser").Select<TUser>("a.FID,c.FFactoryID,a.FName,a.FUser").ToList();
List<TUser> users = db.Queryable<FPower, TUser, TRole_Right>((a, b, c) => new JoinQueryInfos(
JoinType.Left, a.FUserID.Equals(b.FID.ToString()),
JoinType.Left, a.FRole.Equals(c.FRoleID.ToString())
))
.Where((a, b, c) => factoryId.ToString().Contains(a.FFactoryID))
.Where((a, b, c) => b.FState == 1 && b.FDeleted != 1)
.Where((a, b, c) => c.FType == funcType && funcVal.Contains(c.FFunctionID.ToString()))
.GroupBy("b.FID, a.FFactoryID, b.FName, b.FUser")
.Select<TUser>("b.FID, cast(a.FFactoryID as int), b.FName, b.FUser")
.ToList();
if (users.Count > 0)
{
TFS_FMaterialTask materialTask = new TFS_FMaterialTask();
materialTask.FMaterialTeamID = teamId;
materialTask.FType = type;
@ -87,6 +66,8 @@ namespace FactorySystemBll
materialTask.FAddDate = DateTime.Now;
materialTask.FState = 1;
materialTask.FTeamworkType = teamworkType;
materialTask.FUserID = string.Join(",", users.GroupBy(ss => ss.FID).Select(sss => sss.Key));
materialTask.FUserName = string.Join("、", users.GroupBy(ss => ss.FName).Select(sss => sss.Key));
if (type == 0)
{
@ -104,9 +85,6 @@ namespace FactorySystemBll
materialTask.FDesc = "物料视图确认";
}
materialTask.FUserID = string.Join(",", users.GroupBy(ss => ss.FID).Select(sss => sss.Key));
materialTask.FUserName = string.Join("、", users.GroupBy(ss => ss.FName).Select(sss => sss.Key));
taskId = db.Insertable(materialTask).IgnoreColumns(true).ExecuteReturnIdentity();
}
}
@ -138,5 +116,44 @@ namespace FactorySystemBll
return result;
}
/**
* 20230505 BUG
* 线
* **/
public List<TUser> GetTaskUsers(int taskType, string viewType, int factoryId)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<TUser> users = null;
string funcType = null;
List<string> funcVal = null;
// 物料分类任务 | 物料编辑任务
if (taskType == 0 || taskType == 1)
{
funcType = "4, 5";
funcVal = db.Queryable<TBasicCode>().Where(s => (s.FType == (int)Constant.BasicCode. || s.FType == (int)Constant.BasicCode.) &&
viewType.Equals(s.F1) && // 视图编辑中的物料分类
s.FState == 1).Select(s => s.FValue).ToList();
}
// 物料确认任务
else if (taskType == 2)
{
funcType = "2";
funcVal = new List<string> { "7" };
}
users = db.Queryable<FPower, TUser, TRole_Right>((a, b, c) => new JoinQueryInfos(
JoinType.Left, a.FUserID.Equals(b.FID.ToString()),
JoinType.Left, a.FRole.Equals(c.FRoleID.ToString())))
.Where((a, b, c) => factoryId.ToString().Contains(a.FFactoryID))
.Where((a, b, c) => b.FState == 1 && b.FDeleted != 1)
.Where((a, b, c) => funcType.Contains(c.FType.ToString()) && funcVal.Contains(c.FFunctionID.ToString()))
.GroupBy("b.FID, a.FFactoryID, b.FName, b.FUser")
.Select<TUser>("b.FID, cast(a.FFactoryID as int), b.FName, b.FUser")
.ToList();
return users;
}
}
}

@ -210,7 +210,7 @@ namespace FactorySystemBll
for (int i = 0; i < viewList.Count; i++)
{
//判断是否等于中间品
if (viewList[i]["FMRP1Type"].ToString() == "30")
if (viewList[i]["FMRP1ProductType"].ToString() == "30")
{
TFS_MaterialType materialType = materialTypeBll.GetMaterialTypeByID(int.Parse(viewList[i]["FTypeID2"].ToString())).LastOrDefault();
if (materialType.FName.Contains("香基"))

@ -171,8 +171,8 @@ namespace FactorySystemBll
factoryID = fTeamwork.FCreateFactoryID;
break;
case 1:
TFS_MaterialFTeamwork materialFTeamwork = BaseBll.GetTempModel<TFS_MaterialFTeamwork>("FID=" + teamId.ToString());
factoryID = materialFTeamwork.FCreateFactoryID;
TFS_FMaterialTeamwork FMaterialTeamwork = BaseBll.GetTempModel<TFS_FMaterialTeamwork>("FID=" + teamId.ToString());
factoryID = FMaterialTeamwork.FCreateFactoryID;
break;
case 2:
TFS_HalfMaterialFTeamwork halfMaterialFTeamwork = BaseBll.GetTempModel<TFS_HalfMaterialFTeamwork>("FID=" + teamId.ToString());

Loading…
Cancel
Save