|
|
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作为方法的输入参数
|
|
|
// 必须要传递FWeightUnit,FTestCode,FMaterialGroup/FGroup,FSaleCode/FName,FType/FMaterialType五个参数
|
|
|
// 其中FMaterialType传入固定值ZMAT,FTestCode非必填,其他参数必填
|
|
|
// 此处FWeightUnit,FTestCode,FMaterialGroup,添加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 = "行业领域\n(Industry 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 = "物料描述\n(Material 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 = "自动采购订单\n(automatic purchase order allowed)";
|
|
|
dataList.Columns["采购视图.货源清单"].ColumnName = "货源清单\n(Source list requirement)";
|
|
|
dataList.Columns["分类视图.类别种类"].ColumnName = "类别种类\n(Class Type)";
|
|
|
dataList.Columns["分类视图.类别"].ColumnName = "类别\n(Class)";
|
|
|
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 = "旧物料号\n(old material number)\n";
|
|
|
dataList.Columns["仓储视图.存储条件"].ColumnName = "存储条件\n(Storage conditions)";
|
|
|
dataList.Columns["仓储视图.批次管理"].ColumnName = "批次管理\n(Batch Management Requirement Indicator)";
|
|
|
dataList.Columns["仓储视图.最大存储期间"].ColumnName = "最大存储期间\n(Maximum Storage Period)";
|
|
|
dataList.Columns["仓储视图.时间单位"].ColumnName = "时间单位\n(Time 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耗期间\n(Consumption period: forward)";
|
|
|
dataList.Columns["MRP3.逆向消耗期"].ColumnName = "逆向\n消耗期\n(Consumption 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量交货\n(Indicator: 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);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|