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

796 lines
34 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
  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.ApproveMiscShip;
  11. using UFIDA.ISV.CommitMiscShip;
  12. using UFIDA.ISV.CreateLotMaster;
  13. using UFSoft.UBF.Service;
  14. using UFSoft.UBF.Util.Context;
  15. using www.ufida.org.EntityData;
  16. namespace UFIDA.ISV.CreateBFMisShip
  17. {
  18. public class CustCreateBFMisShipSrvSub
  19. {
  20. public List<rtnRcvInfo> CustCreateBFMisShip(List<rCVhead> rCVInfoList)
  21. {
  22. #region 接口传入参数日志
  23. StringBuilder firststrlog = new StringBuilder();
  24. firststrlog.AppendLine("传入数据开始");
  25. firststrlog.AppendLine("*****************************************************");
  26. foreach (var item in rCVInfoList)
  27. {
  28. firststrlog.AppendLine("表头信息 :");
  29. firststrlog.AppendLine("单据编号:" + item.DocNO);
  30. firststrlog.AppendLine("单据类型:" + item.DocType);
  31. firststrlog.AppendLine("组织编码:" + item.OrgCode);
  32. firststrlog.AppendLine("客户编码:" + item.ClientCode);
  33. int i = 0;
  34. foreach (var line in item.lines)
  35. {
  36. i++;
  37. firststrlog.AppendLine("表体信息" + i + " :");
  38. firststrlog.AppendLine("料品编码:" + line.ItemCode);
  39. firststrlog.AppendLine("料品数量:" + line.ReqQty);
  40. firststrlog.AppendLine("批号:" + line.Batch);
  41. firststrlog.AppendLine("仓库:" + line.WhCode);
  42. }
  43. }
  44. firststrlog.AppendLine("*****************************************************");
  45. firststrlog.AppendLine("传入数据结束");
  46. Appconfig.WriteLogFile(firststrlog.ToString(), "创建杂发单");
  47. #endregion
  48. #region 服务调用框架结构
  49. UFIDAU9ISVMiscShipISVICommonCreateMiscShipClient client = new UFIDAU9ISVMiscShipISVICommonCreateMiscShipClient();
  50. //服务返回结果
  51. UFIDAU9CBOPubControllerCommonArchiveDataDTOData[] returnItems;
  52. //返回异常信息,目前还没有使用此属性
  53. UFSoft.UBF.Exceptions1.MessageBase[] returnMsg;
  54. //上下文信息
  55. object context;
  56. //传入 参数
  57. UFIDAU9ISVMiscShipISVIC_MiscShipmentDTOData[] pOList;
  58. //空
  59. string[] splitBy = new string[] { };
  60. string updatesql = "";
  61. try
  62. {
  63. List<rtnRcvInfo> rtnpos = new List<rtnRcvInfo>();
  64. long PickID = 0;
  65. long ItemID = 0;
  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.DocType == null || item.DocType == "")
  77. {
  78. rtnRcvInfo rtnpo = new rtnRcvInfo();
  79. rtnpo.IsSuccess = false;
  80. rtnpo.Message = "传入单据类型不能为空";
  81. rtnpos.Add(rtnpo);
  82. return rtnpos;
  83. }
  84. //if (item.ClientCode == null || item.ClientCode == "")
  85. //{
  86. // rtnRcvInfo rtnpo = new rtnRcvInfo();
  87. // rtnpo.IsSuccess = false;
  88. // rtnpo.Message = "传入客户信息不能为空";
  89. // rtnpos.Add(rtnpo);
  90. // return rtnpos;
  91. //}
  92. if (item.lines == null || item.lines.Count() == 0)
  93. {
  94. rtnRcvInfo rtnpo = new rtnRcvInfo();
  95. rtnpo.IsSuccess = false;
  96. rtnpo.Message = "传入行信息不能为空";
  97. rtnpos.Add(rtnpo);
  98. return rtnpos;
  99. }
  100. foreach (var _item in item.lines)
  101. {
  102. if (_item.ItemCode == null || _item.ItemCode == "")
  103. {
  104. rtnRcvInfo rtnpo = new rtnRcvInfo();
  105. rtnpo.IsSuccess = false;
  106. rtnpo.Message = "传入行信息中料号不能为空!";
  107. rtnpos.Add(rtnpo);
  108. return rtnpos;
  109. }
  110. if (_item.ReqQty == 0)
  111. {
  112. rtnRcvInfo rtnpo = new rtnRcvInfo();
  113. rtnpo.IsSuccess = false;
  114. rtnpo.Message = "传入行信息中数量不能为空";
  115. rtnpos.Add(rtnpo);
  116. return rtnpos;
  117. }
  118. if (_item.WhCode == null || _item.WhCode == "")
  119. {
  120. rtnRcvInfo rtnpo = new rtnRcvInfo();
  121. rtnpo.IsSuccess = false;
  122. rtnpo.Message = "传入行信息中仓库不能为空";
  123. rtnpos.Add(rtnpo);
  124. return rtnpos;
  125. }
  126. if (_item.DeptCode == null || _item.DeptCode == "")
  127. {
  128. rtnRcvInfo rtnpo = new rtnRcvInfo();
  129. rtnpo.IsSuccess = false;
  130. rtnpo.Message = "传入行信息中部门不能为空";
  131. rtnpos.Add(rtnpo);
  132. return rtnpos;
  133. }
  134. }
  135. }
  136. //给上下文信息赋值
  137. context = CreateContextObj();
  138. //给传入参数赋值
  139. //pOList = SetrCVDtos(rCVInfoList);
  140. StringBuilder strlog = new StringBuilder();
  141. strlog.AppendLine("创建杂发单");
  142. strlog.AppendLine("*****************************************************");
  143. string orgID = "";
  144. List<UFIDAU9ISVMiscShipISVIC_MiscShipmentDTOData> shipList = new List<UFIDAU9ISVMiscShipISVIC_MiscShipmentDTOData>();
  145. foreach (var rCVhead in rCVInfoList)
  146. {
  147. strlog.AppendLine("组织编码:" + rCVhead.OrgCode);
  148. //获取组织ID
  149. string orgsql = @"select ID from Base_Organization
  150. where Code='{0}' ";
  151. orgsql = string.Format(orgsql, rCVhead.OrgCode);
  152. DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr());
  153. if (orgdt.Rows.Count == 0)
  154. {
  155. rtnRcvInfo rtnpo = new rtnRcvInfo();
  156. rtnpo.IsSuccess = false;
  157. rtnpo.Message = "组织编码不存在";
  158. rtnpos.Add(rtnpo);
  159. strlog.AppendLine("返回数据:");
  160. strlog.AppendLine("组织编码不存在!");
  161. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  162. return rtnpos;
  163. }
  164. else
  165. {
  166. orgID = orgdt.Rows[0]["ID"].ToString();
  167. }
  168. //获取单据类型ID
  169. string docsql = @"select ID from InvDoc_MiscShipDocType
  170. where Code='{0}' AND Org='{1}'";
  171. docsql = string.Format(docsql, rCVhead.DocType, orgID);
  172. DataTable docdt = DBhlper.Query(docsql, Appconfig.GetU9ConnStr());
  173. long docTypeID = 0;
  174. if (docdt != null && docdt.Rows.Count > 0)
  175. {
  176. docTypeID = long.Parse(docdt.Rows[0]["ID"].ToString());
  177. }
  178. if (docTypeID == 0)
  179. {
  180. rtnRcvInfo rtnpo = new rtnRcvInfo();
  181. rtnpo.IsSuccess = false;
  182. rtnpo.Message = "未获取到单据类型ID";
  183. rtnpos.Add(rtnpo);
  184. strlog.AppendLine("返回数据:");
  185. strlog.AppendLine("未获取到单据类型ID!");
  186. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  187. return rtnpos;
  188. }
  189. UFIDAU9ISVMiscShipISVIC_MiscShipmentDTOData ship = new UFIDAU9ISVMiscShipISVIC_MiscShipmentDTOData();
  190. ship.m_docNo = rCVhead.DocNO;
  191. ship.m_miscShipDocType = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
  192. ship.m_miscShipDocType.m_code = rCVhead.DocType;
  193. ship.m_miscShipDocType.m_iD = docTypeID;
  194. ship.m_benefitOrg = long.Parse(orgID);
  195. ship.m_businessDate = DateTime.Now;
  196. List<UFIDAU9ISVMiscShipISVIC_MiscShipmentLDTOData> shipLineList = new List<UFIDAU9ISVMiscShipISVIC_MiscShipmentLDTOData>();
  197. foreach (rCVLine line in rCVhead.lines)
  198. {
  199. //获取料品ID
  200. string sqlitem = @"select ID from CBO_ItemMaster
  201. where Code='" + line.ItemCode + "' AND Org='" + orgID + "'";
  202. sqlitem = string.Format(sqlitem);
  203. DataTable dtitem = DBhlper.Query(sqlitem, Appconfig.GetU9ConnStr());
  204. if (dtitem.Rows.Count > 0)
  205. {
  206. ItemID = long.Parse(dtitem.Rows[0]["ID"].ToString());
  207. }
  208. else
  209. {
  210. rtnRcvInfo rtnpo = new rtnRcvInfo();
  211. rtnpo.IsSuccess = false;
  212. rtnpo.Message = "料品不存在!";
  213. rtnpos.Add(rtnpo);
  214. strlog.AppendLine("返回数据:");
  215. strlog.AppendLine("料品不存在!");
  216. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  217. return rtnpos;
  218. }
  219. //获取仓库ID
  220. string sqlWH = @"select ID,Code from CBO_Wh
  221. WHERE Code='" + line.WhCode + "' And Org='" + orgID + "' ";
  222. sqlWH = string.Format(sqlWH);
  223. DataTable _dtWH = DBhlper.Query(sqlWH, Appconfig.GetU9ConnStr());
  224. string WHCode = string.Empty;
  225. long WHID = 0;
  226. if (_dtWH != null && _dtWH.Rows.Count > 0)
  227. {
  228. WHCode = _dtWH.Rows[0]["Code"].ToString();
  229. WHID = long.Parse(_dtWH.Rows[0]["ID"].ToString());
  230. }
  231. if (string.IsNullOrWhiteSpace(WHCode))
  232. {
  233. rtnRcvInfo rtnpo = new rtnRcvInfo();
  234. rtnpo.IsSuccess = false;
  235. rtnpo.Message = "未获取到仓库";
  236. rtnpos.Add(rtnpo);
  237. strlog.AppendLine("返回数据:");
  238. strlog.AppendLine("未获取到仓库!");
  239. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  240. return rtnpos;
  241. }
  242. //获取部门ID
  243. string deptsql = @"select ID from CBO_Department
  244. where Code='{0}' AND Org='{1}'";
  245. deptsql = string.Format(deptsql, line.DeptCode, orgID);
  246. DataTable deptdt = DBhlper.Query(deptsql, Appconfig.GetU9ConnStr());
  247. long DeptID = 0;
  248. if (deptdt != null && deptdt.Rows.Count > 0)
  249. {
  250. DeptID = long.Parse(deptdt.Rows[0]["ID"].ToString());
  251. }
  252. if (DeptID == 0)
  253. {
  254. rtnRcvInfo rtnpo = new rtnRcvInfo();
  255. rtnpo.IsSuccess = false;
  256. rtnpo.Message = "未获取到部门";
  257. rtnpos.Add(rtnpo);
  258. strlog.AppendLine("返回数据:");
  259. strlog.AppendLine("未获取到部门!");
  260. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  261. return rtnpos;
  262. }
  263. UFIDAU9ISVMiscShipISVIC_MiscShipmentLDTOData shipLine = new UFIDAU9ISVMiscShipISVIC_MiscShipmentLDTOData();
  264. shipLine.m_benefitDept = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
  265. shipLine.m_benefitDept.m_code = line.DeptCode;
  266. shipLine.m_benefitDept.m_iD = DeptID;
  267. shipLine.m_itemInfo = new UFIDAU9CBOSCMItemItemInfoData();
  268. shipLine.m_itemInfo.m_itemCode = line.ItemCode;
  269. shipLine.m_itemInfo.ItemID = ItemID;
  270. shipLine.m_itemInfo.ItemID_SKey = new UFSoft.UBF.Business.BusinessEntity.EntityKey();
  271. shipLine.m_itemInfo.ItemID_SKey.ID = ItemID;
  272. shipLine.m_storeType = 4;
  273. shipLine.m_costUOMQty = line.ReqQty;
  274. shipLine.m_wh = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
  275. shipLine.m_wh.m_iD = WHID;
  276. shipLine.m_benefitOrg = long.Parse(orgID);
  277. shipLine.m_customerInfo = new UFIDAU9CBOSCMCustomerCustomerMISCInfoData();
  278. shipLine.m_customerInfo.m_code = rCVhead.ClientCode;
  279. shipLine.m_memo = line.Memo;
  280. #region 批号处理(根据料品,仓库,数量查询符合条件的批号)
  281. bool ItemIsLot = false;
  282. bool WHIsLot = false;
  283. string lotsql = @"select A.ID,ISNULL(LotParam,'') AS LotParam from CBO_ItemMaster A
  284. LEFT JOIN CBO_InventoryInfo B
  285. ON B.ItemMaster=A.ID
  286. where A.ID='{0}' AND A.Org='{1}'";
  287. lotsql = string.Format(lotsql, ItemID, orgID);
  288. DataTable lotdt = DBhlper.Query(lotsql, Appconfig.GetU9ConnStr());
  289. if (lotdt.Rows.Count != 0)
  290. {
  291. if (lotdt.Rows[0]["LotParam"].ToString() != "")
  292. {
  293. ItemIsLot = true;
  294. }
  295. }
  296. lotsql = @"select Cast(IsLot AS nvarchar(10)) AS IsLot from CBO_WH
  297. where ID='{0}'";
  298. lotsql = string.Format(lotsql, WHID);
  299. lotdt = DBhlper.Query(lotsql, Appconfig.GetU9ConnStr());
  300. if (lotdt.Rows.Count != 0)
  301. {
  302. if (lotdt.Rows[0]["IsLot"].ToString() == "1")
  303. {
  304. WHIsLot = true;
  305. }
  306. }
  307. if (ItemIsLot == true && WHIsLot == true)
  308. {
  309. lotsql = @"select LotInfo_LotCode,LotInfo_LotMaster_EntityID from InvTrans_WhQoh
  310. where ItemInfo_ItemID='{0}' AND Wh='{1}'
  311. AND StoreQty>={2} AND LotInfo_LotCode!='' AND LotInfo_LotCode IS NOT NULL";
  312. lotsql = string.Format(lotsql, ItemID, WHID, line.ReqQty);
  313. lotdt = DBhlper.Query(lotsql, Appconfig.GetU9ConnStr());
  314. if (lotdt.Rows.Count == 0)
  315. {
  316. rtnRcvInfo rtnpo = new rtnRcvInfo();
  317. rtnpo.IsSuccess = false;
  318. rtnpo.Message = "出库物料对应批号没有足够的库存,库存杂发单生成失败!";
  319. rtnpos.Add(rtnpo);
  320. strlog.AppendLine("返回数据:");
  321. strlog.AppendLine("出库物料对应批号没有足够的库存,库存杂发单生成失败!");
  322. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  323. return rtnpos;
  324. }
  325. else
  326. {
  327. bool lotisexsist = false;
  328. for (int i = 0; i < lotdt.Rows.Count; i++)
  329. {
  330. if (lotdt.Rows[i]["LotInfo_LotCode"].ToString() == line.Batch)
  331. {
  332. shipLine.m_lotInfo = new UFIDAU9CBOSCMPropertyTypesLotInfoData();
  333. shipLine.m_lotInfo.m_lotCode = lotdt.Rows[0]["LotInfo_LotCode"].ToString();
  334. shipLine.m_lotInfo.m_lotMaster = new UFIDAU9BasePropertyTypesBizEntityKeyData();
  335. shipLine.m_lotInfo.m_lotMaster.m_entityID = long.Parse(lotdt.Rows[0]["LotInfo_LotMaster_EntityID"].ToString());
  336. lotisexsist = true;
  337. }
  338. }
  339. if (lotisexsist == false)
  340. {
  341. rtnRcvInfo rtnpo = new rtnRcvInfo();
  342. rtnpo.IsSuccess = false;
  343. rtnpo.Message = "库存中不存在可以出库的批号,库存杂发单生成失败!";
  344. rtnpos.Add(rtnpo);
  345. strlog.AppendLine("返回数据:");
  346. strlog.AppendLine("库存中不存在可以出库的批号,库存杂发单生成失败!");
  347. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  348. return rtnpos;
  349. }
  350. }
  351. }
  352. #endregion
  353. shipLineList.Add(shipLine);
  354. strlog.AppendLine("料品编码:" + line.ItemCode);
  355. strlog.AppendLine("料品数量:" + line.ReqQty);
  356. strlog.AppendLine("仓库:" + WHCode);
  357. }
  358. ship.m_miscShipLs = shipLineList.ToArray();
  359. shipList.Add(ship);
  360. }
  361. pOList = shipList.ToArray();
  362. (client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
  363. (client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
  364. List<string> shDocList = new List<string>();
  365. UFIDAU9CBOPubControllerContextDTOData info = new UFIDAU9CBOPubControllerContextDTOData();
  366. info.m_orgID = long.Parse(orgID);
  367. info.m_orgCode = rCVInfoList[0].OrgCode;
  368. info.m_userID = long.Parse(ConfigurationManager.AppSettings["userID"].ToString());
  369. info.m_userCode = ConfigurationManager.AppSettings["userCode"].ToString();
  370. info.m_cultureName = ConfigurationManager.AppSettings["cultureName"].ToString();
  371. info.m_entCode = ConfigurationManager.AppSettings["enterpriseID"].ToString();
  372. returnItems = client.Do(out returnMsg, context, pOList, info);
  373. strlog.AppendLine("返回数据:");
  374. foreach (var item in returnItems)
  375. {
  376. strlog.AppendLine("单号:" + item.m_code);
  377. strlog.AppendLine("返回消息:杂发单生成成功!");
  378. }
  379. strlog.AppendLine("*****************************************************");
  380. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  381. if (returnItems.Count() > 0)
  382. {
  383. #region 提交杂发单
  384. //提交杂发单
  385. CustCommonitMisShip CommitCust = new CustCommonitMisShip();
  386. CustCommonitMisShip.OperationResult_CommitMisShip commitResult = new CustCommonitMisShip.OperationResult_CommitMisShip();
  387. commitResult = CommitCust.CustCommitMisShip(returnItems[0].m_code, rCVInfoList[0].OrgCode);
  388. if (commitResult.IsSuccess == true)
  389. {
  390. #region 审核杂发单
  391. CustApproveMiscShip ApproveCust = new CustApproveMiscShip();
  392. CustApproveMiscShip.OperationResult_ApproveMisShip approveResult = new CustApproveMiscShip.OperationResult_ApproveMisShip();
  393. approveResult = ApproveCust.CustApproveMis(returnItems[0].m_code, rCVInfoList[0].OrgCode);
  394. if (approveResult.IsSuccess == true)
  395. {
  396. rtnpos = new List<rtnRcvInfo>();
  397. rtnRcvInfo rtnpo = new rtnRcvInfo();
  398. rtnpo.IsSuccess = true;
  399. rtnpo.DocNo = returnItems[0].m_code;
  400. rtnpo.Message = "杂发单创建成功!";
  401. rtnpos.Add(rtnpo);
  402. return rtnpos;
  403. }
  404. else
  405. {
  406. rtnpos = new List<rtnRcvInfo>();
  407. rtnRcvInfo rtnpo = new rtnRcvInfo();
  408. rtnpo.IsSuccess = false;
  409. rtnpo.DocNo = returnItems[0].m_code;
  410. rtnpo.Message = "杂收单审核失败,失败原因:" + approveResult.Message;
  411. rtnpos.Add(rtnpo);
  412. return rtnpos;
  413. }
  414. #endregion
  415. }
  416. else
  417. {
  418. rtnpos = new List<rtnRcvInfo>();
  419. rtnRcvInfo rtnpo = new rtnRcvInfo();
  420. rtnpo.IsSuccess = false;
  421. rtnpo.DocNo = returnItems[0].m_code;
  422. rtnpo.Message = "杂发单提交失败,失败原因:" + commitResult.Message;
  423. rtnpos.Add(rtnpo);
  424. return rtnpos;
  425. }
  426. #endregion
  427. rtnRcvInfo rtnpotrue = new rtnRcvInfo();
  428. rtnpotrue.IsSuccess = true;
  429. rtnpotrue.DocNo = returnItems[0].m_code;
  430. rtnpotrue.Message = "杂发单创建成功!";
  431. rtnpos.Add(rtnpotrue);
  432. }
  433. return rtnpos;
  434. }
  435. catch (Exception ex)
  436. {
  437. //异常信息捕获
  438. List<rtnRcvInfo> rtnpos = new List<rtnRcvInfo>();
  439. rtnRcvInfo rtnpo = new rtnRcvInfo();
  440. rtnpo.IsSuccess = false;
  441. rtnpo.Message = GetExceptionMessage(ex).Split('<')[0];
  442. rtnpos.Add(rtnpo);
  443. StringBuilder strlog = new StringBuilder();
  444. strlog.AppendLine("创建杂发单");
  445. strlog.AppendLine("*****************************************************");
  446. strlog.AppendLine("修改创建人SQL:" + updatesql);
  447. foreach (var item in rCVInfoList)
  448. {
  449. strlog.AppendLine("组织编码:" + item.OrgCode);
  450. foreach (var line in item.lines)
  451. {
  452. strlog.AppendLine("料品编码:" + line.ItemCode);
  453. strlog.AppendLine("料品数量:" + line.ReqQty);
  454. strlog.AppendLine("仓库:" + line.WhCode);
  455. strlog.AppendLine("批号:" + line.Batch);
  456. }
  457. }
  458. strlog.AppendLine("返回消息:" + rtnpo.Message);
  459. strlog.AppendLine("*****************************************************");
  460. Appconfig.WriteLogFile(strlog.ToString(), "创建杂发单");
  461. return rtnpos;
  462. }
  463. #endregion
  464. }
  465. #region 表头类
  466. public class rCVhead
  467. {
  468. private rCVLine[] _lines;
  469. private string _DocType;
  470. private string _OrgCode;
  471. private string _ClientCode;
  472. private string _DocNO;
  473. //private string _DocType;
  474. public rCVLine[] lines
  475. {
  476. get { return _lines; }
  477. set { _lines = value; }
  478. }
  479. public string DocNO
  480. {
  481. get { return _DocNO; }
  482. set { _DocNO = value; }
  483. }
  484. /// <summary>
  485. /// 单据类型
  486. /// </summary>
  487. public string DocType
  488. {
  489. get { return _DocType; }
  490. set { _DocType = value; }
  491. }
  492. /// <summary>
  493. /// 组织编码
  494. /// </summary>
  495. public string OrgCode
  496. {
  497. get { return _OrgCode; }
  498. set { _OrgCode = value; }
  499. }
  500. /// <summary>
  501. /// 客户
  502. /// </summary>
  503. public string ClientCode
  504. {
  505. get { return _ClientCode; }
  506. set { _ClientCode = value; }
  507. }
  508. }
  509. #endregion
  510. #region 表体类
  511. public class rCVLine
  512. {
  513. /// <summary>
  514. /// 数量
  515. /// </summary>
  516. public decimal ReqQty { get; set; }
  517. public string WhCode { get; set; }
  518. //public string BinCode { get; set; }
  519. /// <summary>
  520. /// 料号
  521. /// </summary>
  522. public string ItemCode { get; set; }
  523. /// <summary>
  524. /// 受益部门
  525. /// </summary>
  526. public string DeptCode { get; set; }
  527. /// <summary>
  528. /// 库存批号
  529. /// </summary>
  530. public string Batch { get; set; }
  531. /// <summary>
  532. /// 备注
  533. /// </summary>
  534. public string Memo { get; set; }
  535. }
  536. #endregion
  537. #region 提取异常信息
  538. /// <summary>
  539. /// 提取异常信息
  540. /// </summary>
  541. /// <param name="ex"></param>
  542. private string GetExceptionMessage(Exception ex)
  543. {
  544. string faultMessage = "未知错误,请查看ERP日志!";
  545. System.TimeoutException timeoutEx = ex as System.TimeoutException;
  546. if (timeoutEx != null)
  547. {
  548. faultMessage = "访问服务超时,请修改配置信息!";
  549. }
  550. else
  551. {
  552. FaultException<ServiceException> faultEx = ex as FaultException<ServiceException>;
  553. if (faultEx == null)
  554. {
  555. faultMessage = ex.Message;
  556. }
  557. else
  558. {
  559. ServiceException serviceEx = faultEx.Detail;
  560. if (serviceEx != null && !string.IsNullOrEmpty(serviceEx.Message)
  561. && !serviceEx.Message.Equals("fault", StringComparison.OrdinalIgnoreCase))
  562. {
  563. // 错误信息在faultEx.Message中,请提取,
  564. // 格式为"Fault:料品不能为空,请录入\n 在....."
  565. int startIndex = serviceEx.Message.IndexOf(":");
  566. int endIndex = serviceEx.Message.IndexOf("\n");
  567. if (endIndex == -1)
  568. endIndex = serviceEx.Message.Length;
  569. if (endIndex > 0 && endIndex > startIndex + 1)
  570. {
  571. faultMessage = serviceEx.Message.Substring(startIndex + 1, endIndex - startIndex - 1);
  572. }
  573. else
  574. {
  575. faultMessage = serviceEx.Message;
  576. }
  577. }
  578. }
  579. }
  580. return faultMessage;
  581. }
  582. #endregion
  583. #region 给上下文信息赋值
  584. /// <summary>
  585. /// 给上下文信息赋值
  586. /// </summary>
  587. /// <returns></returns>
  588. private ThreadContext CreateContextObj()
  589. {
  590. // 实例化应用上下文对象
  591. ThreadContext thContext = new ThreadContext();
  592. System.Collections.Generic.Dictionary<object, object> ns = new Dictionary<object, object>();
  593. ns.Add("OrgID", ConfigurationManager.AppSettings["orgID"].ToString());
  594. ns.Add("UserID", ConfigurationManager.AppSettings["userID"].ToString());
  595. ns.Add("UserCode", ConfigurationManager.AppSettings["userCode"].ToString());
  596. ns.Add("Datetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  597. ns.Add("CultureName", ConfigurationManager.AppSettings["cultureName"].ToString());
  598. ns.Add("EnterpriseID", ConfigurationManager.AppSettings["enterpriseID"].ToString());
  599. ns.Add("DefaultCultureName", ConfigurationManager.AppSettings["cultureName"].ToString());
  600. thContext.nameValueHas = ns;
  601. return thContext;
  602. }
  603. #endregion
  604. #region 时间戳方法
  605. private DateTime TimestampToDateTime(long timestamp)
  606. {
  607. DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
  608. long lTime = timestamp * 10000000;
  609. TimeSpan nowTimeSpan = new TimeSpan(lTime);
  610. DateTime resultDateTime = dateTimeStart.Add(nowTimeSpan);
  611. return resultDateTime;
  612. }
  613. #endregion
  614. }
  615. #region 上下文类信息
  616. public class contextInfo
  617. {
  618. private long _OrgID;
  619. private string _OrgCode;
  620. private long _UserID;
  621. private string _UserCode;
  622. private DateTime _Datetime;
  623. private string _CultureName;
  624. private string _EnterpriseID;
  625. /// <summary>
  626. /// 组织ID
  627. /// </summary>
  628. public long OrgID
  629. {
  630. get { return _OrgID; }
  631. set { _OrgID = value; }
  632. }
  633. /// <summary>
  634. /// 组织编码
  635. /// </summary>
  636. public string OrgCode
  637. {
  638. get { return _OrgCode; }
  639. set { _OrgCode = value; }
  640. }
  641. /// <summary>
  642. /// 操作员ID
  643. /// </summary>
  644. public long UserID
  645. {
  646. get { return _UserID; }
  647. set { _UserID = value; }
  648. }
  649. /// <summary>
  650. /// 操作员编码
  651. /// </summary>
  652. public string UserCode
  653. {
  654. get { return _UserCode; }
  655. set { _UserCode = value; }
  656. }
  657. /// <summary>
  658. /// 时间
  659. /// </summary>
  660. public DateTime Datetime
  661. {
  662. get { return _Datetime; }
  663. set { _Datetime = value; }
  664. }
  665. /// <summary>
  666. /// 语言
  667. /// </summary>
  668. public string CultureName
  669. {
  670. get { return _CultureName; }
  671. set { _CultureName = value; }
  672. }
  673. /// <summary>
  674. /// 企业ID号
  675. /// </summary>
  676. public string EnterpriseID
  677. {
  678. get { return _EnterpriseID; }
  679. set { _EnterpriseID = value; }
  680. }
  681. public contextInfo()
  682. {
  683. CultureName = "zh-CN";
  684. Datetime = DateTime.Now;
  685. }
  686. }
  687. #endregion
  688. #region 返回信息类
  689. public class rtnRcvInfo
  690. {
  691. public string DocNo { get; set; }
  692. public bool IsSuccess { get; set; }
  693. public string Message { get; set; }
  694. public rtnRcvLine[] rtnLines { get; set; }
  695. }
  696. public class rtnRcvLine
  697. {
  698. public int LineNo { get; set; }
  699. //public string srcDocNo { get; set; }
  700. //public int srcLineNo { get; set; }
  701. //public decimal reqQty { get; set; }
  702. //public string proCode { get; set; }
  703. }
  704. #endregion
  705. #region 表体类
  706. //public class rCVLine
  707. //{
  708. // /// <summary>
  709. // /// 来源采购订单
  710. // /// </summary>
  711. // public string srcDocPONo { get; set; }
  712. // private int _srcDocPOLineNo;
  713. // private decimal _reqQty;
  714. // public string WhCode { get; set; }
  715. // /// <summary>
  716. // /// 炉号
  717. // /// </summary>
  718. // public string FurnaceNo { get; set; }
  719. // /// <summary>
  720. // /// 数量
  721. // /// </summary>
  722. // public decimal ReqQty
  723. // {
  724. // get { return _reqQty; }
  725. // set { _reqQty = value; }
  726. // }
  727. // /// <summary>
  728. // /// 来源采购订单行
  729. // /// </summary>
  730. // public int srcDocPOLineNo
  731. // {
  732. // get { return _srcDocPOLineNo; }
  733. // set { _srcDocPOLineNo = value; }
  734. // }
  735. //}
  736. #endregion
  737. }