ExcelHelper.cs 113 KB

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