using FactorySystemBll;
using FactorySystemCommon;
using FactorySystemModel.BusinessModel;
using FactorySystemModel.EnumModel;
using FactorySystemModel.ResponseModel;
using FactorySystemModel.SqlSugarModel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Web.Http;
using FactorySystemModel.RequestModel;
using System.Reflection;
using System.Data;
using System.IO;
using System.Web.UI.WebControls;
using System.Linq;
namespace FactorySystemApi.Controllers
{
///
/// 协同接口
///
[UserLoginFilter]
public class MaterialTeamworkController : ApiController {
///
/// 数据处理层
///
public readonly BaseBll BaseBll = new BaseBll();
///
/// 数据处理层-路线处理
///
private readonly MaterialTeamworkBll MaterialTeamworkBll = new MaterialTeamworkBll();
///
/// 数据处理层-任务处理
///
private readonly MaterialTaskBll MaterialTaskBll = new MaterialTaskBll();
///
/// 事项操作日志
///
private readonly OperateLogBll OperateLogBll = new OperateLogBll();
///
/// 初始化
///
private readonly BaseController baseController = new BaseController();
public MaterialTeamworkController()
{
}
#region 物料新增
///
/// 新增物料路线
///
[HttpPost]
public ApiResult CreateMaterial(Dictionary inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo;
TFS_Factory factory = BaseBll.GetTempModel(int.Parse(inParam["FCreateFactoryID"].ToString()));
Dictionary result = new Dictionary();
inParam.Remove("FID");
string materialName = inParam["FMaterialName"].ToString();
TFS_Material existMaterial = BaseBll.GetTempModel("FName='" + materialName + "'");
if (existMaterial != null)
{
result.Add("TaskId", -8);
}
else
{
inParam.TryGetValue("FState", out object state);
if (null == state)
{
inParam["FState"] = state = 1;
}
if (inParam.ContainsKey("FAddUser"))
{
inParam["FAddUser"] = user.FID;
}
else
{
inParam.Add("FAddUser", user.FID);
}
if (inParam.ContainsKey("FAddDate"))
{
inParam["FAddDate"] = DateTime.Now;
}
else
{
inParam.Add("FAddDate", DateTime.Now);
}
if (inParam.ContainsKey("FEditUser"))
{
inParam["FEditUser"] = user.FID;
}
else
{
inParam.Add("FEditUser", user.FID);
}
if (inParam.ContainsKey("FEditDate"))
{
inParam["FEditDate"] = DateTime.Now;
}
else
{
inParam.Add("FEditDate", DateTime.Now);
}
if (inParam.ContainsKey("FCreateFactoryID"))
{
inParam.Remove("FCreateFactoryID");
}
inParam.Add("FCreateFactoryID", factory.FID);
inParam.Add("FCreateFactoryCode", factory.FCode);
inParam.Add("FCreateFactoryType", factory.FType);
if (factory.FType != (int)Constant.FactoryType.单工厂)
{
TFS_Factory prodFactory = BaseBll.GetTempModel(factory.FFactoryID);
inParam.Add("FProdFactoryID", prodFactory.FID);
inParam.Add("FProdFactoryCode", prodFactory.FCode);
}
else
{
inParam.Add("FProdFactoryID", factory.FID);
inParam.Add("FProdFactoryCode", factory.FCode);
}
inParam.Add("FTeamworkType", 1);
// 获取具备相应权限的用户
List users = MaterialTaskBll.GetTaskUsers(0, "10", factory.FID);
// 如果没有获取到用户,则不创建路线、任务、物料和视图
if (users != null && users.Count > 0)
{
int teamId = BaseBll.InsertDataModel(inParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
if (teamId > 0)
{
inParam.Add("FID", teamId);
if (state.ToString().Contains("1"))
{
TFS_FMaterialTeamwork teamwork = BaseBll.GetTempModel(teamId);
// 创建物料和物料视图
Dictionary materialInfo = CreateMaterialData(inParam, factory, teamwork);
if (materialInfo.ContainsKey("FMaterialCode") && !string.IsNullOrEmpty(materialInfo["FMaterialCode"].ToString()))
{
teamwork.FMaterialCode = materialInfo["FMaterialCode"].ToString();
MaterialTeamworkBll.UpdateMaterialTeamwork(teamwork);
}
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);
}
///
/// 查询物料路线
///
[HttpPost]
public ApiResult GetPageList(MaterialTeamworkQuery mtq)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (mtq.FIsUser && Request.Properties["token"] is ApiAuthInfo user)
{
mtq.FUserID = user.FID;
}
List