ExcelHelper.cs 113 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463
  1. using System;
  2. using System.Threading;
  3. using System.Linq;
  4. using System.Data;
  5. using Library;
  6. using MySystem.Models;
  7. using System.Collections.Generic;
  8. namespace MySystem
  9. {
  10. public class ExcelHelper
  11. {
  12. public readonly static ExcelHelper Instance = new ExcelHelper();
  13. private ExcelHelper()
  14. {
  15. }
  16. public void Start()//启动
  17. {
  18. Thread thread = new Thread(ImportPostDo);
  19. thread.IsBackground = true;
  20. thread.Start();
  21. }
  22. public void ImportPostDo()
  23. {
  24. while (true)
  25. {
  26. string data = RedisDbconn.Instance.RPop<string>("ExcelImport10");
  27. if (!string.IsNullOrEmpty(data))
  28. {
  29. string[] dataList = data.Split("#cut#");
  30. string _ExcelPath = dataList[0];
  31. string _Kind = dataList[1];
  32. string checkKey = dataList[2];
  33. string Operator = dataList[3]; // 操作人
  34. int SuccessCount = 0;
  35. int DoCount = 0;
  36. string FullExcelPath = function.getPath(_ExcelPath);
  37. FullExcelPath = FullExcelPath.Replace("//", "/");
  38. DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
  39. int TotalCount = list.Rows.Count;
  40. while (DoCount < list.Rows.Count)
  41. {
  42. WebCMSEntities db = new WebCMSEntities();
  43. //机具入库
  44. if (_Kind == "1")
  45. {
  46. var tran = db.Database.BeginTransaction();
  47. try
  48. {
  49. int Size = 100;
  50. if (list.Rows.Count - DoCount < 100)
  51. {
  52. Size = list.Rows.Count - DoCount;
  53. }
  54. Dictionary<string, int> storeData = new Dictionary<string, int>();
  55. for (int i = DoCount; i < DoCount + Size; i++)
  56. {
  57. DataRow dr = list.Rows[i];
  58. string BatchNo = dr[0].ToString(); // 业务批次号
  59. string SnNo = dr[1].ToString(); // SN编号
  60. SnNo = SnNo.Replace(" ", "");
  61. SnNo = SnNo.Replace("`", "");
  62. string DeviceName = dr[2].ToString(); // 设备厂商
  63. string DeviceKind = dr[3].ToString(); // 设备型号
  64. string DeviceType = dr[4].ToString(); // 设备类型区分(客小爽电签POS填写:KysSignPos/KssSignPos)
  65. string StoreNo = dr[5].ToString(); // 收货仓库编号
  66. string BrandIdString = dr[6].ToString(); // 产品类型(5-客小爽Mpos,6-客小爽大POS,61-客小爽电签POS,8-客小爽超级Mpos)
  67. string InputMan = dr[7].ToString(); // 入库操作人
  68. string InputNote = dr[8].ToString(); // 入库备注
  69. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo);
  70. if (machinefor == null)
  71. {
  72. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  73. int CardType = BrandId == 14 ? 2 : 0;
  74. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  75. if (kqProduct.Id > 0)
  76. {
  77. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  78. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  79. PosMachinesTwo pos = db.PosMachinesTwo.Add(new PosMachinesTwo()
  80. {
  81. CreateDate = DateTime.Now,
  82. PosSn = SnNo, //SN编号
  83. BrandId = BrandId, //产品类型
  84. StoreId = storefor.StoreId, //所在仓库
  85. DeviceType = DeviceType, //设备类型
  86. BatchNo = BatchNo,
  87. DeviceName = DeviceName,
  88. DeviceKind = DeviceKind,
  89. SourceStoreId = storefor.StoreId, //源仓库
  90. CardType = CardType,
  91. }).Entity;
  92. store.ProductName = kqProduct.Name;
  93. store.BrandId = BrandId.ToString();
  94. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  95. {
  96. CreateDate = DateTime.Now,
  97. CreateMan = Operator,
  98. StoreId = storefor.StoreId, //仓库
  99. BrandId = BrandId, //产品类型
  100. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  101. BizBatchNo = BatchNo, //业务批次号
  102. TransType = 0, //交易类型
  103. SnNo = SnNo, //SN编号
  104. StockOpDirect = 0, //库存操作方向
  105. SnStatus = 0, //SN状态
  106. DeviceVendor = DeviceName, //设备厂商
  107. DeviceModel = DeviceKind, //设备型号
  108. DeviceType = DeviceType, //设备类型
  109. ToDate = DateTime.Now, //入库时间
  110. ToRemark = InputNote, //入库备注
  111. BrandType = DeviceType, //品牌类型
  112. SourceStoreId = storefor.StoreId, //源仓库
  113. }).Entity;
  114. db.SaveChanges();
  115. string ChangeNo = "SC";
  116. int StoreStockChangeId = stockchange.Id;
  117. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  118. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  119. {
  120. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  121. }
  122. ChangeNo += StoreStockChangeIdString;
  123. stockchange.ChangeNo = ChangeNo; //交易流水编号
  124. db.StoreChangeHistory.Add(new StoreChangeHistory()
  125. {
  126. CreateDate = DateTime.Now,
  127. CreateMan = Operator,
  128. UserId = store.UserId, //创客
  129. BrandId = BrandId, //产品类型
  130. ChangeRecordNo = ChangeNo, //变更记录单号
  131. BizBatchNo = BatchNo, //业务批次号
  132. TransType = 0, //交易类型
  133. SnNo = SnNo, //SN编号
  134. StockOpDirect = 0, //库存操作方向
  135. DeviceVendor = DeviceName, //设备厂商
  136. DeviceType = DeviceType, //设备类型
  137. DeviceModel = DeviceKind, //设备型号
  138. ToUserId = store.UserId, //收货创客
  139. ToStoreId = store.Id, //创客退货收货仓库
  140. ToDate = DateTime.Now, //入库时间
  141. ToRemark = InputNote, //入库备注
  142. SourceStoreId = storefor.StoreId, //源仓库
  143. StoreId = storefor.StoreId, //仓库
  144. });
  145. machinefor = db.MachineForSnNo.Add(new MachineForSnNo()
  146. {
  147. SnNo = SnNo,
  148. SnId = pos.Id
  149. }).Entity;
  150. RedisDbconn.Instance.Set("MachineForSnNo:" + SnNo, machinefor);
  151. db.SaveChanges();
  152. RedisDbconn.Instance.AddList("PosMachineList:" + storefor.StoreId, pos);
  153. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  154. {
  155. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  156. }
  157. else
  158. {
  159. storeData[storefor.StoreId + "_" + BrandId] += 1;
  160. }
  161. SuccessCount += 1;
  162. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  163. }
  164. else
  165. {
  166. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  167. }
  168. }
  169. else
  170. {
  171. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已存在,请勿重复录入");
  172. }
  173. }
  174. DoCount += Size;
  175. foreach (string key in storeData.Keys)
  176. {
  177. string[] keylist = key.Split('_');
  178. int StoreId = int.Parse(keylist[0]);
  179. int BrandId = int.Parse(keylist[1]);
  180. int OpStoreNum = storeData[key];
  181. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  182. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  183. {
  184. CreateDate = DateTime.Now,
  185. CreateMan = Operator,
  186. StoreId = StoreId, //仓库
  187. TransType = 0, //交易类型
  188. BrandId = BrandId, //产品类型
  189. OpStoreNum = OpStoreNum, //操作库存数
  190. OpSymbol = "+", //操作符
  191. BeforeTotalNum = store.TotalNum, //操作前总库存数
  192. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  193. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  194. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  195. BeforeOutNum = store.OutNum, //操作前出库数
  196. AfterOutNum = store.OutNum, //操作后出库数
  197. }).Entity;
  198. db.SaveChanges();
  199. string ChangeNo = "SC";
  200. int StoreStockChangeId = balance.Id;
  201. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  202. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  203. {
  204. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  205. }
  206. ChangeNo += StoreStockChangeIdString;
  207. balance.TransRecordNo = ChangeNo; //交易流水编号
  208. store.TotalNum += OpStoreNum;
  209. store.LaveNum += OpStoreNum;
  210. db.SaveChanges();
  211. }
  212. db.SaveChanges();
  213. tran.Commit();
  214. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  215. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  216. }
  217. catch (Exception ex)
  218. {
  219. DoCount = list.Rows.Count;
  220. function.WriteLog(ex.ToString(), "机具导入异常");
  221. tran.Rollback();
  222. ErrorMsg msg = new ErrorMsg()
  223. {
  224. Time = DateTime.Now,
  225. ErrorContent = ex.ToString(),
  226. };
  227. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  228. }
  229. tran.Dispose();
  230. }
  231. //仓库调拨
  232. else if (_Kind == "2")
  233. {
  234. Dictionary<string, int> storeData = new Dictionary<string, int>();
  235. Dictionary<string, int> toStoreData = new Dictionary<string, int>();
  236. using (var tran = db.Database.BeginTransaction())
  237. {
  238. try
  239. {
  240. int Size = 100;
  241. if (list.Rows.Count - DoCount < 100)
  242. {
  243. Size = list.Rows.Count - DoCount;
  244. }
  245. for (int i = DoCount; i < DoCount + Size; i++)
  246. {
  247. DataRow dr = list.Rows[i];
  248. string BatchNo = dr[0].ToString(); // 业务批次号
  249. string OutStoreNo = dr[1].ToString(); // 出货仓库编号
  250. string OutOperator = dr[2].ToString(); // 出库操作人
  251. string SnNo = dr[3].ToString(); // SN编号
  252. SnNo = SnNo.Replace(" ", "");
  253. string StoreNo = dr[4].ToString(); // 收货仓库编号
  254. string BrandIdString = dr[5].ToString(); // 产品类型
  255. string OutNote = "";
  256. if (list.Columns.Count > 6)
  257. {
  258. OutNote = dr[6].ToString(); // 出库备注
  259. }
  260. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  261. //调拨时若出货仓库与填写仓库不符,则该条出货失败
  262. var posinfo = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SnNo && m.BrandId == BrandId) ?? new PosMachinesTwo();
  263. var storeinfo = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo && m.StoreId == posinfo.StoreId) ?? new StoreForCode();
  264. if (posinfo.Id > 0)
  265. {
  266. if (storeinfo.StoreId > 0)
  267. {
  268. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  269. if (kqProduct.Id > 0)
  270. {
  271. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
  272. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  273. if (store.LaveNum > 0)
  274. {
  275. StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  276. StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId) ?? new StoreHouse();
  277. if (tostore.Id > 0)
  278. {
  279. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  280. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.StoreId != tostore.Id && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
  281. if (machine.Id > 0)
  282. {
  283. if (machine.PreUserId == 0)
  284. {
  285. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  286. {
  287. CreateDate = DateTime.Now,
  288. CreateMan = Operator,
  289. StoreId = storefor.StoreId, //仓库
  290. BrandId = BrandId, //产品类型
  291. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  292. BizBatchNo = BatchNo, //业务批次号
  293. TransType = 1, //交易类型
  294. SnNo = SnNo, //SN编号
  295. StockOpDirect = 1, //库存操作方向
  296. SnStatus = 1, //SN状态
  297. DeviceVendor = machine.DeviceName, //设备厂商
  298. DeviceModel = machine.DeviceKind, //设备型号
  299. DeviceType = machine.DeviceType, //设备类型
  300. FromUserId = store.UserId, //出货人
  301. FromDate = DateTime.Now, //出库时间
  302. FromRemark = OutNote, //出库备注
  303. ToUserId = tostore.UserId, //收货人
  304. ToStoreId = tostorefor.StoreId, //退货收货仓库
  305. SourceStoreId = machine.SourceStoreId, //源仓库编号
  306. BrandType = machine.DeviceType, //品牌类型
  307. }).Entity;
  308. db.SaveChanges();
  309. string ChangeNo = "SC";
  310. int StoreStockChangeId = stockchange.Id;
  311. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  312. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  313. {
  314. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  315. }
  316. ChangeNo += StoreStockChangeIdString;
  317. stockchange.ChangeNo = ChangeNo; //交易流水编号
  318. machine.StoreId = tostorefor.StoreId;
  319. db.StoreChangeHistory.Add(new StoreChangeHistory()
  320. {
  321. CreateDate = DateTime.Now,
  322. CreateMan = Operator,
  323. UserId = store.UserId, //创客
  324. ToUserId = tostore.UserId, //收货创客
  325. BrandId = BrandId, //产品类型
  326. ChangeRecordNo = ChangeNo, //变更记录单号
  327. BizBatchNo = BatchNo, //业务批次号
  328. TransType = 1, //交易类型
  329. SnNo = SnNo, //SN编号
  330. SnType = machine.PosSnType, //SN机具类型
  331. StockOpDirect = 1, //库存操作方向
  332. DeviceVendor = machine.DeviceName, //设备厂商
  333. DeviceModel = machine.DeviceKind, //设备型号
  334. DeviceType = machine.DeviceType, //设备类型
  335. FromUserId = store.UserId, //出货创客
  336. FromDate = DateTime.Now, //出库时间
  337. FromRemark = OutNote, //出库备注
  338. SourceStoreId = machine.SourceStoreId, //源仓库
  339. ToStoreId = tostore.Id, //收货仓库
  340. StoreId = store.Id, //仓库
  341. });
  342. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  343. {
  344. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  345. }
  346. else
  347. {
  348. storeData[storefor.StoreId + "_" + BrandId] += 1;
  349. }
  350. if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
  351. {
  352. toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
  353. }
  354. else
  355. {
  356. toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
  357. }
  358. SuccessCount += 1;
  359. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  360. }
  361. else
  362. {
  363. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "为预发机,不可调拨");
  364. }
  365. }
  366. else
  367. {
  368. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "不是仓库机或已经在填写的收货仓库中");
  369. }
  370. if (string.IsNullOrEmpty(tostore.ProductName))
  371. {
  372. tostore.BrandId = BrandId.ToString();
  373. tostore.ProductName = kqProduct.Name;
  374. }
  375. }
  376. else
  377. {
  378. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的收货仓库编号不正确");
  379. }
  380. }
  381. else
  382. {
  383. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "所在的仓库" + store.StoreName + "(" + store.StoreNo + ")库存不足");
  384. }
  385. db.SaveChanges();
  386. }
  387. else
  388. {
  389. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  390. }
  391. }
  392. else
  393. {
  394. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "出货仓库与填写仓库不符");
  395. }
  396. }
  397. else
  398. {
  399. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  400. }
  401. }
  402. DoCount += Size;
  403. foreach (string key in storeData.Keys)
  404. {
  405. string[] keylist = key.Split('_');
  406. int StoreId = int.Parse(keylist[0]);
  407. int BrandId = int.Parse(keylist[1]);
  408. int OpStoreNum = storeData[key];
  409. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  410. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  411. {
  412. CreateDate = DateTime.Now,
  413. CreateMan = Operator,
  414. StoreId = StoreId, //仓库
  415. TransType = 1, //交易类型
  416. BrandId = BrandId, //产品类型
  417. OpStoreNum = OpStoreNum, //操作库存数
  418. OpSymbol = "-", //操作符
  419. BeforeTotalNum = store.TotalNum, //操作前总库存数
  420. AfterTotalNum = store.TotalNum, //操作后总库存数
  421. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  422. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  423. BeforeOutNum = store.OutNum, //操作前出库数
  424. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  425. }).Entity;
  426. db.SaveChanges();
  427. string ChangeNo = "SC";
  428. int StoreStockChangeId = balance.Id;
  429. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  430. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  431. {
  432. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  433. }
  434. ChangeNo += StoreStockChangeIdString;
  435. balance.TransRecordNo = ChangeNo; //交易流水编号
  436. store.LaveNum -= OpStoreNum;
  437. store.OutNum += OpStoreNum;
  438. db.SaveChanges();
  439. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"" + OpStoreNum + "\"}}";
  440. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  441. }
  442. foreach (string key in toStoreData.Keys)
  443. {
  444. string[] keylist = key.Split('_');
  445. int StoreId = int.Parse(keylist[0]);
  446. int BrandId = int.Parse(keylist[1]);
  447. int OpStoreNum = toStoreData[key];
  448. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  449. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  450. {
  451. CreateDate = DateTime.Now,
  452. CreateMan = Operator,
  453. StoreId = StoreId, //仓库
  454. TransType = 0, //交易类型
  455. BrandId = BrandId, //产品类型
  456. OpStoreNum = OpStoreNum, //操作库存数
  457. OpSymbol = "+", //操作符
  458. BeforeTotalNum = store.TotalNum, //操作前总库存数
  459. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  460. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  461. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  462. BeforeOutNum = store.OutNum, //操作前出库数
  463. AfterOutNum = store.OutNum, //操作后出库数
  464. }).Entity;
  465. db.SaveChanges();
  466. string ChangeNo = "SC";
  467. int StoreStockChangeId = balance.Id;
  468. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  469. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  470. {
  471. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  472. }
  473. ChangeNo += StoreStockChangeIdString;
  474. balance.TransRecordNo = ChangeNo; //交易流水编号
  475. store.TotalNum += OpStoreNum;
  476. store.LaveNum += OpStoreNum;
  477. db.SaveChanges();
  478. string SendData = "{\"Kind\":\"5\",\"Data\":{\"StoreId\":\"" + StoreId + "\",\"BrandId\":\"" + BrandId + "\",\"OpStoreNum\":\"-" + OpStoreNum + "\"}}";
  479. RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
  480. }
  481. db.SaveChanges();
  482. tran.Commit();
  483. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  484. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  485. }
  486. catch (Exception ex)
  487. {
  488. DoCount = list.Rows.Count;
  489. tran.Rollback();
  490. ErrorMsg msg = new ErrorMsg()
  491. {
  492. Time = DateTime.Now,
  493. ErrorContent = ex.ToString(),
  494. };
  495. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  496. }
  497. }
  498. }
  499. //仓库发货至创客
  500. else if (_Kind == "3")
  501. {
  502. Dictionary<string, int> storeData = new Dictionary<string, int>();
  503. using (var tran = db.Database.BeginTransaction())
  504. {
  505. try
  506. {
  507. int Size = 100;
  508. if (list.Rows.Count - DoCount < 100)
  509. {
  510. Size = list.Rows.Count - DoCount;
  511. }
  512. for (int i = DoCount; i < DoCount + Size; i++)
  513. {
  514. DataRow dr = list.Rows[i];
  515. string BatchNo = dr[0].ToString(); // 业务批次号
  516. BatchNo = BatchNo.Replace(" ", "");
  517. string OutStoreNo = dr[1].ToString(); // 出货仓库编号
  518. OutStoreNo = OutStoreNo.Replace(" ", "");
  519. string OutOperator = dr[2].ToString(); // 出库操作人
  520. OutOperator = OutOperator.Replace(" ", "");
  521. string SnNo = dr[3].ToString(); // SN编号
  522. SnNo = SnNo.Replace(" ", "");
  523. string MakerCode = dr[4].ToString(); // 收货创客编号
  524. MakerCode = MakerCode.Replace(" ", "");
  525. string BrandIdString = dr[5].ToString(); // 产品类型(5-客小爽Mpos,6-客小爽大POS,61-客小爽电签POS,8-客小爽超级Mpos))
  526. BrandIdString = BrandIdString.Replace(" ", "");
  527. string OutNote = "";
  528. if (list.Columns.Count > 6)
  529. {
  530. OutNote = dr[6].ToString(); // 出库备注
  531. }
  532. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  533. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  534. if (kqProduct.Id > 0)
  535. {
  536. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
  537. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  538. if (store.LaveNum > 0)
  539. {
  540. UserForMakerCode userfor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  541. Users touser = db.Users.FirstOrDefault(m => m.Id == userfor.UserId && m.AuthFlag == 1) ?? new Users();
  542. if (touser.Id > 0)
  543. {
  544. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  545. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
  546. if (machine.Id > 0)
  547. {
  548. if (machine.BrandId == BrandId)
  549. {
  550. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  551. {
  552. CreateDate = DateTime.Now,
  553. CreateMan = Operator,
  554. StoreId = storefor.StoreId, //仓库
  555. BrandId = BrandId, //产品类型
  556. ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
  557. BizBatchNo = BatchNo, //业务批次号
  558. TransType = 2, //交易类型
  559. SnNo = SnNo, //SN编号
  560. SnType = machine.PosSnType, //SN机具类型
  561. StockOpDirect = 1, //库存操作方向
  562. SnStatus = 1, //SN状态
  563. BindStatus = machine.BindingState, //绑定状态
  564. BindMerchant = machine.BindMerchantId, //绑定商户
  565. ActiveStatus = machine.ActivationState, //激活状态
  566. ActRewardUserId = machine.BuyUserId, //激活奖励人
  567. DeviceVendor = machine.DeviceName, //设备厂商
  568. DeviceModel = machine.DeviceKind, //设备型号
  569. DeviceType = machine.DeviceType, //设备类型
  570. FromUserId = store.UserId, //出货人
  571. FromDate = DateTime.Now, //出库时间
  572. FromRemark = OutNote, //出库备注
  573. ToUserId = userfor.UserId, //收货人
  574. SourceStoreId = machine.SourceStoreId, //源仓库编号
  575. BrandType = machine.DeviceType, //品牌类型
  576. }).Entity;
  577. db.SaveChanges();
  578. string ChangeNo = "SC";
  579. int StoreStockChangeId = stockchange.Id;
  580. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  581. for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
  582. {
  583. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  584. }
  585. ChangeNo += StoreStockChangeIdString;
  586. stockchange.ChangeNo = ChangeNo; //交易流水编号
  587. db.SaveChanges();
  588. UserStoreChange userstore = db.UserStoreChange.Add(new UserStoreChange()
  589. {
  590. CreateDate = DateTime.Now,
  591. CreateMan = Operator,
  592. UserId = store.UserId, //创客
  593. BrandId = BrandId, //产品类型
  594. ChangeRecordNo = ChangeNo, //变更记录单号
  595. TransType = 0, //交易类型
  596. SnNo = SnNo, //SN编号
  597. SnType = machine.PosSnType, //SN机具类型
  598. StockOpDirect = 0, //库存操作方向
  599. DeviceVendor = machine.DeviceName, //设备厂商
  600. DeviceType = machine.DeviceKind, //设备类型
  601. DeviceModel = machine.DeviceType, //设备型号
  602. ToUserId = userfor.UserId, //收货创客
  603. ToDate = DateTime.Now, //入库时间
  604. ToRemark = OutNote, //入库备注
  605. SourceStoreId = machine.SourceStoreId, //源仓库
  606. SnStatus = 1, //SN状态
  607. BizBatchNo = BatchNo, //业务批次号
  608. BindStatus = (int)machine.BindingState, //绑定状态
  609. BindMerchantId = machine.BindMerchantId, //绑定商户
  610. ActiveStatus = (int)machine.ActivationState, //激活状态
  611. ActRewardUserId = machine.BuyUserId, //激活奖励创客
  612. BrandType = machine.DeviceType, //品牌类型
  613. }).Entity;
  614. db.StoreChangeHistory.Add(new StoreChangeHistory()
  615. {
  616. CreateDate = DateTime.Now,
  617. CreateMan = Operator,
  618. UserId = store.UserId, //创客
  619. ToUserId = touser.Id, //收货创客
  620. BrandId = BrandId, //产品类型
  621. ChangeRecordNo = ChangeNo, //变更记录单号
  622. BizBatchNo = BatchNo, //业务批次号
  623. TransType = 2, //交易类型
  624. SnNo = SnNo, //SN编号
  625. SnType = machine.PosSnType, //SN机具类型
  626. StockOpDirect = 1, //库存操作方向
  627. DeviceVendor = machine.DeviceName, //设备厂商
  628. DeviceModel = machine.DeviceKind, //设备型号
  629. DeviceType = machine.DeviceType, //设备类型
  630. FromUserId = store.UserId, //出货创客
  631. FromDate = DateTime.Now, //出库时间
  632. FromRemark = OutNote, //出库备注
  633. SourceStoreId = machine.SourceStoreId, //源仓库
  634. StoreId = store.Id, //仓库
  635. });
  636. machine.BuyUserId = touser.Id;
  637. machine.UserId = touser.Id;
  638. machine.TransferTime = DateTime.Now;
  639. machine.RecycEndDate = DateTime.Now.AddDays(360); // 循环结束时间
  640. db.SaveChanges();
  641. string IdBrand = touser.Id + "_" + BrandId;
  642. UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);
  643. if (MachineData == null)
  644. {
  645. MachineData = db.UserMachineData.Add(new UserMachineData()
  646. {
  647. IdBrand = IdBrand,
  648. }).Entity;
  649. db.SaveChanges();
  650. }
  651. MachineData.IdBrand = IdBrand;
  652. MachineData.TotalMachineCount += 1;
  653. MachineData.UnBindCount += 1;
  654. db.SaveChanges();
  655. RemoveClass.DeletePosMachineList("PosMachineTwoList:" + storefor.StoreId, machine.Id);
  656. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  657. {
  658. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  659. }
  660. else
  661. {
  662. storeData[storefor.StoreId + "_" + BrandId] += 1;
  663. }
  664. SuccessCount += 1;
  665. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  666. }
  667. else
  668. {
  669. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "与表格里填写的品牌不一致");
  670. }
  671. }
  672. else
  673. {
  674. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "不是仓库机");
  675. }
  676. }
  677. else
  678. {
  679. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的收货创客编号不正确或创客未认证");
  680. }
  681. }
  682. else
  683. {
  684. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "所在的仓库" + store.StoreName + "(" + store.StoreNo + ")库存不足");
  685. }
  686. }
  687. else
  688. {
  689. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  690. }
  691. }
  692. DoCount += Size;
  693. foreach (string key in storeData.Keys)
  694. {
  695. string[] keylist = key.Split('_');
  696. int StoreId = int.Parse(keylist[0]);
  697. int BrandId = int.Parse(keylist[1]);
  698. int OpStoreNum = storeData[key];
  699. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  700. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  701. {
  702. CreateDate = DateTime.Now,
  703. CreateMan = Operator,
  704. StoreId = StoreId, //仓库
  705. TransType = 1, //交易类型
  706. BrandId = BrandId, //产品类型
  707. OpStoreNum = OpStoreNum, //操作库存数
  708. OpSymbol = "-", //操作符
  709. BeforeTotalNum = store.TotalNum, //操作前总库存数
  710. AfterTotalNum = store.TotalNum, //操作后总库存数
  711. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  712. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  713. BeforeOutNum = store.OutNum, //操作前出库数
  714. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  715. }).Entity;
  716. db.SaveChanges();
  717. string ChangeNo = "SC";
  718. int StoreStockChangeId = balance.Id;
  719. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  720. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  721. {
  722. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  723. }
  724. ChangeNo += StoreStockChangeIdString;
  725. balance.TransRecordNo = ChangeNo; //交易流水编号
  726. store.LaveNum -= OpStoreNum;
  727. store.OutNum += OpStoreNum;
  728. db.SaveChanges();
  729. }
  730. db.SaveChanges();
  731. tran.Commit();
  732. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  733. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  734. }
  735. catch (Exception ex)
  736. {
  737. DoCount = list.Rows.Count;
  738. tran.Rollback();
  739. ErrorMsg msg = new ErrorMsg()
  740. {
  741. Time = DateTime.Now,
  742. ErrorContent = ex.ToString(),
  743. };
  744. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  745. }
  746. }
  747. }
  748. else if (_Kind == "4")
  749. {
  750. Dictionary<string, int> storeData = new Dictionary<string, int>();
  751. Dictionary<string, int> toStoreData = new Dictionary<string, int>();
  752. using (var tran = db.Database.BeginTransaction())
  753. {
  754. try
  755. {
  756. int Size = 100;
  757. if (list.Rows.Count - DoCount < 100)
  758. {
  759. Size = list.Rows.Count - DoCount;
  760. }
  761. List<string> opData = new List<string>();
  762. for (int i = DoCount; i < DoCount + Size; i++)
  763. {
  764. DataRow dr = list.Rows[i];
  765. string BatchNo = dr[0].ToString(); // 业务批次号
  766. string OldStoreNo = dr[1].ToString(); // 原仓库编号
  767. string OldOperator = dr[2].ToString(); // 操作人
  768. string SnNo = dr[3].ToString(); // SN编号
  769. SnNo = SnNo.Replace(" ", "");
  770. string StoreNo = dr[4].ToString(); // 退回仓库编号
  771. string BrandIdString = dr[5].ToString(); // 产品类型
  772. string OutNote = "";
  773. if (list.Columns.Count > 6)
  774. {
  775. OutNote = dr[6].ToString(); // 出库备注
  776. }
  777. int BrandId = int.Parse(function.CheckInt(BrandIdString));
  778. decimal amount = 0;
  779. KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
  780. if (kqProduct.Name.Contains("电签"))
  781. {
  782. amount = 200;
  783. }
  784. if (kqProduct.Name.Contains("大POS"))
  785. {
  786. amount = 300;
  787. }
  788. if (kqProduct.Id > 0)
  789. {
  790. StoreForCode storefor = db.StoreForCode.FirstOrDefault(m => m.Code == OldStoreNo) ?? new StoreForCode();
  791. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == storefor.StoreId) ?? new StoreHouse();
  792. if (store.Id > 0)
  793. {
  794. StoreForCode tostorefor = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo) ?? new StoreForCode();
  795. StoreHouse tostore = db.StoreHouse.FirstOrDefault(m => m.Id == tostorefor.StoreId && m.Status > -1) ?? new StoreHouse();
  796. if (tostore.Id > 0)
  797. {
  798. MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
  799. PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId > 0) ?? new PosMachinesTwo();
  800. if (machine.Id > 0)
  801. {
  802. function.WriteLog(DateTime.Now.ToString() + "\n" + Newtonsoft.Json.JsonConvert.SerializeObject(machine), "机具回仓库日志");
  803. if (!opData.Contains(machine.BuyUserId + ":" + machine.BrandId))
  804. {
  805. opData.Add(machine.BuyUserId + ":" + machine.BrandId);
  806. }
  807. machine.StoreId = tostorefor.StoreId;
  808. machine.BuyUserId = 0;
  809. machine.UserId = 0;
  810. machine.BindingState = 0;
  811. machine.ActivationState = 0;
  812. machine.BindingTime = null;
  813. machine.ActivationTime = null;
  814. machine.OrderId = 0;
  815. machine.RecycEndDate = null;
  816. machine.PosSnType = 0;
  817. machine.BindMerchantId = 0;
  818. machine.ScanQrTrade = 0;
  819. machine.DebitCardTrade = 0;
  820. machine.CreditTrade = 0;
  821. machine.UserNav = null;
  822. machine.IsPurchase = 0;
  823. machine.LeaderUserId = 0;
  824. machine.PreUserId = 0;
  825. PublicFunction.ClearPosHistory(db, SnNo); //清除机具历史记录
  826. db.SaveChanges();
  827. if (!storeData.ContainsKey(storefor.StoreId + "_" + BrandId))
  828. {
  829. storeData.Add(storefor.StoreId + "_" + BrandId, 1);
  830. }
  831. else
  832. {
  833. storeData[storefor.StoreId + "_" + BrandId] += 1;
  834. }
  835. if (!toStoreData.ContainsKey(tostorefor.StoreId + "_" + BrandId))
  836. {
  837. toStoreData.Add(tostorefor.StoreId + "_" + BrandId, 1);
  838. }
  839. else
  840. {
  841. toStoreData[tostorefor.StoreId + "_" + BrandId] += 1;
  842. }
  843. SuccessCount += 1;
  844. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  845. }
  846. else
  847. {
  848. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "已在仓库中");
  849. }
  850. }
  851. else
  852. {
  853. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的退回仓库编号不正确");
  854. }
  855. }
  856. else
  857. {
  858. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "填写的原仓库编号不正确");
  859. }
  860. db.SaveChanges();
  861. }
  862. else
  863. {
  864. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
  865. }
  866. }
  867. DoCount += Size;
  868. foreach (string key in storeData.Keys)
  869. {
  870. string[] keylist = key.Split('_');
  871. int StoreId = int.Parse(keylist[0]);
  872. int BrandId = int.Parse(keylist[1]);
  873. int OpStoreNum = storeData[key];
  874. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  875. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  876. {
  877. CreateDate = DateTime.Now,
  878. CreateMan = Operator,
  879. StoreId = StoreId, //仓库
  880. TransType = 1, //交易类型
  881. BrandId = BrandId, //产品类型
  882. OpStoreNum = OpStoreNum, //操作库存数
  883. OpSymbol = "-", //操作符
  884. BeforeTotalNum = store.TotalNum, //操作前总库存数
  885. AfterTotalNum = store.TotalNum, //操作后总库存数
  886. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  887. AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
  888. BeforeOutNum = store.OutNum, //操作前出库数
  889. AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
  890. }).Entity;
  891. db.SaveChanges();
  892. string ChangeNo = "JJBH";
  893. int StoreStockChangeId = balance.Id;
  894. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  895. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  896. {
  897. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  898. }
  899. ChangeNo += StoreStockChangeIdString;
  900. balance.TransRecordNo = ChangeNo; //交易流水编号
  901. store.LaveNum -= OpStoreNum;
  902. db.SaveChanges();
  903. }
  904. foreach (string key in toStoreData.Keys)
  905. {
  906. string[] keylist = key.Split('_');
  907. int StoreId = int.Parse(keylist[0]);
  908. int BrandId = int.Parse(keylist[1]);
  909. int OpStoreNum = toStoreData[key];
  910. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
  911. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  912. {
  913. CreateDate = DateTime.Now,
  914. CreateMan = Operator,
  915. StoreId = StoreId, //仓库
  916. TransType = 0, //交易类型
  917. BrandId = BrandId, //产品类型
  918. OpStoreNum = OpStoreNum, //操作库存数
  919. OpSymbol = "+", //操作符
  920. BeforeTotalNum = store.TotalNum, //操作前总库存数
  921. AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
  922. BeforeLaveNum = store.LaveNum, //操作前剩余库存数
  923. AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
  924. BeforeOutNum = store.OutNum, //操作前出库数
  925. AfterOutNum = store.OutNum, //操作后出库数
  926. }).Entity;
  927. db.SaveChanges();
  928. string ChangeNo = "SC";
  929. int StoreStockChangeId = balance.Id;
  930. string StoreStockChangeIdString = StoreStockChangeId.ToString();
  931. for (int i = 0; i < 18 - StoreStockChangeId.ToString().Length; i++)
  932. {
  933. StoreStockChangeIdString = "0" + StoreStockChangeIdString;
  934. }
  935. ChangeNo += StoreStockChangeIdString;
  936. balance.TransRecordNo = ChangeNo; //交易流水编号
  937. store.LaveNum += OpStoreNum;
  938. db.SaveChanges();
  939. }
  940. db.SaveChanges();
  941. foreach (string sub in opData)
  942. {
  943. string[] datalist = sub.Split(":");
  944. PublicFunction.SycnMachineCount(int.Parse(datalist[0]), int.Parse(datalist[1]));
  945. }
  946. tran.Commit();
  947. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  948. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  949. }
  950. catch (Exception ex)
  951. {
  952. DoCount = list.Rows.Count;
  953. tran.Rollback();
  954. ErrorMsg msg = new ErrorMsg()
  955. {
  956. Time = DateTime.Now,
  957. ErrorContent = ex.ToString(),
  958. };
  959. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  960. }
  961. }
  962. }
  963. else if (_Kind == "UserCashRecord")
  964. {
  965. using (var tran = db.Database.BeginTransaction())
  966. {
  967. try
  968. {
  969. int Size = 100;
  970. if (list.Rows.Count - DoCount < 100)
  971. {
  972. Size = list.Rows.Count - DoCount;
  973. }
  974. for (int i = DoCount; i < DoCount + Size; i++)
  975. {
  976. DataRow dr = list.Rows[i];
  977. string CashOrderNo = dr[2].ToString(); // 提现单号
  978. decimal Amount = decimal.Parse(function.CheckNum(dr[3].ToString())); // 发佣金额
  979. int Status = int.Parse(function.CheckInt(dr[4].ToString())); // 提现状态
  980. string Remark = dr[5].ToString(); // 备注
  981. CashOrderNo = CashOrderNo.Replace(" ", "");
  982. UserCashRecord edit = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == CashOrderNo && m.ActualTradeAmount == Amount && m.Status == 0);
  983. if (edit != null)
  984. {
  985. if (edit.TradeType == 3)
  986. {
  987. edit.Status = Status;
  988. edit.Remark = Remark;
  989. edit.UpdateMan = Operator;
  990. if (Status == 1)
  991. {
  992. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  993. if (account != null)
  994. {
  995. decimal TradeAmount = edit.TradeAmount;
  996. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  997. {
  998. CreateDate = DateTime.Now,
  999. UserId = edit.UserId, //创客
  1000. ChangeType = 3, //变动类型
  1001. ProductType = 99, //产品类型
  1002. ChangeAmount = TradeAmount, //变更金额
  1003. BeforeBalanceAmount = account.LeaderBalanceAmount, //变更前余额
  1004. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1005. });
  1006. db.SaveChanges();
  1007. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1008. }
  1009. }
  1010. else if (Status == 2)
  1011. {
  1012. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1013. if (account != null)
  1014. {
  1015. decimal TradeAmount = edit.TradeAmount;
  1016. account.LeaderBalanceAmount += TradeAmount;
  1017. db.LeaderAccountRecord.Add(new LeaderAccountRecord()
  1018. {
  1019. CreateDate = DateTime.Now,
  1020. UserId = edit.UserId, //创客
  1021. ChangeType = 6, //变动类型
  1022. ProductType = 99, //产品类型
  1023. ChangeAmount = TradeAmount, //变更金额
  1024. BeforeBalanceAmount = account.LeaderBalanceAmount - TradeAmount, //变更前余额
  1025. AfterBalanceAmount = account.LeaderBalanceAmount, //变更后余额
  1026. });
  1027. db.SaveChanges();
  1028. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1029. }
  1030. }
  1031. db.SaveChanges();
  1032. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1033. SuccessCount += 1;
  1034. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1035. }
  1036. else if (edit.TradeType == 4)
  1037. {
  1038. edit.Status = Status;
  1039. edit.Remark = Remark;
  1040. edit.UpdateMan = Operator;
  1041. if (Status == 1)
  1042. {
  1043. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1044. if (account != null)
  1045. {
  1046. decimal TradeAmount = edit.TradeAmount;
  1047. decimal ActualTradeAmount = edit.ActualTradeAmount;
  1048. account.HelpProfitBalanceAmount -= TradeAmount;
  1049. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1050. {
  1051. CreateDate = DateTime.Now,
  1052. UserId = edit.UserId, //创客
  1053. ChangeType = 3, //变动类型
  1054. ProductType = 99, //产品类型
  1055. ChangeAmount = ActualTradeAmount, //变更金额
  1056. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1057. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1058. });
  1059. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1060. {
  1061. CreateDate = DateTime.Now,
  1062. UpdateDate = DateTime.Now,
  1063. UserId = edit.UserId, //创客
  1064. ChangeType = 4, //变动类型
  1065. ProductType = 99, //产品类型
  1066. ChangeAmount = edit.TradeFee, //变更金额
  1067. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1068. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1069. });
  1070. db.HelpProfitAccountRecord.Add(new HelpProfitAccountRecord()
  1071. {
  1072. CreateDate = DateTime.Now,
  1073. UpdateDate = DateTime.Now,
  1074. UserId = edit.UserId, //创客
  1075. ChangeType = 5, //变动类型
  1076. ProductType = 99, //产品类型
  1077. ChangeAmount = edit.ManageFee, //变更金额
  1078. BeforeBalanceAmount = account.HelpProfitBalanceAmount + TradeAmount, //变更前余额
  1079. AfterBalanceAmount = account.HelpProfitBalanceAmount, //变更后余额
  1080. });
  1081. db.SaveChanges();
  1082. RedisDbconn.Instance.Set("HelpProfitAccount:" + edit.UserId, account);
  1083. }
  1084. }
  1085. else if (Status == 2)
  1086. {
  1087. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1088. if (account != null)
  1089. {
  1090. decimal TradeAmount = edit.TradeAmount;
  1091. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1092. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1093. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1094. account.BalanceAmount += TradeAmount;
  1095. account.FreezeAmount -= TradeAmount;
  1096. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1097. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1098. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1099. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1100. {
  1101. CreateDate = DateTime.Now,
  1102. UpdateDate = DateTime.Now,
  1103. UserId = edit.UserId, //创客
  1104. ChangeType = 6, //变动类型
  1105. ProductType = 99, //产品类型
  1106. ChangeAmount = TradeAmount, //变更金额
  1107. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1108. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1109. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1110. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1111. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1112. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1113. }).Entity;
  1114. db.SaveChanges();
  1115. RedisDbconn.Instance.Set("UserAccount:" + edit.UserId, account);
  1116. PublicFunction.SplitUserAccountRecord(add);
  1117. }
  1118. }
  1119. db.SaveChanges();
  1120. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1121. SuccessCount += 1;
  1122. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1123. }
  1124. else
  1125. {
  1126. edit.Status = Status;
  1127. edit.Remark = Remark;
  1128. edit.UpdateMan = Operator;
  1129. if (Status == 1)
  1130. {
  1131. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1132. if (account != null)
  1133. {
  1134. account.QueryCount = 1;
  1135. decimal TradeAmount = edit.TradeAmount;
  1136. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1137. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1138. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1139. account.WithdrawAmount += edit.TradeAmount;
  1140. account.FreezeAmount -= edit.TradeAmount;
  1141. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1142. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1143. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1144. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1145. {
  1146. CreateDate = DateTime.Now,
  1147. UpdateDate = DateTime.Now,
  1148. UserId = edit.UserId, //创客
  1149. ChangeType = 3, //变动类型
  1150. ProductType = 99, //产品类型
  1151. ChangeAmount = edit.ActualTradeAmount, //变更金额
  1152. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1153. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1154. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1155. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1156. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1157. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1158. }).Entity;
  1159. UserAccountRecord add1 = db.UserAccountRecord.Add(new UserAccountRecord()
  1160. {
  1161. CreateDate = DateTime.Now,
  1162. UpdateDate = DateTime.Now,
  1163. UserId = edit.UserId, //创客
  1164. ChangeType = 4, //变动类型
  1165. ProductType = 99, //产品类型
  1166. ChangeAmount = edit.TradeFee, //变更金额
  1167. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1168. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1169. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1170. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1171. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1172. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1173. }).Entity;
  1174. UserAccountRecord add2 = db.UserAccountRecord.Add(new UserAccountRecord()
  1175. {
  1176. CreateDate = DateTime.Now,
  1177. UpdateDate = DateTime.Now,
  1178. UserId = edit.UserId, //创客
  1179. ChangeType = 5, //变动类型
  1180. ProductType = 99, //产品类型
  1181. ChangeAmount = edit.ManageFee, //变更金额
  1182. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1183. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1184. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1185. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1186. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1187. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1188. }).Entity;
  1189. db.SaveChanges();
  1190. PublicFunction.SplitUserAccountRecord(add);
  1191. PublicFunction.SplitUserAccountRecord(add1);
  1192. PublicFunction.SplitUserAccountRecord(add2);
  1193. }
  1194. }
  1195. else if (Status == 2)
  1196. {
  1197. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  1198. if (account != null)
  1199. {
  1200. decimal TradeAmount = edit.TradeAmount;
  1201. if (account.FreezeAmount < TradeAmount)
  1202. {
  1203. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "的创客冻结金额异常");
  1204. }
  1205. else
  1206. {
  1207. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  1208. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  1209. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  1210. account.BalanceAmount += TradeAmount;
  1211. account.FreezeAmount -= TradeAmount;
  1212. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  1213. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  1214. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  1215. UserAccountRecord add = db.UserAccountRecord.Add(new UserAccountRecord()
  1216. {
  1217. CreateDate = DateTime.Now,
  1218. UpdateDate = DateTime.Now,
  1219. UserId = edit.UserId, //创客
  1220. ChangeType = 6, //变动类型
  1221. ProductType = 99, //产品类型
  1222. ChangeAmount = TradeAmount, //变更金额
  1223. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  1224. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  1225. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  1226. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  1227. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  1228. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  1229. }).Entity;
  1230. db.SaveChanges();
  1231. PublicFunction.SplitUserAccountRecord(add);
  1232. }
  1233. }
  1234. }
  1235. db.SaveChanges();
  1236. RedisDbconn.Instance.Clear("UserCashRecord:" + edit.Id);
  1237. SuccessCount += 1;
  1238. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1239. }
  1240. }
  1241. else
  1242. {
  1243. RedisDbconn.Instance.AddList("ErrList" + checkKey, "提现记录单号为" + CashOrderNo + "不存在或者金额不符");
  1244. }
  1245. }
  1246. DoCount += Size;
  1247. db.SaveChanges();
  1248. tran.Commit();
  1249. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1250. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1251. }
  1252. catch (Exception ex)
  1253. {
  1254. DoCount = list.Rows.Count;
  1255. tran.Rollback();
  1256. ErrorMsg msg = new ErrorMsg()
  1257. {
  1258. Time = DateTime.Now,
  1259. ErrorContent = ex.ToString(),
  1260. };
  1261. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1262. }
  1263. }
  1264. }
  1265. else if (_Kind == "ChangeFee")
  1266. {
  1267. using (var tran = db.Database.BeginTransaction())
  1268. {
  1269. try
  1270. {
  1271. int Size = 100;
  1272. if (list.Rows.Count - DoCount < 100)
  1273. {
  1274. Size = list.Rows.Count - DoCount;
  1275. }
  1276. string posIds = "";
  1277. string userIds = "";
  1278. string warning = "";
  1279. for (int i = DoCount; i < DoCount + Size; i++)
  1280. {
  1281. DataRow dr = list.Rows[i];
  1282. string PosNo = dr[0].ToString(); // 机具Sn
  1283. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1284. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1285. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1286. warning += PosNo + ",";
  1287. }
  1288. if (!string.IsNullOrEmpty(warning))
  1289. {
  1290. RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + warning + "该机具应直接设置,请全部重新导入");
  1291. }
  1292. else
  1293. {
  1294. for (int i = DoCount; i < DoCount + Size; i++)
  1295. {
  1296. DataRow dr = list.Rows[i];
  1297. string PosNo = dr[0].ToString(); // 机具Sn
  1298. decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
  1299. int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
  1300. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
  1301. warning += PosNo + ",";
  1302. if (Kind == 1)
  1303. {
  1304. pos.UpFeeFlag = 1;
  1305. pos.UpFeeDate = DateTime.Now;
  1306. pos.UpFeeMan = Operator;
  1307. db.SaveChanges();
  1308. }
  1309. if (Kind == 2)
  1310. {
  1311. pos.DownFeeFlag = 1;
  1312. pos.DownFeeDate = DateTime.Now;
  1313. pos.DownFeeMan = Operator;
  1314. db.SaveChanges();
  1315. }
  1316. if (!userIds.Contains(pos.BuyUserId.ToString()))
  1317. {
  1318. userIds += pos.BuyUserId + ",";
  1319. }
  1320. posIds += pos.Id + ",";
  1321. }
  1322. string[] lists = userIds.Split(new char[] { ',' });
  1323. int times = lists.ToList().Count;
  1324. for (int i = 0; i < times; i++)
  1325. {
  1326. var UserId = lists[i];
  1327. var posInfo = db.PosMachinesTwo.Where(m => posIds.Contains(m.Id.ToString()) && m.BuyUserId == Convert.ToInt32(UserId));
  1328. string snhtml = "<div style='margin-bottom: .48rem;'>";
  1329. foreach (var items in posInfo)
  1330. {
  1331. var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId) ?? new PosMerchantInfo();
  1332. var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId) ?? new KqProducts();
  1333. snhtml += "<div style='margin-bottom: .48rem;'><div class='f12'>商户姓名:" + mer.MerRealName + "</div>";
  1334. snhtml += "<div class='f12'>机具品牌:" + brand.Name + "</div>";
  1335. snhtml += "<div class='f12'>SN:" + items.PosSn + "</div>";
  1336. snhtml += "<div class='f12'>当前费率:0.6%</div>";
  1337. snhtml += "<div class='f12'>费率调整时间:" + items.DownFeeDate + "</div>";
  1338. }
  1339. snhtml += "</div>";
  1340. RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
  1341. {
  1342. UserId = Convert.ToInt32(UserId), //创客
  1343. Title = "商户费率变更通知", //标题
  1344. Content = "<div class='f12' style='margin-bottom: .72rem'>您的商户刷卡交易费率已变更成功!</div>" + snhtml, //内容
  1345. Summary = "您的商户刷卡交易费率已变更成功!",
  1346. CreateDate = DateTime.Now,
  1347. }));
  1348. }
  1349. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1350. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1351. }
  1352. }
  1353. catch (Exception ex)
  1354. {
  1355. DoCount = list.Rows.Count;
  1356. tran.Rollback();
  1357. ErrorMsg msg = new ErrorMsg()
  1358. {
  1359. Time = DateTime.Now,
  1360. ErrorContent = ex.ToString(),
  1361. };
  1362. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
  1363. }
  1364. }
  1365. }
  1366. else if (_Kind == "ImportJKCreateData")
  1367. {
  1368. var brandInfo = db.KqProducts.ToList();
  1369. using (var tran = db.Database.BeginTransaction())
  1370. {
  1371. try
  1372. {
  1373. int Size = 100;
  1374. if (list.Rows.Count - DoCount < 100)
  1375. {
  1376. Size = list.Rows.Count - DoCount;
  1377. }
  1378. for (int i = DoCount; i < DoCount + Size; i++)
  1379. {
  1380. DataRow dr = list.Rows[i];
  1381. string PosSn = dr[0].ToString(); // 提现单号
  1382. string CreateDate = dr[1].ToString(); // 备注
  1383. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo();
  1384. if (pos.Id > 0)
  1385. {
  1386. var brandName = brandInfo.FirstOrDefault(m => m.Id == pos.BrandId);
  1387. if (brandName.Name.StartsWith("金控"))
  1388. {
  1389. pos.CreateDate = DateTime.Parse(CreateDate);
  1390. SuccessCount += 1;
  1391. RedisDbconn.Instance.Set("CheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
  1392. }
  1393. else
  1394. {
  1395. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号品牌不符合修改规则");
  1396. }
  1397. }
  1398. else
  1399. {
  1400. RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + PosSn + ',' + "该机具号不存在");
  1401. }
  1402. }
  1403. DoCount += Size;
  1404. db.SaveChanges();
  1405. tran.Commit();
  1406. if (DoCount >= list.Rows.Count)
  1407. {
  1408. RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
  1409. RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
  1410. }
  1411. }
  1412. catch (Exception ex)
  1413. {
  1414. DoCount = list.Rows.Count;
  1415. tran.Rollback();
  1416. ErrorMsg msg = new ErrorMsg()
  1417. {
  1418. Time = DateTime.Now,
  1419. ErrorContent = ex.ToString(),
  1420. };
  1421. function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常(金控导入修改入库时间)");
  1422. }
  1423. }
  1424. }
  1425. db.Dispose();
  1426. }
  1427. }
  1428. else
  1429. {
  1430. Thread.Sleep(5000);
  1431. }
  1432. }
  1433. }
  1434. }
  1435. }