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.
515 lines
21 KiB
515 lines
21 KiB
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 System.Threading.Tasks;
|
|
//using UFIDA.ISV.ApproveCompRpt;
|
|
//using UFIDA.ISV.CloseCompRptSV;
|
|
//using UFIDA.ISV.DeleteCompRptSV;
|
|
using UFSoft.UBF.Service;
|
|
using UFSoft.UBF.Util.Context;
|
|
using www.ufida.org.EntityData;
|
|
|
|
namespace UFIDA.ISV.CreateCompRpt
|
|
{
|
|
public class CustCreateCompRptSrvSub
|
|
{
|
|
|
|
/// <summary>
|
|
/// 创建完工报告
|
|
/// </summary>
|
|
/// <param name="qty"></param>
|
|
/// <param name="docTypeCode"></param>
|
|
/// <param name="moCode"></param>
|
|
/// <param name="Recer"></param>
|
|
/// <param name="RecDept"></param>
|
|
/// <returns></returns>
|
|
public OperationResult CustCreateCompRpt(List<CompRpt> CompRptList)//List<rtnPoinfo>
|
|
{
|
|
#region 入口日志
|
|
StringBuilder begionstr = new StringBuilder();
|
|
begionstr.AppendLine("日志记录开始");
|
|
foreach (var item in CompRptList)
|
|
{
|
|
bool isLotCheck = Appconfig.WHLotCheckState(item.WHCode, item.OrgCode);
|
|
if (isLotCheck == false)
|
|
{
|
|
item.Batch = "";
|
|
}
|
|
begionstr.AppendLine("工单:" + item.moCode);
|
|
begionstr.AppendLine("数量:" + item.qty);
|
|
begionstr.AppendLine("单据类型:" + item.docTypeCode);
|
|
begionstr.AppendLine("操作员:" + item.Recer);
|
|
begionstr.AppendLine("仓库:" + item.WHCode);
|
|
begionstr.AppendLine("部门:" + item.RecDept);
|
|
begionstr.AppendLine("供应商编码:" + item.VenderCode);
|
|
begionstr.AppendLine("供应商名称:" + item.VenderName);
|
|
begionstr.AppendLine("组织编码:" + item.OrgCode);
|
|
begionstr.AppendLine("物料编码:" + item.ItemCode);
|
|
begionstr.AppendLine("传入批次:" + item.Batch);
|
|
begionstr.AppendLine("备注:" + item.Memo);
|
|
}
|
|
|
|
Appconfig.WriteLogFile(begionstr.ToString(), "创建完工报告");
|
|
#endregion
|
|
#region 服务调用框架结构
|
|
//实例化代理类 UFIDAU9ISVItemIBatchCreateItemByDTOSRVClient
|
|
|
|
UFIDAU9ISVMOICreateCompRptSrvClient client = new UFIDAU9ISVMOICreateCompRptSrvClient();
|
|
//服务返回结果
|
|
UFIDAU9ISVMOCompRptKeyDTOData[] returnItem;
|
|
//返回异常信息,目前还没有使用此属性
|
|
UFSoft.UBF.Exceptions.MessageBase[] returnMsg;
|
|
//上下文信息
|
|
object context;
|
|
//传入 参数
|
|
UFIDAU9ISVMOCompRptDTOData[] compRptDTOs;
|
|
try
|
|
{
|
|
OperationResult result = new OperationResult();
|
|
if (CompRptList == null || CompRptList.Count == 0)
|
|
{
|
|
result.MESSAGE = "请传入数据";
|
|
result.IsSuccess = false;
|
|
return result;
|
|
}
|
|
string OrgID = "";
|
|
string orgsql = @"select ID from Base_Organization
|
|
where Code='{0}'";
|
|
orgsql = string.Format(orgsql, CompRptList[0].OrgCode);
|
|
DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr());
|
|
if (orgdt.Rows.Count != 0)
|
|
{
|
|
OrgID = orgdt.Rows[0]["ID"].ToString();
|
|
}
|
|
else
|
|
{
|
|
result.MESSAGE = "传入的组织编码有误!";
|
|
result.IsSuccess = false;
|
|
return result;
|
|
}
|
|
//给上下文信息赋值
|
|
context = CreateContextObj(OrgID);
|
|
//给传入参数赋值
|
|
compRptDTOs = GetDataNew(CompRptList, OrgID);
|
|
|
|
//服务调用
|
|
|
|
(client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
|
|
(client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
|
|
returnItem = client.Do(out returnMsg, context, compRptDTOs);
|
|
|
|
|
|
result.poheadList = returnItem;
|
|
|
|
StringBuilder str = new StringBuilder();
|
|
str.AppendLine("创建完工报告");
|
|
foreach (var item in CompRptList)
|
|
{
|
|
str.AppendLine("工单:" + item.moCode);
|
|
str.AppendLine("数量:" + item.qty);
|
|
str.AppendLine("单据类型:" + item.docTypeCode);
|
|
str.AppendLine("操作员:" + item.Recer);
|
|
str.AppendLine("仓库:" + item.WHCode);
|
|
str.AppendLine("部门:" + item.RecDept);
|
|
str.AppendLine("组织编码" + item.OrgCode);
|
|
str.AppendLine("物料编码:" + item.ItemCode);
|
|
str.AppendLine("传入批次:" + item.Batch);
|
|
str.AppendLine("备注:" + item.Memo);
|
|
}
|
|
str.AppendLine("结果:" + "True");
|
|
|
|
Appconfig.WriteLogFile(str.ToString(), "创建完工报告");
|
|
|
|
result.OrgID = OrgID;
|
|
result.DocNo = returnItem[0].m_docNo;
|
|
result.IsSuccess = true;
|
|
result.MESSAGE = "完工报告创建成功";
|
|
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
OperationResult result = new OperationResult();
|
|
StringBuilder str = new StringBuilder();
|
|
str.AppendLine("创建完工报告异常");
|
|
//异常信息捕获
|
|
//ReturnValue2 value = new ReturnValue2();
|
|
result.IsSuccess = false;
|
|
result.MESSAGE = GetExceptionMessage(ex);
|
|
foreach (var item in CompRptList)
|
|
{
|
|
str.AppendLine("工单:" + item.moCode);
|
|
str.AppendLine("数量:" + item.qty);
|
|
str.AppendLine("单据类型:" + item.docTypeCode);
|
|
str.AppendLine("操作员:" + item.Recer);
|
|
str.AppendLine("部门:" + item.RecDept);
|
|
str.AppendLine("仓库:" + item.WHCode);
|
|
str.AppendLine("物料编码:" + item.ItemCode);
|
|
str.AppendLine("传入批次:" + item.Batch);
|
|
str.AppendLine("备注:" + item.Memo);
|
|
|
|
str.AppendLine("错误消息:" + result.MESSAGE);
|
|
}
|
|
str.AppendLine("结果:" + "false");
|
|
Appconfig.WriteLogFile(str.ToString(), "创建完工报告异常");
|
|
|
|
//return value;
|
|
return result;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
private static UFIDAU9ISVMOCompRptDTOData[] GetDataNew(List<CompRpt> CompRptList, string OrgID)
|
|
{
|
|
List<UFIDAU9ISVMOCompRptDTOData> datas = new List<UFIDAU9ISVMOCompRptDTOData>();
|
|
List<UFIDAU9ISVMOCompRptRcvLineDTOData> rptrcvlinelist = new List<UFIDAU9ISVMOCompRptRcvLineDTOData>();
|
|
foreach (var item in CompRptList)
|
|
{
|
|
UFIDAU9ISVMOCompRptDTOData data = new UFIDAU9ISVMOCompRptDTOData();
|
|
if (item.qty != 0)
|
|
{
|
|
data.m_completeQty = item.qty;
|
|
data.m_completeQtyCoUOM = item.qty;
|
|
data.m_completeQtyWhUOM = item.qty;
|
|
data.m_eligibleQtyCoUOM = item.qty;
|
|
data.m_reworkingQtyCoUOM = item.qty;
|
|
}
|
|
data.m_org = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_org.m_iD = long.Parse(OrgID);
|
|
long LotMaster = 0;
|
|
if (!string.IsNullOrWhiteSpace(item.Batch))
|
|
{
|
|
//创建批号
|
|
string lotID = "";
|
|
UFIDA.ISV.CreateLotMaster.CustCreateLotMaster createLot = new CreateLotMaster.CustCreateLotMaster();
|
|
UFIDA.ISV.CreateLotMaster.CustCreateLotMaster.OperationResule result = createLot.CustCreateRCVLotMaster(item.WHCode, item.ItemCode, item.Batch, OrgID, ref lotID);
|
|
|
|
if (result.IsSuccess)
|
|
{
|
|
LotMaster = long.Parse(lotID);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("批号生成失败,完工报告生成失败!");
|
|
}
|
|
}
|
|
data.m_docNo = item.DocNO;
|
|
data.m_completeDocType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_completeDocType.m_code = item.docTypeCode;
|
|
data.m_completeDocType.m_iD = GetTypeID(item.docTypeCode, OrgID);
|
|
data.m_mO = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_mO.m_code = item.moCode;
|
|
data.m_handlePerson = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_handlePerson.m_code = item.Recer;
|
|
data.m_handleDept = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_handleDept.m_code = item.RecDept;
|
|
|
|
data.m_rcvWh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_rcvWh.m_iD = GetWHID(item.WHCode, OrgID);
|
|
data.m_completeDate = DateTime.Now;
|
|
data.m_actualRcvTime = DateTime.Now;
|
|
List<UFIDAU9ISVMOCompRptRcvLineDTOData> rcvLineList = new List<UFIDAU9ISVMOCompRptRcvLineDTOData>();
|
|
UFIDAU9ISVMOCompRptRcvLineDTOData rcvLine = new UFIDAU9ISVMOCompRptRcvLineDTOData();
|
|
if (LotMaster != 0)
|
|
{
|
|
rcvLine.m_rcvLotNo = item.Batch;
|
|
rcvLine.m_rcvLotMaster = long.Parse(LotMaster.ToString());
|
|
}
|
|
rcvLine.m_storageType = 4;
|
|
rcvLine.m_grade = -1;
|
|
rcvLine.m_element = -1;
|
|
rcvLine.m_descFlexField = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData();
|
|
rcvLine.m_descFlexField.m_privateDescSeg1 = item.Memo;
|
|
rcvLine.m_descFlexField.m_privateDescSeg2 = item.VenderCode;
|
|
rcvLine.m_descFlexField.m_privateDescSeg3 = item.VenderName;
|
|
rcvLineList.Add(rcvLine);
|
|
data.m_completeRptRcvLines = rcvLineList.ToArray();
|
|
|
|
datas.Add(data);
|
|
}
|
|
|
|
return datas.ToArray();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建完工报告
|
|
/// </summary>
|
|
/// <param name="qty"></param>
|
|
/// <param name="docTypeCode"></param>
|
|
/// <param name="moCode"></param>
|
|
/// <param name="Recer"></param>
|
|
/// <param name="RecDept"></param>
|
|
/// <returns></returns>
|
|
public static ReturnValue2 CustCreateCompRpt_bak20200306(decimal qty, string docTypeCode, string moCode, string Recer, string RecDept)//List<rtnPoinfo>
|
|
{
|
|
#region 服务调用框架结构
|
|
//实例化代理类 UFIDAU9ISVItemIBatchCreateItemByDTOSRVClient
|
|
|
|
UFIDAU9ISVMOICreateCompRptSrvClient client = new UFIDAU9ISVMOICreateCompRptSrvClient();
|
|
//服务返回结果
|
|
UFIDAU9ISVMOCompRptKeyDTOData[] returnItem;
|
|
//返回异常信息,目前还没有使用此属性
|
|
UFSoft.UBF.Exceptions.MessageBase[] returnMsg;
|
|
//上下文信息
|
|
object context;
|
|
//传入 参数
|
|
UFIDAU9ISVMOCompRptDTOData[] compRptDTOs;
|
|
try
|
|
{
|
|
//给上下文信息赋值
|
|
context = CreateContextObj("");
|
|
//给传入参数赋值
|
|
compRptDTOs = GetData(qty, docTypeCode, moCode, Recer, RecDept);
|
|
|
|
//服务调用
|
|
|
|
(client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
|
|
(client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
|
|
returnItem = client.Do(out returnMsg, context, compRptDTOs);
|
|
ReturnValue2 value = new ReturnValue2();
|
|
value.poheadList = returnItem;
|
|
|
|
StringBuilder str = new StringBuilder();
|
|
str.AppendLine("创建完工报告");
|
|
str.AppendLine("单号:" + returnItem[0].m_docNo);
|
|
str.AppendLine("工单:" + moCode);
|
|
str.AppendLine("数量:" + qty);
|
|
str.AppendLine("单据类型:" + docTypeCode);
|
|
str.AppendLine("操作员:" + Recer);
|
|
str.AppendLine("部门:" + RecDept);
|
|
str.AppendLine("结果:" + "True");
|
|
Appconfig.WriteLogFile(str.ToString(), "创建完工报告");
|
|
|
|
//使实际入库时间为null
|
|
foreach (UFIDAU9ISVMOCompRptKeyDTOData data in returnItem)
|
|
{
|
|
string sql = @"update MO_CompleteRpt set ActualRcvTime=NULL from MO_CompleteRpt where DocNo='" + data.m_docNo + "'";
|
|
DBhlper.Query(sql, Appconfig.GetU9ConnStr());
|
|
}
|
|
return value;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
StringBuilder str = new StringBuilder();
|
|
str.AppendLine("创建完工报告");
|
|
str.AppendLine("工单:" + moCode);
|
|
str.AppendLine("数量:" + qty);
|
|
str.AppendLine("单据类型:" + docTypeCode);
|
|
str.AppendLine("操作员:" + Recer);
|
|
str.AppendLine("部门:" + RecDept);
|
|
str.AppendLine("错误:" + GetExceptionMessage(ex));
|
|
str.AppendLine("错误:" + "False");
|
|
Appconfig.WriteLogFile(str.ToString(), "创建完工报告");
|
|
//异常信息捕获
|
|
ReturnValue2 value = new ReturnValue2();
|
|
value.Mes = GetExceptionMessage(ex);
|
|
return value;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#region 提取异常信息
|
|
/// <summary>
|
|
/// 提取异常信息
|
|
/// </summary>
|
|
/// <param name="ex"></param>
|
|
private static 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 static ThreadContext CreateContextObj(string OrgID)
|
|
{
|
|
// 实例化应用上下文对象
|
|
ThreadContext thContext = new ThreadContext();
|
|
|
|
|
|
System.Collections.Generic.Dictionary<object, object> ns = new Dictionary<object, object>();
|
|
ns.Add("OrgID", OrgID);
|
|
ns.Add("OrgCode", ConfigurationManager.AppSettings["orgCode"].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
|
|
|
|
private static UFIDAU9ISVMOCompRptDTOData[] GetData(decimal qty, string docTypeCode, string moCode, string Recer, string RecDept)
|
|
{
|
|
List<UFIDAU9ISVMOCompRptDTOData> datas = new List<UFIDAU9ISVMOCompRptDTOData>();
|
|
UFIDAU9ISVMOCompRptDTOData data = new UFIDAU9ISVMOCompRptDTOData();
|
|
if (qty != 0)
|
|
{
|
|
data.m_completeQty = qty;
|
|
}
|
|
|
|
data.m_completeDocType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_completeDocType.m_code = docTypeCode;
|
|
//data.m_completeDocType.m_iD = GetTypeID(docTypeCode);
|
|
data.m_mO = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_mO.m_code = moCode;
|
|
data.m_handlePerson = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_handlePerson.m_code = Recer;
|
|
data.m_handleDept = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
|
|
data.m_handleDept.m_code = RecDept;
|
|
|
|
//data.m_completeDate =DateTime. ;
|
|
datas.Add(data);
|
|
//data.m_actualRcvTime=;
|
|
return datas.ToArray();
|
|
|
|
}
|
|
private static long GetTypeID(string docTypeCode, string OrgID)
|
|
{
|
|
string sql = @"SELECT A.[ID] as [ID], A.[Code] as [Code]
|
|
FROM MO_CompleteRptDocType as A
|
|
left join [MO_CompleteRptDocType_Trl] as A1 on (A1.SysMlFlag = 'zh-CN') and (A.[ID] = A1.[ID])
|
|
left join [Base_Organization] as A4 on (A.[Org] = A4.[ID])
|
|
WHERE ((A.[Code] = '"+ docTypeCode + "' and (1 = 1)) and (A4.[ID] = '" + OrgID + "')) ";
|
|
DataTable dt = DBhlper.Query(sql, Appconfig.GetU9ConnStr());
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
return long.Parse(dt.Rows[0][0].ToString());
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
public static long GetWHID(string WHCode, string OrgID)
|
|
{
|
|
long WHID = 0;
|
|
string sql = @" SELECT ID FROM CBO_Wh WHERE Code='" + WHCode + "' AND Org='" + OrgID + "' ";
|
|
sql = string.Format(sql);
|
|
DataTable _dtWH = DBhlper.Query(sql, Appconfig.GetU9ConnStr());
|
|
string _WHCode = string.Empty;
|
|
|
|
if (_dtWH != null && _dtWH.Rows.Count > 0)
|
|
{
|
|
_WHCode = _dtWH.Rows[0][0].ToString();
|
|
WHID = long.Parse(_WHCode);
|
|
}
|
|
|
|
return WHID;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class ReturnValue2//List<rtnPoinfo>
|
|
{
|
|
public string Mes;
|
|
public UFIDAU9ISVMOCompRptKeyDTOData[] poheadList;
|
|
}
|
|
|
|
public class CompRpt
|
|
{
|
|
public string DocNO { get; set; }
|
|
public decimal qty { get; set; }
|
|
public string docTypeCode { get; set; }
|
|
public string moCode { get; set; }
|
|
public string Recer { get; set; }
|
|
public string RecDept { get; set; }
|
|
public string ItemCode { get; set; }
|
|
|
|
public string WHCode { get; set; }
|
|
|
|
public bool NeedTransferIN { get; set; }
|
|
|
|
public string OrgCode { get; set; }
|
|
|
|
public string Batch { get; set; }
|
|
|
|
public string Memo { get; set; }
|
|
|
|
public string VenderCode { get; set; }
|
|
|
|
public string VenderName { get; set; }
|
|
|
|
}
|
|
|
|
public class OperationResult//List<rtnPoinfo>
|
|
{
|
|
/// <summary>
|
|
/// 结果状态,默认值false
|
|
/// </summary>
|
|
public bool IsSuccess { get; set; }
|
|
|
|
/// <summary>
|
|
///处理消息
|
|
/// </summary>
|
|
public string MESSAGE { get; set; }
|
|
|
|
/// <summary>
|
|
/// 完工报告编码
|
|
/// </summary>
|
|
public string DocNo { get; set; }
|
|
/// <summary>
|
|
/// 组织ID
|
|
/// </summary>
|
|
public string OrgID { get; set; }
|
|
|
|
public UFIDAU9ISVMOCompRptKeyDTOData[] poheadList;
|
|
}
|
|
|
|
|
|
}
|