圣珀
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
29 KiB

2 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Runtime.Serialization;
  7. using System.Data;
  8. using ICS.WCF.Base;
  9. using ICSSoft.Entity;
  10. using System.Data.SqlClient;
  11. namespace ICS.MaterialReturnGet
  12. {
  13. /*
  14. * 退
  15. */
  16. public class GetMaterialReturn
  17. {
  18. public FormICSCreatedArrivalNoticeModel CustGetMaterialReturn(OutSourePick o)
  19. {
  20. FormICSCreatedArrivalNoticeModel result = new FormICSCreatedArrivalNoticeModel();
  21. using (SqlConnection conn = new SqlConnection(Appconfig.GetMESStr()))
  22. {
  23. conn.Open();
  24. using (SqlTransaction trans = conn.BeginTransaction())
  25. {
  26. try
  27. {
  28. string sql = "";
  29. int dtNo = 0;
  30. string VouchRow;
  31. SqlCommand cmd = new SqlCommand();
  32. cmd.Connection = conn;
  33. cmd.Transaction = trans;
  34. StringBuilder strHead = new StringBuilder();
  35. strHead.AppendLine("***************接口传入参数记录****************:");
  36. strHead.AppendLine("传入条码:" + o.LotNo);
  37. strHead.AppendLine("传入维护人:" + o.MUSER);
  38. strHead.AppendLine("传入维护人名称:" + o.MUSERName);
  39. strHead.AppendLine("传入站点:" + o.WorkPoint);
  40. strHead.AppendLine("传入批次:" + o.VendorLot);
  41. strHead.AppendLine("传入条码数量:" + o.LOTQTY);
  42. foreach (PickInfoList item in o.PickInfoList)
  43. {
  44. strHead.AppendLine("传入存货编码:" + item.SubInvCode);
  45. strHead.AppendLine("传入工单号:" + item.MOCode);
  46. strHead.AppendLine("传入领料单号:" + item.VouchCode);
  47. strHead.AppendLine("传入领料单行号:" + item.VouchRow);
  48. strHead.AppendLine("传入供应商编码:" + item.DeleteStatus);
  49. strHead.AppendLine("传入物料编码:" + item.InvCode);
  50. strHead.AppendLine("传入数量:" + item.Quantity);
  51. strHead.AppendLine("传入库房编码:" + item.WHCode);
  52. strHead.AppendLine("传入库位:" + item.BinCode);
  53. }
  54. strHead.AppendLine("***************接口传入参数记录****************:");
  55. Appconfig.WriteLogFile(strHead.ToString(), "点料退料产生新条码接口日志");
  56. StringBuilder resultlog = new StringBuilder();
  57. foreach (PickInfoList item in o.PickInfoList)
  58. {
  59. #region 判断输入合法
  60. string BinCode = fenge(item.BinCode);
  61. string WHID;
  62. string checkSQL = @"select * from ICSMOBOM where MOCODE='{0}' AND WorkPoint='{1}'";
  63. sql = string.Format(checkSQL, item.MOCode, o.WorkPoint);
  64. DataTable chkdt = SQlReturnData(sql, cmd);
  65. if (chkdt.Rows.Count <= 0)
  66. {
  67. throw new Exception("传入工单号:" + item.MOCode + "不存在,无法创建条码!");
  68. }
  69. checkSQL = @"select * from ICSINVENTORY where INVCODE='{0}' AND WorkPoint='{1}'";
  70. sql = string.Format(checkSQL, item.InvCode, o.WorkPoint);
  71. chkdt = SQlReturnData(sql, cmd);
  72. if (chkdt.Rows.Count <= 0)
  73. {
  74. throw new Exception("传入料号:" + item.InvCode + "不存在,无法创建条码!");
  75. }
  76. checkSQL = @"select * from ICSMaterialPick where VouchCode='{0}' and VouchRow='{1}' AND WorkPoint='{1}'";
  77. sql = string.Format(checkSQL, item.VouchCode, item.VouchRow, o.WorkPoint);
  78. chkdt = SQlReturnData(sql, cmd);
  79. if (chkdt.Rows.Count <= 0)
  80. {
  81. throw new Exception("传入领料单号:" + item.VouchCode + "和行号:" + item.VouchRow + "不存在!");
  82. }
  83. checkSQL = @"select Serial from ICSStorage
  84. WHERE StorageCode='{0}' and WorkPoint='{1}'";
  85. checkSQL = string.Format(checkSQL, item.WHCode, o.WorkPoint);
  86. chkdt = SQlReturnData(checkSQL, cmd);
  87. if (chkdt.Rows.Count == 0)
  88. {
  89. throw new Exception("传入仓库:" + item.WHCode + "不存在,无法创建条码!");
  90. }
  91. else
  92. {
  93. WHID = chkdt.Rows[0]["Serial"].ToString();
  94. }
  95. checkSQL = @"select Serial from ICSStack
  96. WHERE StackCode = '{0}' and Storage_Serial='{1}' and WorkPoint='{2}'";
  97. checkSQL = string.Format(checkSQL, BinCode, WHID, o.WorkPoint);
  98. chkdt = SQlReturnData(checkSQL, cmd);
  99. if (chkdt.Rows.Count == 0)
  100. {
  101. throw new Exception("传入库位:" + BinCode + "不属于传入仓库:" + item.WHCode + ",无法创建条码!");
  102. }
  103. #endregion
  104. #region 生成退料单号
  105. DateTime now = DateTime.Now.Date;
  106. string date = now.Year.ToString() + (now.Month < 10 ? "0" + now.Month : now.Month.ToString()) + (now.Day < 10 ? "0" + now.Day : now.Day.ToString());
  107. //var ITEMLot = db.ICSOutSourePick.Where(a => a.VouchCode.Contains(date)).OrderByDescending(a => a.VouchCode);
  108. sql = @"select TOP 1 VouchCode
  109. from ICSMaterial
  110. where VouchCode like'%{0}%' AND WorkPoint='{1}'
  111. order by VouchCode desc";
  112. sql = string.Format(sql, date, o.WorkPoint);
  113. DataTable dtRow = SQlReturnData(sql, cmd);
  114. string count = "001";
  115. if (dtRow.Rows.Count > 0)
  116. {
  117. string VouchCode = dtRow.Rows[0]["VouchCode"].ToString();
  118. count = "R" + date + (Convert.ToInt64(VouchCode.Remove(0, 9)) + 1).ToString().PadLeft(3, '0');
  119. }
  120. else
  121. {
  122. count = "R" + date + "001";
  123. }
  124. #endregion
  125. #region 生成退料单行号
  126. sql = @"select TOP 1 VouchRow
  127. from ICSMaterialPick
  128. where VouchCode='{0}' AND WorkPoint='{1}'
  129. order by VouchRow desc";
  130. sql = string.Format(sql, item.VouchCode, o.WorkPoint);
  131. dtRow = SQlReturnData(sql, cmd);
  132. if (dtRow.Rows.Count <= 0)
  133. {
  134. VouchRow = "0001";
  135. }
  136. else
  137. {
  138. VouchRow = (Convert.ToInt64(dtRow.Rows[0]["VouchRow"]) + 1).ToString().PadLeft(4, '0');
  139. }
  140. #endregion
  141. string MOCode;
  142. //获取工单号
  143. checkSQL = @"select MOCode from ICSMaterialPick where VouchCode='{0}' AND VouchRow='{1}' AND WorkPoint='{2}'";
  144. sql = string.Format(checkSQL, item.VouchCode, item.VouchRow, o.WorkPoint);
  145. chkdt = SQlReturnData(sql, cmd);
  146. if (chkdt.Rows.Count <= 0)
  147. {
  148. throw new Exception("传入领料单号:" + item.VouchCode + "和行号:" + item.VouchRow + "不存在!");
  149. }
  150. else
  151. {
  152. MOCode = dtRow.Rows[0]["MOCode"].ToString();
  153. }
  154. #region 生成退料单
  155. #region 判断已退数量不能大于已领数量
  156. string sql1 = @"SELECT SubInvCode,SUM(Quantity) as HasQuantity
  157. FROM ICSMaterialPick
  158. WHERE SubInvCode='{0}' AND WorkPoint='{1}' AND MoveType=''
  159. GROUP BY SubInvCode";
  160. sql1 = string.Format(sql1, item.SubInvCode, o.WorkPoint);
  161. DataTable dt1 = SQlReturnData(sql1, cmd);
  162. string sql2 = @"SELECT SubInvCode,SUM(Quantity) as Quantity
  163. FROM ICSMaterialPick
  164. WHERE SubInvCode='{0}' AND WorkPoint='{1}' AND MoveType='退'
  165. GROUP BY SubInvCode";
  166. sql2 = string.Format(sql2, item.SubInvCode, o.WorkPoint);
  167. DataTable dt2 = SQlReturnData(sql2, cmd);
  168. //DataTable dt2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql1).Tables[1];
  169. if (dt1.Rows.Count > 0 && dt2.Rows.Count > 0 && dt1.Rows[0]["HasQuantity"].ToString() != "" && dt2.Rows.Count > 0 && dt2.Rows[0]["Quantity"].ToString() != "")
  170. {
  171. if (Convert.ToDecimal(dt2.Rows[0]["Quantity"].ToString()) + Convert.ToDecimal(item.Quantity) > Convert.ToDecimal(dt1.Rows[0]["HasQuantity"].ToString()))
  172. {
  173. throw new Exception("退料单已退料总数量不能大于该物料已领数量");
  174. }
  175. }
  176. #endregion
  177. #region 判断退料数量不能超过领料单行数量
  178. string sql4 = @"SELECT Reservation,ReservationRow,SUM(HasQuantity) as HasQuantity
  179. FROM ICSMaterialPick
  180. WHERE Reservation='{0}' and ReservationRow='{1}' AND WorkPoint='{2}' AND MoveType='退'
  181. GROUP BY Reservation,ReservationRow";
  182. sql4 = string.Format(sql4, item.VouchCode, item.VouchRow, o.WorkPoint);
  183. DataTable dt4 = SQlReturnData(sql4, cmd);
  184. string sql5 = @"SELECT Quantity
  185. FROM ICSMaterialPick
  186. WHERE VouchCode='{0}' and VouchRow='{1}' AND WorkPoint='{2}' AND MoveType=''
  187. ";
  188. sql5 = string.Format(sql5, item.VouchCode, item.VouchRow, o.WorkPoint);
  189. DataTable dt5 = SQlReturnData(sql5, cmd);
  190. if (dt4.Rows.Count > 0 && dt5.Rows.Count > 0 && dt4.Rows[0]["HasQuantity"].ToString() != "" && dt5.Rows[0]["Quantity"].ToString() != "")
  191. {
  192. if (Convert.ToDecimal(dt4.Rows[0]["HasQuantity"].ToString()) + Convert.ToDecimal(item.Quantity) > Convert.ToDecimal(dt5.Rows[0]["Quantity"].ToString()))
  193. {
  194. throw new Exception("该物料的退料数量不能超过对应领料单行数量!");
  195. }
  196. }
  197. #endregion
  198. //更新ICSMaterial表
  199. sql = string.Format(@"insert into ICSMaterial (ID,VouchCode,PickingSTATUS,ISALLINSTORAGE,CreateTIME,CreateUSER,MUSER,MUSERName,MTIME,WorkPoint,WHCode)
  200. values (NEWID(),'{0}','','N',GETDATE(),'{1}','{2}','{3}',GETDATE(),'{4}','{5}')", count, o.MUSER, o.MUSERName, o.MUSER, o.MUSERName, o.WorkPoint, item.WHCode);
  201. cmd.CommandText = sql;
  202. dtNo = cmd.ExecuteNonQuery();
  203. if (dtNo <= 0)
  204. {
  205. throw new Exception("生成退料申请单表头失败,请查看日志");
  206. }
  207. //更新ICSMaterialPick表
  208. sql = string.Format(@"insert into ICSMaterialPick(ID,VouchCode,VouchRow,SubInvCode,InvCode,WHCode,HasQuantity,MoveType,MOCode,Quantity,Reservation,ReservationRow,DeleteStatus,cBatch,ORDERNO,EATTRIBUTE,MUSER,MUSERName,MTIME,VoucherDate,WorkPoint)
  209. values( NEWID(),'{0}', '{1}', '{2}', '{3}' ,'{4}',0,'退','{5}','{6}','{7}','{8}','{9}','{10}','','{11}','{12}','{13}',GETDATE(),GETDATE(),'{13}')"
  210. , count, VouchRow, item.SubInvCode, item.SubInvCode, item.WHCode, MOCode, item.Quantity, item.VouchCode, item.VouchRow, item.DeleteStatus, item.DeleteStatus, MOCode, o.MUSER, o.MUSERName, o.WorkPoint);
  211. cmd.CommandText = sql;
  212. dtNo = cmd.ExecuteNonQuery();
  213. if (dtNo <= 0)
  214. {
  215. throw new Exception("生成退料申请单失败,请查看日志");
  216. }
  217. #endregion
  218. string SqlLotNO = @"select * from ICSItemLot where LotNO = '{0}' ";
  219. sql = string.Format(SqlLotNO, o.LotNo);
  220. DataTable dt = SQlReturnData(sql, cmd);
  221. if (dt.Rows.Count > 0)
  222. {
  223. throw new Exception("条码已存在,不可重复退料");
  224. }
  225. //生成点料退料条码
  226. sql = string.Format(@"INSERT INTO dbo.ICSITEMLot
  227. ( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
  228. VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
  229. MUSER ,MUSERName ,MTIME ,TYPE,ORDERNO)
  230. values( NEWID(),'{0}','{1}','{2}','{3}','','',
  231. '{4}',GETDATE(),'{5}','Y','2999-12-31 00:00:00.000','{6}',
  232. '{7}','{8}',GETDATE(),'退','')",
  233. o.LotNo, item.InvCode, count, VouchRow, o.VendorLot, o.LOTQTY, o.WorkPoint, o.MUSER, o.MUSERName);
  234. cmd.CommandText = sql;
  235. dtNo = cmd.ExecuteNonQuery();
  236. if (dtNo <= 0)
  237. {
  238. throw new Exception("点料退料产生新条码失败,请查看日志");
  239. }
  240. }
  241. foreach (PickInfoList item in o.PickInfoList)
  242. {
  243. string BinCode = fenge(item.BinCode);
  244. string NewBinCode = BinCode;
  245. string INVCode = "";
  246. string WHCode = "";
  247. string TranNo = "";
  248. string TranLine = "";
  249. string ORDERNO = "";
  250. #region 获取仓库库位等信息
  251. sql = @"select ItemCODE
  252. ,TransNO
  253. ,TransLine
  254. ,ORDERNO
  255. from ICSITEMLot
  256. where LotNO='{0}' AND WorkPoint='{1}'";
  257. sql = string.Format(sql, o.LotNo, o.WorkPoint);
  258. DataTable dt = SQlReturnData(sql, cmd);
  259. if (dt.Rows.Count == 0)
  260. {
  261. throw new Exception("获取条码信息失败!");
  262. }
  263. else
  264. {
  265. INVCode = dt.Rows[0]["ItemCODE"].ToString();
  266. TranNo = dt.Rows[0]["TransNO"].ToString();
  267. TranLine = dt.Rows[0]["TransLine"].ToString();
  268. ORDERNO = dt.Rows[0]["ORDERNO"].ToString();
  269. }
  270. sql = @"select B.StorageCode
  271. from ICSStack A
  272. LEFT JOIN ICSStorage B
  273. ON B.Serial=A.Storage_Serial
  274. where StackCode='{0}'";
  275. sql = string.Format(sql, NewBinCode);
  276. dt = SQlReturnData(sql, cmd);
  277. if (dt.Rows.Count == 0)
  278. {
  279. throw new Exception("获取仓库信息失败!");
  280. }
  281. else
  282. {
  283. WHCode = dt.Rows[0]["StorageCode"].ToString();
  284. }
  285. #endregion
  286. #region 更新ICSWareHouseInfo表
  287. sql = @"update ICSWareHouseInfo
  288. set QTY=QTY+{0},MTIME='{1}'
  289. where INVCode='{2}' AND WHCode='{3}' AND BinCode='{4}' AND WorkPoint='{5}'";
  290. sql = string.Format(sql, o.LOTQTY, DateTime.Now, INVCode, WHCode, NewBinCode, o.WorkPoint);
  291. cmd.CommandText = sql;
  292. dtNo = cmd.ExecuteNonQuery();
  293. if (dtNo <= 0)
  294. {
  295. sql = @"insert into ICSWareHouseInfo
  296. values
  297. ((select Serial from ICSStorage where StorageCode='{0}' and WorkPoint='{4}')
  298. ,'{0}'
  299. ,(SELECT Serial FROM ICSStack WHERE StackCode='{1}' and WorkPoint='{4}')
  300. ,'{1}'
  301. ,(SELECT ID FROM ICSINVENTORY WHERE INVCODE='{2}' and WorkPoint='{4}')
  302. ,'{2}',{3},'{4}','{5}','{6}',GETDATE(),NULL)";
  303. sql = string.Format(sql, WHCode, NewBinCode, INVCode, o.LOTQTY, o.WorkPoint, o.MUSER, o.MUSERName);
  304. cmd.CommandText = sql;
  305. dtNo = cmd.ExecuteNonQuery();
  306. if (dtNo <= 0)
  307. {
  308. throw new Exception("库存主表存入失败!");
  309. }
  310. }
  311. #endregion
  312. #region 更新ICSWareHouseLotInfo表
  313. sql = @"insert into ICSWareHouseLotInfo
  314. Values
  315. (NEWID(),'{0}',
  316. (select Serial from ICSStorage where StorageCode='{1}' and WorkPoint='{5}'),
  317. '{1}',
  318. (SELECT Serial FROM ICSStack WHERE StackCode='{2}' and WorkPoint='{5}'),
  319. '{2}',
  320. (SELECT ID FROM ICSINVENTORY WHERE INVCODE='{3}' and WorkPoint='{5}'),
  321. '{3}',{4},GETDATE(),'{5}','{6}','{7}',GETDATE(),'退',0,0,'{8}')";
  322. sql = string.Format(sql, o.LotNo, WHCode, NewBinCode, INVCode, o.LOTQTY, o.WorkPoint, o.MUSER, o.MUSERName, ORDERNO);
  323. cmd.CommandText = sql;
  324. dtNo = cmd.ExecuteNonQuery();
  325. if (dtNo <= 0)
  326. {
  327. throw new Exception("库存子表数量增加失败!");
  328. }
  329. #endregion
  330. #region 存入ICSWareHouseLotInfoLog表(日志)
  331. sql = @"insert into ICSWareHouseLotInfoLog
  332. Values
  333. (NEWID(),'{0}','{1}','{2}','{3}','','','{8}','{9}'
  334. ,{4},null,'收','退','{5}','{6}',GETDATE(),'{7}','','','','','','','')";
  335. sql = string.Format(sql, TranNo, TranLine, INVCode, o.LotNo, o.LOTQTY, o.MUSER, o.MUSERName, o.WorkPoint, WHCode, NewBinCode);
  336. cmd.CommandText = sql;
  337. dtNo = cmd.ExecuteNonQuery();
  338. if (dtNo <= 0)
  339. {
  340. throw new Exception("日志表存入失败!");
  341. }
  342. #endregion
  343. }
  344. //生成U9退料单
  345. #region 接口调用
  346. try
  347. {
  348. List<ServiceCreateRIssue.IssueData> contextList = new List<ServiceCreateRIssue.IssueData>();
  349. List<ServiceCreateRIssue.IssueLineData> contextLists = new List<ServiceCreateRIssue.IssueLineData>();
  350. ServiceCreateRIssue.IssueData context = new ServiceCreateRIssue.IssueData();
  351. ServiceCreateRIssue.IssueLineData contexts = new ServiceCreateRIssue.IssueLineData();
  352. string StackCode = "";
  353. string LLCode = "";
  354. foreach (PickInfoList item in o.PickInfoList)
  355. {
  356. //context.linelist = contextLists.ToArray();
  357. //contextList.Add(context);
  358. context = new ServiceCreateRIssue.IssueData();
  359. StackCode = item.WHCode;
  360. LLCode = item.VouchCode;
  361. context.LLCode = item.VouchCode;//领料单号
  362. context.DocTypeCode = "2";//类型
  363. context.OrgCode = o.WorkPoint;
  364. contextLists = new List<ServiceCreateRIssue.IssueLineData>();
  365. contexts = new ServiceCreateRIssue.IssueLineData();
  366. contexts.LLLineNO = item.VouchRow;//领料单行号
  367. contexts.ItemCode = item.InvCode;//料号
  368. contexts.ItemQty = item.Quantity;//数量
  369. contexts.WHCode = item.WHCode;//仓库
  370. contexts.LotNO = o.VendorLot;//批号
  371. contextLists.Add(contexts);
  372. //if (i == dt.Rows.Count - 1)
  373. //{
  374. context.linelist = contextLists.ToArray();
  375. contextList.Add(context);
  376. //}
  377. }
  378. sql = @"UPDATE ICSWareHouseLotInfoLog SET EATTRIBUTE5='已回写'
  379. where LotNO ='{0}' AND BusinessCode='退'";
  380. sql = string.Format(sql, o.LotNo);
  381. cmd.CommandText = sql;
  382. dtNo = cmd.ExecuteNonQuery();
  383. if (dtNo <= 0)
  384. {
  385. throw new Exception("日志表更新失败!");
  386. }
  387. ServiceCreateRIssue.CreateRIssueClient client = new ServiceCreateRIssue.CreateRIssueClient();
  388. ServiceCreateRIssue.CustCreateIssueOperationResult cresult = new ServiceCreateRIssue.CustCreateIssueOperationResult();
  389. cresult = client.CreateIss(contextList.ToArray());
  390. if (cresult.IsSuccess == false)
  391. {
  392. throw new Exception(cresult.MESSAGE);
  393. }
  394. }
  395. catch (Exception ex)
  396. {
  397. throw new Exception(ex.Message);
  398. }
  399. #endregion
  400. result.Code = 0;
  401. result.ResMsg = "点料退料产生新条码成功";
  402. result.ResData = "{}";
  403. result.IsCompress = false;
  404. result.IsSuccess = true;
  405. return result;
  406. }
  407. catch (Exception ex)
  408. {
  409. result.Code = -1;
  410. result.ResMsg = ex.Message;
  411. result.ResData = null;
  412. result.IsCompress = false;
  413. result.IsSuccess = false;
  414. StringBuilder str = new StringBuilder();
  415. str.AppendLine("传入条码:" + o.LotNo);
  416. str.AppendLine("传入维护人:" + o.MUSER);
  417. str.AppendLine("传入维护人名称:" + o.MUSERName);
  418. str.AppendLine("传入站点:" + o.WorkPoint);
  419. str.AppendLine("传入批次:" + o.VendorLot);
  420. str.AppendLine("传入条码数量:" + o.LOTQTY);
  421. foreach (PickInfoList item in o.PickInfoList)
  422. {
  423. str.AppendLine("传入存货编码:" + item.SubInvCode);
  424. str.AppendLine("传入工单号:" + item.MOCode);
  425. str.AppendLine("传入领料单号:" + item.VouchCode);
  426. str.AppendLine("传入供应商编码:" + item.DeleteStatus);
  427. str.AppendLine("传入物料编码:" + item.InvCode);
  428. str.AppendLine("传入数量:" + item.Quantity);
  429. str.AppendLine("传入库房编码:" + item.WHCode);
  430. str.AppendLine("传入库位:" + item.BinCode);
  431. }
  432. str.AppendLine("失败原因:" + ex.Message);
  433. Appconfig.WriteLogFile(str.ToString(), "点料退料产生新条码接口日志");
  434. }
  435. }
  436. conn.Close();
  437. }
  438. return result;
  439. }
  440. /// <summary>
  441. /// 返回值
  442. /// </summary>
  443. public class FormICSCreatedArrivalNoticeModel
  444. {
  445. //0 :正常数据,-1:失败。
  446. public int Code { get; set; }
  447. public string ResMsg { get; set; }
  448. public object ResData { get; set; }
  449. public bool IsCompress { get; set; }
  450. public bool IsSuccess { get; set; }
  451. }
  452. /// <summary>
  453. /// SQL执行方法
  454. /// </summary>
  455. /// <param name="SQl"></param>
  456. /// <param name="cmd"></param>
  457. /// <returns></returns>
  458. public static DataTable SQlReturnData(string SQl, SqlCommand cmd)
  459. {
  460. DataTable dt = new DataTable();
  461. cmd.CommandText = SQl;
  462. SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter();
  463. dr.SelectCommand = cmd;
  464. dr.Fill(dt);
  465. return dt;
  466. }
  467. //库位转换
  468. public string fenge(string sourceString)
  469. {
  470. StringBuilder sb = new StringBuilder();
  471. for (int i = 0; i < sourceString.Length; i++)
  472. {
  473. if (i == 0 || i == 3)
  474. {
  475. sb.Append(sourceString[i].ToString()).Append("-");
  476. }
  477. else
  478. {
  479. sb.Append(sourceString[i]);
  480. }
  481. }
  482. return sb.ToString();
  483. }
  484. }
  485. }