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.

1275 lines
68 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 协同接口
/// </summary>
[UserLoginFilter]
public class MaterialTeamworkController : ApiController {
/// <summary>
/// 数据处理层
/// </summary>
public readonly BaseBll BaseBll = new BaseBll();
/// <summary>
/// 数据处理层-路线处理
/// </summary>
private readonly MaterialTeamworkBll MaterialTeamworkBll = new MaterialTeamworkBll();
/// <summary>
/// 数据处理层-任务处理
/// </summary>
private readonly MaterialTaskBll MaterialTaskBll = new MaterialTaskBll();
/// <summary>
/// 事项操作日志
/// </summary>
private readonly OperateLogBll OperateLogBll = new OperateLogBll();
/// <summary>
/// 初始化
/// </summary>
private readonly BaseController<TFS_FMaterialTeamwork> baseController = new BaseController<TFS_FMaterialTeamwork>();
public MaterialTeamworkController()
{
}
#region 物料新增
/// <summary>
/// 新增物料路线
/// </summary>
[HttpPost]
public ApiResult CreateMaterial(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo;
TFS_Factory factory = BaseBll.GetTempModel<TFS_Factory>(int.Parse(inParam["FCreateFactoryID"].ToString()));
Dictionary<string, object> result = new Dictionary<string, object>();
inParam.Remove("FID");
string materialName = inParam["FMaterialName"].ToString();
TFS_Material existMaterial = BaseBll.GetTempModel<TFS_Material>("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<TFS_Factory>(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<TUser> 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<TFS_FMaterialTeamwork>(teamId);
// 创建物料和物料视图
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);
}
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);
OperateLogBll.Add(3, teamwork.FID, 17, "物料新增路线创建成功", user.FID);
}
}
}
else
{
result.Add("TaskId", -9);
}
}
apiResult.Data = result;
}, apiResult, Request, inParam);
}
/// <summary>
/// 查询物料路线
/// </summary>
[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<object> powerList = MaterialTeamworkBll.GetViewPower(mtq.FUserID);
List<MaterialTeamworkRow> list = MaterialTeamworkBll.GetList(mtq, out var totalNumber);
int total = totalNumber;
if (list != null && list.Count > 0)
{
foreach (MaterialTeamworkRow row in list)
{
row.FIsShowView = false;
row.FIsDownloadView = false;
row.FIsProcessShowView = false;
row.FIsProcessDownloadView = false;
row.FIsVersionShowView = false;
row.FIsVersionDownloadView = false;
int factoryId = row.FCreateFactoryID;
List<object> viewPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("1")).ToList();
List<object> operationPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("6")).ToList();
List<object> processViewPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("3")).ToList();
List<object> processOperationPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("8")).ToList();
List<object> versionViewPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("4")).ToList();
List<object> versionOperationPowers = powerList.FindAll(p => ((IDictionary<string, object>)p)["FFactoryID"].ToString().Equals(factoryId.ToString()) && ((IDictionary<string, object>)p)["FFunctionID"].ToString().Equals("9")).ToList();
if (viewPowers != null && viewPowers.Count > 0) row.FIsShowView = true;
if (operationPowers != null && operationPowers.Count > 0) row.FIsDownloadView = true;
if (processViewPowers != null && processViewPowers.Count > 0) row.FIsProcessShowView = true;
if (processOperationPowers != null && processOperationPowers.Count > 0) row.FIsProcessDownloadView = true;
if (versionViewPowers != null && versionViewPowers.Count > 0) row.FIsVersionShowView = true;
if (versionOperationPowers != null && versionOperationPowers.Count > 0) row.FIsVersionDownloadView = true;
}
}
apiResult.Data = new
{
List = list,
Total = total
};
}, apiResult, Request);
}
/// <summary>
/// 根据物料路线ID获取物料视图
/// </summary>
[HttpPost]
public ApiResult GetMaterialViewsByTeamId(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());
int teamWorkType = int.Parse(inParam["teamWorkType"].ToString());
int teamType = int.Parse(inParam["teamType"].ToString());
apiResult.Data = new
{
columns = MaterialTeamworkBll.GetColumns(),
rows = MaterialTeamworkBll.GetMaterialViewsByTeamId(teamId, teamWorkType, teamType, user.FID, true, out List<int> materialId),
infos = MaterialTeamworkBll.GetMaterialInfoList(materialId, user.FID),
types = MaterialTeamworkBll.GetMaterialTypeList(),
viewCols = MaterialTeamworkBll.GetViewColumns()
};
}
}, apiResult, Request, inParam);
}
/// <summary>
/// 更新物料
/// </summary>
[HttpPost]
public ApiResult UpdateMaterial(Dictionary<string, object> inParam)
{
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)
{
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 teamworkType = int.Parse(inParam["FTeamworkType"].ToString());
int taskType = int.Parse(inParam["FTaskType"].ToString());
string viewType = GetViewType(viewList);
// 更新视图
int materialType = MaterialTeamworkBll.UpdateMaterialViewById(viewList, user.FID, teamId, teamworkType);
// 更新物料
string materialCode = MaterialTeamworkBll.UpdateMaterialById(materialList, user.FID, teamId, teamworkType);
// 更新物料信息
MaterialTeamworkBll.UpdateMaterialInfoById(infoList, user.FID, teamId, teamworkType);
TFS_FMaterialTeamwork teamwork = MaterialTeamworkBll.GetMaterialTeamworkById(teamId);
teamwork.FMaterialType = materialType.ToString();
teamwork.FMaterialCode = materialCode.ToString();
if (materialList != null)
{
int mindex = materialList.Count - 1;
teamwork.FMaterialName = materialList[mindex]["FName"].ToString();
}
MaterialTeamworkBll.UpdateMaterialTeamwork(teamwork);
List<TFS_FMaterialTask> tasks = MaterialTaskBll.GetMaterialTasks(teamId);
TFS_FMaterialTask task = null;
if (taskType == 2)
{
TFS_FMaterialTask currentTask = tasks.Find(t => t.FType == 2);
// 结束物料确认任务
MaterialTaskBll.CloseAllMaterialTask(teamId, user.FID);
// 结束物料路线
MaterialTeamworkBll.CloseMaterialTeamwork(teamId, user.FID);
result.Add("TaskId", currentTask.FID);
}
else if(taskType == 1)
{
TFS_FMaterialTask currentTask = tasks.Find(t => t.FType == 1);
List<TUser> users = MaterialTaskBll.GetTaskUsers(2, viewType, currentTask.FFactoryID);
if (users != null && users.Count > 0)
{
// 结束物料编辑任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 1);
TFS_FMaterialTask nextTask = tasks.Find(t => t.FType == 2);
if (nextTask == null)
{
// 创建物料确认任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 2, currentTask.FFactoryID, users);
result.Add("TaskId", taskId);
}
else
{
result.Add("TaskId", nextTask.FID);
}
}
else
{
result.Add("TaskId", -9);
}
}
else if (taskType == 0)
{
TFS_FMaterialTask currentTask = tasks.Find(t => t.FType == 0);
List<TUser> users = MaterialTaskBll.GetTaskUsers(1, viewType, currentTask.FFactoryID);
if (users != null && users.Count > 0)
{
// 结束物料分类任务
MaterialTaskBll.CloseMaterialTask(teamId, user.FID, 0);
TFS_FMaterialTask nextTask = tasks.Find(t => t.FType == 1);
if (nextTask == null)
{
// 创建物料编辑任务
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, teamworkType, user.FID, 1, currentTask.FFactoryID, users);
result.Add("TaskId", taskId);
}
else
{
result.Add("TaskId", nextTask.FID);
}
}
else
{
result.Add("TaskId", -9);
}
}
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>();
// 创建物料(物料表新增数据)
TFS_Material material = new TFS_Material();
material.FName = inParam["FMaterialName"].ToString(); // 物料名称
material.FDesc = inParam["FMaterialName"].ToString(); // 物料描述
material.FMaterialGroup = inParam["FMaterialGroup"].ToString(); // 物料组
material.FBaseUnit = inParam["FWeightUnit"].ToString(); // 计量单位
material.FFactoryID = factory.FFactoryID; // 工厂
material.FFactoryCode = factory.FCode; // 工厂标识
material.FTestCode = inParam.ContainsKey("FTestCode") ? inParam["FTestCode"].ToString() : ""; // 试验号
// 需要获取MDM编码逻辑在页面勾选了需要获取MDM编码时调用获取MDM编码接口
// 此处直接调用BaseController的GetMdmCode方法inParam作为方法的输入参数
// 必须要传递FWeightUnitFTestCodeFMaterialGroup/FGroupFSaleCode/FNameFType/FMaterialType五个参数
// 其中FMaterialType传入固定值ZMATFTestCode非必填其他参数必填
// 此处FWeightUnitFTestCodeFMaterialGroup添加FMaterialType为ZMAT已有添加FName为FMaterialName
bool FIsRaw = (bool)inParam["FIsRaw"];
if (FIsRaw)
{
// 添加物料名称属性
Dictionary<string, object> temp = new Dictionary<string, object>
{
{ "FName", inParam["FMaterialName"] },
{ "FGroup", inParam["FMaterialGroup"] },
{ "FWeightUnit", inParam["FWeightUnit"] },
{ "FType", "ZMAT" }
};
if (!string.IsNullOrEmpty(material.FTestCode))
{
temp.Add("FTestCode", material.FTestCode);
}
string FCode = baseController.GetMdmCode(temp);
material.FCode = FCode;
result.Add("FMaterialCode", FCode);
}
else
{
string FCode = inParam["FMaterialCode"].ToString();
material.FCode = FCode;
}
int materialId = MaterialTeamworkBll.InsertMaterial(material);
result.Add("MaterialId", materialId);
// 创建物料视图
TFS_ViewMaterial viewMaterial = new TFS_ViewMaterial();
viewMaterial.FTeamID = teamwork.FID; // 路线ID
viewMaterial.FMaterialID = materialId; // 物料ID
viewMaterial.FFactoryID = teamwork.FCreateFactoryID; // 工厂ID
viewMaterial.FFactoryCode = teamwork.FCreateFactoryCode; // 工厂Code
viewMaterial.FAddDate = DateTime.Now; // 创建日期
viewMaterial.FTeamType = 1; // 路线类型
viewMaterial.FBaseMaterialDesc = material.FName; // 物料描述
viewMaterial.FBaseMaterialCode = material.FCode; // 物料号
viewMaterial.FBaseTestCode = material.FTestCode; // 试验号
viewMaterial.FBaseMaterialGroup = material.FMaterialGroup; // 物料组
viewMaterial.FBaseBasicMeter = material.FBaseUnit; // 基本计量
int vmId = MaterialTeamworkBll.InsertMaterialView(viewMaterial);
result.Add("ViewId", vmId);
// 创建委托工厂视图
if (!teamwork.FCreateFactoryID.Equals(teamwork.FProdFactoryID))
{
viewMaterial = new TFS_ViewMaterial();
viewMaterial.FTeamID = teamwork.FID; // 路线ID
viewMaterial.FMaterialID = materialId; // 物料ID
viewMaterial.FFactoryID = teamwork.FProdFactoryID; // 工厂ID
viewMaterial.FFactoryCode = teamwork.FProdFactoryCode; // 工厂Code
viewMaterial.FAddDate = DateTime.Now; // 创建日期
viewMaterial.FTeamType = 1; // 路线类型
viewMaterial.FBaseMaterialDesc = material.FName; // 物料描述
viewMaterial.FBaseMaterialCode = material.FCode; // 物料号
viewMaterial.FBaseTestCode = material.FTestCode; // 试验号
viewMaterial.FBaseMaterialGroup = material.FMaterialGroup; // 物料组
viewMaterial.FBaseBasicMeter = material.FBaseUnit; // 基本计量
int prodVmId = MaterialTeamworkBll.InsertMaterialView(viewMaterial);
result.Add("ProdViewId", prodVmId);
}
return result;
}
#endregion
#region 物料修改
/// <summary>
/// 物料修改路线
/// </summary>
[HttpPost]
public ApiResult ModifyMaterial(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
Dictionary<string, int> result = new Dictionary<string, int>();
Dictionary<string, object> teamworkParam = new Dictionary<string, object>();
return ExceptionHelper.TryReturnException(() =>
{
ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo;
TFS_Factory prodFactory = null;
int factoryId = int.Parse(inParam["FCreateFactoryID"].ToString());
int materialId = int.Parse(inParam["FMaterialId"].ToString());
// 根据FID获取工厂和物料
TFS_Factory factory = BaseBll.GetTempModel<TFS_Factory>(factoryId);
TFS_Material material = BaseBll.GetTempModel<TFS_Material>(materialId);
// 获取当前工厂视图
TFS_ViewMaterial view = MaterialTeamworkBll.GetMaterialViewsByFactoryAndMaterial(factoryId, materialId);
TFS_ViewMaterial prodView = null;
// 当前物料和模式没有对应视图,则创建视图
if (view == null)
{
view = new TFS_ViewMaterial();
view.FMaterialID = materialId; // 物料ID
view.FAddDate = DateTime.Now; // 创建日期
view.FTeamType = 1; // 路线类型
view.FFactoryID = factory.FID; // 工厂ID
view.FFactoryCode = factory.FCode; // 工厂Code
int vmId = MaterialTeamworkBll.InsertMaterialView(view);
view.FID = vmId;
result.Add("ViewId", vmId);
}
string productType = view.FMRP1ProductType;
string materialName = material.FName;
string vType = GetViewType(productType, materialName);
List<TUser> users = MaterialTaskBll.GetTaskUsers(1, vType, 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)
{
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;
result.Add("ProdViewId", prodVmId);
}
}
// 创建物料修改路线
int teamId = BaseBll.InsertDataModel(teamworkParam, "TFS_FMaterialTeamwork");
result.Add("TeamId", teamId);
// 更新视图
view.FMdfMaterialTeamID = teamId;
view.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(view);
if (prodView != null)
{
prodView.FMdfMaterialTeamID = teamId;
prodView.FTeamType = 1;
MaterialTeamworkBll.UpdateMaterialView(prodView);
}
// 创建物料修改事项
int taskId = MaterialTaskBll.CreateMaterialTask(teamId, 2, user.FID, 1, factory.FID, users);
result.Add("TaskId", taskId);
OperateLogBll.Add(3, teamId, 18, "物料修改路线创建成功", user.FID);
}
else
{
result.Add("TaskId", -9);
}
apiResult.Data = result;
}, apiResult, Request);
}
/// <summary>
/// 根据工厂和物料名查找物料
/// </summary>
[HttpPost]
public ApiResult SearchMaterialsByFactory(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
ApiAuthInfo user = Request.Properties["token"] as ApiAuthInfo;
Dictionary<string, object> result = new Dictionary<string, object>();
string searchName = inParam["FSearchName"].ToString();
int pageNumber = 0;
int pageSize = 0;
int.TryParse(inParam["FPageIndex"].ToString(), out pageNumber);
int.TryParse(inParam["FPageSize"].ToString(), out pageSize);
List<TFS_Material> materials = MaterialTeamworkBll.SearchMaterialsByFactory(searchName, pageNumber, pageSize, out var totalNumber);
result["List"] = materials;
result["Total"] = totalNumber;
apiResult.Data = result;
}, apiResult, Request);
}
private Dictionary<string, int> CreateProdMaterialData(TFS_ViewMaterial createViewMaterial, TFS_FMaterialTeamwork teamwork)
{
Dictionary<string, int> result = new Dictionary<string, int>();
createViewMaterial.FFactoryID = teamwork.FProdFactoryID;
createViewMaterial.FFactoryCode = teamwork.FProdFactoryCode; // 工厂Code
result.Add("ViewId", createViewMaterial.FID);
int prodVmId = MaterialTeamworkBll.InsertMaterialView(createViewMaterial);
result.Add("ProdViewId", prodVmId);
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;
}
private string GetViewType(string viewType, string materialName)
{
string vType = null;
// 成品视图
if ("10".Equals(viewType))
{
vType = "1";
}
// 半成品视图
else if ("20".Equals(viewType))
{
vType = "2";
}
// 中间品视图
else if ("30".Equals(viewType))
{
vType = "3";
// 香基视图
if (materialName.Contains("香基"))
{
vType = "4";
}
}
// 原料视图
else if ("40".Equals(viewType))
{
vType = "5";
}
return vType;
}
#endregion
public T Clone<T>(T obj) where T : class
{
// 如果对象是 null则返回 null
if (obj == null)
{
return null;
}
Type type = obj.GetType();
// 如果对象是字符串或值类型,则直接返回副本
if (type.IsPrimitive || type == typeof(string))
{
return obj;
}
// 如果对象是数组,则创建一个新的数组并复制元素
if (type.IsArray)
{
Array sourceArray = obj as Array;
Array destinationArray = sourceArray.Clone() as Array;
for (int i = 0; i < sourceArray.Length; i++)
{
destinationArray.SetValue(Clone(sourceArray.GetValue(i)), i);
}
return destinationArray as T;
}
// 否则,创建一个新对象并复制属性值
object result = Activator.CreateInstance(type);
foreach (FieldInfo field in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
{
object fieldValue = field.GetValue(obj);
field.SetValue(result, Clone(fieldValue));
}
foreach (PropertyInfo property in type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
{
if (!property.CanWrite || !property.CanRead)
{
continue;
}
object propertyValue = property.GetValue(obj);
property.SetValue(result, Clone(propertyValue), null);
}
return result as T;
}
/// <summary>
/// 下载SAP视图
/// </summary>
[HttpPost]
public ApiResult DownMateialViewSAP(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (inParam.ContainsKey("teamId") && inParam.ContainsKey("teamWorkType"))
{
inParam.TryGetValue("teamId", out object teamworkId);
inParam.TryGetValue("teamWorkType", out object teamworkType);
inParam.TryGetValue("materialName", out object materialName);
string basePath = AppDomain.CurrentDomain.BaseDirectory.Trim('\\');
string savePath = basePath + string.Format("\\File\\Temp\\{0}_{1}\\", inParam["teamId"], "ViewSAP");
if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);
string tempPath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!Directory.Exists(tempPath)) Directory.CreateDirectory(tempPath);
savePath += ".xlsx";
bool hasFinish = inParam.ContainsKey("FFinish");
if (hasFinish) savePath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!File.Exists(savePath) || !hasFinish)
{
CreateExeclFileSAP(materialName.ToString() + "_SAP视图", savePath, teamworkId.ToString(), teamworkType.ToString());
}
string url = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/").Replace(".xlsx", materialName.ToString() + "_SAP视图.xlsx");
apiResult.Data = url;
}
else
{
apiResult.Error("视图信息获取失败");
}
}, apiResult, Request);
}
/// <summary>
/// 下载视图
/// </summary>
[HttpPost]
public ApiResult DownMateialView(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (inParam.ContainsKey("teamId") && inParam.ContainsKey("teamWorkType") && inParam.ContainsKey("materialName"))
{
inParam.TryGetValue("teamId", out object teamworkId);
inParam.TryGetValue("teamWorkType", out object teamworkType);
inParam.TryGetValue("materialName", out object materialName);
string basePath = AppDomain.CurrentDomain.BaseDirectory.Trim('\\');
string savePath = basePath + string.Format("\\File\\Temp\\{0}_{1}\\", inParam["teamId"], "View");
if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);
string tempPath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!Directory.Exists(tempPath)) Directory.CreateDirectory(tempPath);
savePath += ".xlsx";
bool hasFinish = inParam.ContainsKey("FFinish");
if (hasFinish) savePath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!File.Exists(savePath) || !hasFinish)
{
CreateExeclFile(materialName.ToString() + "_全部视图", savePath, teamworkId.ToString(), teamworkType.ToString());
}
string url = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/").Replace(".xlsx", materialName.ToString() + "_全部视图.xlsx");
apiResult.Data = url;
}
else
{
apiResult.Error("视图信息获取失败");
}
}, apiResult, Request);
}
private void CreateExeclFileSAP(string fType, string savePath, string teamworkId, string teamworkType)
{
DataTable dataList = new DataTable();
dataList = MaterialTeamworkBll.GetViewMaterialSAP(teamworkId, teamworkType);
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", fType + ".xlsx"));
}
private void CreateExeclFile(string fType, string savePath, string teamworkId, string teamworkType)
{
DataTable dataList = null;
List<TFS_ViewMaterial> viewList = null;
int teamId;
int teamType;
int.TryParse(teamworkId, out teamId);
int.TryParse(teamworkType, out teamType);
viewList = MaterialTeamworkBll.GetViewMaterialByTeamId(teamId, teamType);
if (viewList != null && viewList.Count > 0)
{
int materialId = viewList[0].FMaterialID;
if (teamType == 3)
{
List<int> materialIds = viewList.Select(m => m.FMaterialID).ToList();
string ids = string.Join(",", materialIds);
dataList = MaterialTeamworkBll.GetViewMaterial(ids.ToString());
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", fType + ".xlsx"));
}
else
{
dataList = MaterialTeamworkBll.GetViewMaterial(materialId.ToString());
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", fType + ".xlsx"));
}
}
}
/// <summary>
/// 获取视图信息
/// </summary>
[HttpPost]
public ApiResult GetTeamworkView(Dictionary<string, object> inParam)
{
ApiResult apiResult = new ApiResult();
return ExceptionHelper.TryReturnException(() =>
{
if (inParam.ContainsKey("FTeamID"))
{
inParam.TryGetValue("FViewType", out object objType);
int intType = null == objType ? (int)Constant.TeamViewType. : int.Parse(objType.ToString());
string selectSql = "", joinSql = "", whereSql = string.Format("TFS_FMaterialTeamwork.FID={0} ", inParam["FTeamID"]);
string basePath = AppDomain.CurrentDomain.BaseDirectory.Trim('\\');
string savePath = basePath + string.Format("\\File\\Temp\\{0}_{1}\\", inParam["FTeamID"], intType);
if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);
string tempPath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!Directory.Exists(tempPath)) Directory.CreateDirectory(tempPath);
switch (intType)
{
case (int)Constant.TeamViewType.:
savePath += Constant.TeamViewType..ToString();
//原始配方
whereSql = string.Format(@"dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_FTeamwork where FID={0}))>0
and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]);
//生产、计划配方
joinSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialFormulaIDs from TFS_FTeamwork where FID={0}))>0
and TFS_Material.FSuccedaneumID<1) and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})",
inParam["FTeamID"]);
break;
case (int)Constant.TeamViewType.线:
savePath += Constant.TeamViewType.线.ToString();
//只要生产工厂
whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID in(select FID from TFS_Factory where FType={0})", (int)Constant.FactoryType.);
//视图类型
List<int> tempInt3_1 = new List<int>
{
(int)Constant.ViewType.,
(int)Constant.ViewType.,
(int)Constant.ViewType.,
(int)Constant.ViewType.
};
whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FViewType in({0})", string.Join(",", tempInt3_1));
break;
case (int)Constant.TeamViewType.:
savePath += Constant.TeamViewType..ToString();
//只要生产工厂
whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID in(select FID from TFS_Factory where FType={0})", (int)Constant.FactoryType.);
//视图类型
List<int> tempInt4_1 = new List<int>
{
(int)Constant.ViewType.,
(int)Constant.ViewType.,
(int)Constant.ViewType.,
(int)Constant.ViewType.
};
whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FViewType in({0})", string.Join(",", tempInt4_1));
break;
case (int)Constant.TeamViewType.BOM:
savePath += Constant.TeamViewType.BOM.ToString();
//一级半成品、包材→无替代料的
whereSql = string.Format(@"(dbo.StrExistInStr(TFS_ViewMaterial.FMaterialID,(select FMaterialHalfIDs from TFS_FTeamwork where FID={0}))>0 or (
TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FMaterialID in(select FMaterialID from TFS_PackageChild where FTeamID={0}) or
FPackageID=(select FPackID from TFS_FTeamwork where FID={0})))
", inParam["FTeamID"]);
//只要生产工厂
whereSql += string.Format(" and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FFactoryID=(select FProdFactoryID from TFS_FTeamwork where FID={0})", inParam["FTeamID"]);
break;
case (int)Constant.TeamViewType.:
default:
savePath += Constant.TeamViewType..ToString();
whereSql += " and TFS_ViewMaterial.FTeamType = 1 and TFS_ViewMaterial.FMaterialID>0";
break;
}
savePath += ".xlsx";
bool hasFinish = inParam.ContainsKey("FFinish");
if (hasFinish) savePath = savePath.Replace("\\File\\Temp\\", "\\File\\View\\");
if (!File.Exists(savePath) || !hasFinish)
{
if (inParam.ContainsKey("HalfId"))
{
CreateExeclFile(intType, savePath, selectSql, whereSql, joinSql, inParam["FTeamID"].ToString(), inParam["HalfId"].ToString());
}
else
{
CreateExeclFile(intType, savePath, selectSql, whereSql, joinSql, inParam["FTeamID"].ToString(), "");
}
}
if (inParam.TryGetValue("FType", out objType) && objType.ToString().Equals("1"))
{
if (intType == (int)Constant.TeamViewType.)
{
apiResult.Data = new
{
List1 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "1.xlsx")),
List2 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "2.xlsx")),
List3 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "3.xlsx"))
};
}
else if (intType == (int)Constant.TeamViewType. || intType == (int)Constant.TeamViewType.BOM)
{
//生产和计划
apiResult.Data = new
{
List1 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "1.xlsx")),
List2 = NPOIHelper.ImportExceltoDt(savePath.Replace(".xlsx", "2.xlsx")),
};
}
else
{
apiResult.Data = new
{
List1 = NPOIHelper.ImportExceltoDt(savePath)
};
}
}
else
{
if (savePath.Contains(Constant.TeamViewType..ToString()))
{
apiResult.Data = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/").Replace(Constant.TeamViewType..ToString(), "SAP视图");
}
else
{
apiResult.Data = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, "") + savePath.Replace(basePath, "").Replace("\\", "/");
}
}
}
else
{
apiResult.Error("获取协同信息失败");
}
}, apiResult, Request, inParam);
}
/// <summary>
/// 创建Excel文件
/// </summary>
private void CreateExeclFile(int intType, string savePath, string selectSql, string whereSql, string joinSql, string teamId, string halfId)
{
List<TFS_ViewFieldInfo> filedList = MaterialTeamworkBll.GetTeamworkViewField(intType);
foreach (TFS_ViewFieldInfo field in filedList)
{
if (string.IsNullOrEmpty(field.FField))
{
selectSql += string.Format("'{0}' as '{1}'", string.IsNullOrEmpty(field.FDefault) ? "" : field.FDefault, field.FName);
}
else
{
if (field.FName == "基本数量")
{
selectSql += string.Format("isnull({0},(select TFS_PackageMain.FBomUnit from TFS_PackageMain where TFS_PackageMain.FID =(select top 1 FPackID from TFS_FTeamwork where FID=@FTeamID@))) as '{1}'", field.FField, field.FName);
}
else if (field.FName == "组件数量")
{
selectSql += string.Format(@"isnull( ( CASE WHEN TFS_ViewMaterial.FExtraQuantity IS NULL OR TFS_ViewMaterial.FExtraQuantity= '' THEN TFS_PackageChild.FCount ELSE TFS_ViewMaterial.FExtraQuantity END ), (select TFS_PackageMain.FBomUnit from TFS_PackageMain where TFS_PackageMain.FID =(select top 1 FPackID from TFS_FTeamwork where FID=@FTeamID@)) ) AS '组件数量'");
}
else
{
selectSql += string.Format("isnull({0},'') as '{1}'", field.FField, field.FName);
}
}
selectSql += ",";
}
selectSql = selectSql.Replace("@FTeamID@", teamId);
selectSql = selectSql.Replace("@FMaterialID@", halfId);
DataTable dataList = new DataTable();
if (intType == (int)Constant.TeamViewType.BOM)
{
dataList = MaterialTeamworkBll.GetTeamworkViewData2(selectSql.Trim(','), whereSql, joinSql);
dataList.Columns.Remove("FMaterialID");
DataTable dataList2 = dataList.Copy();
List<bool> hasField = new List<bool>();
hasField.Add(dataList.Columns.Contains("BOM用途"));
hasField.Add(dataList.Columns.Contains("子项序号"));
hasField.Add(dataList.Columns.Contains("组件损耗率"));
hasField.Add(dataList.Columns.Contains("固定损耗数量"));
int rowCount = dataList.Rows.Count;
//生产组装BOM处理
for (int i = 0; i < rowCount; i++)
{
if (hasField[0]) dataList.Rows[i]["BOM用途"] = "1";
if (hasField[1]) dataList.Rows[i]["子项序号"] = (i + 1) * 10;
if (hasField[2]) dataList.Rows[i]["组件损耗率"] = "";
if (hasField[3]) dataList.Rows[i]["固定损耗数量"] = "";
if (dataList.Rows[i]["计量单位"].ToString() == "G")
{
dataList.Rows[i]["组件数量"] = int.Parse(dataList.Rows[i]["组件数量"].ToString()) * 100;
}
if (dataList2.Rows[i]["计量单位"].ToString() == "G")
{
dataList2.Rows[i]["组件数量"] = int.Parse(dataList2.Rows[i]["组件数量"].ToString()) * 100;
}
dataList.Rows[i]["可选文本"] = "生产组装BOM";
}
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", "1.xlsx"));
//计划组装BOM处理
DataTable dataList3 = dataList2.Copy();
for (int i = 0; i < rowCount; i++)
{
if (hasField[1])
{
dataList2.Rows[i]["子项序号"] = (i + 1) * 10;
}
if (hasField[3] && !string.IsNullOrEmpty(dataList2.Rows[i]["固定损耗数量"].ToString()) && !dataList2.Rows[i]["固定损耗数量"].ToString().Equals("0"))
{
dataList3.Rows[i]["组件数量"] = dataList2.Rows[i]["固定损耗数量"].ToString();
dataList3.Rows[i]["组件损耗率"] = "";
dataList3.Rows[i]["固定损耗数量"] = "X";
if (hasField[1]) dataList3.Rows[i]["子项序号"] = (i + rowCount + 1) * 10;
dataList3.Rows[i]["可选文本"] = "计划组装BOM";
dataList2.ImportRow(dataList3.Rows[i]);
}
dataList2.Rows[i]["固定损耗数量"] = "";
dataList2.Rows[i]["可选文本"] = "计划组装BOM";
}
NPOIHelper.ExportDTtoExcel(dataList2, "Sheet1", savePath.Replace(".xlsx", "2.xlsx"));
for (int i = 0; i < dataList2.Rows.Count; i++)
{
if (i == 0) dataList.Rows.Add("[换色]");
dataList.ImportRow(dataList2.Rows[i]);
}
}
else if (intType == (int)Constant.TeamViewType.)
{
}
else
{
dataList = MaterialTeamworkBll.GetTeamworkViewData2(selectSql.Trim(','), whereSql, joinSql);
dataList.Columns.Remove("FMaterialID");
if (intType == (int)Constant.TeamViewType.)
{
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(".xlsx", "1.xlsx"));
int rowCount = dataList.Rows.Count;
bool isChange = dataList.Columns.Contains("BOM用途");
DataTable dataList2 = dataList.Copy();
for (int i = 0; i < rowCount; i++)
{
if (isChange && dataList2.Rows[i]["BOM用途"].ToString() == "1")
{
dataList2.Rows[i]["BOM用途"] = "Y";
}
}
NPOIHelper.ExportDTtoExcel(dataList2, "Sheet1", savePath.Replace(".xlsx", "2.xlsx"));
for (int i = 0; i < rowCount; i++)
{
if (i == 0) dataList.Rows.Add("[换色]");
dataList.ImportRow(dataList2.Rows[i]);
}
}
}
if (intType == (int)Constant.TeamViewType.)
{
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath);
//處理名字點
dataList.Columns["组织级别.行业领域"].ColumnName = "行业领域\nIndustry Sector";
dataList.Columns["组织级别.物料类型"].ColumnName = "物料类型\n(Material Type)";
dataList.Columns["组织级别.工厂"].ColumnName = "工厂\n(Plant)";
dataList.Columns["组织级别.库存地点"].ColumnName = "库存地点\n(Stock Location)";
dataList.Columns["组织级别.销售组织"].ColumnName = "销售组织\n(Sales Organization)";
dataList.Columns["组织级别.分销渠道"].ColumnName = "分销渠道\n(distribution Channel)";
dataList.Columns["基本视图.物料编号"].ColumnName = "物料编号\n(Material NO.)";
dataList.Columns["基本视图.试验号"].ColumnName = "试验号\n(Test NO.)";
dataList.Columns["基本视图.基本计量"].ColumnName = "基本计量\n(Base Unit of Measure)";
dataList.Columns["基本视图.物料描述"].ColumnName = "物料描述\nMaterial Description";
dataList.Columns["基本视图.物料组"].ColumnName = "物料组\n(Material Group)";
dataList.Columns["基本视图.大小/量纲(规格)"].ColumnName = "大小/量纲(规格)\n(Specifications)";
dataList.Columns["基本视图.物料长文本"].ColumnName = "物料长文本\n(Basic Data Text)";
dataList.Columns["基本视图.标识符:固体/液体"].ColumnName = "实验室办公室(标识符:固体/液体/乳化)\n(In bulk/liquid)";
dataList.Columns["基本视图.体积单位"].ColumnName = "体积单位\n(Volume Unit)";
dataList.Columns["基本视图.毛重"].ColumnName = "毛重\n(Gross weight)";
dataList.Columns["基本视图.净重"].ColumnName = "净重\n(Net weight)";
dataList.Columns["基本视图.重量单位"].ColumnName = "重量单位\n(Weight unit)";
dataList.Columns["基本视图.fame号"].ColumnName = "生产备忘录fame号";
dataList.Columns["基本视图.业务量"].ColumnName = "业务量\n(Volume)";
dataList.Columns["采购视图.采购组"].ColumnName = "采购组\n(Purchasing Group)";
dataList.Columns["采购视图.采购单位"].ColumnName = "采购单位\n(Order Unit)";
dataList.Columns["采购视图.采购单位数量"].ColumnName = "采购单位数量\n(Quantity Conversion of procument)";
dataList.Columns["采购视图.采购基本单位数量"].ColumnName = "基本单位数量(Quantity Conversion of basic unit of measure)";
dataList.Columns["采购视图.采购价值码"].ColumnName = "采购价值码\n(Purchasing value key)";
dataList.Columns["采购视图.工厂特定状态"].ColumnName = "工厂特定状态\n(Plant-Specific Material Status)";
dataList.Columns["采购视图.自动采购单标识"].ColumnName = "自动采购订单\nautomatic purchase order allowed";
dataList.Columns["采购视图.货源清单"].ColumnName = "货源清单\nSource list requirement";
dataList.Columns["分类视图.类别种类"].ColumnName = "类别种类\nClass Type";
dataList.Columns["分类视图.类别"].ColumnName = "类别\nClass";
dataList.Columns["销售视图.交货工厂"].ColumnName = "交货工厂\n(Delivering Plant)";
dataList.Columns["销售视图.税金分类"].ColumnName = "税金分类\n(Tax classification material)";
dataList.Columns["销售视图.物料统计组"].ColumnName = "物料统计组\n(Material statistics group)";
dataList.Columns["销售视图.销售单位"].ColumnName = "销售单位\n(Sales unit)";
dataList.Columns["销售视图.基本单位数量"].ColumnName = "基本单位数量\n(Quantity Conversion of basic unit of measure)";
dataList.Columns["销售视图.销售单位数量"].ColumnName = "销售单位数量\n(Quantity Conversion of Sales)";
dataList.Columns["销售视图.科目设置组"].ColumnName = "科目设置组\n(Account Assignment Group for Material)";
dataList.Columns["销售视图.普通项目类别组"].ColumnName = "普通项目类别组\n(General item category group)";
dataList.Columns["销售视图.项目类别组"].ColumnName = "项目类别组\n(Item Category Group)";
dataList.Columns["销售视图.可用性检查"].ColumnName = "可用性检查\n(Availability check)";
dataList.Columns["销售视图.装载组"].ColumnName = "装载组\n(Loading Group)";
dataList.Columns["销售视图.旧物料号"].ColumnName = "旧物料号\nold material number\n";
dataList.Columns["仓储视图.存储条件"].ColumnName = "存储条件\nStorage conditions";
dataList.Columns["仓储视图.批次管理"].ColumnName = "批次管理\nBatch Management Requirement Indicator";
dataList.Columns["仓储视图.最大存储期间"].ColumnName = "最大存储期间\nMaximum Storage Period";
dataList.Columns["仓储视图.时间单位"].ColumnName = "时间单位\nTime unit";
dataList.Columns["仓储视图.最小剩余货架寿命"].ColumnName = "最小剩余货架寿命(Minimum Remaining Shelf Life)";
dataList.Columns["仓储视图.总货架寿命"].ColumnName = "总货架寿命\n(Total shelf life)";
dataList.Columns["仓储视图.SLED期间标识"].ColumnName = "SLED期间标识\n(Period Indicator for Shelf Life Expiration Date)";
dataList.Columns["MRP1.MRP类型"].ColumnName = "MRP类型\n(MRP Type)";
dataList.Columns["MRP1.再订货点"].ColumnName = "再订货点";
dataList.Columns["MRP1.固定批量大小"].ColumnName = "固定批量大小";
dataList.Columns["MRP1.最大库存水平"].ColumnName = "最大库存水平";
dataList.Columns["MRP1.MRP控制者"].ColumnName = "MRP\n控制者\nMRP Controller";
dataList.Columns["MRP1.批量大小"].ColumnName = "批量大小\nLot Sizing Procedure within Materials Planning";
dataList.Columns["MRP1.最小批量大小"].ColumnName = "最小批\n量大小\nMaximum Lot Size";
dataList.Columns["MRP1.最大批量大小"].ColumnName = "最大批\n量大小\nMinimum Lot Size";
dataList.Columns["MRP1.MRP组"].ColumnName = "MRP组\nMRP Group";
dataList.Columns["MRP1.舍入值"].ColumnName = "舍入值\nRounding value for purchase order quantity";
dataList.Columns["MRP1.产品分类"].ColumnName = "产品分类\nProduct classification";
dataList.Columns["MRP1.客户代码"].ColumnName = "客户代码";
dataList.Columns["MRP1.大小料"].ColumnName = "大小料";
dataList.Columns["MRP1.不计算缺料"].ColumnName = "不计算缺料 ";
dataList.Columns["MRP1.压膜"].ColumnName = "压膜";
dataList.Columns["MRP1.安全库存带小样"].ColumnName = "安全库存带小样";
dataList.Columns["MRP1.需求计算不考虑前置物料库存"].ColumnName = "需求计算不考虑前置物料库存";
dataList.Columns["MRP1.小料标准(小于)"].ColumnName = " 小料标准(小于)";
dataList.Columns["MRP2.采购类型"].ColumnName = "采购类型\nProcurement Type";
dataList.Columns["MRP2.计划边际码"].ColumnName = "计划\n边际码\nSchedMargin key";
dataList.Columns["MRP2.特殊采购类"].ColumnName = "特殊\n采购类\nSpecial procurement";
dataList.Columns["MRP2.反冲"].ColumnName = "反冲\nBackflush";
dataList.Columns["MRP2.自制生产时间"].ColumnName = "自制\n生产时间\nIn-house production time";
dataList.Columns["MRP2.计划交货时间"].ColumnName = "计划交\n货时间\nPlanned Delivery Time in Days";
dataList.Columns["MRP2.收货处理时间"].ColumnName = "收货处\n理时间\nGoods receipt processing time in days";
dataList.Columns["MRP2.安全库存"].ColumnName = "安全库存\nSafety Stock";
dataList.Columns["MRP2.发货库存地点"].ColumnName = "发货库\n存地点\nIssue Storage Location";
dataList.Columns["MRP2.外部采购仓储地点"].ColumnName = "外部采购\n仓储地点\nDefault storage location for external procurement";
dataList.Columns["MRP3.策略组"].ColumnName = "策略组\nStrategy Group";
dataList.Columns["MRP3.消耗模式"].ColumnName = "消耗模式\nConsumption Mode";
dataList.Columns["MRP3.向前消耗期间"].ColumnName = "向前消\n耗期间\nConsumption period: forward";
dataList.Columns["MRP3.逆向消耗期"].ColumnName = "逆向\n消耗期\nConsumption period: backward";
dataList.Columns["MRP3.混合MRP"].ColumnName = "混合MRP\nMixed MRP indicator";
dataList.Columns["MRP3.可用性检查"].ColumnName = "可用性检查\n\nAvailability check";
dataList.Columns["MRP4.单独或集中"].ColumnName = "单独或集中\nIndividual requirements/Collective requirements";
dataList.Columns["MRP4.非连续标识"].ColumnName = "非连续标识";
dataList.Columns["MRP4.生效期"].ColumnName = "生效期";
dataList.Columns["MRP4.后续的物料"].ColumnName = "后续的物料";
dataList.Columns["工作计划视图.生产计划参数文件"].ColumnName = "生产计划参数文件\nProduction Scheduling Profile";
dataList.Columns["工作计划视图.无限制过量交货"].ColumnName = "无限制过\n量交货\nIndicator: Unlimited Overdelivery Allowed";
dataList.Columns["工作计划视图.不足交货允差"].ColumnName = "不足交\n货允差\nUnderdelivery tolerance limit";
dataList.Columns["工作计划视图.过度交货允差"].ColumnName = "过度交\n货允差\nOverdelivery tolerance limit";
dataList.Columns["工作计划视图.发货单位"].ColumnName = "发货单位\nUnit of issue";
dataList.Columns["工作计划视图.发货单位数量"].ColumnName = "发货单位数量\n(Quantity Conversion of Delivery)";
dataList.Columns["工作计划视图.发货基本单位数量"].ColumnName = "基本单位数量\n\n(Quantity Conversion of basic unit of measure)";
dataList.Columns["质检视图.检验类型1"].ColumnName = "检验类型1\nInspection Type 1";
dataList.Columns["质检视图.检验类型2"].ColumnName = "检验类型2\nInspection Type 2";
dataList.Columns["质检视图.检验类型3"].ColumnName = "检验类型3\nInspection Type 3";
dataList.Columns["质检视图.检验类型4"].ColumnName = "检验类型4\nInspection Type 4";
dataList.Columns["质检视图.检验类型5"].ColumnName = "检验类型5\nInspection Type 5";
dataList.Columns["质检视图.检验类型6"].ColumnName = "检验类型6\nInspection Type 6";
dataList.Columns["会计视图.价格控制"].ColumnName = "价格控制\n(Price control indicator)";
dataList.Columns["会计视图.价格确定"].ColumnName = "价格确定\n(Material Price Determination: Control)";
dataList.Columns["会计视图.价格单位"].ColumnName = "价格单位\n(Price Unit)";
dataList.Columns["会计视图.评估分类"].ColumnName = "评估分类\nValuation Class";
dataList.Columns["会计视图.VC: 销售订单库存"].ColumnName = "VC: 销售订单库存\nValuation Class for Sales Order Stock";
dataList.Columns["会计视图.标准价格"].ColumnName = "标准价格\nStandard Price";
dataList.Columns["会计视图.利润中心"].ColumnName = "利润中心\nProfit Center";
dataList.Columns["会计视图.成本核算批量"].ColumnName = "成本核算批量\nLot Size for Product Costing";
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath.Replace(Constant.TeamViewType..ToString(), "SAP视图"));
}
else
{
NPOIHelper.ExportDTtoExcel(dataList, "Sheet1", savePath);
}
}
}
}