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 { /// /// 创建生产订单 /// 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 molist = new List(); ////完工库位 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 moDtoList = new List(); 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 提取异常信息 /// /// 提取异常信息 /// /// private string GetExceptionMessage(Exception ex) { string faultMessage = "未知错误,请查看ERP日志!"; System.TimeoutException timeoutEx = ex as System.TimeoutException; if (timeoutEx != null) { faultMessage = "访问服务超时,请修改配置信息!"; } else { FaultException faultEx = ex as FaultException; 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 给上下文信息赋值 /// /// 给上下文信息赋值 /// /// private ThreadContext CreateContextObj() { // 实例化应用上下文对象 ThreadContext thContext = new ThreadContext(); System.Collections.Generic.Dictionary ns = new Dictionary(); 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 { /// /// 结果状态,默认值false /// public bool IsSuccess { get; set; } /// ///处理消息 /// public string MESSAGE { get; set; } /// /// 输出生产订单 /// public string MOCode { get; set; } } public class MO { /// /// 单据类型 FG02-返工生产订单,SC02-标准生产订单,SC03-标准生产订单(必有BOM),SC04-标准生产订单,YF02-研发生产订单(BOM) /// public string MO_MODocTypeCode { get; set; } /// /// 订单号 /// public string DocNo { get; set; } /// /// BOM类型 0-自制,1-委外 /// public int BOMType { get; set; } /// ///工艺生产BOM 0-主制造,1-委外 /// public int RoutingAlternate { get; set; } /// ///来源单据类型 /// public int MOSourceDocType { get; set; } /// /// BOM生产目的 0-主制造,1-委外 /// public int BOMAlternate { get; set; } /// /// 料品 /// public string code { get; set; } /// /// 单位 /// public string ProductUOM { get; set; } /// /// 生产数量 /// public Decimal MOQty { get; set; } /// /// MRP数量 /// public Decimal MRPQty { get; set; } /// /// MPS/MRP /// public bool IsMRPorMPS { get; set; } /// /// 计划开工日 /// public Nullable StartDate { get; set; } /// /// 完工日期 /// public Nullable CompleteDate { get; set; } /// /// 仓库 /// public string WhCode { get; set; } /// /// 库位 /// public string BinCode { get; set; } /// /// 部门编码 /// public string DeptCode { get; set; } } }