ExcelHelper.cs 114 KB

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