圣珀
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.

822 lines
35 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using ICS.WCF.Base;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Data;
  6. using System.Linq;
  7. using System.ServiceModel;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. //using UFIDA.ISV.BFRCVApprove;
  11. //using UFIDA.ISV.BFRCVDelete;
  12. //using UFIDA.ISV.CreateLotMaster;
  13. using UFSoft.UBF.Business.BusinessEntity;
  14. using UFSoft.UBF.Service;
  15. using UFSoft.UBF.Util.Context;
  16. using www.ufida.org.EntityData;
  17. namespace UFIDA.ISV.CreateSOReturnRCV
  18. {
  19. public class CustCreateSOReturnRcvSrvSub
  20. {
  21. public List<rtnRcvInfo> CustCreateBFRCV(List<rCVhead> rCVInfoList)
  22. {
  23. StringBuilder beginstrlog = new StringBuilder();
  24. beginstrlog.AppendLine("创建销售退货单(传入数据开始)");
  25. beginstrlog.AppendLine("*****************************************************");
  26. foreach (var item in rCVInfoList)
  27. {
  28. beginstrlog.AppendLine("来源退回处理单号:" + item.srcDocPONo);
  29. foreach (var line in item.lines)
  30. {
  31. //bool isLotCheck = WHLotCheckState(line.WhCode, line.FurnaceNo);
  32. //if (isLotCheck == false)
  33. //{
  34. // line.RcvLot = "";
  35. //}
  36. beginstrlog.AppendLine("来源退回处理单行号:" + line.srcDocPOLineNo);
  37. beginstrlog.AppendLine("料品编码:" + line.ItemCode);
  38. beginstrlog.AppendLine("料品数量:" + line.ReqQty);
  39. beginstrlog.AppendLine("仓库:" + line.WhCode);
  40. //beginstrlog.AppendLine("库存批号:" + line.RcvLot);
  41. beginstrlog.AppendLine("用户编号:" + line.UserCode);
  42. beginstrlog.AppendLine("组织编号:" + line.FurnaceNo);
  43. }
  44. }
  45. beginstrlog.AppendLine("*****************************************************");
  46. Appconfig.WriteLogFile(beginstrlog.ToString(), "创建销售退货单");
  47. #region 服务调用框架结构
  48. UFIDAU9ISVRCVICeateSaleReturnRcvBySrcSRVClient client = new UFIDAU9ISVRCVICeateSaleReturnRcvBySrcSRVClient();
  49. //服务返回结果
  50. EntityKey[] returnItems;
  51. //返回异常信息,目前还没有使用此属性
  52. UFSoft.UBF.Exceptions1.MessageBase[] returnMsg;
  53. //上下文信息
  54. object context;
  55. //传入 参数
  56. UFIDAU9ISVRCVSMToRcvDTOData[] REArray;
  57. //空
  58. string[] splitBy = new string[] { };
  59. string UserID = "";
  60. string UserCode = "";
  61. string OrgID = "";
  62. long WHID = 0;
  63. try
  64. {
  65. List<rtnRcvInfo> rtnpos = new List<rtnRcvInfo>();
  66. if (rCVInfoList == null || rCVInfoList.Count == 0)
  67. {
  68. rtnRcvInfo rtnpo = new rtnRcvInfo();
  69. rtnpo.IsSuccess = false;
  70. rtnpo.Message = "传入参数不能为空";
  71. rtnpos.Add(rtnpo);
  72. return rtnpos;
  73. }
  74. foreach (var item in rCVInfoList)
  75. {
  76. if (item.lines == null || item.lines.Count() == 0)
  77. {
  78. rtnRcvInfo rtnpo = new rtnRcvInfo();
  79. rtnpo.IsSuccess = false;
  80. rtnpo.Message = "传入行信息不能为空";
  81. rtnpos.Add(rtnpo);
  82. return rtnpos;
  83. }
  84. foreach (var _item in item.lines)
  85. {
  86. if (string.IsNullOrWhiteSpace(_item.ItemCode))
  87. {
  88. rtnRcvInfo rtnpo = new rtnRcvInfo();
  89. rtnpo.IsSuccess = false;
  90. rtnpo.Message = "传入料号不能为空";
  91. rtnpos.Add(rtnpo);
  92. return rtnpos;
  93. }
  94. if (_item.srcDocPOLineNo == 0)
  95. {
  96. rtnRcvInfo rtnpo = new rtnRcvInfo();
  97. rtnpo.IsSuccess = false;
  98. rtnpo.Message = "请传入来源单据行号";
  99. rtnpos.Add(rtnpo);
  100. return rtnpos;
  101. }
  102. if (_item.ReqQty == 0)
  103. {
  104. rtnRcvInfo rtnpo = new rtnRcvInfo();
  105. rtnpo.IsSuccess = false;
  106. rtnpo.Message = "传入数量不能为空";
  107. rtnpos.Add(rtnpo);
  108. return rtnpos;
  109. }
  110. if (string.IsNullOrWhiteSpace(_item.WhCode))
  111. {
  112. rtnRcvInfo rtnpo = new rtnRcvInfo();
  113. rtnpo.IsSuccess = false;
  114. rtnpo.Message = "传入仓库不能为空";
  115. rtnpos.Add(rtnpo);
  116. return rtnpos;
  117. }
  118. }
  119. }
  120. //给传入参数赋值
  121. //pOList = SetrCVDtos(rCVInfoList);
  122. StringBuilder strlog = new StringBuilder();
  123. bool isNeedContinue = false;
  124. strlog.AppendLine("创建销售退货单");
  125. strlog.AppendLine("*****************************************************");
  126. List<UFIDAU9ISVRCVSMToRcvDTOData> REList = new List<UFIDAU9ISVRCVSMToRcvDTOData>();
  127. foreach (var rCVhead in rCVInfoList)
  128. {
  129. int Count = 10;
  130. strlog.AppendLine("来源退回处理单号:" + rCVhead.srcDocPONo);
  131. foreach (rCVLine line in rCVhead.lines)
  132. {
  133. if (!string.IsNullOrEmpty(line.FurnaceNo))
  134. {
  135. string orgsql = @"select ID from Base_Organization
  136. where Code='{0}'";
  137. orgsql = string.Format(orgsql, line.FurnaceNo);
  138. DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr());
  139. if (orgdt.Rows.Count != 0)
  140. {
  141. OrgID = orgdt.Rows[0]["ID"].ToString();
  142. }
  143. else
  144. {
  145. rtnRcvInfo rtnpo = new rtnRcvInfo();
  146. rtnpo.IsSuccess = false;
  147. rtnpo.Message = "未获取到组织";
  148. rtnpos.Add(rtnpo);
  149. return rtnpos;
  150. }
  151. }
  152. else
  153. {
  154. rtnRcvInfo rtnpo = new rtnRcvInfo();
  155. rtnpo.IsSuccess = false;
  156. rtnpo.Message = "传入组织不能为空";
  157. rtnpos.Add(rtnpo);
  158. return rtnpos;
  159. }
  160. if (line.UserCode == "")
  161. {
  162. rtnRcvInfo rtnpo = new rtnRcvInfo();
  163. rtnpo.IsSuccess = false;
  164. rtnpo.Message = "用户编码不能为空";
  165. rtnpos.Add(rtnpo);
  166. return rtnpos;
  167. }
  168. if (line.RcvLot == "")
  169. {
  170. rtnRcvInfo rtnpo = new rtnRcvInfo();
  171. rtnpo.IsSuccess = false;
  172. rtnpo.Message = "批号不能为空";
  173. rtnpos.Add(rtnpo);
  174. return rtnpos;
  175. }
  176. else
  177. {
  178. string usersql = @"select ID from CBO_Operators
  179. where Code='{0}'";
  180. usersql = string.Format(usersql, line.UserCode);
  181. DataTable userdt = DBhlper.Query(usersql, Appconfig.GetU9ConnStr());
  182. if (userdt.Rows.Count != 0)
  183. {
  184. UserID = userdt.Rows[0]["ID"].ToString();
  185. UserCode = line.UserCode;
  186. }
  187. else
  188. {
  189. rtnRcvInfo rtnpo = new rtnRcvInfo();
  190. rtnpo.IsSuccess = false;
  191. rtnpo.Message = "未获取到用户ID";
  192. rtnpos.Add(rtnpo);
  193. return rtnpos;
  194. }
  195. }
  196. string sqlShip = @"SELECT B.ID,B.RtnQtyPU,B.DocLineNo,B.ItemInfo_ItemCode,C.ArriveQtyTU
  197. FROM SM_RMA A
  198. LEFT JOIN SM_RMALine B ON B.RMA=A.ID
  199. LEFT JOIN PM_RcvLine C ON C.SrcDoc_SrcDoc_EntityID=B.RMA AND C.SrcDoc_SrcDocLineNo=B.DocLineNo
  200. WHERE A.DocNo='{0}' AND B.DocLineNo='{1}' AND B.ItemInfo_ItemCode='{2}' AND A.Status=3";
  201. sqlShip = string.Format(sqlShip, rCVhead.srcDocPONo, line.srcDocPOLineNo, line.ItemCode);
  202. DataTable _dtPOShip = DBhlper.Query(sqlShip, Appconfig.GetU9ConnStr());
  203. if (_dtPOShip != null && _dtPOShip.Rows.Count > 0)
  204. {
  205. foreach (DataRow item in _dtPOShip.Rows)
  206. {
  207. //Decimal PlanQTY = Decimal.Parse(item["RtnQtyPU"].ToString());
  208. //Decimal HasQTY = Decimal.Parse(item["ArriveQtyTU"].ToString());
  209. //if (line.ReqQty > 0 && line.ReqQty > PlanQTY - HasQTY)
  210. //{
  211. #region CRM传入数量超过U9退回处理单剩余可退数量时自动转换成剩余数量计算(已注释,出现这种情况报错)
  212. //UFIDAU9ISVRCVSMToRcvDTOData RE = new UFIDAU9ISVRCVSMToRcvDTOData();
  213. //RE.m_srcDocNo = rCVhead.srcDocPONo;
  214. //RE.m_srcDocLineNo = line.srcDocPOLineNo.ToString();
  215. //RE.m_businessDate = System.DateTime.Now;
  216. ////数量
  217. //RE.m_transQty = new UFIDAU9CBODTOsDoubleQuantityData();
  218. //RE.m_transQty.m_amount1 = PlanQTY - HasQTY;
  219. //#region 获取仓库信息
  220. //string sqlWH = @"select ID,Code from CBO_Wh
  221. // WHERE Code='" + line.WhCode + "' ";
  222. //sqlWH = string.Format(sqlWH);
  223. //DataTable _dtWH = DBhlper.Query(sqlWH, Appconfig.GetU9ConnStr());
  224. //string WHCode = string.Empty;
  225. //if (_dtWH != null && _dtWH.Rows.Count > 0)
  226. //{
  227. // WHID = long.Parse(_dtWH.Rows[0][0].ToString());
  228. // WHCode = _dtWH.Rows[0][1].ToString();
  229. //}
  230. //if (string.IsNullOrWhiteSpace(WHCode))
  231. //{
  232. // rtnRcvInfo rtnpo = new rtnRcvInfo();
  233. // rtnpo.IsSuccess = false;
  234. // rtnpo.Message = "未获取到仓库";
  235. // rtnpos.Add(rtnpo);
  236. // return rtnpos;
  237. //}
  238. //#endregion
  239. ////仓库
  240. //#region 先创建批号
  241. //string LotID = "";
  242. //if (line.RcvLot != "")
  243. //{
  244. // CustCreateLotMaster LotMasterCreate = new CustCreateLotMaster();
  245. // string lotWHCode = line.WhCode;
  246. // string lotItemCode = line.ItemCode;
  247. // string LotCode = line.RcvLot;
  248. // LotMasterCreate.CustCreateRCVLotMaster(lotWHCode, lotItemCode, LotCode, line.LotCreateTime, OrgID, ref LotID);
  249. // if (LotID == "")
  250. // {
  251. // rtnRcvInfo rtnpo = new rtnRcvInfo();
  252. // rtnpo.IsSuccess = false;
  253. // rtnpo.Message = "批号创建失败";
  254. // rtnpos.Add(rtnpo);
  255. // return rtnpos;
  256. // }
  257. //}
  258. //#endregion
  259. //RE.m_rcvLineInfoDTO = new UFIDAU9ISVRCVDTORcvLineInfoDTOData();
  260. //RE.m_rcvLineInfoDTO.m_invLotCode = line.RcvLot;
  261. //RE.m_rcvLineInfoDTO.m_storageType = 4;
  262. //RE.m_rcvLineInfoDTO.m_docLineNo = Count;
  263. //RE.m_rcvLineInfoDTO.Wh = WHID;
  264. //RE.m_rcvLineInfoDTO.m_whCode = WHCode;
  265. ////rCV.m_pOShipLineNo = 10;
  266. ////库位
  267. //RE.m_rcvLineInfoDTO.m_lineLocations = new UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData[] { };
  268. //List<UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData> locationList = new List<UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData>();
  269. //REList.Add(RE);
  270. //Count++;
  271. //strlog.AppendLine("来源采购订单行号:" + line.srcDocPOLineNo);
  272. //strlog.AppendLine("料品编码:" + line.ItemCode);
  273. //strlog.AppendLine("料品数量:" + line.ReqQty);
  274. //strlog.AppendLine("仓库:" + WHCode);
  275. //strlog.AppendLine("库存批号:" + line.RcvLot);
  276. //strlog.AppendLine("用户ID:" + line.UserID);
  277. //strlog.AppendLine("用户编号:" + line.UserCode);
  278. //strlog.AppendLine("组织编号:" + line.FurnaceNo);
  279. //line.ReqQty = line.ReqQty - RE.m_transQty.m_amount1;
  280. //continue;
  281. #endregion
  282. // rtnRcvInfo rtnpo = new rtnRcvInfo();
  283. // rtnpo.IsSuccess = false;
  284. // rtnpo.Message = "退货数量不能超出剩余未退数量!";
  285. // rtnpos.Add(rtnpo);
  286. // return rtnpos;
  287. //}
  288. //if (line.ReqQty > 0 && line.ReqQty <= PlanQTY - HasQTY)
  289. //{
  290. UFIDAU9ISVRCVSMToRcvDTOData RE = new UFIDAU9ISVRCVSMToRcvDTOData();
  291. RE.m_srcDocType = 8;
  292. RE.m_srcDocNo = rCVhead.srcDocPONo;
  293. RE.m_srcDocLineNo = line.srcDocPOLineNo.ToString();
  294. RE.m_businessDate = System.DateTime.Now;
  295. //数量
  296. RE.m_transQty = new UFIDAU9CBODTOsDoubleQuantityData();
  297. RE.m_transQty.m_amount1 = line.ReqQty;
  298. #region 获取仓库信息
  299. string sqlWH = @"select ID,Code from CBO_Wh
  300. WHERE Code='" + line.WhCode + "' ";
  301. sqlWH = string.Format(sqlWH);
  302. DataTable _dtWH = DBhlper.Query(sqlWH, Appconfig.GetU9ConnStr());
  303. string WHCode = string.Empty;
  304. if (_dtWH != null && _dtWH.Rows.Count > 0)
  305. {
  306. WHID = long.Parse(_dtWH.Rows[0][0].ToString());
  307. WHCode = _dtWH.Rows[0][1].ToString();
  308. }
  309. if (string.IsNullOrWhiteSpace(WHCode))
  310. {
  311. rtnRcvInfo rtnpo = new rtnRcvInfo();
  312. rtnpo.IsSuccess = false;
  313. rtnpo.Message = "未获取到仓库";
  314. rtnpos.Add(rtnpo);
  315. return rtnpos;
  316. }
  317. #endregion
  318. //仓库
  319. //#region 先创建批号
  320. //string LotID = "";
  321. //if (line.RcvLot != "")
  322. //{
  323. // CustCreateLotMaster LotMasterCreate = new CustCreateLotMaster();
  324. // string lotWHCode = line.WhCode;
  325. // string lotItemCode = line.ItemCode;
  326. // string LotCode = line.RcvLot;
  327. // LotMasterCreate.CustCreateRCVLotMaster(lotWHCode, lotItemCode, LotCode, line.LotCreateTime, OrgID, ref LotID);
  328. // if (LotID == "")
  329. // {
  330. // rtnRcvInfo rtnpo = new rtnRcvInfo();
  331. // rtnpo.IsSuccess = false;
  332. // rtnpo.Message = "批号创建失败";
  333. // rtnpos.Add(rtnpo);
  334. // return rtnpos;
  335. // }
  336. //}
  337. //#endregion
  338. RE.m_rcvLineInfoDTO = new UFIDAU9ISVRCVDTORcvLineInfoDTOData();
  339. RE.m_rcvLineInfoDTO.m_invLotCode = line.RcvLot;
  340. RE.m_rcvLineInfoDTO.m_storageType = 4;
  341. RE.m_rcvLineInfoDTO.m_docLineNo = Count;
  342. RE.m_rcvLineInfoDTO.Wh = WHID;
  343. RE.m_rcvLineInfoDTO.m_whCode = WHCode;
  344. RE.m_rcvLineInfoDTO.m_whManCode = "admin";
  345. //rCV.m_pOShipLineNo = 10;
  346. //库位
  347. RE.m_rcvLineInfoDTO.m_lineLocations = new UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData[] { };
  348. List<UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData> locationList = new List<UFIDAU9ISVRCVDTOOBARcvLineLocationDTOData>();
  349. REList.Add(RE);
  350. Count++;
  351. strlog.AppendLine("来源退回处理单行号(srcDocPOLineNo):" + line.srcDocPOLineNo);
  352. strlog.AppendLine("料品编码(ItemCode):" + line.ItemCode);
  353. strlog.AppendLine("料品数量(ReqQty):" + line.ReqQty);
  354. strlog.AppendLine("仓库(WHCode):" + WHCode);
  355. strlog.AppendLine("库存批号(RcvLot):" + line.RcvLot);
  356. strlog.AppendLine("用户编号(UserCode):" + line.UserCode);
  357. strlog.AppendLine("组织编号(FurnaceNo):" + line.FurnaceNo);
  358. line.ReqQty = 0;
  359. continue;
  360. //}
  361. }
  362. }
  363. else
  364. {
  365. rtnRcvInfo rtnpo = new rtnRcvInfo();
  366. rtnpo.IsSuccess = false;
  367. rtnpo.Message = "未查询到相关的退回处理单信息!";
  368. rtnpos.Add(rtnpo);
  369. return rtnpos;
  370. }
  371. }
  372. }
  373. REArray = REList.ToArray();
  374. //给上下文信息赋值
  375. context = CreateContextObj(UserID, UserCode, OrgID);
  376. (client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
  377. (client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
  378. returnItems = client.Do(out returnMsg, context, splitBy, REArray);
  379. foreach (EntityKey returnInfo in returnItems)
  380. {
  381. strlog.AppendLine("返回信息(returnInfo.ID):" + returnInfo.ID);
  382. rtnRcvInfo rtnpo = new rtnRcvInfo();
  383. //行信息 服务不返回 sql查询
  384. string sql = @"select A.DocNo as docNo,A1.DocLineNo as docLineNo,A1.ItemInfo_ItemCode,A1.ID as lineID from PM_Receivement A
  385. left join PM_RcvLine A1 on A.ID=A1.Receivement where A.ID='{0}'";
  386. sql = string.Format(sql, returnInfo.ID);
  387. DataTable dt = DBhlper.Query(sql, Appconfig.GetU9ConnStr());
  388. if (dt.Rows.Count > 0)
  389. {
  390. List<rtnRcvLine> pOLines = new List<rtnRcvLine>();
  391. foreach (DataRow dr in dt.Rows)
  392. {
  393. rtnpo.DocNo = dr["docNo"].ToString();
  394. rtnpo.IsSuccess = true;
  395. rtnRcvLine line = new rtnRcvLine();
  396. line.LineNo = int.Parse(dr["docLineNo"].ToString());
  397. pOLines.Add(line);
  398. }
  399. rtnpo.rtnLines = pOLines.ToArray();
  400. }
  401. rtnpos.Add(rtnpo);
  402. }
  403. strlog.AppendLine("返回数据:");
  404. foreach (var info in rtnpos)
  405. {
  406. strlog.AppendLine("单号:" + info.DocNo);
  407. strlog.AppendLine("结果:" + info.IsSuccess);
  408. strlog.AppendLine("返回消息:" + info.Message);
  409. foreach (var _line in info.rtnLines)
  410. {
  411. strlog.AppendLine("行号:" + _line.LineNo);
  412. }
  413. }
  414. strlog.AppendLine("*****************************************************");
  415. Appconfig.WriteLogFile(strlog.ToString(), "创建销售退货单");
  416. return rtnpos;
  417. }
  418. catch (Exception ex)
  419. {
  420. //异常信息捕获
  421. List<rtnRcvInfo> rtnpos = new List<rtnRcvInfo>();
  422. rtnRcvInfo rtnpo = new rtnRcvInfo();
  423. rtnpo.IsSuccess = false;
  424. rtnpo.Message = GetExceptionMessage(ex);
  425. rtnpos.Add(rtnpo);
  426. StringBuilder strlog = new StringBuilder();
  427. strlog.AppendLine("创建销售退货单");
  428. strlog.AppendLine("*****************************************************");
  429. foreach (var item in rCVInfoList)
  430. {
  431. strlog.AppendLine("来源退回处理单号:" + item.srcDocPONo);
  432. foreach (var line in item.lines)
  433. {
  434. strlog.AppendLine("来源退回处理单行号:" + line.srcDocPOLineNo);
  435. strlog.AppendLine("料品编码:" + line.ItemCode);
  436. strlog.AppendLine("料品数量:" + line.ReqQty);
  437. strlog.AppendLine("仓库:" + line.WhCode);
  438. strlog.AppendLine("库存批号:" + line.RcvLot);
  439. strlog.AppendLine("用户编号:" + line.UserCode);
  440. strlog.AppendLine("组织编号:" + line.FurnaceNo);
  441. }
  442. }
  443. strlog.AppendLine("返回消息:" + rtnpo.Message);
  444. strlog.AppendLine("*****************************************************");
  445. Appconfig.WriteLogFile(strlog.ToString(), "创建销售退货单");
  446. return rtnpos;
  447. }
  448. #endregion
  449. }
  450. #region 判断仓库
  451. public static bool WHLotCheckState(string WHCode, string OrgCode)
  452. {
  453. string sql = @"select IsLot from CBO_WH A
  454. LEFT JOIN Base_Organization B
  455. ON B.ID=A.ORG
  456. where A.Code='{0}' AND B.CODE='{1}'";
  457. sql = string.Format(sql, WHCode, OrgCode);
  458. DataTable dt = DBhlper.Query(sql, Appconfig.GetU9ConnStr());
  459. if (dt.Rows[0]["IsLot"].ToString() == "True")
  460. {
  461. return true;
  462. }
  463. else
  464. {
  465. return false;
  466. }
  467. }
  468. #endregion
  469. #region 表头类
  470. public class rCVhead
  471. {
  472. private rCVLine[] _lines;
  473. private string _srcDocPONo;
  474. private string _DocType;
  475. //private string _ASNNO;
  476. public rCVLine[] lines
  477. {
  478. get { return _lines; }
  479. set { _lines = value; }
  480. }
  481. /// <summary>
  482. /// 来源采购订单
  483. /// </summary>
  484. public string srcDocPONo
  485. {
  486. get { return _srcDocPONo; }
  487. set { _srcDocPONo = value; }
  488. }
  489. //public string ASNNO
  490. //{
  491. // get { return _ASNNO; }
  492. // set { _ASNNO = value; }
  493. //}
  494. public string DocType
  495. {
  496. get { return _DocType; }
  497. set { _DocType = value; }
  498. }
  499. }
  500. #endregion
  501. #region 表体类
  502. public class rCVLine
  503. {
  504. /// <summary>
  505. /// 数量
  506. /// </summary>
  507. public decimal ReqQty { get; set; }
  508. public string WhCode { get; set; }
  509. //public string BinCode { get; set; }
  510. /// <summary>
  511. /// 站点
  512. /// </summary>
  513. public string FurnaceNo { get; set; }
  514. /// <summary>
  515. /// 来源采购订单料号
  516. /// </summary>
  517. public string ItemCode { get; set; }
  518. /// <summary>
  519. /// 来源采购订单行
  520. /// </summary>
  521. public int srcDocPOLineNo { get; set; }
  522. /// <summary>
  523. /// 库存批号
  524. /// </summary>
  525. public string RcvLot { get; set; }
  526. /// <summary>
  527. /// 业务员ID
  528. /// </summary>
  529. public string UserID { get; set; }
  530. /// <summary>
  531. /// 业务员Code
  532. /// </summary>
  533. public string UserCode { get; set; }
  534. /// <summary>
  535. /// 批号创建时间
  536. /// </summary>
  537. //public DateTime LotCreateTime { get; set; }
  538. }
  539. #endregion
  540. #region 提取异常信息
  541. /// <summary>
  542. /// 提取异常信息
  543. /// </summary>
  544. /// <param name="ex"></param>
  545. private string GetExceptionMessage(Exception ex)
  546. {
  547. string faultMessage = "未知错误,请查看ERP日志!";
  548. System.TimeoutException timeoutEx = ex as System.TimeoutException;
  549. if (timeoutEx != null)
  550. {
  551. faultMessage = "访问服务超时,请修改配置信息!";
  552. }
  553. else
  554. {
  555. FaultException<ServiceException> faultEx = ex as FaultException<ServiceException>;
  556. if (faultEx == null)
  557. {
  558. faultMessage = ex.Message;
  559. }
  560. else
  561. {
  562. ServiceException serviceEx = faultEx.Detail;
  563. if (serviceEx != null && !string.IsNullOrEmpty(serviceEx.Message)
  564. && !serviceEx.Message.Equals("fault", StringComparison.OrdinalIgnoreCase))
  565. {
  566. // 错误信息在faultEx.Message中,请提取,
  567. // 格式为"Fault:料品不能为空,请录入\n 在....."
  568. int startIndex = serviceEx.Message.IndexOf(":");
  569. int endIndex = serviceEx.Message.IndexOf("\n");
  570. if (endIndex == -1)
  571. endIndex = serviceEx.Message.Length;
  572. if (endIndex > 0 && endIndex > startIndex + 1)
  573. {
  574. faultMessage = serviceEx.Message.Substring(startIndex + 1, endIndex - startIndex - 1);
  575. }
  576. else
  577. {
  578. faultMessage = serviceEx.Message;
  579. }
  580. }
  581. }
  582. }
  583. return faultMessage;
  584. }
  585. #endregion
  586. #region 给上下文信息赋值
  587. /// <summary>
  588. /// 给上下文信息赋值
  589. /// </summary>
  590. /// <returns></returns>
  591. private ThreadContext CreateContextObj(string UserID, string UserCode, string OrgID)
  592. {
  593. // 实例化应用上下文对象
  594. ThreadContext thContext = new ThreadContext();
  595. System.Collections.Generic.Dictionary<object, object> ns = new Dictionary<object, object>();
  596. ns.Add("OrgID", OrgID);
  597. ns.Add("UserID", UserID);
  598. ns.Add("UserCode", UserCode);
  599. ns.Add("Datetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  600. ns.Add("CultureName", ConfigurationManager.AppSettings["cultureName"].ToString());
  601. ns.Add("EnterpriseID", ConfigurationManager.AppSettings["enterpriseID"].ToString());
  602. ns.Add("DefaultCultureName", ConfigurationManager.AppSettings["cultureName"].ToString());
  603. thContext.nameValueHas = ns;
  604. return thContext;
  605. }
  606. #endregion
  607. #region 时间戳方法
  608. private DateTime TimestampToDateTime(long timestamp)
  609. {
  610. DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
  611. long lTime = timestamp * 10000000;
  612. TimeSpan nowTimeSpan = new TimeSpan(lTime);
  613. DateTime resultDateTime = dateTimeStart.Add(nowTimeSpan);
  614. return resultDateTime;
  615. }
  616. #endregion
  617. #region 返回信息类
  618. public class rtnRcvInfo
  619. {
  620. public string DocNo { get; set; }
  621. public bool IsSuccess { get; set; }
  622. public string Message { get; set; }
  623. public rtnRcvLine[] rtnLines { get; set; }
  624. }
  625. public class rtnRcvLine
  626. {
  627. public int LineNo { get; set; }
  628. //public string srcDocNo { get; set; }
  629. //public int srcLineNo { get; set; }
  630. //public decimal reqQty { get; set; }
  631. //public string proCode { get; set; }
  632. }
  633. #endregion
  634. }
  635. #region 上下文类信息
  636. public class contextInfo
  637. {
  638. private long _OrgID;
  639. private string _OrgCode;
  640. private long _UserID;
  641. private string _UserCode;
  642. private DateTime _Datetime;
  643. private string _CultureName;
  644. private string _EnterpriseID;
  645. /// <summary>
  646. /// 组织ID
  647. /// </summary>
  648. public long OrgID
  649. {
  650. get { return _OrgID; }
  651. set { _OrgID = value; }
  652. }
  653. /// <summary>
  654. /// 组织编码
  655. /// </summary>
  656. public string OrgCode
  657. {
  658. get { return _OrgCode; }
  659. set { _OrgCode = value; }
  660. }
  661. /// <summary>
  662. /// 操作员ID
  663. /// </summary>
  664. public long UserID
  665. {
  666. get { return _UserID; }
  667. set { _UserID = value; }
  668. }
  669. /// <summary>
  670. /// 操作员编码
  671. /// </summary>
  672. public string UserCode
  673. {
  674. get { return _UserCode; }
  675. set { _UserCode = value; }
  676. }
  677. /// <summary>
  678. /// 时间
  679. /// </summary>
  680. public DateTime Datetime
  681. {
  682. get { return _Datetime; }
  683. set { _Datetime = value; }
  684. }
  685. /// <summary>
  686. /// 语言
  687. /// </summary>
  688. public string CultureName
  689. {
  690. get { return _CultureName; }
  691. set { _CultureName = value; }
  692. }
  693. /// <summary>
  694. /// 企业ID号
  695. /// </summary>
  696. public string EnterpriseID
  697. {
  698. get { return _EnterpriseID; }
  699. set { _EnterpriseID = value; }
  700. }
  701. public contextInfo()
  702. {
  703. CultureName = "zh_CN";
  704. Datetime = DateTime.Now;
  705. }
  706. }
  707. #endregion
  708. #region 表体类
  709. //public class rCVLine
  710. //{
  711. // /// <summary>
  712. // /// 来源采购订单
  713. // /// </summary>
  714. // public string srcDocPONo { get; set; }
  715. // private int _srcDocPOLineNo;
  716. // private decimal _reqQty;
  717. // public string WhCode { get; set; }
  718. // /// <summary>
  719. // /// 炉号
  720. // /// </summary>
  721. // public string FurnaceNo { get; set; }
  722. // /// <summary>
  723. // /// 数量
  724. // /// </summary>
  725. // public decimal ReqQty
  726. // {
  727. // get { return _reqQty; }
  728. // set { _reqQty = value; }
  729. // }
  730. // /// <summary>
  731. // /// 来源采购订单行
  732. // /// </summary>
  733. // public int srcDocPOLineNo
  734. // {
  735. // get { return _srcDocPOLineNo; }
  736. // set { _srcDocPOLineNo = value; }
  737. // }
  738. //}
  739. #endregion
  740. }