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.
|
|
using ICS.WCF.Base; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.ServiceModel; using System.Text; using UFSoft.UBF.Exceptions; using UFSoft.UBF.Exceptions1; using UFSoft.UBF.Service; using UFSoft.UBF.Util.Context; using www.ufida.org.EntityData;
namespace UFIDA.ISV.CreateMO { public class CustCreateMO { /// <summary>
/// 创建生产订单
/// </summary>
public OperationResult CreateU9MO(MO mo) {
//MO-19070005 1304010018
OperationResult result = new OperationResult(); bool IsSuccess = false; string MESSAGE = ""; bool flag = false;
#region 服务调用框架结构
////实例化代理类
UFIDAU9ISVMOICreateMO4ExternalClient client = new UFIDAU9ISVMOICreateMO4ExternalClient(); //服务返回结果
UFIDAU9ISVMOMOKeyDTOData[] returnItems; //返回异常信息,目前还没有使用此属性
//上下文信息
object _context; UFSoft.UBF.Exceptions.MessageBase[] messageBase = null;
try { //给上下文信息赋值
_context = CreateContextObj();
string ItemName = string.Empty; string ItemUnit = string.Empty; long CodeID = 0; long BOMVersion = 0; string VersionCode = string.Empty;
//测试时可以放开
//mo.code = "1131000000"; //1305040028 1303020289 1304010018
////mo.MO_MODocTypeCode = "SC02"; //SC02 SC03
//mo.MO_MODocTypeCode = "SC03"; //SC02 SC03
//mo.IsMRPorMPS = false; // MPS/MRP
//mo.MOQty = 1;
//mo.MRPQty = 1;
//mo.MOSourceDocType = 3;
//mo.BOMType = 0;
//mo.BOMAlternate = 0;
//mo.RoutingAlternate = 0;
//mo.DeptCode = "0802";
//mo.WhCode = "20";
//mo.BinCode = "ZP1-01";
////mo.StartDate = DateTime.Now;
//mo.StartDate = DateTime.Parse("2019-07-01");
//mo.CompleteDate = DateTime.Parse("2019-10-01");
if (string.IsNullOrWhiteSpace(mo.code)) { IsSuccess = false; result.MESSAGE = "料品编码不可为空!"; return result; }
www.ufida.org.EntityData.UFIDAU9ISVMOMODTOData moDtoData = new www.ufida.org.EntityData.UFIDAU9ISVMOMODTOData(); //单据类型
moDtoData.m_docType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_docType.m_code = mo.MO_MODocTypeCode;// "1";
//moDtoData.m_docType.m_name = "标准生产订单";
//生产部门
moDtoData.m_department = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_department.m_code = mo.DeptCode;// "0801";
//料品
moDtoData.m_itemMaster = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_itemMaster.m_code = mo.code; ////版本
//moDtoData.m_itemVersion = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//DataTable dt = Appconfig.GetItemMaster(mo.code);
//if (dt != null && dt.Rows.Count > 0)
//{
// foreach (DataRow row in dt.Rows)
// {
// CodeID = long.Parse(row["ID"].ToString());
// ItemName = row["Name"].ToString();
// ItemUnit = row["BOM_UNIT"].ToString();
// //BOMVersion = long.Parse(row["BOMVersion"].ToString());
// //VersionCode = row["VersionCode"].ToString();
// }
//}
//BOM版本
//moDtoData.m_bOMVersion = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//moDtoData.m_bOMVersion.m_code = "A1";
//moDtoData.m_bOMEffDate = DateTime.Parse("2016-08-01");
//生产数量
moDtoData.m_productQty = mo.MOQty; //MRP数量
moDtoData.m_mRPQty = mo.MRPQty;
//BOM类型
moDtoData.m_bOMType = mo.BOMType; //来源单据类型 3-手工生单
moDtoData.m_mOSourceDocType = 3; //计划开工日期?
//moDtoData.m_actualStartDate = mo.StartDate.Value;
moDtoData.m_startDate = mo.StartDate.Value; //20190805新增完工日期
//moDtoData.m_completeDate = mo.CompleteDate.Value;
//需求分类
moDtoData.m_demandCode = -1;
//CompleteInOrg 入库组织
//入库组织?
moDtoData.m_org = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_org.m_code = ConfigurationManager.AppSettings["orgCode"].ToString(); moDtoData.m_org.m_iD = long.Parse(ConfigurationManager.AppSettings["orgID"].ToString());
//货主组织
moDtoData.m_ownerOrg = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_ownerOrg.m_code = ConfigurationManager.AppSettings["orgCode"].ToString(); moDtoData.m_ownerOrg.m_iD = long.Parse(ConfigurationManager.AppSettings["orgID"].ToString());
//工艺生产目的
//moDtoData.m_routingAlternate = mo.RoutingAlternate;
//生产订单批号
//moDtoData.m_productLotMaster = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//moDtoData.m_productLotNo = "";
////业务员
//moDtoData.m_businessPerson = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//moDtoData.m_businessPerson.m_code = "081201";
//ApplyQty 材料申请套数
//IsFlagForNewComp 是否是启用新完工模块创建
//IsFlagNewIssue 是否启用领料申请
//IsFlagNewNoIssueToConfirm 是否无申请材料出库
//IsFlagNewNoRecedeToConfirm 是否无申请材料退库
//IsFlagNewSFCTask 是否启用车间任务管理
//BFOpportunity 倒冲时机
//WFCurrentState 当前状态
//WFOriginalState 之前状态
//BusinessCreatedBy 业务制单人
//BusinessCreatedOn 业务制单日期
//BusinessType 业务类型
//DocState 状态
//IsFIClose 财务关闭
//IsFirmed 锁定
moDtoData.m_isFirmed = false;
//moDtoData.m_bOMECONo = mo.code;
//moDtoData.m_mOOperationDTOs
//库位、完工存储地点
List<UFIDAU9ISVMOMOOperationDTOData> molist = new List<UFIDAU9ISVMOMOOperationDTOData>(); ////完工库位
UFIDAU9ISVMOMOOperationDTOData _moDtoData = new UFIDAU9ISVMOMOOperationDTOData(); //_moDtoData.m_completeBin = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//_moDtoData.m_completeBin.m_code = "LJE2-3-2"; //LJE2-3-2 //6-01
//完工存储地点
//_moDtoData.m_completeWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//_moDtoData.m_completeWh.m_code = "03";
//入库存储地点
moDtoData.m_sCVWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_sCVWh.m_code = mo.WhCode;// "03";
//入库库位
//moDtoData.m_sCVBin.m_code = ""; //20190219删除
if (!string.IsNullOrWhiteSpace(mo.BinCode)) { moDtoData.m_sCVBin = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); moDtoData.m_sCVBin.m_code = mo.BinCode;// "LJE2-3-2"; //20190219删除 必须加入库库位
}
////IsCancel 终止
//_moDtoData.m_isCancel = false;
////UrgentRatio 紧迫系数
//_moDtoData.m_urgentRatio = 0;
////CostField 成本域
//moDtoData.m_costField = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//moDtoData.m_costField.m_code = "03";
//molist.Add(_moDtoData);
//moDtoData.m_mOOperationDTOs = molist.ToArray();
//moDtoData.m_mOSrcRelationDTOs = new UFIDAU9ISVMOMOSrcRelationDTOData[]{};
//工艺生产BOM 0-主制造,1-委外
moDtoData.m_alternateType = 0;
List<UFIDAU9ISVMOMODTOData> moDtoList = new List<UFIDAU9ISVMOMODTOData>(); moDtoList.Add(moDtoData);
returnItems = client.Do(out messageBase, _context, moDtoList.ToArray());
foreach (UFIDAU9ISVMOMOKeyDTOData data in returnItems) { StringBuilder str = new StringBuilder(); str.AppendLine("创建MO"); str.AppendLine("当前时间:" + DateTime.Now); str.AppendLine("工单:" + data.m_docNo); str.AppendLine("返回错误信息:" + data.m_errMsg);
Appconfig.WriteLogFile(str.ToString(), "创建U9_MO"); if (!string.IsNullOrWhiteSpace(data.m_errMsg)) { flag = false; MESSAGE = data.m_errMsg; } else { flag = true; } IsSuccess = flag ? true : false; if (string.IsNullOrWhiteSpace(MESSAGE)) { MESSAGE = IsSuccess == true ? "创建MO订单成功" : "创建MO订单失败"; } result.IsSuccess = IsSuccess; result.MESSAGE = MESSAGE; result.MOCode = data.m_docNo; //DateTime.Now.AddDays(-1)
}
#region 创建MO订单
//if ((returnItems != null) && (returnItems.Length > 0))
//{
// flag = true;
// result.MOCode = returnItems[0].m_docNo;
//}
//else
//{
// flag = false;
//}
#endregion
} catch (Exception ex) { //异常信息捕获
result.IsSuccess = false; result.MESSAGE = MESSAGE = GetExceptionMessage(ex); return result; } //finally
//{
// result.IsSuccess = IsSuccess;
// result.MESSAGE = MESSAGE;
//}
#endregion
return result; }
#region 提取异常信息
/// <summary>
/// 提取异常信息
/// </summary>
/// <param name="ex"></param>
private string GetExceptionMessage(Exception ex) { string faultMessage = "未知错误,请查看ERP日志!";
System.TimeoutException timeoutEx = ex as System.TimeoutException; if (timeoutEx != null) { faultMessage = "访问服务超时,请修改配置信息!"; } else { FaultException<ServiceException> faultEx = ex as FaultException<ServiceException>; if (faultEx == null) { faultMessage = ex.Message; } else { ServiceException serviceEx = faultEx.Detail; if (serviceEx != null && !string.IsNullOrEmpty(serviceEx.Message) && !serviceEx.Message.Equals("fault", StringComparison.OrdinalIgnoreCase)) { // 错误信息在faultEx.Message中,请提取,
// 格式为"Fault:料品不能为空,请录入\n 在....."
int startIndex = serviceEx.Message.IndexOf(":"); int endIndex = serviceEx.Message.IndexOf("\n"); if (endIndex == -1) endIndex = serviceEx.Message.Length; if (endIndex > 0 && endIndex > startIndex + 1) { faultMessage = serviceEx.Message.Substring(startIndex + 1, endIndex - startIndex - 1); } else { faultMessage = serviceEx.Message; } } } } return faultMessage; }
#endregion
#region 给上下文信息赋值
/// <summary>
/// 给上下文信息赋值
/// </summary>
/// <returns></returns>
private ThreadContext CreateContextObj() { // 实例化应用上下文对象
ThreadContext thContext = new ThreadContext();
System.Collections.Generic.Dictionary<object, object> ns = new Dictionary<object, object>(); ns.Add("OrgID", ConfigurationManager.AppSettings["orgID"].ToString()); ns.Add("UserID", ConfigurationManager.AppSettings["userID"].ToString()); ns.Add("UserCode", ConfigurationManager.AppSettings["userCode"].ToString()); ns.Add("Datetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); ns.Add("CultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); ns.Add("EnterpriseID", ConfigurationManager.AppSettings["enterpriseID"].ToString()); ns.Add("DefaultCultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); thContext.nameValueHas = ns;
return thContext; } #endregion
}
public class OperationResult { /// <summary>
/// 结果状态,默认值false
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
///处理消息
/// </summary>
public string MESSAGE { get; set; }
/// <summary>
/// 输出生产订单
/// </summary>
public string MOCode { get; set; } }
public class MO { /// <summary>
/// 单据类型 FG02-返工生产订单,SC02-标准生产订单,SC03-标准生产订单(必有BOM),SC04-标准生产订单,YF02-研发生产订单(BOM)
/// </summary>
public string MO_MODocTypeCode { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string DocNo { get; set; }
/// <summary>
/// BOM类型 0-自制,1-委外
/// </summary>
public int BOMType { get; set; }
/// <summary>
///工艺生产BOM 0-主制造,1-委外
/// </summary>
public int RoutingAlternate { get; set; }
/// <summary>
///来源单据类型
/// </summary>
public int MOSourceDocType { get; set; }
/// <summary>
/// BOM生产目的 0-主制造,1-委外
/// </summary>
public int BOMAlternate { get; set; }
/// <summary>
/// 料品
/// </summary>
public string code { get; set; }
/// <summary>
/// 单位
/// </summary>
public string ProductUOM { get; set; }
/// <summary>
/// 生产数量
/// </summary>
public Decimal MOQty { get; set; }
/// <summary>
/// MRP数量
/// </summary>
public Decimal MRPQty { get; set; }
/// <summary>
/// MPS/MRP
/// </summary>
public bool IsMRPorMPS { get; set; }
/// <summary>
/// 计划开工日
/// </summary>
public Nullable<DateTime> StartDate { get; set; }
/// <summary>
/// 完工日期
/// </summary>
public Nullable<DateTime> CompleteDate { get; set; }
/// <summary>
/// 仓库
/// </summary>
public string WhCode { get; set; }
/// <summary>
/// 库位
/// </summary>
public string BinCode { get; set; }
/// <summary>
/// 部门编码
/// </summary>
public string DeptCode { get; set; }
}
}
|