锐腾搅拌上料功能
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.

1213 lines
51 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using ICSSoft.Frame.Data.Entity;
  6. using ICSSoft.Base.Config.AppConfig;
  7. using System.Data;
  8. using ICSSoft.Base.Config.DBHelper;
  9. using System.Data.SqlClient;
  10. namespace ICSSoft.Frame.Data.DAL
  11. {
  12. public static class StockBarCodeDAL
  13. {
  14. public static void ImportData(List<InitialInvtory> list,string ErpName) {
  15. SqlConnection conn = new System.Data.SqlClient.SqlConnection(AppConfig.AppConnectString);
  16. conn.Open();
  17. SqlTransaction sqlTran = conn.BeginTransaction();
  18. SqlCommand cmd = new SqlCommand();
  19. cmd.Transaction = sqlTran;
  20. cmd.Connection = conn;
  21. try {
  22. foreach(InitialInvtory init in list){
  23. string sql = @"SELECT cInvCode FROM {0}.dbo.CurrentStock
  24. WHERE cInvCode = '{1}' AND cBatch = '{2}' AND cWhCode = '{3}'
  25. AND iQuantity>='{4}'";
  26. sql = string.Format(sql, ErpName,init.ItemCode, init.BatchCode, init.WhCode,init.Qty);
  27. cmd.CommandText = sql;
  28. DataTable currDt = SQlReturnData(cmd);
  29. if (currDt==null||currDt.Rows.Count==0)
  30. {
  31. throw new Exception("物料: " + init.ItemCode + "批号: " + init.BatchCode + "仓库: " + init.WhCode + "ERP现存量不足");
  32. }
  33. sql = @"INSERT INTO [dbo].[ICSPurchasingStorage]
  34. ([Serial]
  35. ,[ItemCode]
  36. ,[ItemName]
  37. ,[ItemStd]
  38. ,[VenCode]
  39. ,[VenName]
  40. ,[ComUnit]
  41. ,[Rd01AutoID]
  42. ,[AssComUnit]
  43. ,[dDate]
  44. ,[BatchCode]
  45. ,[Quantity]
  46. ,[OutQuantity]
  47. ,[PackQuantiy]
  48. ,[Mtime]
  49. ,[Muser]
  50. ,[cFree1]
  51. ,[cFree2]
  52. ,[WorkPoint])
  53. SELECT NEWID(),cInvCode,cInvName,cInvStd,a.cVenCode AS ,a.cVenName AS ,
  54. c.cComUnitName,'',d.cComUnitName,GETDATE(),'{1}' AS ,'{2}' AS ,'0','0',GETDATE(),
  55. '{3}' AS ,'{6}','','0001' FROM {0}.dbo.Inventory b
  56. LEFT JOIN {0}.dbo.ComputationUnit c ON c.cComUnitCode = b.cComunitCode
  57. LEFT JOIN {0}.dbo.ComputationUnit d ON d.cComUnitCode = b.cAssComUnitCode
  58. ,{0}.dbo.Vendor a
  59. WHERE cInvCode = '{4}' AND a.cVenCode = '{5}'";
  60. sql = string.Format(sql, ErpName,init.BatchCode,init.Qty,AppConfig.UserName,init.ItemCode,init.VenCode,init.WhCode);
  61. cmd.CommandText = sql;
  62. cmd.ExecuteNonQuery();
  63. }
  64. cmd.Transaction.Commit();
  65. }catch(Exception ex){
  66. cmd.Transaction.Rollback();
  67. throw ex;
  68. }
  69. }
  70. public static void stackMOPicking(string barCodeStr,Rd11Context Context, string MoNo)
  71. {
  72. string sql = "";
  73. string ConnectString = AppConfig.AppConnectString;
  74. ///产成品入库单的CardNumber 0411
  75. #region 默认代码
  76. Context.ERPCardNumber = "0412";
  77. #endregion
  78. #region 取得out库单的默认显示模版
  79. sql = @" SELECT DEF_ID FROM {0}.dbo.Vouchers WHERE CardNumber = '{1}' ";
  80. sql = string.Format(sql, Context.ERPDataName, Context.ERPCardNumber);
  81. DataTable DEF_ID = DBHelper.ExecuteDataset(ConnectString, CommandType.Text, sql).Tables[0];
  82. if (DEF_ID.Rows.Count == 0)
  83. {
  84. throw new Exception("产成品入库单的默认显示模版取得失败");
  85. }
  86. Context.ERPDEF_ID = DEF_ID.Rows[0]["DEF_ID"].ToString();
  87. DEF_ID.Clear();
  88. #endregion
  89. SqlConnection conn = new System.Data.SqlClient.SqlConnection(ConnectString);
  90. conn.Open();
  91. SqlTransaction sqlTran = conn.BeginTransaction();
  92. SqlCommand cmd = new SqlCommand();
  93. cmd.Transaction = sqlTran;
  94. cmd.Connection = conn;
  95. try
  96. {
  97. sql = @"SELECT BarCode
  98. FROM [dbo].[ICSStockBarCode]
  99. WHERE BarCode IN ({0}) AND Status !=''";
  100. sql = string.Format(sql, barCodeStr);
  101. cmd.CommandText = sql;
  102. DataTable bDt = SQlReturnData(cmd);
  103. if (bDt != null && bDt.Rows.Count > 0)
  104. {
  105. throw new Exception("请选择状态为入库的条码进行出库!!");
  106. }
  107. sql = @"SELECT DISTINCT b.Serial,b.StorageCode FROM dbo.ICSStorageInfo a
  108. INNER JOIN dbo.ICSStorage b ON a.Storage_Serial = b.Serial
  109. WHERE a.BarCode IN (" + barCodeStr + ")";
  110. cmd.CommandText = sql;
  111. DataTable whDt = SQlReturnData(cmd);
  112. for (int w = 0; w < whDt.Rows.Count;w++ )
  113. {
  114. #region 汇总信息
  115. sql = @"SELECT ROW_NUMBER() OVER(ORDER BY a.ItemCode) AS row,
  116. CAST(0 AS DECIMAL(18,6)) AS qty,s.StorageCode,
  117. CAST(0 AS DECIMAL(18,6)) AS Numqty,
  118. a.ItemCode,0 as erpdid,
  119. loc.AllocateId,loc.SortSeq,
  120. inv.cComUnitCode,inv.cAssComUnitCode,
  121. c.iChangRate,info.Storage_Serial into ##rdqty
  122. FROM ICSStockBarCode a
  123. LEFT JOIN ICSPurchasingStorage b ON a.cFree1=b.Serial
  124. LEFT JOIN ICSStorageInfo info ON a.BarCode = info.BarCode
  125. LEFT JOIN dbo.ICSStorage s ON info.Storage_Serial = s.Serial
  126. LEFT JOIN {0}.dbo.ComputationUnit c ON b.AssComUnit = c.cComunitCode
  127. LEFT JOIN {0}.dbo.Inventory inv ON a.ItemCode=inv.cInvCode
  128. left join (select * from {0}.dbo.mom_moallocate
  129. where MoDId = '{3}') loc on a.ItemCode = loc.InvCode
  130. WHERE a.BarCode IN ({1}) and info.Storage_Serial = '{2}'
  131. GROUP BY a.ItemCode,inv.cComUnitCode,inv.cAssComUnitCode
  132. ,c.iChangRate,s.StorageCode,s.StorageCode,
  133. info.Storage_Serial,loc.AllocateId,loc.SortSeq
  134. SELECT * FROM ##rdqty";
  135. sql = string.Format(sql, Context.ERPDataName, barCodeStr, whDt.Rows[w]["Serial"].ToString(),
  136. Context.MoDid);
  137. cmd.CommandText = sql;
  138. DataTable temp = SQlReturnData(cmd);
  139. if(temp == null || temp.Rows.Count==0){
  140. throw new Exception("");
  141. }
  142. DataTable barDt = new DataTable();
  143. foreach (var dic in Context.Bar_Qty)
  144. {
  145. sql = @"SELECT a.ItemCode,c.iChangRate
  146. FROM ICSStockBarCode a
  147. LEFT JOIN ICSPurchasingStorage b ON a.cFree1=b.Serial
  148. LEFT JOIN ICSStorageInfo info ON a.BarCode = info.BarCode
  149. LEFT JOIN {0}.dbo.ComputationUnit c ON b.AssComUnit = c.cComunitCode
  150. WHERE a.BarCode = '{1}'";
  151. sql = string.Format(sql, Context.ERPDataName,dic.Key);
  152. cmd.CommandText = sql;
  153. barDt = SQlReturnData(cmd);
  154. decimal qty = 0;
  155. decimal sum = 0;
  156. for (int i = 0; i < temp.Rows.Count; i++)
  157. {
  158. if (barDt.Rows[0]["ItemCode"].ToString() == temp.Rows[i]["ItemCode"].ToString())
  159. {
  160. if (barDt.Rows[0]["iChangRate"].ToString() != "" && decimal.Parse(barDt.Rows[0]["iChangRate"].ToString()) != 0)
  161. {
  162. qty = decimal.Parse(dic.Value) * decimal.Parse(barDt.Rows[0]["iChangRate"].ToString());
  163. sum = decimal.Parse(dic.Value);
  164. }
  165. else
  166. {
  167. qty = decimal.Parse(dic.Value);
  168. sum = 0;
  169. }
  170. sql = @"UPDATE ##rdqty SET qty =qty+ '{0}' ,Numqty = Numqty+'{1}'
  171. WHERE ItemCode = '{2}'";
  172. sql = string.Format(sql, qty, sum,
  173. barDt.Rows[0]["ItemCode"].ToString());
  174. cmd.CommandText = sql;
  175. int a = cmd.ExecuteNonQuery();
  176. }
  177. }
  178. }
  179. #endregion
  180. #region 取得ERP的ID
  181. string num = "1000000000";
  182. sql = @"select count(*) from ##rdqty";
  183. cmd.CommandText = sql;
  184. DataTable RowCountDt = SQlReturnData(cmd);
  185. Context.ERPrdRowCount = Convert.ToInt32(RowCountDt.Rows[0][0]);
  186. int id = 0;
  187. int did = 0;
  188. SaveGetrdIDandAutoID(ConnectString, "材料出库", "rd", Context.ERPDataName.Substring(7, 3), Context.ERPrdRowCount, out id, out did);
  189. string strId = id.ToString();
  190. Context.ERPrdID = int.Parse(num.Substring(0, num.Length - strId.Length) + strId);
  191. string strDid = did.ToString();
  192. Context.ERPrdDid = int.Parse(num.Substring(0, num.Length - strDid.Length) + strDid);
  193. #endregion
  194. #region 取得ERP的Code
  195. sql = @"DECLARE @Code nvarchar(100)
  196. set @Code = ''
  197. UPDATE VoucherHistory SET cNumber = cNumber + 1
  198. FROM {0}.dbo.VoucherHistory WHERE CardNumber = '{1}'
  199. SELECT @Code = '0000000000' + CAST(cNumber AS NVARCHAR(50)) FROM {0}.dbo.VoucherHistory WHERE CardNumber = '{1}'
  200. SET @Code = RIGHT(@Code,10)
  201. select @Code";
  202. sql = string.Format(sql, Context.ERPDataName, Context.ERPCardNumber);
  203. cmd.CommandText = sql;
  204. DataTable codedt = SQlReturnData(cmd);
  205. if (codedt.Rows[0][0].ToString() == "")
  206. {
  207. sql = "insert into {0}.dbo.VoucherHistory values('0411',null,'日期','月','null',1,0)";
  208. sql = string.Format(sql, Context.ERPDataName);
  209. SQlInsertAndUpdate(sql, conn, sqlTran, cmd);
  210. Context.ERPrdCode = "0000000001";
  211. }
  212. if (codedt.Rows[0][0].ToString() != "")
  213. {
  214. Context.ERPrdCode = codedt.Rows[0][0].ToString();
  215. }
  216. if (Context.ERPrdCode == "")
  217. {
  218. throw new Exception("产成品入库单号取得失败");
  219. }
  220. sql = @"IF EXISTS (SELECT cCode FROM {1}.dbo.rdrecord11 WHERE ccode = '{0}' and cVouchType = '10')
  221. RAISERROR('',16,0)";
  222. sql = string.Format(sql, Context.ERPrdCode, Context.ERPDataName);
  223. cmd.CommandText = sql;
  224. cmd.ExecuteNonQuery();
  225. #endregion
  226. #region 写入表头
  227. sql = @"INSERT INTO {0}.dbo.rdrecord11
  228. (ID,bRdFlag,cVouchType,cBusType,cSource,cWhCode,dDate,cCode,cRdCode,cDepCode,
  229. cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,iMQuantity,VT_ID,bIsSTQc,
  230. iproorderid,bOMFirst,bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,iverifystate,
  231. iswfcontrolled,dnmaketime,dnverifytime,bredvouch,bmotran,bHYVouch,iPrintCount,cMPoCode)
  232. VALUES
  233. (@ID,'0','11','','',@cWhCode,CONVERT(varchar(15), GETDATE(), 23) ,@cCode,@cRdCode,@cDepCode,
  234. null,@cMemo,'0',@cMaker,null,'0','0','0',@VT_ID,'0',
  235. @iproorderid,'0','0','0','0','0','0','0',GETDATE(),null,'0','0','0','0',@cMPoCode)";
  236. sql = string.Format(sql, Context.ERPDataName);
  237. cmd.CommandText = sql;
  238. cmd.Parameters.Clear();
  239. cmd.Parameters.AddWithValue("@ID", Context.ERPrdID);
  240. cmd.Parameters.AddWithValue("@cWhCode", whDt.Rows[w]["StorageCode"].ToString());
  241. cmd.Parameters.AddWithValue("@cCode", Context.ERPrdCode);
  242. cmd.Parameters.AddWithValue("@cRdCode", Context.ERPrdcRdCode);
  243. cmd.Parameters.AddWithValue("@cDepCode", Context.ERPDeptCode);
  244. //cmd.Parameters.AddWithValue("@cHandler", DBNull.Value);
  245. cmd.Parameters.AddWithValue("@cMemo", "");
  246. cmd.Parameters.AddWithValue("@cMaker", Context.UserName);
  247. cmd.Parameters.AddWithValue("@VT_ID", Context.ERPDEF_ID);
  248. cmd.Parameters.AddWithValue("@iproorderid", Context.MoId);
  249. cmd.Parameters.AddWithValue("@cMPoCode",MoNo);
  250. cmd.ExecuteNonQuery();
  251. #endregion
  252. #region 更新表体ID
  253. sql = @"SELECT * FROM ##rdqty";
  254. cmd.CommandText = sql;
  255. DataTable dt = SQlReturnData(cmd);
  256. int rowNo = 1;
  257. for (int i = 0; i < dt.Rows.Count; i++)
  258. {
  259. sql = @"update ##rdqty set erpdid = {0} where row='{1}' ";
  260. sql = string.Format(sql, Context.ERPrdDid, rowNo);
  261. Context.ERPrdDid -= 1;
  262. rowNo++;
  263. cmd.CommandText = sql;
  264. cmd.ExecuteNonQuery();
  265. }
  266. #endregion
  267. #region 写入表体
  268. sql = @"INSERT INTO {0}.dbo.rdrecords11
  269. (AutoID,ID,cInvCode,iNum,iQuantity,cFree1,cFree2,iFlag,cFree3,cAssUnit,bLPUseFree,
  270. iOriTrackID,bCosting,bVMIUsed,iinvexchrate,iExpiratDateCalcu,iordertype,isotype,ipesotype,
  271. irowno,iMPoIds,cmocode,imoseq,ipesodid,cpesocode,ipesoseq)
  272. SELECT erpdid,@ID,ItemCode,Numqty,qty,'','','0','',cAssComUnitCode,'0',
  273. '0','1','0',iChangRate,'0','0','0','0',row,AllocateId,'{1}',SortSeq,AllocateId,'{1}',SortSeq FROM ##rdqty";
  274. sql = string.Format(sql, Context.ERPDataName,MoNo);
  275. cmd.CommandText = sql;
  276. cmd.Parameters.Clear();
  277. cmd.Parameters.AddWithValue("@ID", Context.ERPrdID);
  278. cmd.ExecuteNonQuery();
  279. #endregion
  280. #region 判断现存量
  281. foreach (DataRow dr in dt.Rows)
  282. {
  283. int ItemID = -1;
  284. string invcode = dr["itemcode"].ToString();
  285. string iinvexchrate = dr["iChangRate"].ToString();
  286. string cWhcode = whDt.Rows[w]["StorageCode"].ToString();
  287. double qty = double.Parse(dr["qty"].ToString());
  288. #region 取得物料的itemID
  289. sql = @"IF NOT EXISTS(
  290. SELECT Id FROM {0}.dbo.SCM_Item WHERE
  291. cinvcode = '{1}')
  292. BEGIN
  293. INSERT INTO {0}.dbo.SCM_Item(cInvCode ,
  294. cFree1 ,
  295. cFree2 ,
  296. cFree3 ,
  297. cFree4 ,
  298. cFree5 ,
  299. cFree6 ,
  300. cFree7 ,
  301. cFree8 ,
  302. cFree9 ,
  303. cFree10 ,
  304. PartId) VALUES('{1}','','','','','','','','','','',0)
  305. END
  306. SELECT Id FROM
  307. {0}.dbo.SCM_Item WHERE
  308. cinvcode = '{1}'";
  309. sql = string.Format(sql, Context.ERPDataName, invcode);
  310. cmd.CommandText = sql;
  311. DataTable Itemdt = SQlReturnData(cmd);
  312. if (Itemdt.Rows.Count == 0)
  313. {
  314. throw new Exception("物料的ItemID取得失败");
  315. }
  316. ItemID = int.Parse(Itemdt.Rows[0]["Id"].ToString());
  317. #endregion
  318. //判断现存量是否符合
  319. #region 更新失败,插入现存量
  320. sql = @"IF NOT EXISTS (SELECT AutoID FROM {0}.dbo.CurrentStock
  321. WHERE cWhCode = '{2}' AND cInvCode = '{3}'
  322. AND ItemId = '{4}' and iQuantity >= '{1}')
  323. BEGIN
  324. RAISERROR('ERP现存量不足!!',16,0)
  325. END ";
  326. sql = string.Format(sql, Context.ERPDataName, qty, cWhcode, invcode, ItemID);
  327. cmd.CommandText = sql;
  328. cmd.ExecuteNonQuery();
  329. sql = @"UPDATE {0}.dbo.CurrentStock SET iQuantity = iQuantity-{1}
  330. WHERE cWhCode = '{2}' AND cInvCode = '{3}' AND ItemId = '{4}' ";
  331. sql = string.Format(sql, Context.ERPDataName, qty, cWhcode, invcode, ItemID);
  332. cmd.CommandText = sql;
  333. cmd.ExecuteNonQuery();
  334. #endregion
  335. }
  336. #endregion
  337. #region 写入记账表
  338. sql = @" INSERT INTO {0}.[dbo].[IA_ST_UnAccountVouch11]
  339. SELECT '{1}',erpdid,'{2}','{3}' FROM ##rdqty ";
  340. sql = string.Format(sql, Context.ERPDataName, Context.ERPrdID, "11", "领料");
  341. cmd.CommandText = sql;
  342. cmd.ExecuteNonQuery();
  343. #endregion
  344. #region 回写工单子件领料数量
  345. sql = @"update b set b.IssQty = b.IssQty+a.qty
  346. from ##rdqty a inner join {0}.dbo.mom_moallocate b on a.AllocateId = b.AllocateId";
  347. sql = string.Format(sql, Context.ERPDataName);
  348. cmd.CommandText = sql;
  349. cmd.ExecuteNonQuery();
  350. #endregion
  351. #region 将入库单的ID,DID,Code,ERPName 回写 MES数据库
  352. sql = @"INSERT INTO [dbo].[ICSMOStorageINERP]
  353. ([Serial]
  354. ,[BarCode]
  355. ,[rdTypeName]
  356. ,[rdID]
  357. ,[rdDID]
  358. ,[rdCode]
  359. ,[rdDate]
  360. ,[WorkPoint])
  361. SELECT distinct NEWID(),a.BarCode,'','{0}',b.erpdid,'{1}','{2}','{3}'
  362. FROM dbo.ICSStockBarCode a LEFT JOIN ICSStorageInfo c
  363. ON a.BarCode = c.BarCode
  364. left join ##rdqty b on a.itemcode = b.itemcode
  365. where a.BarCode in ({4}) AND c.Storage_Serial = '{5}'
  366. drop table ##rdqty";
  367. sql = string.Format(sql, id, Context.ERPrdCode, Context.UserTime, AppConfig.WorkPointCode, barCodeStr, whDt.Rows[w]["Serial"].ToString());
  368. cmd.CommandText = sql;
  369. int s = cmd.ExecuteNonQuery();
  370. #endregion
  371. }
  372. #region 修改MES数据库表
  373. string sqlStr = "";
  374. foreach (var dic in Context.Bar_Qty)
  375. {
  376. sql = @"SELECT SUM(Qty) AS Qty FROM [dbo].[ICSMOPicking]
  377. WHERE BarCode = '" + dic.Key + "' GROUP BY BarCode";
  378. cmd.CommandText = sql;
  379. DataTable outQty = SQlReturnData(cmd);
  380. if (outQty == null || outQty.Rows.Count == 0)
  381. {
  382. sqlStr = @"DELETE a FROM dbo.ICSStorageInfo a INNER JOIN
  383. dbo.ICSStockBarCode b ON a.barcode = b.barcode
  384. WHERE a.BarCode = '{0}'
  385. AND b.quantity = '{1}'";
  386. sqlStr = string.Format(sqlStr, dic.Key, dic.Value);
  387. cmd.CommandText = sqlStr;
  388. cmd.ExecuteNonQuery();
  389. sqlStr = @" UPDATE dbo.ICSStockBarCode SET Status = '领料出库'
  390. WHERE quantity = '" + dic.Value + @"'
  391. and BarCode = '" + dic.Key + "'";
  392. cmd.CommandText = sqlStr;
  393. cmd.ExecuteNonQuery();
  394. }
  395. else
  396. {
  397. decimal d = decimal.Parse(dic.Value) + decimal.Parse(outQty.Rows[0]["Qty"].ToString());
  398. sqlStr = @"DELETE a FROM dbo.ICSStorageInfo a INNER JOIN
  399. dbo.ICSStockBarCode b ON a.barcode = b.barcode
  400. WHERE a.BarCode = '{0}'
  401. AND b.quantity = '{1}'";
  402. sqlStr = string.Format(sqlStr, dic.Key, d);
  403. cmd.CommandText = sqlStr;
  404. cmd.ExecuteNonQuery();
  405. sqlStr = @" UPDATE dbo.ICSStockBarCode SET Status = '领料出库'
  406. WHERE quantity = '" + d + @"'
  407. and BarCode = '" + dic.Key + "'";
  408. cmd.CommandText = sqlStr;
  409. cmd.ExecuteNonQuery();
  410. }
  411. sqlStr = @"INSERT INTO [dbo].[ICSMOPicking]
  412. ([Serial]
  413. ,[MoCode]
  414. ,[BarCode]
  415. ,[Mtime]
  416. ,[Muser]
  417. ,[WorkPoint],Qty)
  418. VALUES
  419. (NEWID(),'{0}','{1}',GETDATE(),'{2}','{3}','{4}')";
  420. sqlStr = string.Format(sqlStr, MoNo, dic.Key, AppConfig.UserName, AppConfig.WorkPointCode, dic.Value);
  421. cmd.CommandText = sqlStr;
  422. cmd.ExecuteNonQuery();
  423. }
  424. sql = @"UPDATE b SET b.OutQuantity = b.OutQuantity+a.qty
  425. FROM (SELECT SUM(Quantity) AS qty,cFree1 FROM dbo.ICSStockBarCode WHERE BarCode IN (" + barCodeStr + @")
  426. GROUP BY cFree1) a INNER JOIN ICSPurchasingStorage b ON a.cFree1 = b.Serial";
  427. cmd.CommandText = sql;
  428. cmd.ExecuteNonQuery();
  429. #endregion
  430. //throw new Exception("操作完成那个,取消保存,来进行下一次测试");
  431. cmd.Transaction.Commit();
  432. }
  433. catch (Exception ex)
  434. {
  435. cmd.Transaction.Rollback();
  436. throw ex;
  437. }
  438. }
  439. public static ICSStockBarCode query(string cartonNo)
  440. {
  441. FramDataContext db = new FramDataContext(AppConfig.AppConnectString);
  442. db.Connection.Open();
  443. try
  444. {
  445. var line = db.ICSStockBarCode.SingleOrDefault(a => a.BarCode == cartonNo && a.WorkPoint == AppConfig.WorkPointCode);
  446. return (ICSStockBarCode)line;
  447. }
  448. catch (Exception ex)
  449. {
  450. throw ex;
  451. }
  452. }
  453. public static DataTable Stockquery(string cartonNo)
  454. {
  455. try
  456. {
  457. string sql = @"SELECT a.BarCode,a.Quantity,b.ItemCode,b.ItemName,b.ItemStd,
  458. b.BatchCode,b.ComUnit,b.AssComUnit,a.Status FROM dbo.ICSStockBarCode a LEFT JOIN dbo.ICSPurchasingStorage b
  459. ON a.cFree1 = b.Serial WHERE a.BarCode='" + cartonNo + "'";
  460. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  461. }
  462. catch (Exception ex)
  463. {
  464. throw ex;
  465. }
  466. }
  467. public static DataTable StockQuerys(string cartonNo)
  468. {
  469. try
  470. {
  471. string sql = @"SELECT a.BarCode,(a.Quantity-ISNULL(c.Qty,0)) as Qty ,b.ItemCode,b.ItemName,b.ItemStd,
  472. b.BatchCode,b.ComUnit,b.AssComUnit,a.Status FROM dbo.ICSStockBarCode a LEFT JOIN dbo.ICSPurchasingStorage b
  473. ON a.cFree1 = b.Serial left join (SELECT SUM(Qty) AS Qty,BarCode FROM [dbo].[ICSMOPicking]
  474. WHERE BarCode = '" + cartonNo + "' GROUP BY BarCode) c on a.BarCode = c.BarCode WHERE a.BarCode='" + cartonNo + "'";
  475. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  476. }
  477. catch (Exception ex)
  478. {
  479. throw ex;
  480. }
  481. }
  482. public static DataTable getMaxNO(string conn)
  483. {
  484. try
  485. {
  486. string sql = @"SELECT MAX(BarCode) AS maxBarCode FROM dbo.ICSStockBarCode";
  487. return DBHelper.ExecuteDataset(conn, CommandType.Text, sql).Tables[0];
  488. }
  489. catch (Exception ex)
  490. {
  491. throw ex;
  492. }
  493. }
  494. public static DataTable querys(string erpName,string cartonNo)
  495. {
  496. try
  497. {
  498. string sql = @"SELECT a.[Serial]
  499. ,a.[SelectID]
  500. ,a.[CartonNO]
  501. ,a.[PackingSpec]
  502. ,a.[Collected]
  503. ,a.[BatchCode]
  504. ,a.[ItemCode]
  505. ,a.[CartonStatus]
  506. ,a.[MUSER]
  507. ,a.[MUSERName]
  508. ,a.[MTIME]
  509. ,a.[EATTRIBUTE1]
  510. ,a.[WorkPoint]
  511. ,b.MadeDate,b.ItemStd,c.UserCode,e.cDepName,d.cDept_num
  512. FROM [ICSCarton] a
  513. LEFT JOIN dbo.ICSItemLot b ON a.BatchCode=b.BatchCode
  514. LEFT JOIN Sys_User c ON a.MUSER = c.ID
  515. LEFT JOIN {0}.dbo.hr_hi_person d ON c.UserCode=d.cPsn_Num
  516. LEFT JOIN {0}.dbo.Department e ON d.cDept_num=e.cDepCode
  517. WHERE a.CartonNO='{1}'";
  518. sql = string.Format(sql, erpName, cartonNo);
  519. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  520. }
  521. catch (Exception ex)
  522. {
  523. throw ex;
  524. }
  525. }
  526. public static DataTable queryInfo( string cartonNo)
  527. {
  528. try
  529. {
  530. string sql = @"SELECT e.ItemCode,e.ItemName,e.ItemStd,e.BatchCode,b.CartonNO,b.Collected,
  531. c.StorageName,d.rdcCode,ISNULL(a.Stack_Serial,'') as Stack_Serial,f.StackName FROM dbo.ICSStorageLotInfo a
  532. LEFT JOIN dbo.ICSCarton b ON a.Carton_Serial=b.Serial
  533. LEFT JOIN dbo.ICSStorage c ON a.Storage_Serial=c.Serial
  534. LEFT JOIN dbo.ICSStack f ON a.Stack_Serial=f.Serial
  535. LEFT JOIN dbo.ICSCartionERPLinkInfo d ON b.Serial=d.CartonSerial
  536. LEFT JOIN dbo.ICSItemLot e ON b.BatchCode=e.BatchCode
  537. WHERE d.rdcCode=(SELECT rdcCode FROM dbo.ICSCartionERPLinkInfo a
  538. LEFT JOIN dbo.ICSCarton b ON a.CartonSerial=b.Serial WHERE b.CartonNO='{0}')";
  539. sql = string.Format(sql, cartonNo);
  540. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  541. }
  542. catch (Exception ex)
  543. {
  544. throw ex;
  545. }
  546. }
  547. public static DataTable queryByNo(string cartonNo)
  548. {
  549. try
  550. {
  551. string sql = @"SELECT e.ItemCode,e.ItemName,e.ItemStd,e.BatchCode,b.CartonNO,b.Collected,
  552. c.StorageName,d.rdcCode,ISNULL(a.Stack_Serial,'') FROM dbo.ICSStorageLotInfo a
  553. LEFT JOIN dbo.ICSCarton b ON a.Carton_Serial=b.Serial
  554. LEFT JOIN dbo.ICSStorage c ON a.Storage_Serial=c.Serial
  555. LEFT JOIN dbo.ICSCartionERPLinkInfo d ON b.Serial=d.CartonSerial
  556. LEFT JOIN dbo.ICSItemLot e ON b.BatchCode=e.BatchCode
  557. WHERE b.CartonNO='{0}' AND a.Stack_Serial is NULL";
  558. sql = string.Format(sql, cartonNo);
  559. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  560. }
  561. catch (Exception ex)
  562. {
  563. throw ex;
  564. }
  565. }
  566. public static DataTable outQuery(string cartonNo)
  567. {
  568. try
  569. {
  570. string sql = @"SELECT a.[BatchCode]
  571. ,a.[ItemCode]
  572. ,a.[Storage_Serial]
  573. ,a.[Stack_Serial]
  574. ,a.[Carton_Serial]
  575. ,b.PackingSpec
  576. ,b.CartonNO
  577. ,b.CartonStatus
  578. ,c.ItemStd
  579. ,c.ItemName
  580. ,c.MadeDate
  581. ,d.StorageCode
  582. FROM [ICSStorageLotInfo] a LEFT JOIN dbo.ICSCarton b
  583. ON a.Carton_Serial=b.Serial
  584. LEFT JOIN dbo.ICSItemLot c ON a.BatchCode=c.BatchCode
  585. LEFT JOIN dbo.ICSStorage d ON a.Storage_Serial=d.Serial
  586. WHERE b.CartonNO='" + cartonNo + "'";
  587. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  588. }
  589. catch (Exception ex)
  590. {
  591. throw ex;
  592. }
  593. }
  594. public static void update(ICSStockBarCode carton)
  595. {
  596. //FramDataContext db = new FramDataContext(AppConfig.AppConnectString);
  597. //db.Connection.Open();
  598. //db.Transaction = db.Connection.BeginTransaction();
  599. //try
  600. //{
  601. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == carton.Serial);
  602. // line.Status = carton.Status;
  603. // line.Mtime = carton.Mtime;
  604. // line.Muser = AppConfig.UserName;
  605. // line.WorkPoint = AppConfig.WorkPointCode;
  606. // db.SubmitChanges();
  607. // db.Transaction.Commit();
  608. //}
  609. //catch (Exception ex)
  610. //{
  611. // db.Transaction.Rollback();
  612. // throw ex;
  613. //}
  614. }
  615. /// <summary>
  616. /// 生成箱号条形码
  617. /// </summary>
  618. /// <param name="Listguid"></param>
  619. /// <param name="Appconstr"></param>
  620. public static void CreatebarCode(List<CartonNoCreat> Listguid, string Appconstr, string PSerial, decimal sumPack)
  621. {
  622. //FramDataContext db = new FramDataContext(Appconstr);
  623. //db.Connection.Open();
  624. //db.Transaction = db.Connection.BeginTransaction();
  625. //try
  626. //{
  627. // string autoID = "";
  628. // string whcode = "";
  629. // string whSerial = "";
  630. // var puLine = db.ICSPurchasingStorage.SingleOrDefault(a => a.Serial == PSerial);
  631. // if (puLine != null)
  632. // {
  633. // autoID = puLine.Rd01AutoID;
  634. // whcode = puLine.cFree1;
  635. // }
  636. // foreach (CartonNoCreat TBLIcsCartonNo in Listguid)
  637. // {
  638. // bool isNew = false;
  639. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == TBLIcsCartonNo.serial);
  640. // if (line != null)
  641. // {
  642. // continue;
  643. // }
  644. // var lines = db.ICSStockBarCode.Where(a => a.BarCode == TBLIcsCartonNo.BarCode && a.WorkPoint == AppConfig.WorkPointCode).ToList();
  645. // if (lines.Count() > 0)
  646. // {
  647. // throw new Exception("条码出现重复");
  648. // }
  649. // if (string.IsNullOrEmpty(autoID))
  650. // {
  651. // var storageLine = db.ICSStorage.SingleOrDefault(a => a.StorageCode == whcode);
  652. // if (storageLine != null)
  653. // {
  654. // whSerial = storageLine.Serial;
  655. // }
  656. // TBLIcsCartonNo.Status = "入库";
  657. // ICSStorageInfo puInfo = new ICSStorageInfo();
  658. // puInfo.Serial = AppConfig.GetGuid();
  659. // puInfo.BarCode = TBLIcsCartonNo.BarCode;
  660. // puInfo.ItemType = "原料";
  661. // puInfo.Storage_Serial = whSerial;
  662. // puInfo.Stack_Serial = "2f77085c-1a32-4a15-b71d-424266f5b682";
  663. // puInfo.Muser = AppConfig.UserName;
  664. // puInfo.Mtime = DateTime.Now;
  665. // puInfo.WorkPoint = "0001";
  666. // db.ICSStorageInfo.InsertOnSubmit(puInfo);
  667. // }
  668. // isNew = true;
  669. // line = new ICSStockBarCode();
  670. // line.Serial = TBLIcsCartonNo.serial;
  671. // line.BarCode = TBLIcsCartonNo.BarCode;
  672. // line.BatchCode = TBLIcsCartonNo.BatchCode;
  673. // line.ItemCode = TBLIcsCartonNo.ItemCode;
  674. // line.Quantity = decimal.Parse(TBLIcsCartonNo.Quantity.ToString());
  675. // line.Status = TBLIcsCartonNo.Status;
  676. // line.Muser = TBLIcsCartonNo.Muser;
  677. // line.cFree1 = TBLIcsCartonNo.cFree1;
  678. // line.Mtime = DateTime.Parse(TBLIcsCartonNo.Mtime);
  679. // line.WorkPoint = AppConfig.WorkPointCode;
  680. // if (isNew) db.ICSStockBarCode.InsertOnSubmit(line);
  681. // }
  682. // var purch = db.ICSPurchasingStorage.SingleOrDefault(a => a.Serial == PSerial);
  683. // if (purch != null)
  684. // {
  685. // purch.PackQuantiy = purch.PackQuantiy + sumPack;
  686. // }
  687. // db.SubmitChanges();
  688. // db.Transaction.Commit();
  689. //}
  690. //catch (Exception ex)
  691. //{
  692. // db.Transaction.Rollback();
  693. // throw new Exception(ex.Message);
  694. //}
  695. }
  696. /// <summary>
  697. /// 分箱
  698. /// </summary>
  699. /// <param name="Listguid"></param>
  700. /// <param name="Appconstr"></param>
  701. public static void CartonOpenOri(List<string> Listguid, string NewQty, string Appconstr)
  702. {
  703. //FramDataContext db = new FramDataContext(Appconstr);
  704. //db.Connection.Open();
  705. //db.Transaction = db.Connection.BeginTransaction();
  706. //try
  707. //{
  708. // foreach(string serial in Listguid)
  709. // {
  710. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == serial);
  711. // if(line!=null)
  712. // {
  713. // decimal OriginQty = decimal.Parse(line.Quantity.ToString());
  714. // line.WorkPoint = AppConfig.WorkPointCode;
  715. // }
  716. // }
  717. // db.SubmitChanges();
  718. // db.Transaction.Commit();
  719. //}
  720. //catch(Exception ex)
  721. //{
  722. // throw ex;
  723. //}
  724. }
  725. /// <summary>
  726. /// 分箱
  727. /// </summary>
  728. /// <param name="list"></param>
  729. /// <param name="Serial"></param>
  730. /// <param name="NewCartonNo"></param>
  731. /// <param name="NewQty"></param>
  732. /// <param name="Appcon"></param>
  733. ///
  734. public static void CartonOpenNew(List<string>list,string oldBarCode,string NewCartonNo,decimal NewQty,string Appcon)
  735. {
  736. // SqlConnection conn = new SqlConnection(Appcon);
  737. // conn.Open();
  738. // SqlCommand cmd = new SqlCommand();
  739. // SqlTransaction trans = conn.BeginTransaction();
  740. // cmd.Transaction = trans;
  741. // cmd.Connection = conn;
  742. // FramDataContext db = new FramDataContext(Appcon);
  743. // db.Connection.Open();
  744. // try
  745. // {
  746. // foreach(string ID in list)
  747. // {
  748. // DataTable dt = findBySerial(ID);
  749. // string strSql = @"UPDATE dbo.ICSStockBarCode SET Quantity=Quantity-{0},
  750. // Muser='{1}',Mtime='{2}'
  751. // WHERE Serial='{3}'";
  752. // strSql = string.Format(strSql, NewQty,
  753. // AppConfig.UserName,DateTime.Now,ID);
  754. // cmd.CommandType = CommandType.Text;
  755. // cmd.CommandText = strSql;
  756. // cmd.ExecuteNonQuery();
  757. // //string SelectID = dt.Rows[0]["SelectID"].ToString();
  758. // string BatchCode = dt.Rows[0]["BatchCode"].ToString();
  759. // string ItemCode = dt.Rows[0]["ItemCode"].ToString();
  760. // //decimal PackingSpec = decimal.Parse(dt.Rows[0]["PackingSpec"].ToString());
  761. // string serial=AppConfig.GetGuid();
  762. // string insertSql = @"INSERT INTO [ICSStockBarCode]
  763. // ([Serial]
  764. // ,[BarCode]
  765. // ,[ItemCode]
  766. // ,[BatchCode]
  767. // ,[Quantity]
  768. // ,[Status]
  769. // ,[Mtime]
  770. // ,[Muser]
  771. // ,[cFree1]
  772. // ,[cFree2]
  773. // ,[WorkPoint])
  774. // VALUES
  775. // ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')";
  776. // insertSql = string.Format(insertSql, serial, NewCartonNo, ItemCode, BatchCode, NewQty,
  777. // "入库",AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss"),
  778. // AppConfig.UserName, dt.Rows[0]["cFree1"].ToString(), "", AppConfig.WorkPointCode);
  779. // cmd.CommandType = CommandType.Text;
  780. // cmd.CommandText = insertSql;
  781. // cmd.ExecuteNonQuery();
  782. // var LotInfo = db.ICSStorageInfo.SingleOrDefault(a => a.BarCode == oldBarCode);
  783. // string itemType = LotInfo.ItemType;
  784. // string Storage_Serial = LotInfo.Storage_Serial;
  785. // string Stack_Serial = LotInfo.Stack_Serial;
  786. // string LotGuid = AppConfig.GetGuid();
  787. // var LotInfoNewline = db.ICSStorageInfo.SingleOrDefault(a => a.BarCode == LotGuid);
  788. // if (LotInfoNewline == null)
  789. // {
  790. // LotInfoNewline = new ICSStorageInfo();
  791. // LotInfoNewline.Serial = LotGuid;
  792. // LotInfoNewline.BarCode = NewCartonNo;
  793. // LotInfoNewline.ItemType = itemType;
  794. // LotInfoNewline.Storage_Serial = Storage_Serial;
  795. // LotInfoNewline.Stack_Serial = Stack_Serial;
  796. // LotInfoNewline.Mtime = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  797. // LotInfoNewline.Muser = AppConfig.UserName;
  798. // LotInfoNewline.WorkPoint = AppConfig.WorkPointCode;
  799. // }
  800. // db.ICSStorageInfo.InsertOnSubmit(LotInfoNewline);
  801. // }
  802. // db.SubmitChanges();
  803. // trans.Commit();
  804. // }
  805. // catch(Exception ex)
  806. // {
  807. // throw ex;
  808. // }
  809. }
  810. /// <summary>
  811. /// 合箱
  812. /// </summary>
  813. /// <param name="Listguid"></param>
  814. /// <param name="Appconstr"></param>
  815. public static void CartonClose(List<CartonNoCreat> Listguid,List<CartonNoCreat> Delguid, string Appconstr)
  816. {
  817. //FramDataContext db = new FramDataContext(Appconstr);
  818. //db.Connection.Open();
  819. //db.Transaction = db.Connection.BeginTransaction();
  820. //try
  821. //{
  822. // foreach (CartonNoCreat TBLIcsCartonNo in Listguid)
  823. // {
  824. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == TBLIcsCartonNo.serial);
  825. // if(line!=null)
  826. // {
  827. // line.Quantity = decimal.Parse(TBLIcsCartonNo.Quantity.ToString());
  828. // line.Muser = AppConfig.UserName;
  829. // line.Mtime = AppConfig.GetSeverDateTime("yyyy-MM-dd");
  830. // line.WorkPoint = AppConfig.WorkPointCode;
  831. // }
  832. // }
  833. // foreach (CartonNoCreat TBLIcsCartonNo in Delguid)
  834. // {
  835. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == TBLIcsCartonNo.serial);
  836. // if (line != null)
  837. // {
  838. // db.ICSStockBarCode.DeleteOnSubmit(line);
  839. // }
  840. // var lines = db.ICSStorageInfo.Where(a => a.BarCode.Contains(TBLIcsCartonNo.BarCode));
  841. // if (lines != null)
  842. // {
  843. // db.ICSStorageInfo.DeleteAllOnSubmit(lines);
  844. // }
  845. // }
  846. // db.SubmitChanges();
  847. // db.Transaction.Commit();
  848. //}
  849. //catch(Exception ex)
  850. //{
  851. // throw ex;
  852. //}
  853. }
  854. /// <summary>
  855. /// 修改箱号
  856. /// </summary>
  857. /// <param name="serial"></param>
  858. /// <param name="Collect"></param>
  859. /// <param name="AppStr"></param>
  860. public static void CartonNoModify(string serial,string Collect, string AppStr)
  861. {
  862. //FramDataContext db = new FramDataContext(AppStr);
  863. //db.Connection.Open();
  864. //db.Transaction = db.Connection.BeginTransaction();
  865. //try
  866. //{
  867. // var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == serial);
  868. // if(line!=null)
  869. // {
  870. // line.Quantity = decimal.Parse(Collect);
  871. // line.Muser = AppConfig.UserName;
  872. // line.Mtime = AppConfig.GetSeverDateTime("yyyy-MM-dd");
  873. // line.WorkPoint = AppConfig.WorkPointCode;
  874. // }
  875. // db.SubmitChanges();
  876. // db.Transaction.Commit();
  877. //}
  878. //catch(Exception ex)
  879. //{
  880. // throw ex;
  881. //}
  882. }
  883. /// <summary>
  884. /// 删除箱号
  885. /// </summary>
  886. /// <param name="Guidlist"></param>
  887. /// <param name="AppStr"></param>
  888. public static List<string> CartonNoDel(List<KeyValuePair<string, string>> Guidlist, string AppStr)
  889. {
  890. List<string> DelSuccess = new List<string>();
  891. FramDataContext db = new FramDataContext(AppStr);
  892. db.Connection.Open();
  893. db.Transaction = db.Connection.BeginTransaction();
  894. try
  895. {
  896. bool b = true;
  897. string carton = "";
  898. foreach (KeyValuePair<string, string> strvalue in Guidlist.ToArray())
  899. {
  900. //var line = db.ICSStockBarCode.SingleOrDefault(a => a.Serial == strvalue.Key);
  901. //if (line != null)
  902. //{
  903. // db.ICSStockBarCode.DeleteOnSubmit(line);
  904. //}
  905. if (b == true)
  906. {
  907. carton = "" + "'" + strvalue.Value + "'" + "";
  908. b = false;
  909. }
  910. else
  911. {
  912. carton += "" + ",'" + strvalue.Value + "'" + "";
  913. }
  914. }
  915. string sql = @"UPDATE dbo.ICSPurchasingStorage SET PackQuantiy = ISNULL(PackQuantiy,0)- pack.sumPack
  916. FROM dbo.ICSPurchasingStorage lot ,(SELECT cFree1, SUM(Quantity) AS sumPack FROM ICSStockBarCode WHERE BarCode IN
  917. (" + carton + ") GROUP BY cFree1) pack WHERE lot.Serial=pack.cFree1";
  918. DBHelper.ExecuteNonQuery(AppStr, CommandType.Text, sql);
  919. db.SubmitChanges();
  920. db.Transaction.Commit();
  921. }
  922. catch (Exception ex)
  923. {
  924. db.Transaction.Rollback();
  925. throw ex;
  926. }
  927. return DelSuccess;
  928. }
  929. #region ICSItemLot 实体类
  930. public class CartonNoCreat
  931. {
  932. public string serial { get; set; }
  933. public string BarCode { get; set; }
  934. public string ItemCode { get; set; }
  935. public string BatchCode { get; set; }
  936. public decimal Quantity { get; set; }
  937. public string Status { get; set; }
  938. public string Mtime { get; set; }
  939. public string Muser { get; set; }
  940. public string cFree1 { get; set; }
  941. public string cFree2 { get; set; }
  942. public string WorkPoint { get; set; }
  943. }
  944. #endregion
  945. public static void search(List<string> guidList1, string appstr)
  946. {
  947. FramDataContext db = new FramDataContext(appstr);
  948. db.Connection.Open();
  949. try
  950. {
  951. var line = db.ICSStockBarCode.Where(a => guidList1.Contains(a.BatchCode) && a.WorkPoint == AppConfig.WorkPointCode);
  952. if (line.ToList().Count > 0 )
  953. {
  954. throw new Exception("批号已使用不可操作");
  955. }
  956. }
  957. catch (Exception ex)
  958. {
  959. throw ex;
  960. }
  961. }
  962. public static DataTable findBySerial(string serial)
  963. {
  964. try
  965. {
  966. string sql = @"SELECT [Serial]
  967. ,[BarCode]
  968. ,[ItemCode]
  969. ,[BatchCode]
  970. ,[Quantity]
  971. ,[Status]
  972. ,[Mtime]
  973. ,[Muser]
  974. ,[cFree1]
  975. ,[cFree2]
  976. ,[WorkPoint]
  977. FROM [ICSStockBarCode] WHERE Serial='" + serial + "'";
  978. return DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  979. }
  980. catch (Exception ex)
  981. {
  982. throw ex;
  983. }
  984. }
  985. /// <summary>
  986. /// 生成箱号条形码
  987. /// </summary>
  988. /// <param name="Listguid"></param>
  989. /// <param name="Appconstr"></param>
  990. public static void UpdateLotPack(string Batch, decimal sumPack, string Appconstr, string PSerial)
  991. {
  992. //FramDataContext db = new FramDataContext(Appconstr);
  993. //db.Connection.Open();
  994. //db.Transaction = db.Connection.BeginTransaction();
  995. //try
  996. //{
  997. // var line = db.ICSPurchasingStorage.SingleOrDefault(a => a.Serial == PSerial);
  998. // if (line != null)
  999. // {
  1000. // line.PackQuantiy = line.PackQuantiy+sumPack;
  1001. // }
  1002. // db.SubmitChanges();
  1003. // db.Transaction.Commit();
  1004. //}
  1005. //catch (Exception ex)
  1006. //{
  1007. // db.Transaction.Rollback();
  1008. // throw new Exception(ex.Message);
  1009. //}
  1010. }
  1011. #region SQL事物操作函数以及ERP的ID的读取与写入的
  1012. /// 插入或更新的操作
  1013. /// </summary>
  1014. /// <param name="SQl"></param>
  1015. /// <param name="conn"></param>
  1016. /// <param name="sqlTran"></param>
  1017. /// <returns></returns>
  1018. private static int SQlInsertAndUpdate(string SQl, SqlConnection conn, SqlTransaction sqlTran, SqlCommand cmd)
  1019. {
  1020. cmd.Connection = conn;
  1021. cmd.CommandText = SQl;
  1022. cmd.Transaction = sqlTran;
  1023. return cmd.ExecuteNonQuery();
  1024. }
  1025. /// <summary>
  1026. /// 查询SQL
  1027. /// </summary>
  1028. /// <param name="SQl"></param>
  1029. /// <param name="conn"></param>
  1030. /// <param name="sqlTran"></param>
  1031. /// <returns></returns>
  1032. private static DataTable SQlReturnData(SqlCommand cmd)
  1033. {
  1034. DataTable dt = new DataTable();
  1035. SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter();
  1036. dr.SelectCommand = cmd;
  1037. dr.Fill(dt);
  1038. return dt;
  1039. }
  1040. private static void SaveGetrdIDandAutoID(string connectstring, string returnTxt, string IDtype, string cAcc_id, int rowCount, out int id, out int autoID)
  1041. {
  1042. try
  1043. {
  1044. string str = @"DECLARE @ID int
  1045. DECLARE @DID int
  1046. SET @ID = 0
  1047. SET @DID = 0
  1048. IF NOT EXISTS (SELECT * FROM ufsystem..ua_identity WHERE cacc_id = '{0}' AND cVouchType = '{1}')
  1049. INSERT INTO ufsystem..ua_identity(cAcc_Id,cVouchType,iFatherId,iChildId) VALUES('{0}','{1}',1,1)
  1050. SELECT @ID = ifatherID + 1 ,@DID = ichildID + {2}
  1051. FROM ufsystem..ua_identity
  1052. WHERE cVouchType = '{1}'
  1053. AND cAcc_id = '{0}'
  1054. UPDATE ufsystem..ua_identity
  1055. SET ifatherID = ifatherID + 1,ichildID = ichildID + {2}
  1056. WHERE cVouchType = '{1}' AND cAcc_id = '{0}'
  1057. select @ID as ID,@DID as DID";
  1058. str = string.Format(str, cAcc_id, IDtype, rowCount.ToString());
  1059. DataTable dt = DBHelper.ExecuteDataset(connectstring, CommandType.Text, str).Tables[0];
  1060. if (dt.Rows.Count == 0)
  1061. {
  1062. throw new Exception("ID取得失败");
  1063. }
  1064. id = Convert.ToInt32(dt.Rows[0]["ID"]);
  1065. autoID = Convert.ToInt32(dt.Rows[0]["DID"]);
  1066. }
  1067. catch (Exception ex)
  1068. {
  1069. throw new Exception(returnTxt + ex.Message);
  1070. }
  1071. }
  1072. #endregion
  1073. }
  1074. public class Rd11Context
  1075. {
  1076. public string ERPDataName { get; set; }
  1077. public string WorkPointCode { get; set; }
  1078. public string UserName { get; set; }
  1079. public DateTime UserTime { get; set; }
  1080. public string Storage_Serial { get; set; }
  1081. public string Stack_Serial { get; set; }
  1082. public string ERPDeptCode { get; set; }
  1083. public string ERPrdCode { get; set; }
  1084. public string ERPrdcRdCode { get; set; }
  1085. public int ERPrdID { get; set; }
  1086. public int ERPrdDid { get; set; }
  1087. public int ERPrdRowCount { get; set; }
  1088. public string ERPcWhCode { get; set; }
  1089. public string ERPrdPerson { get; set; }
  1090. public string ERPcMaker { get; set; }
  1091. public string ERPrdcDate { get; set; }
  1092. public string ERPDEF_ID { get; set; }
  1093. public string ERPCardNumber { get; set; }
  1094. public string ERPcPersonCode { get; set; }
  1095. public string MoDid { get; set; }
  1096. public string MoId { get; set; }
  1097. public Dictionary<string,string> Bar_Qty { get; set; }
  1098. }
  1099. public class InitialInvtory
  1100. {
  1101. public string ItemCode { get; set; }
  1102. public string BatchCode { get; set; }
  1103. public string Qty { get; set; }
  1104. public string VenCode { get; set; }
  1105. public string WhCode { get; set; }
  1106. public string Free1 { get; set; }
  1107. public string Free2 { get; set; }
  1108. public string Free3 { get; set; }
  1109. public string AuxUnitCode { get; set; }
  1110. public string AuxQty { get; set; }
  1111. public string Line { get; set; }
  1112. }
  1113. }