You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
8.2 KiB

using System.Collections.Generic;
using System.Web.Http;
using FactorySystemBll;
using FactorySystemCommon;
using FactorySystemModel.BusinessModel;
using FactorySystemModel.ResponseModel;
using FactorySystemModel.SqlSugarModel;
using Microsoft.Ajax.Utilities;
using Newtonsoft.Json;
using FactorySystemModel.EnumModel;
using Aspose.Cells;
namespace FactorySystemApi.Controllers
{
/// <summary>
/// 视图接口
/// </summary>
[UserLoginFilter]
public class ViewController : BaseController<TFS_MaterialInfo>
{
private readonly ViewBll _viewBll = new ViewBll();
/// <summary>
/// 根据协同ID获取物料视图
/// </summary>
[HttpPost]
public ApiResult GetListByTeamId(Dictionary<string, object> inParam)
{
var apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (Request.Properties["token"] is ApiAuthInfo user)
{
int teamId = int.Parse(inParam["teamId"].ToString());
if (string.IsNullOrWhiteSpace(inParam["viewType"].ToString()))
{
apiResult.Data = new
{
columns = _viewBll.GetColumns(),
rows = _viewBll.GetListByTeamId2(teamId, user.FID, out List<int> materialId, out string FGuaranteePeriod, out string FStorageConditions, !inParam.ContainsKey("FAllView")),
infos = _viewBll.GetMaterialInfoList(materialId, FGuaranteePeriod, FStorageConditions, user.FID),
types = _viewBll.GetMaterialTypeList()
};
}
else
{
int viewType = int.Parse(inParam["viewType"].ToString());
apiResult.Data = new
{
columns = _viewBll.GetColumns(),
rows = _viewBll.GetListByTeamId(teamId, viewType, user.FID, out List<int> materialId, out string FGuaranteePeriod, out string FStorageConditions, !inParam.ContainsKey("FAllView")),
infos = _viewBll.GetMaterialInfoList(materialId, FGuaranteePeriod, FStorageConditions, user.FID),
types = _viewBll.GetMaterialTypeList()
};
}
}
}, apiResult, Request);
}
/// <summary>
/// 根据协同ID获取基础表集合
/// </summary>
/// <param name="inParam"></param>
/// <returns></returns>
[HttpPost]
public ApiResult GetMaterialInfoListByTeamId(Dictionary<string, object> inParam)
{
var apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() => {
if (!string.IsNullOrWhiteSpace(inParam["tempId"].ToString()))
{
apiResult.Data = _viewBll.EexcSql(int.Parse(inParam["tempId"].ToString()));
}
else
{
apiResult.Data = _viewBll.EexcSql();
}
}, apiResult, Request);
}
/// <summary>
/// 保存视图编辑的内容
/// </summary>
[HttpPost]
public ApiResult UpdateBatchById(List<Dictionary<string, object>> rows)
{
var apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (Request.Properties["token"] is ApiAuthInfo user)
{
apiResult.Data = _viewBll.UpdateBatchById(rows, user.FID);
}
}, apiResult, Request);
}
/// <summary>
/// 保存视图编辑的内容
/// </summary>
[HttpPost]
public ApiResult UpdateBatchById2(Dictionary<string, object> inParam)
{
var apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (Request.Properties["token"] is ApiAuthInfo user)
{
inParam.TryGetValue("TFS_ViewMaterial", out object viewObj);
inParam.TryGetValue("TFS_Material", out object materialObj);
inParam.TryGetValue("TFS_MaterialInfo", out object infoObj);
List<Dictionary<string, object>> viewList = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(JsonConvert.SerializeObject(viewObj));
List<Dictionary<string, object>> materialList = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(JsonConvert.SerializeObject(materialObj));
List<Dictionary<string, object>> infoList = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(JsonConvert.SerializeObject(infoObj));
int teamId = int.Parse(inParam["FTeamID"].ToString());
int viewType = int.Parse(inParam["FViewType"].ToString());
apiResult.Data = _viewBll.UpdateBatchById2(viewList, materialList, infoList, teamId, viewType, user.FID);
if (viewType == 10)
{
// 创建物料视图事项
TFS_FTeamwork teamwork = BaseBll.GetTempModel<TFS_FTeamwork>(teamId);
List<Dictionary<string, object>> vml = _viewBll.GetListByTeamId(teamId, viewType, user.FID, out List<int> materialId, out string FGuaranteePeriod, out string FStorageConditions, true);
Dictionary<int, string> hasNewView = new Dictionary<int, string>();
if (vml != null)
{
foreach(Dictionary<string, object> row in vml)
{
int materialType = (int)(long)row["FViewType"];
string factoryId = row["FFactoryID"].ToString();
if (materialType == 2 || materialType == 3 || materialType == 4 || materialType == 5)
{
if (hasNewView.ContainsKey(materialType))
{
hasNewView[materialType] = hasNewView[materialType] + factoryId + ",";
}
else
{
hasNewView.Add(materialType, factoryId + ",");
}
}
}
TeamworkBll TeamworkBll = new TeamworkBll();
TeamworkBll.CreateMaterialTask(hasNewView, teamwork, user.FID);
}
//补充包材规格
BaseBll.CreateTaskData(teamId, user.FID, "14");
//成品视图
BaseBll.CreateTaskData(teamwork.FID, user.FID, "3", teamwork.FCreateFactoryID + "," + teamwork.FProdFactoryID);
//成品视图物料组复核,有权限的所有
BaseBll.CreateTaskData(teamwork.FID, user.FID, "12");
teamwork = BaseBll.GetTempModel<TFS_FTeamwork>(teamId);
if (teamwork.FPackID == -1)
{
//新增新包材事项
BaseBll.CreateTaskData(teamId, user.FID, "9");
BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.BOM, 2, 1);
}
else
{
BaseBll.UpdateTeamProcess(teamId, (int)Constant.ProcessType.BOM, 3, 2);
}
BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType., 3, 2);
BaseBll.UpdateTeamProcess(teamwork.FID, (int)Constant.ProcessType., 2, 1);
}
}
}, apiResult, Request);
}
}
}