StoreHouseController.cs 100 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024
  1. /*
  2. * 仓库
  3. */
  4. using System;
  5. using System.Web;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Data;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. using Microsoft.AspNetCore.Mvc;
  13. using Microsoft.AspNetCore.Http;
  14. using Microsoft.Extensions.Logging;
  15. using Microsoft.Extensions.Options;
  16. using MySystem.Models;
  17. using Library;
  18. using LitJson;
  19. using MySystemLib;
  20. namespace MySystem.Areas.Admin.Controllers
  21. {
  22. [Area("Admin")]
  23. [Route("Admin/[controller]/[action]")]
  24. public class StoreHouseController : BaseController
  25. {
  26. public StoreHouseController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  27. {
  28. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  29. }
  30. #region 仓库列表
  31. /// <summary>
  32. /// 根据条件查询仓库列表
  33. /// </summary>
  34. /// <returns></returns>
  35. public IActionResult Index(StoreHouse data, string right)
  36. {
  37. ViewBag.RightInfo = RightInfo;
  38. ViewBag.right = right;
  39. return View();
  40. }
  41. #endregion
  42. #region 根据条件查询仓库列表
  43. /// <summary>
  44. /// 仓库列表
  45. /// </summary>
  46. /// <returns></returns>
  47. public JsonResult IndexData(StoreHouse data, string UserIdMakerCode, string UserIdRealName, string ManageUserIdRealName, string ManageUserIdMobile, string ManageUserIdMakerCode, string StoreStatusSelect, string CreateDateData, string MakerCode, string YZOpCode, string OpStatusSelect, string StoreKindSelect, int ShowFlag = 0, int page = 1, int limit = 30)
  48. {
  49. Dictionary<string, string> Fields = new Dictionary<string, string>();
  50. Fields.Add("StoreNo", "1"); //仓库编号
  51. Fields.Add("StoreName", "1"); //仓库名称
  52. Fields.Add("ManagerEmail", "1"); //管理者邮箱
  53. if (ShowFlag == 0)
  54. {
  55. Dictionary<string, object> objs = new Dictionary<string, object>();
  56. return Json(objs);
  57. }
  58. string condition = " and Status>-1";
  59. //仓库归属人创客编号
  60. if (!string.IsNullOrEmpty(UserIdMakerCode))
  61. {
  62. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
  63. }
  64. //仓库归属人真实姓名
  65. if (!string.IsNullOrEmpty(UserIdRealName))
  66. {
  67. DataTable dt = OtherMySqlConn.dtable("SELECT Id FROM Users WHERE RealName like '%" + UserIdRealName + "%'");
  68. var Count = dt.Rows.Count;
  69. // int times = 0;
  70. string UserIds = "";
  71. foreach (DataRow item in dt.Rows)
  72. {
  73. // times++;
  74. // if (times == Count)
  75. // {
  76. // UserIds += item["Id"].ToString();
  77. // }
  78. // else
  79. // {
  80. // UserIds += item["Id"].ToString() + ",";
  81. // }
  82. UserIds += item["Id"].ToString() + ",";
  83. }
  84. // condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
  85. condition += " and UserId in (" + UserIds.TrimEnd(',') + ")";
  86. }
  87. //仓库管理员真实姓名
  88. if (!string.IsNullOrEmpty(ManageUserIdRealName))
  89. {
  90. DataTable dts = OtherMySqlConn.dtable("SELECT Id FROM Users WHERE RealName like '%" + ManageUserIdRealName + "%'");
  91. var Counts = dts.Rows.Count;
  92. // int time = 1;
  93. string UserIdss = "";
  94. foreach (DataRow items in dts.Rows)
  95. {
  96. // time++;
  97. // if (time == Counts)
  98. // {
  99. // UserIdss += items["Id"].ToString();
  100. // }
  101. // else
  102. // {
  103. // UserIdss += items["Id"].ToString() + ",";
  104. // }
  105. UserIdss += items["Id"].ToString() + ",";
  106. }
  107. // condition += " and ManageUserId in (select ManageUserId from UserForRealName where RealName='" + ManageUserIdRealName + "')";
  108. condition += " and UserId in (" + UserIdss.TrimEnd(',') + ")";
  109. }
  110. //仓库管理员手机号
  111. if (!string.IsNullOrEmpty(ManageUserIdMobile))
  112. {
  113. condition += " and ManageUserId in (select ManageUserId from UserForMobile where Mobile='" + ManageUserIdMobile + "')";
  114. }
  115. //仓库管理员创客编号
  116. if (!string.IsNullOrEmpty(ManageUserIdMakerCode))
  117. {
  118. condition += " and ManageUserId in (select ManageUserId from UserForMakerCode where MakerCode='" + ManageUserIdMakerCode + "')";
  119. }
  120. //仓库状态
  121. if (!string.IsNullOrEmpty(StoreStatusSelect))
  122. {
  123. condition += " and Status=" + StoreStatusSelect;
  124. }
  125. if (!string.IsNullOrEmpty(CreateDateData))
  126. {
  127. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  128. string start = datelist[0];
  129. string end = datelist[1];
  130. condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  131. }
  132. //下线创客编号
  133. if (!string.IsNullOrEmpty(MakerCode))
  134. {
  135. var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  136. if (userForMakerCode.UserId > 0)
  137. {
  138. var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId);
  139. var users = db.Users.Where(m => m.ParentNav.Contains("," + user.Id.ToString() + ",")).ToList();
  140. string userIds = "";
  141. foreach (var item in users)
  142. {
  143. userIds += item.Id + ",";
  144. }
  145. userIds += user.Id;//下线创客Id包含自己
  146. // string ParentNav = function.CheckNull(user.ParentNav).Trim(',').Replace(",,", ",");
  147. // string[] ParentNavList = ParentNav.Split(',');
  148. // string OpId = ParentNavList[^1];//上线创客
  149. string Id = "";
  150. // var storeHouse = db.StoreHouse.Where(m => m.OpId == int.Parse(OpId) && m.Sort == 0 && m.UserId != 0 && m.UserId != 1 && m.Status == 1).ToList();//上线关联的分仓
  151. DataTable dt = OtherMySqlConn.dtable("SELECT Id FROM StoreHouse WHERE UserId IN(" + userIds.TrimEnd(',') + ") AND OPId not IN (" + userIds.TrimEnd(',') + ") AND `Status`=1 AND Sort=0 AND UserId>1");
  152. foreach (DataRow item in dt.Rows)
  153. {
  154. Id += item["Id"].ToString() + ",";
  155. }
  156. // var storeHouses = db.StoreHouse.Where(m => m.OpId == 0 && userIds.TrimEnd(',').Contains(m.UserId.ToString()) && m.UserId != 0 && m.UserId != 1 && m.Status > 0).ToList();//下线未关联分仓?
  157. // foreach (var items in storeHouse)
  158. // {
  159. // Id += items.Id + ",";
  160. // }
  161. // foreach (var item1 in storeHouses)
  162. // {
  163. // Id += item1.Id + ",";
  164. // }
  165. condition += " and Id in (" + Id.TrimEnd(',') + ")";
  166. }
  167. }
  168. //运营中心编号
  169. if (!string.IsNullOrEmpty(YZOpCode))
  170. {
  171. var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == YZOpCode) ?? new OpModels.SysAdmin();
  172. if (sysAdmin.Id > 0)
  173. {
  174. condition += " and OpId=" + sysAdmin.UserId;
  175. }
  176. }
  177. //是否关联
  178. if (!string.IsNullOrEmpty(OpStatusSelect))
  179. {
  180. if (int.Parse(OpStatusSelect) > 0)
  181. {
  182. condition += " and OpId>0";
  183. }
  184. else
  185. {
  186. condition += " and OpId=0";
  187. }
  188. }
  189. //是否运营仓
  190. if (!string.IsNullOrEmpty(StoreKindSelect))
  191. {
  192. if (int.Parse(StoreKindSelect) > 0)
  193. {
  194. condition += " and Sort>0 and StoreKind=2";
  195. }
  196. else
  197. {
  198. condition += " and Sort=0 and StoreKind!=2";
  199. }
  200. }
  201. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouse", Fields, "Id desc", "0", page, limit, condition);
  202. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  203. foreach (Dictionary<string, object> dic in diclist)
  204. {
  205. //仓库归属人
  206. int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
  207. Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  208. dic["UserIdMakerCode"] = userid_Users.MakerCode;
  209. dic["UserIdRealName"] = userid_Users.RealName;
  210. //产品类型
  211. dic["BrandId"] = RelationClass.GetKqProductBrandList(dic["BrandId"].ToString());
  212. //仓库管理员
  213. int ManageUserId = int.Parse(function.CheckInt(dic["ManageUserId"].ToString()));
  214. Users manageuserid_Users = db.Users.FirstOrDefault(m => m.Id == ManageUserId) ?? new Users();
  215. dic["ManageUserIdRealName"] = manageuserid_Users.RealName;
  216. dic["ManageUserIdMobile"] = manageuserid_Users.Mobile;
  217. dic["ManageUserIdMakerCode"] = manageuserid_Users.MakerCode;
  218. //仓库类型
  219. int StoreType = int.Parse(dic["StoreType"].ToString());
  220. if (StoreType == 0) dic["StoreType"] = "实体仓";
  221. if (StoreType == 1) dic["StoreType"] = "虚拟仓";
  222. //仓库状态
  223. int Status = int.Parse(dic["Status"].ToString());
  224. if (Status == 1) dic["Status"] = "启用";
  225. if (Status == 0) dic["Status"] = "禁用";
  226. //仓库归属类型
  227. int StoreKind = int.Parse(dic["StoreKind"].ToString());
  228. if (StoreKind == 0) dic["StoreKind"] = "分仓";
  229. if (StoreKind == 1) dic["StoreKind"] = "总仓";
  230. if (StoreKind == 2) dic["StoreKind"] = "运营仓";
  231. //小分仓
  232. int Id = int.Parse(function.CheckInt(dic["Id"].ToString()));
  233. int PreCount = db.PreSendStockDetail.Count(m => m.FromStoreId == Id && m.ApplyFlag == 0 && m.Status >= 0 && m.Status <= 1);
  234. dic["PreNum"] = PreCount.ToString();
  235. //分仓额度
  236. var amount = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount();
  237. var ValidAmount = amount.ValidAmount;
  238. var FixedAmount = amount.FixedAmount;
  239. var TempAmount = amount.TempAmount + amount.TempAmountForBalance;
  240. var check = db.StoreHouseAmountPromiss.Any(m => m.ToUserId == UserId);
  241. decimal PromissAmount = 0;
  242. var ThisMonthPreAmount = amount.ThisMonthPreAmount;
  243. var ValidPreAmount = amount.ValidPreAmount;
  244. if (check)
  245. {
  246. PromissAmount = db.StoreHouseAmountPromiss.Where(m => m.Status == 1 && m.ToUserId == UserId).Sum(m => m.PromissAmount);
  247. }
  248. dic["ValidAmount"] = ValidAmount.ToString();//可用额度
  249. dic["FixedAmount"] = FixedAmount.ToString();//固定额度
  250. dic["TempAmount"] = TempAmount.ToString();//临时额度
  251. dic["PromissAmount"] = PromissAmount.ToString();//担保金额
  252. dic["ThisMonthPreAmount"] = ThisMonthPreAmount.ToString();//本月小分仓额度
  253. dic["ValidPreAmount"] = ValidPreAmount.ToString();//可用小分仓额度
  254. //是否关联
  255. int OpId = int.Parse(dic["OpId"].ToString());
  256. var opInfo = opdb.SysAdmin.FirstOrDefault(m => m.QueryCount > 0 && m.UserId == OpId) ?? new OpModels.SysAdmin();
  257. if (OpId == 0) dic["OpIdStatus"] = "否";
  258. if (OpId > 0) dic["OpIdStatus"] = opInfo.OpCode;
  259. }
  260. return Json(obj);
  261. }
  262. #endregion
  263. #region 增加仓库
  264. /// <summary>
  265. /// 增加或修改仓库信息
  266. /// </summary>
  267. /// <returns></returns>
  268. public IActionResult Add(string right)
  269. {
  270. ViewBag.RightInfo = RightInfo;
  271. ViewBag.right = right;
  272. return View();
  273. }
  274. #endregion
  275. #region 增加仓库
  276. /// <summary>
  277. /// 增加或修改仓库信息
  278. /// </summary>
  279. /// <returns></returns>
  280. [HttpPost]
  281. public string Add(StoreHouse data, string ManageMakerCode, string MakerCode)
  282. {
  283. string BrandIdString = data.BrandId;
  284. if (!string.IsNullOrEmpty(BrandIdString))
  285. {
  286. string[] BrandIdList = BrandIdString.Split(',');
  287. foreach (string BrandId in BrandIdList)
  288. {
  289. Dictionary<string, object> Fields = new Dictionary<string, object>();
  290. Fields.Add("CreateMan", SysUserName); //创建人
  291. Fields.Add("StoreName", data.StoreName); //仓库名称
  292. Fields.Add("FilePath", data.FilePath); //附件
  293. Fields.Add("Deposit", data.Deposit); //押金
  294. UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
  295. if (user == null)
  296. {
  297. return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
  298. }
  299. Fields.Add("UserId", user.UserId); //仓库归属人
  300. Fields.Add("Areas", data.Areas); //所属地区
  301. Fields.Add("Address", data.Address); //仓库地址
  302. UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
  303. if (manage == null)
  304. {
  305. return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
  306. }
  307. Fields.Add("ManageUserId", manage.UserId); //仓库管理员
  308. Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
  309. Fields.Add("ManageMobile", data.ManageMobile);
  310. Fields.Add("Remark", data.Remark); //备注
  311. Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
  312. Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
  313. int bid = int.Parse(BrandId);
  314. KqProducts pro = db.KqProducts.FirstOrDefault(m => m.Id == bid) ?? new KqProducts();
  315. Fields.Add("BrandId", BrandId);
  316. Fields.Add("ProductName", pro.Name);
  317. Fields.Add("StoreStatus", 1);
  318. Fields.Add("Status", 1);
  319. var name = db.StoreHouse.FirstOrDefault(m => m.UserId == user.UserId && m.BrandId == BrandId && m.StoreName == data.StoreName);
  320. if (name != null)
  321. {
  322. return "您的仓库名重复,请重新填写";
  323. }
  324. int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
  325. //添加分仓创建时间
  326. var users = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
  327. if (users.Id > 0)
  328. {
  329. if (string.IsNullOrEmpty(users.CreateStoreDate.ToString()))
  330. {
  331. users.CreateStoreDate = DateTime.Now;
  332. db.SaveChanges();
  333. }
  334. }
  335. StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
  336. if (edit != null)
  337. {
  338. string No = Id.ToString();
  339. for (int i = 0; i < 7 - Id.ToString().Length; i++)
  340. {
  341. No = "0" + No;
  342. }
  343. No = "S" + No;
  344. edit.StoreNo = No;
  345. db.StoreForCode.Add(new StoreForCode()
  346. {
  347. Code = No,
  348. StoreId = Id,
  349. });
  350. RedisDbconn.Instance.Set("StoreForCode:" + No, Id);
  351. }
  352. StoreForName storeForName = db.StoreForName.FirstOrDefault(m => m.Name == data.StoreName);
  353. if (storeForName == null)
  354. {
  355. db.StoreForName.Add(new StoreForName()
  356. {
  357. Name = data.StoreName,
  358. StoreId = Id,
  359. });
  360. }
  361. else
  362. {
  363. storeForName.StoreId = Id;
  364. }
  365. UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == user.UserId);
  366. if (account == null)
  367. {
  368. account = db.UserAccount.Add(new UserAccount()
  369. {
  370. Id = user.UserId,
  371. UserId = user.UserId,
  372. }).Entity;
  373. db.SaveChanges();
  374. }
  375. if (account.FixedAmount == 0 && account.ValidAmount == 0)
  376. {
  377. account.FixedAmount = 20000;
  378. account.ValidAmount = 20000;
  379. }
  380. RedisDbconn.Instance.Set("StoreForName:" + data.StoreName, Id);
  381. AddSysLog(data.Id.ToString(), "StoreHouse", "add");
  382. db.SaveChanges();
  383. SetRedis(Id, user.UserId);
  384. }
  385. }
  386. return "success";
  387. }
  388. #endregion
  389. #region 修改仓库
  390. /// <summary>
  391. /// 增加或修改仓库信息
  392. /// </summary>
  393. /// <returns></returns>
  394. public IActionResult Edit(string right, int Id = 0)
  395. {
  396. ViewBag.RightInfo = RightInfo;
  397. ViewBag.right = right;
  398. StoreHouse editData = db.StoreHouse.FirstOrDefault(m => m.Id == Id) ?? new StoreHouse();
  399. ViewBag.data = editData;
  400. Users manage = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
  401. ViewBag.ManageMakerCode = manage.MakerCode;
  402. ViewBag.ManageRealName = manage.RealName;
  403. Users user = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
  404. ViewBag.MakerCode = user.MakerCode;
  405. return View();
  406. }
  407. #endregion
  408. #region 修改仓库
  409. /// <summary>
  410. /// 增加或修改仓库信息
  411. /// </summary>
  412. /// <returns></returns>
  413. [HttpPost]
  414. public string Edit(StoreHouse data, string ManageMakerCode, string MakerCode)
  415. {
  416. Dictionary<string, object> Fields = new Dictionary<string, object>();
  417. Fields.Add("CreateMan", SysUserName); //创建人
  418. Fields.Add("StoreName", data.StoreName); //仓库名称
  419. Fields.Add("FilePath", data.FilePath); //附件
  420. Fields.Add("Deposit", data.Deposit); //押金
  421. UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
  422. if (user == null)
  423. {
  424. return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
  425. }
  426. Fields.Add("UserId", user.UserId); //仓库归属人
  427. Fields.Add("Areas", data.Areas); //所属地区
  428. Fields.Add("Address", data.Address); //仓库地址
  429. UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
  430. if (manage == null)
  431. {
  432. return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
  433. }
  434. var store = db.StoreHouse.Where(m => m.Sort == 0 && m.Status == 1 && m.UserId == user.UserId).ToList();
  435. var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == user.UserId) ?? new UserAccount();
  436. if (userAccount.Id > 0)
  437. {
  438. userAccount.StoreDeposit = data.Deposit;
  439. db.SaveChanges();
  440. }
  441. RedisDbconn.Instance.AddList("ResetStoreReserveQueue", user.UserId.ToString());
  442. decimal olddeposit = 0;//旧押金
  443. decimal newdeposit = 0;//新押金
  444. var sto = db.StoreHouse.FirstOrDefault(m => m.Id == data.Id);
  445. newdeposit = data.Deposit;
  446. olddeposit = sto.Deposit;
  447. if (sto.OpId > 0)
  448. {
  449. var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
  450. if (newdeposit > olddeposit)
  451. {
  452. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  453. {
  454. CreateDate = DateTime.Now,
  455. UserId = sto.OpId,
  456. SeoDescription = "分仓押金变更",
  457. OperateType = 1,
  458. UseAmount = newdeposit - olddeposit,
  459. BeforeAmount = amount.ValidAmount,
  460. AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
  461. }).Entity;
  462. opdb.SaveChanges();
  463. }
  464. if (newdeposit < olddeposit)
  465. {
  466. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  467. {
  468. CreateDate = DateTime.Now,
  469. UserId = sto.OpId,
  470. SeoDescription = "分仓押金变更",
  471. OperateType = 2,
  472. UseAmount = olddeposit - newdeposit,
  473. BeforeAmount = amount.ValidAmount,
  474. AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
  475. }).Entity;
  476. opdb.SaveChanges();
  477. }
  478. amount.ValidAmount -= sto.Deposit;
  479. amount.ValidAmount += data.Deposit;
  480. opdb.SaveChanges();
  481. }
  482. foreach (var item in store)
  483. {
  484. var storeInfo = store.FirstOrDefault(m => m.Id == item.Id);
  485. storeInfo.Deposit = data.Deposit;
  486. db.SaveChanges();
  487. }
  488. Fields.Add("ManageUserId", manage.UserId); //仓库管理员
  489. Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
  490. Fields.Add("ManageMobile", data.ManageMobile);
  491. Fields.Add("Remark", data.Remark); //备注
  492. Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
  493. Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
  494. Fields.Add("Status", data.Status);
  495. Fields.Add("StoreStatus", data.Status);
  496. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, data.Id);
  497. AddSysLog(data.Id.ToString(), "StoreHouse", "update");
  498. db.SaveChanges();
  499. SetRedis(data.Id, user.UserId);
  500. return "success";
  501. }
  502. #endregion
  503. #region 一键添加仓库
  504. /// <summary>
  505. /// 一件添加仓库
  506. /// </summary>
  507. /// <returns></returns>
  508. public IActionResult Edits(string right, int Id = 0)
  509. {
  510. ViewBag.RightInfo = RightInfo;
  511. ViewBag.right = right;
  512. StoreHouse editData = db.StoreHouse.FirstOrDefault(m => m.Id == Id) ?? new StoreHouse();
  513. ViewBag.data = editData;
  514. Users manage = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
  515. ViewBag.ManageMakerCode = manage.MakerCode;
  516. ViewBag.ManageRealName = manage.RealName;
  517. Users user = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
  518. ViewBag.MakerCode = user.MakerCode;
  519. return View();
  520. }
  521. #endregion
  522. #region 一键添加仓库
  523. /// <summary>
  524. /// 一键添加仓库
  525. /// </summary>
  526. /// <returns></returns>
  527. [HttpPost]
  528. public string Edits(StoreHouse data, string ManageMakerCode, string MakerCode)
  529. {
  530. Dictionary<string, object> Fields = new Dictionary<string, object>();
  531. StoreHouse storeHouse = db.StoreHouse.FirstOrDefault(m => m.Id == data.Id);
  532. var brand = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.BrandId == data.BrandId);
  533. if (brand != null)
  534. {
  535. return "您已有该品牌类型的仓库,请重新选择";
  536. }
  537. var name = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.StoreName == data.StoreName);
  538. if (name != null)
  539. {
  540. return "您的仓库名重复,请重新填写";
  541. }
  542. Fields.Add("StoreName", data.StoreName); //仓库名称
  543. UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
  544. if (user == null)
  545. {
  546. return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
  547. }
  548. Fields.Add("UserId", user.UserId); //仓库归属人
  549. Fields.Add("Areas", data.Areas); //所属地区
  550. Fields.Add("Address", data.Address); //仓库地址
  551. UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
  552. if (manage == null)
  553. {
  554. return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
  555. }
  556. Fields.Add("CreateMan", SysUserName); //创建人
  557. Fields.Add("ManageUserId", manage.UserId); //仓库管理员
  558. Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
  559. Fields.Add("ManageMobile", data.ManageMobile);
  560. Fields.Add("Remark", data.Remark); //备注
  561. Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
  562. Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
  563. int bid = Convert.ToInt32(data.BrandId);
  564. KqProducts pro = db.KqProducts.FirstOrDefault(m => m.Id == bid) ?? new KqProducts();
  565. Fields.Add("BrandId", data.BrandId);
  566. Fields.Add("ProductName", pro.Name);
  567. Fields.Add("StoreStatus", 1);
  568. Fields.Add("Status", 1);
  569. int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
  570. //添加分仓创建时间
  571. var users = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
  572. if (users.Id > 0)
  573. {
  574. if (string.IsNullOrEmpty(users.CreateStoreDate.ToString()))
  575. {
  576. users.CreateStoreDate = DateTime.Now;
  577. db.SaveChanges();
  578. }
  579. }
  580. StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
  581. if (edit != null)
  582. {
  583. string No = Id.ToString();
  584. for (int i = 0; i < 7 - Id.ToString().Length; i++)
  585. {
  586. No = "0" + No;
  587. }
  588. No = "S" + No;
  589. edit.StoreNo = No;
  590. db.StoreForCode.Add(new StoreForCode()
  591. {
  592. Code = No,
  593. StoreId = Id,
  594. });
  595. RedisDbconn.Instance.Set("StoreForCode:" + No, Id);
  596. }
  597. StoreForName storeForName = db.StoreForName.FirstOrDefault(m => m.Name == data.StoreName);
  598. if (storeForName == null)
  599. {
  600. db.StoreForName.Add(new StoreForName()
  601. {
  602. Name = data.StoreName,
  603. StoreId = Id,
  604. });
  605. }
  606. else
  607. {
  608. storeForName.StoreId = Id;
  609. }
  610. RedisDbconn.Instance.Set("StoreForName:" + data.StoreName, Id);
  611. AddSysLog(data.Id.ToString(), "StoreHouse", "add");
  612. db.SaveChanges();
  613. SetRedis(Id, user.UserId);
  614. return "success";
  615. }
  616. #endregion
  617. #region 删除仓库信息
  618. /// <summary>
  619. /// 删除仓库信息
  620. /// </summary>
  621. /// <returns></returns>
  622. public string Delete(string Id)
  623. {
  624. string[] idlist = Id.Split(new char[] { ',' });
  625. AddSysLog(Id, "StoreHouse", "del");
  626. foreach (string subid in idlist)
  627. {
  628. int id = int.Parse(subid);
  629. Dictionary<string, object> Fields = new Dictionary<string, object>();
  630. Fields.Add("Status", -1);
  631. StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == id);
  632. if (edit != null)
  633. {
  634. StoreForCode code = db.StoreForCode.FirstOrDefault(m => m.Code == edit.StoreNo);
  635. if (code != null)
  636. {
  637. db.StoreForCode.Remove(code);
  638. }
  639. StoreForName name = db.StoreForName.FirstOrDefault(m => m.Name == edit.StoreName);
  640. if (name != null)
  641. {
  642. db.StoreForName.Remove(name);
  643. }
  644. }
  645. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, id);
  646. }
  647. db.SaveChanges();
  648. return "success";
  649. }
  650. #endregion
  651. #region 开启
  652. /// <summary>
  653. /// 开启
  654. /// </summary>
  655. /// <returns></returns>
  656. public string Open(string Id)
  657. {
  658. string[] idlist = Id.Split(new char[] { ',' });
  659. AddSysLog(Id, "StoreHouse", "open");
  660. foreach (string subid in idlist)
  661. {
  662. int id = int.Parse(subid);
  663. Dictionary<string, object> Fields = new Dictionary<string, object>();
  664. Fields.Add("Status", 1);
  665. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, id);
  666. }
  667. db.SaveChanges();
  668. return "success";
  669. }
  670. #endregion
  671. #region 关闭
  672. /// <summary>
  673. /// 关闭
  674. /// </summary>
  675. /// <returns></returns>
  676. public string Close(string Id)
  677. {
  678. string[] idlist = Id.Split(new char[] { ',' });
  679. AddSysLog(Id, "StoreHouse", "close");
  680. foreach (string subid in idlist)
  681. {
  682. int id = int.Parse(subid);
  683. Dictionary<string, object> Fields = new Dictionary<string, object>();
  684. Fields.Add("Status", 0);
  685. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, id);
  686. }
  687. db.SaveChanges();
  688. return "success";
  689. }
  690. #endregion
  691. #region 排序
  692. /// <summary>
  693. /// 排序
  694. /// </summary>
  695. /// <param name="Id"></param>
  696. public string Sort(int Id, int Sort)
  697. {
  698. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("StoreHouse", Sort, Id);
  699. AddSysLog(Id.ToString(), "StoreHouse", "sort");
  700. return "success";
  701. }
  702. #endregion
  703. #region 导入数据
  704. public IActionResult Import(string right, string ExcelKind)
  705. {
  706. ViewBag.RightInfo = RightInfo;
  707. ViewBag.right = right;
  708. ViewBag.ExcelKind = ExcelKind;
  709. return View();
  710. }
  711. /// <summary>
  712. /// 导入数据
  713. /// </summary>
  714. /// <param name="ExcelData"></param>
  715. [HttpPost]
  716. public string ImportPost(string ExcelPath, int Kind = 0)
  717. {
  718. // RedisDbconn.Instance.AddList("ExcelImport", ExcelPath + "#cut#" + Kind);
  719. string key = function.MD5_16(Guid.NewGuid().ToString());
  720. RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
  721. return "success|" + key;
  722. }
  723. // [HttpPost]
  724. // public Dictionary<string, object> ImportPostV2(string ExcelPath, int Kind = 0)
  725. // {
  726. // Dictionary<string, object> Obj = new Dictionary<string, object>();
  727. // string key = function.MD5_16(Guid.NewGuid().ToString());
  728. // RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#" + Kind + "#cut#" + key);
  729. // Obj.Add("status", "success");
  730. // Obj.Add("key", key);
  731. // Obj.Add("errlist", RedisDbconn.Instance.GetList<string>("ErrList" + key));
  732. // return Obj;
  733. // }
  734. public string CheckImport(string key)
  735. {
  736. string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
  737. if (!string.IsNullOrEmpty(result))
  738. {
  739. string[] datalist = result.Split('|');
  740. if (datalist[0] == "success")
  741. {
  742. return result;
  743. }
  744. return datalist[0];
  745. }
  746. return "0";
  747. }
  748. public Dictionary<string, object> CheckImportV2(string key)
  749. {
  750. Dictionary<string, object> Obj = new Dictionary<string, object>();
  751. string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
  752. if (!string.IsNullOrEmpty(result))
  753. {
  754. string[] datalist = result.Split('|');
  755. if (datalist[0] == "success")
  756. {
  757. List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
  758. if (errList.Count > 0)
  759. {
  760. Obj.Add("status", 2);
  761. Obj.Add("errList", errList);
  762. }
  763. else
  764. {
  765. Obj.Add("status", 1);
  766. Obj.Add("data", result);
  767. }
  768. return Obj;
  769. }
  770. Obj.Add("status", 0);
  771. Obj.Add("data", datalist[0]);
  772. return Obj;
  773. }
  774. Obj.Add("status", -1);
  775. Obj.Add("data", "执行中...");
  776. return Obj;
  777. }
  778. #endregion
  779. #region 机具驳回仓库
  780. /// <summary>
  781. /// 机具驳回仓库
  782. /// </summary>
  783. /// <param name="ExcelData"></param>
  784. public string RejectStore(string ExcelData, int ExcelKind = 0)
  785. {
  786. ExcelData = HttpUtility.UrlDecode(ExcelData);
  787. JsonData list = JsonMapper.ToObject(ExcelData);
  788. if (ExcelKind == 1)
  789. {
  790. string error = "";
  791. decimal amount = 0;
  792. List<string> PosSnList = new List<string>();
  793. for (int i = 1; i < list.Count; i++)
  794. {
  795. JsonData dr = list[i];
  796. string itemJson = dr.ToJson();
  797. string PosSn = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
  798. string BrandId = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
  799. string MakerCode = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
  800. string StoreNo = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
  801. string No = itemJson.Contains("\"E\"") ? dr["E"].ToString() : "";
  802. string Remark = itemJson.Contains("\"F\"") ? dr["F"].ToString() : "";
  803. UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
  804. StoreForCode storeForCode = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo);
  805. var store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
  806. MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
  807. var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0 && m.BuyUserId == userForMakerCode.UserId) ?? new PosMachinesTwo();
  808. var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0) ?? new PosMachinesTwo();
  809. if (pos.Id == 0)
  810. {
  811. error += "以下操作失败" + PosSn + ',' + "未找到创客" + MakerCode + "的该台机具" + '\n';
  812. }
  813. if (store.Id == 0)
  814. {
  815. error += "以下操作失败" + PosSn + ',' + StoreNo + ',' + "未找到该仓库" + '\n';
  816. }
  817. if (posInfo.Id == 0)
  818. {
  819. error += "以下操作失败" + PosSn + ',' + "未找到该品牌的未使用机具" + '\n';
  820. }
  821. if (PosSnList.Contains(PosSn))
  822. {
  823. error += "以下操作失败" + PosSn + ',' + "该机具号重复" + '\n';
  824. }
  825. else
  826. {
  827. PosSnList.Add(PosSn);
  828. var fromStore = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
  829. var toStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
  830. var user = db.Users.FirstOrDefault(m => m.Id == toStore.UserId) ?? new Users();
  831. var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toStore.UserId) ?? new UserAccount();
  832. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == Convert.ToInt32(BrandId)) ?? new KqProducts();
  833. var fuserMachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == userForMakerCode.UserId + "_" + brandInfo.Id);
  834. if (brandInfo.Name.Contains("电签"))
  835. {
  836. amount = 200;
  837. }
  838. if (brandInfo.Name.Contains("大POS"))
  839. {
  840. amount = 300;
  841. }
  842. userAccount.ValidAmount -= amount;
  843. db.SaveChanges();
  844. if (posInfo != null)
  845. {
  846. if (fromStore.Id != toStore.Id)
  847. {
  848. var changeNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  849. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  850. {
  851. CreateDate = DateTime.Now,
  852. StoreId = fromStore.Id, //出货仓库
  853. ToStoreId = toStore.Id, //发货仓库
  854. BrandId = Convert.ToInt32(BrandId), //产品类型
  855. ProductName = RelationClass.GetKqProductBrandInfo(Convert.ToInt32(BrandId)), //产品名称
  856. ChangeNo = changeNo, //变更记录单号
  857. BizBatchNo = No, //业务批次号
  858. TransType = 4, //交易类型
  859. SnNo = PosSn, //SN编号
  860. StockOpDirect = 1, //库存操作方向
  861. SnStatus = 1, //SN状态
  862. DeviceVendor = posInfo.DeviceName, //设备厂商
  863. DeviceModel = posInfo.DeviceKind, //设备型号
  864. DeviceType = posInfo.DeviceType, //设备类型
  865. SourceStoreId = posInfo.SourceStoreId, //源仓库编号
  866. BrandType = posInfo.DeviceType, //品牌类型
  867. }).Entity;
  868. db.SaveChanges();
  869. db.StoreChangeHistory.Add(new StoreChangeHistory()
  870. {
  871. CreateDate = DateTime.Now,
  872. UserId = user.Id, //创客
  873. FromUserId = user.Id,//来源创客
  874. ToUserId = toStore.UserId,//接收创客
  875. StoreId = fromStore.Id, //出货仓库
  876. ToStoreId = toStore.Id, //发货仓库
  877. BrandId = Convert.ToInt32(BrandId), //产品类型
  878. ChangeRecordNo = changeNo, //变更记录单号
  879. SeoTitle = "机具驳回仓库",
  880. BizBatchNo = No, //业务批次号
  881. TransType = 4,//驳回
  882. SnNo = PosSn, //SN编号
  883. });
  884. db.SaveChanges();
  885. StoreBalance fbalance = db.StoreBalance.Add(new StoreBalance()
  886. {
  887. CreateDate = DateTime.Now,
  888. StoreId = fromStore.Id, //仓库
  889. BrandId = Convert.ToInt32(BrandId), //产品类型
  890. OpStoreNum = 1, //操作库存数
  891. OpSymbol = "-", //操作符
  892. BeforeTotalNum = fromStore.TotalNum, //操作前总库存数
  893. AfterTotalNum = fromStore.TotalNum - 1, //操作后总库存数
  894. BeforeLaveNum = fromStore.LaveNum, //操作前剩余库存数
  895. AfterLaveNum = fromStore.LaveNum - 1, //操作后剩余库存数
  896. BeforeOutNum = fromStore.OutNum, //操作前出库数
  897. AfterOutNum = fromStore.OutNum - 1, //操作后出库数
  898. }).Entity;
  899. db.SaveChanges();
  900. StoreBalance tbalance = db.StoreBalance.Add(new StoreBalance()
  901. {
  902. CreateDate = DateTime.Now,
  903. StoreId = toStore.Id, //仓库
  904. BrandId = Convert.ToInt32(BrandId), //产品类型
  905. OpStoreNum = 1, //操作库存数
  906. OpSymbol = "+", //操作符
  907. BeforeTotalNum = toStore.TotalNum, //操作前总库存数
  908. AfterTotalNum = toStore.TotalNum + 1, //操作后总库存数
  909. BeforeLaveNum = toStore.LaveNum, //操作前剩余库存数
  910. AfterLaveNum = toStore.LaveNum + 1, //操作后剩余库存数
  911. BeforeOutNum = toStore.OutNum, //操作前出库数
  912. AfterOutNum = toStore.OutNum, //操作后出库数
  913. }).Entity;
  914. db.SaveChanges();
  915. posInfo.StoreId = toStore.Id;
  916. posInfo.BuyUserId = 0;
  917. posInfo.UserId = 0;
  918. posInfo.RecycEndDate = null;
  919. posInfo.PosSnType = 0;
  920. posInfo.BindMerchantId = 0;
  921. posInfo.ActivityList = null;
  922. posInfo.ScanQrTrade = 0;
  923. posInfo.DebitCardTrade = 0;
  924. posInfo.PrizeParams = null;
  925. posInfo.IsVip = 0;
  926. posInfo.CreditTrade = 0;
  927. posInfo.UserNav = null;
  928. posInfo.TransferTime = null;
  929. posInfo.IsPurchase = 0;
  930. posInfo.BindingTime = null;
  931. posInfo.BindingState = 0;
  932. posInfo.ActivationTime = null;
  933. posInfo.ActivationState = 0;
  934. posInfo.LeaderUserId = 0;
  935. posInfo.PreUserId = 0;
  936. posInfo.IsFirst = 0;
  937. fuserMachineData.TotalMachineCount -= 1;
  938. fuserMachineData.UnBindCount -= 1;
  939. toStore.TotalNum += 1;
  940. toStore.LaveNum += 1;
  941. fromStore.TotalNum -= 1;
  942. fromStore.LaveNum -= 1;
  943. db.SaveChanges();
  944. }
  945. else
  946. {
  947. var changeNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  948. StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
  949. {
  950. CreateDate = DateTime.Now,
  951. StoreId = fromStore.Id, //出货仓库
  952. ToStoreId = toStore.Id, //发货仓库
  953. BrandId = Convert.ToInt32(BrandId), //产品类型
  954. ProductName = RelationClass.GetKqProductBrandInfo(Convert.ToInt32(BrandId)), //产品名称
  955. ChangeNo = changeNo, //变更记录单号
  956. BizBatchNo = No, //业务批次号
  957. TransType = 4, //交易类型
  958. SnNo = PosSn, //SN编号
  959. StockOpDirect = 1, //库存操作方向
  960. SnStatus = 1, //SN状态
  961. DeviceVendor = posInfo.DeviceName, //设备厂商
  962. DeviceModel = posInfo.DeviceKind, //设备型号
  963. DeviceType = posInfo.DeviceType, //设备类型
  964. SourceStoreId = posInfo.SourceStoreId, //源仓库编号
  965. BrandType = posInfo.DeviceType, //品牌类型
  966. }).Entity;
  967. db.SaveChanges();
  968. db.StoreChangeHistory.Add(new StoreChangeHistory()
  969. {
  970. CreateDate = DateTime.Now,
  971. UserId = user.Id, //创客
  972. FromUserId = user.Id,//来源创客
  973. ToUserId = toStore.UserId,//接收创客
  974. StoreId = fromStore.Id, //出货仓库
  975. ToStoreId = toStore.Id, //发货仓库
  976. BrandId = Convert.ToInt32(BrandId), //产品类型
  977. ChangeRecordNo = changeNo, //变更记录单号
  978. SeoTitle = "机具驳回仓库",
  979. BizBatchNo = No, //业务批次号
  980. SnNo = PosSn, //SN编号
  981. TransType = 4,//驳回
  982. });
  983. db.SaveChanges();
  984. StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
  985. {
  986. CreateDate = DateTime.Now,
  987. StoreId = fromStore.Id, //仓库
  988. BrandId = Convert.ToInt32(BrandId), //产品类型
  989. OpStoreNum = 1, //操作库存数
  990. OpSymbol = "-", //操作符
  991. BeforeTotalNum = fromStore.TotalNum, //操作前总库存数
  992. AfterTotalNum = fromStore.TotalNum - 1, //操作后总库存数
  993. BeforeLaveNum = fromStore.LaveNum, //操作前剩余库存数
  994. AfterLaveNum = fromStore.LaveNum - 1, //操作后剩余库存数
  995. BeforeOutNum = fromStore.OutNum, //操作前出库数
  996. AfterOutNum = fromStore.OutNum - 1, //操作后出库数
  997. }).Entity;
  998. db.SaveChanges();
  999. posInfo.StoreId = toStore.Id;
  1000. posInfo.BuyUserId = 0;
  1001. posInfo.UserId = 0;
  1002. posInfo.RecycEndDate = null;
  1003. posInfo.PosSnType = 0;
  1004. posInfo.BindMerchantId = 0;
  1005. posInfo.ActivityList = null;
  1006. posInfo.ScanQrTrade = 0;
  1007. posInfo.DebitCardTrade = 0;
  1008. posInfo.PrizeParams = null;
  1009. posInfo.IsVip = 0;
  1010. posInfo.CreditTrade = 0;
  1011. posInfo.UserNav = null;
  1012. posInfo.TransferTime = null;
  1013. posInfo.IsPurchase = 0;
  1014. posInfo.BindingTime = null;
  1015. posInfo.BindingState = 0;
  1016. posInfo.ActivationTime = null;
  1017. posInfo.ActivationState = 0;
  1018. posInfo.LeaderUserId = 0;
  1019. posInfo.PreUserId = 0;
  1020. posInfo.IsFirst = 0;
  1021. fuserMachineData.TotalMachineCount -= 1;
  1022. fuserMachineData.UnBindCount -= 1;
  1023. toStore.LaveNum += 1;
  1024. toStore.TotalNum += 1;
  1025. db.SaveChanges();
  1026. }
  1027. db.SaveChanges();
  1028. }
  1029. }
  1030. }
  1031. if (!string.IsNullOrEmpty(error))
  1032. {
  1033. return "Warning|" + error;
  1034. }
  1035. }
  1036. AddSysLog("0", "MachinesRejectStore", "Import");
  1037. return "success";
  1038. }
  1039. #endregion
  1040. #region 导出Excel
  1041. /// <summary>
  1042. /// 导出Excel
  1043. /// </summary>
  1044. /// <returns></returns>
  1045. public JsonResult ExportExcel(StoreHouse data, string UserIdMakerCode, string UserIdRealName, string ManageUserIdRealName, string ManageUserIdMobile, string ManageUserIdMakerCode, string StoreStatusSelect)
  1046. {
  1047. Dictionary<string, string> Fields = new Dictionary<string, string>();
  1048. Fields.Add("StoreNo", "1"); //仓库编号
  1049. Fields.Add("CreateDate", "3"); //时间
  1050. Fields.Add("StoreName", "1"); //仓库名称
  1051. Fields.Add("ManagerEmail", "1"); //管理者邮箱
  1052. string condition = " and Status>-1";
  1053. //仓库归属人创客编号
  1054. if (!string.IsNullOrEmpty(UserIdMakerCode))
  1055. {
  1056. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
  1057. }
  1058. //仓库归属人真实姓名
  1059. if (!string.IsNullOrEmpty(UserIdRealName))
  1060. {
  1061. condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
  1062. }
  1063. //仓库管理员真实姓名
  1064. if (!string.IsNullOrEmpty(ManageUserIdRealName))
  1065. {
  1066. condition += " and ManageUserId in (select ManageUserId from UserForRealName where RealName='" + ManageUserIdRealName + "')";
  1067. }
  1068. //仓库管理员手机号
  1069. if (!string.IsNullOrEmpty(ManageUserIdMobile))
  1070. {
  1071. condition += " and ManageUserId in (select ManageUserId from UserForMobile where Mobile='" + ManageUserIdMobile + "')";
  1072. }
  1073. //仓库管理员创客编号
  1074. if (!string.IsNullOrEmpty(ManageUserIdMakerCode))
  1075. {
  1076. condition += " and ManageUserId in (select ManageUserId from UserForMakerCode where MakerCode='" + ManageUserIdMakerCode + "')";
  1077. }
  1078. //仓库状态
  1079. if (!string.IsNullOrEmpty(StoreStatusSelect))
  1080. {
  1081. condition += " and StoreStatus=" + StoreStatusSelect;
  1082. }
  1083. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouse", Fields, "Id desc", "0", 1, 20000, condition, "StoreNo,StoreName,UserId,BrandId,Address,ManageUserId,ManagerEmail,StoreType,TotalNum,LaveNum,OutNum,LimitTopUserId,StoreStatus,StoreKind", false);
  1084. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  1085. foreach (Dictionary<string, object> dic in diclist)
  1086. {
  1087. //仓库归属人
  1088. int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
  1089. Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  1090. dic["UserIdMakerCode"] = userid_Users.MakerCode;
  1091. dic["UserIdRealName"] = userid_Users.RealName;
  1092. //产品类型
  1093. dic["BrandId"] = RelationClass.GetKqProductBrandList(dic["BrandId"].ToString());
  1094. //仓库管理员
  1095. int ManageUserId = int.Parse(function.CheckInt(dic["ManageUserId"].ToString()));
  1096. Users manageuserid_Users = db.Users.FirstOrDefault(m => m.Id == ManageUserId) ?? new Users();
  1097. dic["ManageUserIdRealName"] = manageuserid_Users.RealName;
  1098. dic["ManageUserIdMobile"] = manageuserid_Users.Mobile;
  1099. dic["ManageUserIdMakerCode"] = manageuserid_Users.MakerCode;
  1100. //仓库类型
  1101. int StoreType = int.Parse(dic["StoreType"].ToString());
  1102. if (StoreType == 0) dic["StoreType"] = "实体仓";
  1103. if (StoreType == 1) dic["StoreType"] = "虚拟仓";
  1104. //仓库状态
  1105. int StoreStatus = int.Parse(dic["StoreStatus"].ToString());
  1106. if (StoreStatus == 1) dic["StoreStatus"] = "启用";
  1107. if (StoreStatus == 0) dic["StoreStatus"] = "禁用";
  1108. //仓库归属类型
  1109. int StoreKind = int.Parse(dic["StoreKind"].ToString());
  1110. if (StoreKind == 0) dic["StoreKind"] = "分仓";
  1111. if (StoreKind == 1) dic["StoreKind"] = "总仓";
  1112. }
  1113. Dictionary<string, object> result = new Dictionary<string, object>();
  1114. result.Add("Status", "1");
  1115. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  1116. result.Add("Obj", diclist);
  1117. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  1118. ReturnFields.Add("StoreNo", "仓库编号");
  1119. ReturnFields.Add("StoreName", "仓库名称");
  1120. ReturnFields.Add("UserIdMakerCode", "仓库归属人创客编号");
  1121. ReturnFields.Add("UserIdRealName", "仓库归属人真实姓名");
  1122. ReturnFields.Add("BrandId", "产品类型");
  1123. ReturnFields.Add("Address", "仓库地址");
  1124. ReturnFields.Add("ManageUserIdRealName", "仓库管理员真实姓名");
  1125. ReturnFields.Add("ManageUserIdMobile", "仓库管理员手机号");
  1126. ReturnFields.Add("ManageUserIdMakerCode", "仓库管理员创客编号");
  1127. ReturnFields.Add("ManagerEmail", "管理者邮箱");
  1128. ReturnFields.Add("StoreType", "仓库类型");
  1129. ReturnFields.Add("TotalNum", "总库存数");
  1130. ReturnFields.Add("LaveNum", "剩余库存数");
  1131. ReturnFields.Add("OutNum", "出库数");
  1132. ReturnFields.Add("LimitTopUserId", "限制创客特殊仓库");
  1133. ReturnFields.Add("StoreStatus", "仓库状态");
  1134. ReturnFields.Add("StoreKind", "仓库归属类型");
  1135. result.Add("Fields", ReturnFields);
  1136. AddSysLog("0", "StoreHouse", "ExportExcel");
  1137. return Json(result);
  1138. }
  1139. #endregion
  1140. #region 仓库列表
  1141. /// <summary>
  1142. /// 根据条件查询仓库列表
  1143. /// </summary>
  1144. /// <returns></returns>
  1145. public IActionResult Stat(StoreHouse data, string right)
  1146. {
  1147. ViewBag.RightInfo = RightInfo;
  1148. ViewBag.right = right;
  1149. return View();
  1150. }
  1151. #endregion
  1152. #region 根据条件查询仓库列表
  1153. /// <summary>
  1154. /// 仓库列表
  1155. /// </summary>
  1156. /// <returns></returns>
  1157. public JsonResult StatDo(string CreateDateData, int page = 1, int limit = 30)
  1158. {
  1159. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["StatSqlConnStr"].ToString();
  1160. string sCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1161. string eCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1162. if (!string.IsNullOrEmpty(CreateDateData))
  1163. {
  1164. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  1165. sCreateDate = datelist[0] + " 00:00:00";
  1166. eCreateDate = datelist[1] + " 23:59:59";
  1167. }
  1168. else
  1169. {
  1170. Dictionary<string, object> nodata = new Dictionary<string, object>();
  1171. nodata.Add("code", 0);
  1172. nodata.Add("msg", "");
  1173. nodata.Add("count", 0);
  1174. nodata.Add("data", new List<Dictionary<string, object>>());
  1175. return Json(nodata);
  1176. }
  1177. string minId = "0";
  1178. string maxId = "0";
  1179. string minPosId = "0";
  1180. string maxPosId = "0";
  1181. DataTable startDt = OtherMySqlConn.dtable("select min(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
  1182. if (startDt.Rows.Count > 0)
  1183. {
  1184. minId = function.CheckInt(startDt.Rows[0][0].ToString());
  1185. if (minId == "0")
  1186. {
  1187. startDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
  1188. if (startDt.Rows.Count > 0)
  1189. {
  1190. minId = function.CheckInt(startDt.Rows[0][0].ToString());
  1191. }
  1192. }
  1193. }
  1194. DataTable endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
  1195. if (endDt.Rows.Count > 0)
  1196. {
  1197. maxId = function.CheckInt(endDt.Rows[0][0].ToString());
  1198. if (minId == "0")
  1199. {
  1200. endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
  1201. if (endDt.Rows.Count > 0)
  1202. {
  1203. maxId = function.CheckInt(endDt.Rows[0][0].ToString());
  1204. }
  1205. }
  1206. }
  1207. DataTable startPosDt = OtherMySqlConn.dtable("select min(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
  1208. if (startPosDt.Rows.Count > 0)
  1209. {
  1210. minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
  1211. if (minPosId == "0")
  1212. {
  1213. startPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
  1214. if (startPosDt.Rows.Count > 0)
  1215. {
  1216. minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
  1217. }
  1218. }
  1219. }
  1220. DataTable endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
  1221. if (endPosDt.Rows.Count > 0)
  1222. {
  1223. maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
  1224. if (maxPosId == "0")
  1225. {
  1226. endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
  1227. if (endPosDt.Rows.Count > 0)
  1228. {
  1229. maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
  1230. }
  1231. }
  1232. }
  1233. DataTable list = OtherMySqlConn.dtable("select * from (select s.StoreName,s.StoreNo,u.RealName,u.Mobile,k.Name,s.LaveNum,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType=1) as c1,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType in (10,11,2)) as c2,(select count(Id) from PosMachinesTwo where Id>=" + minPosId + " and Id<=" + maxPosId + " and ActivationState=1 and ActivationTime>='" + sCreateDate + "' and ActivationTime<='" + eCreateDate + "' and StoreId=s.Id) as c3 from StoreHouse s left join Users u on s.BrandId>0 and s.UserId=u.Id left join KqProducts k on s.BrandId=k.Id) tb where c1>0 or c2>0 or c3>0");
  1234. int recordcount = list.Rows.Count;
  1235. List<Dictionary<string, object>> diclist = new List<Dictionary<string, object>>();
  1236. foreach (DataRow sub in list.Rows)
  1237. {
  1238. Dictionary<string, object> row = new Dictionary<string, object>();
  1239. row.Add("StoreName", sub["StoreName"].ToString());
  1240. row.Add("StoreNo", sub["StoreNo"].ToString());
  1241. row.Add("Mobile", sub["Mobile"].ToString());
  1242. row.Add("RealName", sub["RealName"].ToString());
  1243. row.Add("Name", sub["Name"].ToString());
  1244. row.Add("LaveNum", sub["LaveNum"].ToString());
  1245. row.Add("c1", sub["c1"].ToString());
  1246. row.Add("c2", sub["c2"].ToString());
  1247. row.Add("c3", sub["c3"].ToString());
  1248. diclist.Add(row);
  1249. }
  1250. Dictionary<string, object> obj = new Dictionary<string, object>();
  1251. obj.Add("code", 0);
  1252. obj.Add("msg", "");
  1253. obj.Add("count", recordcount);
  1254. obj.Add("data", diclist);
  1255. return Json(obj);
  1256. }
  1257. #endregion
  1258. #region 导出Excel
  1259. /// <summary>
  1260. /// 导出Excel
  1261. /// </summary>
  1262. /// <returns></returns>
  1263. public JsonResult StatExportExcel(string CreateDateData)
  1264. {
  1265. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["StatSqlConnStr"].ToString();
  1266. string sCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1267. string eCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1268. if (!string.IsNullOrEmpty(CreateDateData))
  1269. {
  1270. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  1271. sCreateDate = datelist[0] + " 00:00:00";
  1272. eCreateDate = datelist[1] + " 23:59:59";
  1273. }
  1274. else
  1275. {
  1276. Dictionary<string, object> nodata = new Dictionary<string, object>();
  1277. nodata.Add("Status", "1");
  1278. nodata.Add("Info", "分仓统计数据报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  1279. nodata.Add("Obj", new List<Dictionary<string, object>>());
  1280. Dictionary<string, object> NoDataReturnFields = new Dictionary<string, object>();
  1281. NoDataReturnFields.Add("StoreName", "仓库名称");
  1282. NoDataReturnFields.Add("StoreNo", "仓库编号");
  1283. NoDataReturnFields.Add("Mobile", "仓库所属人手机号");
  1284. NoDataReturnFields.Add("RealName", "仓库所属人名称");
  1285. NoDataReturnFields.Add("MakerCode", "仓库所属人编码");
  1286. NoDataReturnFields.Add("ManageMakerCode", "仓库管理员编码");
  1287. NoDataReturnFields.Add("Name", "品牌");
  1288. NoDataReturnFields.Add("LaveNum", "当前库存");
  1289. NoDataReturnFields.Add("c1", "出库(调拨)量");
  1290. NoDataReturnFields.Add("c2", "出货(发货到创客)量");
  1291. NoDataReturnFields.Add("c3", "激活量");
  1292. nodata.Add("Fields", NoDataReturnFields);
  1293. return Json(nodata);
  1294. }
  1295. string minId = "0";
  1296. string maxId = "0";
  1297. string minPosId = "0";
  1298. string maxPosId = "0";
  1299. DataTable startDt = OtherMySqlConn.dtable("select min(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
  1300. if (startDt.Rows.Count > 0)
  1301. {
  1302. minId = function.CheckInt(startDt.Rows[0][0].ToString());
  1303. if (minId == "0")
  1304. {
  1305. startDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
  1306. if (startDt.Rows.Count > 0)
  1307. {
  1308. minId = function.CheckInt(startDt.Rows[0][0].ToString());
  1309. }
  1310. }
  1311. }
  1312. DataTable endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
  1313. if (endDt.Rows.Count > 0)
  1314. {
  1315. maxId = function.CheckInt(endDt.Rows[0][0].ToString());
  1316. if (minId == "0")
  1317. {
  1318. endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
  1319. if (endDt.Rows.Count > 0)
  1320. {
  1321. maxId = function.CheckInt(endDt.Rows[0][0].ToString());
  1322. }
  1323. }
  1324. }
  1325. DataTable startPosDt = OtherMySqlConn.dtable("select min(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
  1326. if (startPosDt.Rows.Count > 0)
  1327. {
  1328. minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
  1329. if (minPosId == "0")
  1330. {
  1331. startPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
  1332. if (startPosDt.Rows.Count > 0)
  1333. {
  1334. minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
  1335. }
  1336. }
  1337. }
  1338. DataTable endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
  1339. if (endPosDt.Rows.Count > 0)
  1340. {
  1341. maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
  1342. if (maxPosId == "0")
  1343. {
  1344. endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
  1345. if (endPosDt.Rows.Count > 0)
  1346. {
  1347. maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
  1348. }
  1349. }
  1350. }
  1351. DataTable list = OtherMySqlConn.dtable("select * from (select s.StoreName,s.StoreNo,u.RealName,u.Mobile,u.MakerCode,(select MakerCode from Users where Id=s.ManageUserId) as ManageMakerCode,k.Name,s.LaveNum,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType=1) as c1,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType in (10,11,2)) as c2,(select count(Id) from PosMachinesTwo where Id>=" + minPosId + " and Id<=" + maxPosId + " and ActivationState=1 and ActivationTime>='" + sCreateDate + "' and ActivationTime<='" + eCreateDate + "' and StoreId=s.Id) as c3 from StoreHouse s left join Users u on s.BrandId>0 and s.UserId=u.Id left join KqProducts k on s.BrandId=k.Id) tb where c1>0 or c2>0 or c3>0");
  1352. int recordcount = list.Rows.Count;
  1353. List<Dictionary<string, object>> diclist = new List<Dictionary<string, object>>();
  1354. foreach (DataRow sub in list.Rows)
  1355. {
  1356. Dictionary<string, object> row = new Dictionary<string, object>();
  1357. row.Add("StoreName", sub["StoreName"].ToString());
  1358. row.Add("StoreNo", sub["StoreNo"].ToString());
  1359. row.Add("Mobile", sub["Mobile"].ToString());
  1360. row.Add("RealName", sub["RealName"].ToString());
  1361. row.Add("MakerCode", sub["MakerCode"].ToString());
  1362. row.Add("ManageMakerCode", sub["ManageMakerCode"].ToString());
  1363. row.Add("Name", sub["Name"].ToString());
  1364. row.Add("LaveNum", sub["LaveNum"].ToString());
  1365. row.Add("c1", sub["c1"].ToString());
  1366. row.Add("c2", sub["c2"].ToString());
  1367. row.Add("c3", sub["c3"].ToString());
  1368. diclist.Add(row);
  1369. }
  1370. Dictionary<string, object> result = new Dictionary<string, object>();
  1371. result.Add("Status", "1");
  1372. result.Add("Info", "分仓统计数据报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  1373. result.Add("Obj", diclist);
  1374. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  1375. ReturnFields.Add("StoreName", "仓库名称");
  1376. ReturnFields.Add("StoreNo", "仓库编号");
  1377. ReturnFields.Add("Mobile", "仓库所属人手机号");
  1378. ReturnFields.Add("RealName", "仓库所属人名称");
  1379. ReturnFields.Add("MakerCode", "仓库所属人编码");
  1380. ReturnFields.Add("ManageMakerCode", "仓库管理员编码");
  1381. ReturnFields.Add("Name", "品牌");
  1382. ReturnFields.Add("LaveNum", "当前库存");
  1383. ReturnFields.Add("c1", "出库(调拨)量");
  1384. ReturnFields.Add("c2", "出货(发货到创客)量");
  1385. ReturnFields.Add("c3", "激活量");
  1386. result.Add("Fields", ReturnFields);
  1387. AddSysLog("0", "StoreHouse", "StatExportExcel");
  1388. return Json(result);
  1389. }
  1390. #endregion
  1391. #region 同步数据
  1392. /// <summary>
  1393. /// 同步数据
  1394. /// </summary>
  1395. /// <returns></returns>
  1396. public string SycnData(int Id = 0)
  1397. {
  1398. if (Id > 0)
  1399. {
  1400. DataTable dt = OtherMySqlConn.dtable("select Id,(select count(Id) from PosMachinesTwo where StoreId=s.Id and BuyUserId=0 and PreUserId=0 and Status>-1) as CurLaveNum from StoreHouse s where Id=" + Id);
  1401. if (dt.Rows.Count > 0)
  1402. {
  1403. int CurLaveNum = int.Parse(function.CheckInt(dt.Rows[0]["CurLaveNum"].ToString()));
  1404. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
  1405. if (store != null)
  1406. {
  1407. store.LaveNum = CurLaveNum;
  1408. db.SaveChanges();
  1409. }
  1410. }
  1411. }
  1412. else
  1413. {
  1414. DataTable dt = OtherMySqlConn.dtable("select s.Id,LaveNum,count(p.Id) as CurLaveNum from StoreHouse s left join PosMachinesTwo p on s.Id=p.StoreId and s.BrandId=p.BrandId and p.BuyUserId=0 and p.PreUserId=0 and p.Status>-1 group by s.Id HAVING LaveNum!=count(p.Id)");
  1415. foreach (DataRow dr in dt.Rows)
  1416. {
  1417. int StoreId = int.Parse(function.CheckInt(dr["Id"].ToString()));
  1418. int CurLaveNum = int.Parse(function.CheckInt(dr["CurLaveNum"].ToString()));
  1419. StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
  1420. if (store != null)
  1421. {
  1422. store.LaveNum = CurLaveNum;
  1423. db.SaveChanges();
  1424. }
  1425. }
  1426. }
  1427. AddSysLog(Id, "StoreHouse", "SycnData");
  1428. db.SaveChanges();
  1429. return "success";
  1430. }
  1431. #endregion
  1432. #region 设置缓存
  1433. private void SetRedis(int Id, int UserId)
  1434. {
  1435. if (UserId > 0)
  1436. {
  1437. }
  1438. }
  1439. #endregion
  1440. #region 关联分仓
  1441. /// <summary>
  1442. /// 关联分仓
  1443. /// </summary>
  1444. /// <returns></returns>
  1445. public IActionResult BatchSetting(string right, string StoreIds)
  1446. {
  1447. string[] idlist = StoreIds.Split(new char[] { ',' });
  1448. var totalAmount = 0;
  1449. decimal deposit = 0;
  1450. var userIds = "";
  1451. foreach (var item in idlist)
  1452. {
  1453. int StoreId = int.Parse(item);
  1454. var amount = 0;
  1455. var tamount = 0;
  1456. var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
  1457. var posCount = db.PosMachinesTwo.Count(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0 && m.OpId == 0);
  1458. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
  1459. if (brandInfo.Name.Contains("电签"))
  1460. {
  1461. amount = 100;
  1462. }
  1463. if (brandInfo.Name.Contains("大POS"))
  1464. {
  1465. amount = 150;
  1466. }
  1467. if (!userIds.Contains(storeInfo.UserId + ","))
  1468. {
  1469. userIds += storeInfo.UserId + ",";
  1470. deposit += storeInfo.Deposit;
  1471. }
  1472. tamount = amount * posCount;//扣减运营中心该品牌机具额度
  1473. totalAmount += tamount;//关联分仓打标记运营中心所需额度
  1474. }
  1475. ViewBag.RightInfo = RightInfo;
  1476. ViewBag.right = right;
  1477. ViewBag.totalAmount = "关联分仓机具需要额度:" + totalAmount + "\n" + "关联分仓获得押金:" + deposit;
  1478. return View();
  1479. }
  1480. #endregion
  1481. #region 关联分仓
  1482. /// <summary>
  1483. /// 关联分仓
  1484. /// </summary>
  1485. /// <returns></returns>
  1486. [HttpPost]
  1487. public string BatchSetting(string Id, string MakerCode, string IsOk = "1")
  1488. {
  1489. string[] idlist = Id.Split(new char[] { ',' });
  1490. Dictionary<string, object> Fields = new Dictionary<string, object>();
  1491. AddSysLog(Id, "StoreHouse", "StoreHouseBatchSetting");
  1492. var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  1493. if (userForMakerCode.UserId > 0)
  1494. {
  1495. var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId) ?? new OpModels.SysAdmin();
  1496. Fields.Add("OpId", sysAdmin.UserId);
  1497. if (sysAdmin.Id > 0)
  1498. {
  1499. var amount = 0;
  1500. var tamount = 0;
  1501. decimal deposit = 0;
  1502. var pCount = 0;
  1503. var userIds = "";
  1504. string error = "";
  1505. foreach (var items in idlist)
  1506. {
  1507. int StoreId = int.Parse(items);
  1508. var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
  1509. if (storeInfo.OpId > 0)
  1510. {
  1511. error += "以下操作失败" + storeInfo.StoreNo + ',' + "请先解除该分仓的关联" + '\n';
  1512. }
  1513. else
  1514. {
  1515. var pos = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0).ToList();
  1516. var posCount = pos.Count();
  1517. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
  1518. if (brandInfo.Name.Contains("电签"))
  1519. {
  1520. amount = 100;
  1521. }
  1522. if (brandInfo.Name.Contains("大POS"))
  1523. {
  1524. amount = 150;
  1525. }
  1526. if (!userIds.Contains(storeInfo.UserId + ","))
  1527. {
  1528. userIds += storeInfo.UserId + ",";
  1529. deposit += storeInfo.Deposit;//增加分仓押金
  1530. }
  1531. tamount += amount * posCount;//扣减运营中心该品牌机具额度
  1532. pCount += posCount;//添加总机具数
  1533. }
  1534. }
  1535. if (!string.IsNullOrEmpty(error))
  1536. {
  1537. return "Warning|" + error;
  1538. }
  1539. var userAmount = opdb.UserAccount.FirstOrDefault(m => m.Sort == sysAdmin.Id) ?? new OpModels.UserAccount();
  1540. decimal TotalAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//旧的总金额
  1541. userAmount.ValidAmount += deposit;
  1542. opdb.SaveChanges();
  1543. decimal toAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//新的总金额
  1544. if (toAmount - tamount >= 0)
  1545. {
  1546. foreach (var item in idlist)
  1547. {
  1548. int StoreId = int.Parse(item);
  1549. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, StoreId);
  1550. var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
  1551. if (storeInfo.OpId == 0)
  1552. {
  1553. var pos = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0).ToList();
  1554. var posCount = pos.Count();
  1555. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
  1556. if (brandInfo.Name.Contains("电签"))
  1557. {
  1558. amount = 100;
  1559. }
  1560. if (brandInfo.Name.Contains("大POS"))
  1561. {
  1562. amount = 150;
  1563. }
  1564. if (IsOk == "1")
  1565. {
  1566. foreach (var items in pos)
  1567. {
  1568. var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
  1569. posInfo.OpId = sysAdmin.UserId;
  1570. if (userAmount.ValidAmount - amount >= 0)
  1571. {
  1572. posInfo.OpReserveKind = 3;//标记为关联分仓额度
  1573. userAmount.ValidAmount -= amount;
  1574. opdb.SaveChanges();
  1575. }
  1576. else
  1577. {
  1578. if (userAmount.TotalAmt - amount >= 0)
  1579. {
  1580. posInfo.OpReserveKind = 1;//标记为未使用额度
  1581. userAmount.TotalAmt -= amount;
  1582. opdb.SaveChanges();
  1583. }
  1584. else
  1585. {
  1586. if (userAmount.ValidForGetAmount - amount >= 0)
  1587. {
  1588. posInfo.OpReserveKind = 2;//标记为可提现额度
  1589. userAmount.ValidForGetAmount -= amount;
  1590. opdb.SaveChanges();
  1591. }
  1592. }
  1593. }
  1594. db.SaveChanges();
  1595. }
  1596. sysAdmin.TotalMachineCount += posCount;//添加总机具数
  1597. opdb.SaveChanges();
  1598. }
  1599. storeInfo.OpId = sysAdmin.UserId;
  1600. db.SaveChanges();
  1601. var query = opdb.StoreForOperate.FirstOrDefault(m => m.OpId == sysAdmin.UserId && m.StoreId == StoreId && m.Sort == 0 && m.QueryCount == storeInfo.UserId && m.Status == 0);
  1602. if (query == null)
  1603. {
  1604. var user = db.Users.FirstOrDefault(m => m.Id == storeInfo.UserId) ?? new Users();
  1605. query = opdb.StoreForOperate.Add(new OpModels.StoreForOperate()
  1606. {
  1607. CreateDate = DateTime.Now, //创建时间
  1608. CreateMan = SysUserName + "_" + SysRealName,
  1609. QueryCount = storeInfo.UserId,//分仓所属人Id
  1610. SeoTitle = user.MakerCode,
  1611. SeoKeyword = storeInfo.StoreNo,
  1612. SeoDescription = storeInfo.StoreName,
  1613. OpId = sysAdmin.UserId,
  1614. StoreId = StoreId,
  1615. }).Entity;
  1616. opdb.SaveChanges();
  1617. }
  1618. //添加分仓创建时间
  1619. var users = db.Users.FirstOrDefault(m => m.Id == storeInfo.UserId) ?? new Users();
  1620. if (users.Id > 0)
  1621. {
  1622. DataTable dt = OtherMySqlConn.dtable("SELECT CreateDate FROM StoreHouse WHERE UserId=" + users.Id + " AND `Status`>0 ORDER BY CreateDate LIMIT 1");
  1623. if (dt.Rows.Count > 0)
  1624. {
  1625. users.CreateStoreDate = DateTime.Parse(dt.Rows[0][0].ToString());
  1626. db.SaveChanges();
  1627. }
  1628. }
  1629. }
  1630. }
  1631. if (IsOk == "1")
  1632. {
  1633. if (deposit > tamount)
  1634. {
  1635. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  1636. {
  1637. CreateDate = DateTime.Now,
  1638. UserId = sysAdmin.UserId,
  1639. SeoDescription = "关联分仓",
  1640. OperateType = 1,
  1641. UseAmount = deposit - tamount,
  1642. BeforeAmount = TotalAmount,
  1643. AfterAmount = TotalAmount + deposit- tamount,
  1644. }).Entity;
  1645. }
  1646. if (deposit < tamount)
  1647. {
  1648. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  1649. {
  1650. CreateDate = DateTime.Now,
  1651. UserId = sysAdmin.UserId,
  1652. SeoDescription = "关联分仓",
  1653. OperateType = 2,
  1654. UseAmount = tamount - deposit,
  1655. BeforeAmount = TotalAmount,
  1656. AfterAmount = TotalAmount + deposit - tamount,
  1657. }).Entity;
  1658. }
  1659. // userAmount.ValidAmount -= tamount;//扣减关联分仓机具占用额度
  1660. // userAmount.ValidAmount += deposit;//增加关联分仓押金
  1661. opdb.SaveChanges();
  1662. }
  1663. sysAdmin.StoreCount += idlist.Count();//添加关联分仓数
  1664. opdb.SaveChanges();
  1665. }
  1666. else
  1667. {
  1668. userAmount.ValidAmount -= deposit;
  1669. opdb.SaveChanges();
  1670. return "运营中心额度不足";
  1671. }
  1672. }
  1673. else
  1674. {
  1675. return "该创客未创建运营中心";
  1676. }
  1677. }
  1678. return "success";
  1679. }
  1680. //获取运营中心额度
  1681. public string GetReserve(string MakerCode)
  1682. {
  1683. UserForMakerCode userFor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  1684. OpModels.UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == userFor.UserId) ?? new OpModels.UserAccount();
  1685. decimal TotalAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount;
  1686. return TotalAmount.ToString("f2");
  1687. }
  1688. #endregion
  1689. #region 取消关联
  1690. /// <summary>
  1691. /// 取消关联
  1692. /// </summary>
  1693. /// <returns></returns>
  1694. public IActionResult BatchCancle(string right, string StoreIds)
  1695. {
  1696. string[] idlist = StoreIds.Split(new char[] { ',' });
  1697. decimal totalAmount = 0;
  1698. decimal deposit = 0;
  1699. var userIds = "";
  1700. foreach (var item in idlist)
  1701. {
  1702. int StoreId = int.Parse(item);
  1703. var amount = 0;
  1704. var tamount = 0;
  1705. var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
  1706. var posCount = db.PosMachinesTwo.Count(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0 && m.OpId == storeInfo.OpId);
  1707. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
  1708. if (brandInfo.Name.Contains("电签"))
  1709. {
  1710. amount = 100;
  1711. }
  1712. if (brandInfo.Name.Contains("大POS"))
  1713. {
  1714. amount = 150;
  1715. }
  1716. if (!userIds.Contains(storeInfo.UserId + ","))
  1717. {
  1718. userIds += storeInfo.UserId + ",";
  1719. deposit += storeInfo.Deposit;
  1720. }
  1721. tamount = amount * posCount;//增加运营中心该品牌机具额度
  1722. totalAmount += tamount;//取消关联分仓打标记运营中心所需额度
  1723. }
  1724. ViewBag.RightInfo = RightInfo;
  1725. ViewBag.right = right;
  1726. ViewBag.totalAmount = "取消关联机具获得额度:" + totalAmount + "\n" + "取消关联分仓扣除押金:" + deposit;
  1727. return View();
  1728. }
  1729. #endregion
  1730. #region 取消关联
  1731. /// <summary>
  1732. /// 取消关联
  1733. /// </summary>
  1734. /// <returns></returns>
  1735. [HttpPost]
  1736. public string BatchCancle(string Id, string MakerCode, string IsOk = "1")
  1737. {
  1738. string[] idlist = Id.Split(new char[] { ',' });
  1739. Dictionary<string, object> Fields = new Dictionary<string, object>();
  1740. AddSysLog(Id, "StoreHouse", "StoreHouseBatchCancle");
  1741. var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
  1742. if (userForMakerCode.UserId > 0)
  1743. {
  1744. var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId);
  1745. var userAmount = opdb.UserAccount.FirstOrDefault(m => m.Sort == sysAdmin.Id) ?? new OpModels.UserAccount();
  1746. decimal TotalAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;
  1747. Fields.Add("OpId", 0);
  1748. if (sysAdmin.Id > 0)
  1749. {
  1750. var amount = 0;
  1751. var tamount = 0;
  1752. decimal deposit = 0;
  1753. var pCount = 0;
  1754. var userIds = "";
  1755. string error = "";
  1756. foreach (var item in idlist)
  1757. {
  1758. int StoreId = int.Parse(item);
  1759. var store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2 && m.OpId == sysAdmin.UserId);
  1760. if (store == null)
  1761. {
  1762. error += "分仓" + store.StoreNo + "未在创客" + MakerCode + "的关联分仓中";
  1763. }
  1764. else
  1765. {
  1766. var pos = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0 && m.OpId == sysAdmin.UserId).ToList();
  1767. var posCount = pos.Count();
  1768. var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(store.BrandId));
  1769. if (brandInfo.Name.Contains("电签"))
  1770. {
  1771. amount = 100;
  1772. }
  1773. if (brandInfo.Name.Contains("大POS"))
  1774. {
  1775. amount = 150;
  1776. }
  1777. if (!userIds.Contains(store.UserId + ","))
  1778. {
  1779. userIds += store.UserId + ",";
  1780. deposit += store.Deposit;//增加分仓押金
  1781. }
  1782. foreach (var items in pos)
  1783. {
  1784. var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
  1785. if (posInfo.OpReserveKind == 3)
  1786. {
  1787. userAmount.ValidAmount += amount;//标记为关联分仓额度
  1788. opdb.SaveChanges();
  1789. }
  1790. if (posInfo.OpReserveKind == 1)
  1791. {
  1792. userAmount.TotalAmt += amount;//标记为未使用额度
  1793. opdb.SaveChanges();
  1794. }
  1795. if (posInfo.OpReserveKind == 2)
  1796. {
  1797. userAmount.ValidForGetAmount += amount;//标记为可提现额度
  1798. opdb.SaveChanges();
  1799. }
  1800. posInfo.OpReserveKind = 0;
  1801. db.SaveChanges();
  1802. }
  1803. tamount += amount * posCount;//扣减运营中心该品牌机具额度
  1804. pCount += posCount;//添加总机具数
  1805. }
  1806. }
  1807. //扣减押金
  1808. userAmount.ValidAmount -= deposit;
  1809. opdb.SaveChanges();
  1810. if (!string.IsNullOrEmpty(error))
  1811. {
  1812. return "Warning|" + error;
  1813. }
  1814. if (TotalAmount - deposit >= 0)
  1815. {
  1816. foreach (var item in idlist)
  1817. {
  1818. int StoreId = int.Parse(item);
  1819. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, StoreId);
  1820. db.SaveChanges();
  1821. var store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
  1822. var pos = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0 && m.OpId == sysAdmin.UserId).ToList();
  1823. foreach (var items in pos)
  1824. {
  1825. var posInfo = pos.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
  1826. posInfo.OpId = 0;
  1827. db.SaveChanges();
  1828. }
  1829. var query = opdb.StoreForOperate.FirstOrDefault(m => m.Status == 0 && m.OpId == sysAdmin.UserId && m.StoreId == StoreId && m.Sort == 0 && m.QueryCount == store.UserId);
  1830. if (query != null)
  1831. {
  1832. query.UpdateDate = DateTime.Now;
  1833. query.UpdateMan = SysUserName + "_" + SysRealName;
  1834. query.Status = -1;
  1835. opdb.SaveChanges();
  1836. }
  1837. }
  1838. userAmount.ValidAmount -= deposit;//扣减关联分仓押金
  1839. // userAmount.ValidAmount += tamount;//添加关联仓库机占用额度
  1840. sysAdmin.StoreCount -= idlist.Count();//减少关联分仓数
  1841. sysAdmin.TotalMachineCount -= pCount;//减少关联分仓机具数
  1842. if (deposit > tamount)
  1843. {
  1844. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  1845. {
  1846. CreateDate = DateTime.Now,
  1847. UserId = sysAdmin.UserId,
  1848. SeoDescription = "取消关联分仓",
  1849. OperateType = 2,
  1850. UseAmount = deposit - tamount,
  1851. BeforeAmount = TotalAmount,
  1852. AfterAmount = TotalAmount - deposit + tamount,
  1853. }).Entity;
  1854. }
  1855. if (deposit < tamount)
  1856. {
  1857. var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
  1858. {
  1859. CreateDate = DateTime.Now,
  1860. UserId = sysAdmin.UserId,
  1861. SeoDescription = "取消关联分仓",
  1862. OperateType = 1,
  1863. UseAmount = tamount - deposit,
  1864. BeforeAmount = TotalAmount,
  1865. AfterAmount = TotalAmount - deposit + tamount,
  1866. }).Entity;
  1867. }
  1868. opdb.SaveChanges();
  1869. }
  1870. else
  1871. {
  1872. return "运营中心额度不足";
  1873. }
  1874. }
  1875. }
  1876. else
  1877. {
  1878. return "该创客未创建运营中心";
  1879. }
  1880. return "success";
  1881. }
  1882. #endregion
  1883. }
  1884. }