QueryAppService.cs 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Linq.Dynamic.Core;
  7. using System.Reflection;
  8. using System.Text.RegularExpressions;
  9. using System.Threading.Tasks;
  10. using System.Web.Mvc;
  11. using System.Web.UI.WebControls;
  12. using System.Xml;
  13. using Abp.Application.Services;
  14. using Abp.Application.Services.Dto;
  15. using Abp.Auditing;
  16. using Abp.Authorization;
  17. using Abp.Domain.Repositories;
  18. using Abp.Extensions;
  19. using Abp.Linq;
  20. using Abp.Linq.Extensions;
  21. using Abp.Runtime.Caching;
  22. using IwbZero.AppServiceBase;
  23. using IwbZero.IdentityFramework;
  24. using IwbZero.Setting;
  25. using Microsoft.AspNet.Identity;
  26. using NPOI.SS.Formula.Functions;
  27. using ShwasherSys.BasicInfo;
  28. using ShwasherSys.BasicInfo.OutFactory;
  29. using ShwasherSys.BasicInfo.OutFactory.Dto;
  30. using ShwasherSys.BasicInfo.StoreHouseLocations.Dto;
  31. using ShwasherSys.Common.Dto;
  32. using ShwasherSys.CompanyInfo;
  33. using ShwasherSys.CompanyInfo.FixedAssetInfo.Dto;
  34. using ShwasherSys.CompanyInfo.MoldInfo.Dto;
  35. using ShwasherSys.CustomerInfo;
  36. using ShwasherSys.CustomerInfo.Dto;
  37. using ShwasherSys.Inspection;
  38. using ShwasherSys.Invoice;
  39. using ShwasherSys.Lambda;
  40. using ShwasherSys.NotificationInfo;
  41. using ShwasherSys.NotificationInfo.Dto;
  42. using ShwasherSys.Order;
  43. using ShwasherSys.OrderSendInfo;
  44. using ShwasherSys.PackageInfo;
  45. using ShwasherSys.ProductInfo;
  46. using ShwasherSys.ProductInfo.Dto;
  47. using ShwasherSys.ProductionOrderInfo;
  48. using ShwasherSys.ProductionOrderInfo.Dto;
  49. using ShwasherSys.ProductStoreInfo;
  50. using ShwasherSys.RmStore;
  51. using ShwasherSys.SemiProductStoreInfo;
  52. using TemplateInfo = ShwasherSys.Inspection.TemplateInfo;
  53. namespace ShwasherSys.Common
  54. {
  55. public interface IQueryAppService : IApplicationService
  56. {
  57. /// <summary>
  58. /// 查询外协厂商信息
  59. /// </summary>
  60. /// <param name="input"></param>
  61. /// <returns></returns>
  62. Task<PagedResultDto<OutFactoryDto>> GetOutFactory(IwbPagedRequestDto input);
  63. /// <summary>
  64. /// 查询客户信息
  65. /// </summary>
  66. /// <param name="input"></param>
  67. /// <returns></returns>
  68. Task<PagedResultDto<CustomerDto>> GetCustomer(IwbPagedRequestDto input);
  69. /// <summary>
  70. /// 查询半成品实时库存信息
  71. /// </summary>
  72. /// <param name="input"></param>
  73. /// <returns></returns>
  74. Task<PagedResultDto<ViewCurrentSemiStoreHouse>> GetCurrentSemiStore(IwbPagedRequestDto input);
  75. /// <summary>
  76. /// 查询半成品信息
  77. /// </summary>
  78. /// <param name="input"></param>
  79. /// <returns></returns>
  80. Task<PagedResultDto<SemiProductDto>> GetSemiProduct(IwbPagedRequestDto input);
  81. Task<string> GetSemiProductName(string id);
  82. Task<SemiProductDto> GetSingleSemiProduct(string input);
  83. /// <summary>
  84. /// 查询产品信息
  85. /// </summary>
  86. /// <param name="input"></param>
  87. /// <returns></returns>
  88. Task<PagedResultDto<ProductDto>> GetProduct(IwbPagedRequestDto input);
  89. Task<Product> GetProductById(EntityDto<string> input);
  90. Task<string> GetProductName(string id);
  91. /// <summary>
  92. /// 查询库位信息
  93. /// </summary>
  94. /// <param name="input"></param>
  95. /// <returns></returns>
  96. Task<PagedResultDto<StoreHouseLocationDto>> GetStoreHouseLocation(IwbPagedRequestDto input);
  97. Task<PagedResultDto<ProductionLogDto>> QueryProductionLog(IwbPagedRequestDto input);
  98. string GetDefualtProductByOrderNo(string orderNo);
  99. string GetDefaultProductByPartNo(string partNo,string orderNo);
  100. string QueryProductByCustomerAndPartNo(string partNo, string customerId) ;
  101. string GetDefualtProductByCustomerId(string customerId);
  102. Customer GetCustomerInfo(EntityDto<string> input);
  103. CustomerSend GetCustomerSendInfo(EntityDto<int> input);
  104. List<CustomerSendDto> GetCustomerSendDtoByCustomerId(CustomerSendDto customerId);
  105. List<SelectListItem> GetProductPropertyList(string pcPropertyName);
  106. List<CurrentProductStoreHouse> QueryStore(string productNo);
  107. List<CurrentProductStoreHouse> QueryStoreFilter(string productNo,string customerId);
  108. BulletinInfo GetBulletinInfo(EntityDto input);
  109. ShortMessage GetShortMsgDetailInfo(ShortMsgDetailDto input);
  110. Task<PagedResultDto<Product>> GetQueryCustomerDefaultProduct(IwbPagedRequestDto input);
  111. List<StoreHouse> QueryStoreHouse(int houseType=0);
  112. List<SelectListItem> QueryStoreHouseSelect(int houseType=0);
  113. string QueryStoreHouseSelectStr(int houseType = 0);
  114. List<ViewSemiEnterStore> QueryEnterStoresByPoNo(string productionOrderNo);
  115. Task<TemplateInfo> QueryTemplate(string tmpKey, int type);
  116. Task<List<Currency>> QueryAllCurrency();
  117. Task<List<CurrencyExchangeRate>> QueryCurrencyRate(string from,string to);
  118. Task<string> GetExpressNameById(int id);
  119. PagedResultDto<ViewEmployee> QueryEmployee(IwbPagedRequestDto input);
  120. Task<PagedResultDto<MoldDto>> QueryMold(IwbPagedRequestDto input);
  121. Task<PagedResultDto<FixedAssetDto>> QueryFixedAsset(IwbPagedRequestDto input);
  122. Task<PagedResultDto<ViewOrderSend>> QuerySendGood(IwbPagedRequestDto input);
  123. Task<PagedResultDto<ViewStickBill>> QueryInvoice(IwbPagedRequestDto input);
  124. Task<PagedResultDto<RmProduct>> GetRmProduct(IwbPagedRequestDto input);
  125. Task<PagedResultDto<ViewCurrentRmStoreHouse>> GetRmCurrentStore(IwbPagedRequestDto input);
  126. Task<PagedResultDto<ViewSemiEnterStore>> GetSemiEnterStoreCheckUnqualified(IwbPagedRequestDto input);
  127. Task<PagedResultDto<ProductPropertyDto>> GetProductProperty(IwbPagedRequestDto input);
  128. Task<string> CalcTaxPrice(int type, string input,string rate);
  129. Task<PagedResultDto<ViewOrderItems>> QueryOrderItem(IwbPagedRequestDto input);
  130. Task<OrderProductProcessDto> QueryOrderProductProcess(int orderItemId);
  131. #region 2023
  132. Task<PagedResultDto<ProductionOrderDto>> QueryProductionOrderDtoByProNo(PagedRequestDto input);
  133. Task<PagedResultDto<ViewCurrentProductStoreHouse>> QueryViewCurrentProductStoreHouseByProNo(
  134. PagedRequestDto input);
  135. Task<PagedResultDto<ViewCurrentSemiStoreHouse>> QueryViewCurrentSemiStoreHouseByProNo(PagedRequestDto input);
  136. #endregion
  137. }
  138. [AbpAuthorize,DisableAuditing]
  139. public class QueryAppService : ApplicationService, IQueryAppService
  140. {
  141. protected ICacheManager CacheManager { get; set; }
  142. protected new IIwbSettingManager SettingManager { get; set; }
  143. public QueryAppService(
  144. IRepository<Customer,string> customerRepository,
  145. IRepository<ViewCurrentSemiStoreHouse> currentSemiRepository,
  146. IRepository<SemiProducts, string> semiProductRepository,
  147. IRepository<Product, string> productRepository,
  148. IRepository<StoreHouseLocation> shlRepository,
  149. IIwbSettingManager settingManager,
  150. ICacheManager cacheManager, IRepository<CustomerDefaultProduct> customerDefaultProductRepository, IRepository<CustomerSend> customerSendRepository, IRepository<OrderHeader, string> orderHeaderRepository, IRepository<CurrentProductStoreHouse> currentProductStoreHouseRepository, IRepository<BulletinInfo> bulletinInfoRepository, IRepository<ShortMessage> shortMessageRepository, IRepository<ShortMsgDetail> shortMsgDetailRepository, IRepository<StoreHouse> storeHouseRepository, IRepository<ViewSemiEnterStore> viewSemiEnterStoreRepository, IRepository<OutFactory, string> outFactoryRepository, IRepository<TemplateInfo> templateInfoRepository, IRepository<Currency, string> currencyRepository, IRepository<CurrencyExchangeRate> currencyExchangeRateRepository, IRepository<ViewEmployee> viewEmployeeRepository, IRepository<RmProduct, string> rmRepository, IRepository<ViewCurrentRmStoreHouse, string> viewCurrentRmStoreHouseRepository, IRepository<ProductionLog> productionLogRepository, IRepository<CustomerDisabledProduct> customerDisabledProductRepository, IRepository<ExpressLogistics> expressRepository, IRepository<Mold> moldRepository, IRepository<FixedAsset> fixedAssetRepository, IRepository<ViewOrderSend> viewOrderSendRepository, IRepository<ViewStickBill, string> viewStickBillRepository, IRepository<ProductProperty> productPropertyRepository, IRepository<ViewOrderItems> viewOrderItemsRepository, IRepository<OrderProduction> orderProductionRepository, IRepository<ProductionOrder> productionOrderRepository, IRepository<PackageApply> packageApplyRepository, IRepository<ViewCurrentProductStoreHouse> viewCurrentProductStoreHouseRepository, IRepository<ViewCurrentSemiStoreHouse> viewCurrentSemiStoreHouseRepository)
  151. {
  152. CustomerRepository = customerRepository;
  153. CurrentSemiRepository = currentSemiRepository;
  154. SemiProductRepository = semiProductRepository;
  155. ProductRepository = productRepository;
  156. ShlRepository = shlRepository;
  157. CacheManager = cacheManager;
  158. CustomerDefaultProductRepository = customerDefaultProductRepository;
  159. CustomerSendRepository = customerSendRepository;
  160. OrderHeaderRepository = orderHeaderRepository;
  161. CurrentProductStoreHouseRepository = currentProductStoreHouseRepository;
  162. BulletinInfoRepository = bulletinInfoRepository;
  163. SettingManager = settingManager;
  164. ShortMessageRepository = shortMessageRepository;
  165. ShortMsgDetailRepository = shortMsgDetailRepository;
  166. StoreHouseRepository = storeHouseRepository;
  167. ViewSemiEnterStoreRepository = viewSemiEnterStoreRepository;
  168. OutFactoryRepository = outFactoryRepository;
  169. TemplateInfoRepository = templateInfoRepository;
  170. CurrencyRepository = currencyRepository;
  171. CurrencyExchangeRateRepository = currencyExchangeRateRepository;
  172. ViewEmployeeRepository = viewEmployeeRepository;
  173. RmRepository = rmRepository;
  174. ViewCurrentRmStoreHouseRepository = viewCurrentRmStoreHouseRepository;
  175. ProductionLogRepository = productionLogRepository;
  176. CustomerDisabledProductRepository = customerDisabledProductRepository;
  177. ExpressRepository = expressRepository;
  178. MoldRepository = moldRepository;
  179. FixedAssetRepository = fixedAssetRepository;
  180. ViewOrderSendRepository = viewOrderSendRepository;
  181. ViewStickBillRepository = viewStickBillRepository;
  182. ProductPropertyRepository = productPropertyRepository;
  183. ViewOrderItemsRepository = viewOrderItemsRepository;
  184. OrderProductionRepository = orderProductionRepository;
  185. ProductionOrderRepository = productionOrderRepository;
  186. PackageApplyRepository = packageApplyRepository;
  187. ViewCurrentProductStoreHouseRepository = viewCurrentProductStoreHouseRepository;
  188. ViewCurrentSemiStoreHouseRepository = viewCurrentSemiStoreHouseRepository;
  189. AsyncQueryableExecuter = NullAsyncQueryableExecuter.Instance;
  190. }
  191. protected IRepository<FixedAsset> FixedAssetRepository { get; }
  192. protected IRepository<Mold> MoldRepository { get; }
  193. protected IRepository<ExpressLogistics> ExpressRepository { get; }
  194. protected IRepository<ProductionLog> ProductionLogRepository { get; }
  195. protected IRepository<OutFactory, string> OutFactoryRepository { get; }
  196. protected IRepository<Customer, string> CustomerRepository { get; }
  197. protected IRepository<ViewCurrentSemiStoreHouse> CurrentSemiRepository { get; }
  198. protected IRepository<SemiProducts, string> SemiProductRepository { get; }
  199. protected IRepository<Product, string> ProductRepository { get; }
  200. public IRepository<StoreHouseLocation> ShlRepository { get; }
  201. protected IRepository<CustomerDefaultProduct> CustomerDefaultProductRepository { get; }
  202. protected IRepository<CustomerSend> CustomerSendRepository { get; }
  203. protected IRepository<OrderHeader, string> OrderHeaderRepository { get; }
  204. protected IRepository<CurrentProductStoreHouse> CurrentProductStoreHouseRepository { get; }
  205. protected IRepository<BulletinInfo> BulletinInfoRepository { get; }
  206. protected IRepository<ShortMessage> ShortMessageRepository { get; }
  207. protected IRepository<ShortMsgDetail> ShortMsgDetailRepository { get; }
  208. protected IRepository<StoreHouse> StoreHouseRepository { get; }
  209. protected IRepository<ViewSemiEnterStore> ViewSemiEnterStoreRepository { get; }
  210. protected IRepository<TemplateInfo> TemplateInfoRepository { get; }
  211. protected IRepository<Currency,string> CurrencyRepository { get; }
  212. protected IRepository<CurrencyExchangeRate> CurrencyExchangeRateRepository { get; }
  213. protected IRepository<ViewEmployee> ViewEmployeeRepository { get; }
  214. protected IRepository<RmProduct,string> RmRepository { get; }
  215. protected IRepository<ViewCurrentRmStoreHouse, string> ViewCurrentRmStoreHouseRepository { get; }
  216. protected IRepository<CustomerDisabledProduct> CustomerDisabledProductRepository { get; }
  217. protected IRepository<ViewOrderSend> ViewOrderSendRepository { get; }
  218. public IAsyncQueryableExecuter AsyncQueryableExecuter { get; set; }
  219. protected IRepository<ProductProperty> ProductPropertyRepository { get; }
  220. protected IRepository<ViewOrderItems> ViewOrderItemsRepository { get; }
  221. protected IRepository<OrderProduction> OrderProductionRepository { get; }
  222. protected IRepository<ProductionOrder> ProductionOrderRepository { get; }
  223. protected IRepository<PackageApply> PackageApplyRepository { get; }
  224. protected IRepository<ViewCurrentProductStoreHouse> ViewCurrentProductStoreHouseRepository { get; }
  225. protected IRepository<ViewCurrentSemiStoreHouse> ViewCurrentSemiStoreHouseRepository { get; }
  226. /// <summary>
  227. /// 查询快递名称
  228. /// </summary>
  229. /// <param name="id"></param>
  230. /// <returns></returns>
  231. public async Task<string> GetExpressNameById(int id)
  232. {
  233. var express = await ExpressRepository.FirstOrDefaultAsync(a => a.Id == id);
  234. return express?.ExpressName ?? "";
  235. }
  236. /// <summary>
  237. /// 查询外协厂商信息
  238. /// </summary>
  239. /// <param name="input"></param>
  240. /// <returns></returns>
  241. public async Task<PagedResultDto<OutFactoryDto>> GetOutFactory(IwbPagedRequestDto input)
  242. {
  243. var query = OutFactoryRepository.GetAll().Where(a => a.IsLock == "N");
  244. if (input.SearchList != null && input.SearchList.Count > 0)
  245. {
  246. List<LambdaObject> objList = new List<LambdaObject>();
  247. foreach (var o in input.SearchList)
  248. {
  249. if (o.KeyWords.IsNullOrEmpty())
  250. continue;
  251. object keyWords = o.KeyWords;
  252. objList.Add(new LambdaObject
  253. {
  254. FieldType = (LambdaFieldType)o.FieldType,
  255. FieldName = o.KeyField,
  256. FieldValue = keyWords,
  257. ExpType = (LambdaExpType)o.ExpType
  258. });
  259. }
  260. var exp = objList.GetExp<OutFactory>();
  261. query = query.Where(exp);
  262. }
  263. var totalCount = await query.CountAsync();
  264. query = query.OrderByDescending(i => i.TimeCreated);
  265. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  266. var entities = await query.ToListAsync();
  267. var dtos = new PagedResultDto<OutFactoryDto>(
  268. totalCount,
  269. entities.Select(ObjectMapper.Map<OutFactoryDto>).ToList()
  270. );
  271. return dtos;
  272. }
  273. /// <summary>
  274. /// 查询客户信息
  275. /// </summary>
  276. /// <param name="input"></param>
  277. /// <returns></returns>
  278. public async Task<PagedResultDto<CustomerDto>> GetCustomer(IwbPagedRequestDto input)
  279. {
  280. var query = CustomerRepository.GetAll().Where(a => a.IsLock == "N");
  281. if (input.SearchList != null && input.SearchList.Count > 0)
  282. {
  283. List<LambdaObject> objList = new List<LambdaObject>();
  284. foreach (var o in input.SearchList)
  285. {
  286. if (o.KeyWords.IsNullOrEmpty())
  287. continue;
  288. object keyWords = o.KeyWords;
  289. objList.Add(new LambdaObject
  290. {
  291. FieldType = (LambdaFieldType)o.FieldType,
  292. FieldName = o.KeyField,
  293. FieldValue = keyWords,
  294. ExpType = (LambdaExpType)o.ExpType
  295. });
  296. }
  297. var exp = objList.GetExp<Customer>();
  298. query = query.Where(exp);
  299. }
  300. var totalCount = await query.CountAsync();
  301. query = query.OrderByDescending(i => i.TimeCreated);
  302. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  303. var entities = await query.ToListAsync();
  304. var dtos = new PagedResultDto<CustomerDto>(
  305. totalCount,
  306. entities.Select(ObjectMapper.Map<CustomerDto>).ToList()
  307. );
  308. return dtos;
  309. }
  310. /// <summary>
  311. /// 查询半成品实时库存信息
  312. /// </summary>
  313. /// <param name="input"></param>
  314. /// <returns></returns>
  315. public async Task<PagedResultDto<ViewCurrentSemiStoreHouse>> GetCurrentSemiStore(IwbPagedRequestDto input)
  316. {
  317. var query = CurrentSemiRepository.GetAll();
  318. if (input.SearchList != null && input.SearchList.Count > 0)
  319. {
  320. List<LambdaObject> objList = new List<LambdaObject>();
  321. foreach (var o in input.SearchList)
  322. {
  323. if (o.KeyWords.IsNullOrEmpty())
  324. continue;
  325. object keyWords = o.KeyWords;
  326. objList.Add(new LambdaObject
  327. {
  328. FieldType = (LambdaFieldType)o.FieldType,
  329. FieldName = o.KeyField,
  330. FieldValue = keyWords,
  331. ExpType = (LambdaExpType)o.ExpType
  332. });
  333. }
  334. var exp = objList.GetExp<ViewCurrentSemiStoreHouse>();
  335. query = query.Where(exp);
  336. }
  337. query = query.Where(i => (i.ActualQuantity - i.FreezeQuantity) > 0);//过滤掉可用数量小于等于0
  338. var totalCount = await query.CountAsync();
  339. query = query.OrderByDescending(i => i.TimeCreated);
  340. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  341. var entities = await query.ToListAsync();
  342. var dtos = new PagedResultDto<ViewCurrentSemiStoreHouse>(totalCount,entities);
  343. return dtos;
  344. }
  345. /// <summary>
  346. /// 查询半成品信息
  347. /// </summary>
  348. /// <param name="input"></param>
  349. /// <returns></returns>
  350. public async Task<PagedResultDto<SemiProductDto>> GetSemiProduct(IwbPagedRequestDto input)
  351. {
  352. var query = SemiProductRepository.GetAll().Where(a => a.IsLock == "N");
  353. if (input.SearchList != null && input.SearchList.Count > 0)
  354. {
  355. List<LambdaObject> objList = new List<LambdaObject>();
  356. foreach (var o in input.SearchList)
  357. {
  358. if (o.KeyWords.IsNullOrEmpty())
  359. continue;
  360. object keyWords = o.KeyWords;
  361. //检查查询条件中带有规格且多个分割条件的
  362. ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
  363. objList.Add(new LambdaObject
  364. {
  365. FieldType = (LambdaFieldType)o.FieldType,
  366. FieldName = o.KeyField,
  367. FieldValue = keyWords,
  368. ExpType = (LambdaExpType)o.ExpType
  369. });
  370. }
  371. var exp = objList.GetExp<SemiProducts>();
  372. query = query.Where(exp);
  373. }
  374. var totalCount = await query.CountAsync();
  375. query = query.OrderByDescending(i => i.TimeCreated);
  376. //query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  377. //var entities = await query.ToListAsync();
  378. string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
  379. List<SemiProducts> entities;
  380. //检查查询条件中带有规格且多个分割条件的
  381. if (!pattern.IsNullOrEmpty())
  382. {
  383. var es = query.ToList();
  384. es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
  385. totalCount = es.Count;
  386. entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
  387. }
  388. else
  389. {
  390. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  391. entities = await AsyncQueryableExecuter.ToListAsync(query);
  392. }
  393. var dtos = new PagedResultDto<SemiProductDto>(
  394. totalCount,
  395. entities.Select(ObjectMapper.Map<SemiProductDto>).ToList()
  396. );
  397. return dtos;
  398. }
  399. public async Task<SemiProductDto> GetSingleSemiProduct(string input)
  400. {
  401. var query = await SemiProductRepository.FirstOrDefaultAsync(i=>i.Id==input);
  402. return ObjectMapper.Map<SemiProductDto>(query);
  403. }
  404. public async Task<string> GetSemiProductName(string id)
  405. {
  406. var entity = await CacheManager.GetCache(ShwasherConsts.SemiProductCache)
  407. .GetAsync(id, () => SemiProductRepository.FirstOrDefaultAsync(i => i.Id == id));
  408. return entity?.SemiProductName ?? "";
  409. }
  410. public async Task<string> GetProductName(string id)
  411. {
  412. var entity = await CacheManager.GetCache(ShwasherConsts.FinshedProductCache)
  413. .GetAsync(id, () => ProductRepository.FirstOrDefaultAsync(i => i.Id == id));
  414. return entity?.ProductName ?? "";
  415. }
  416. /// <summary>
  417. /// 查询产品信息
  418. /// </summary>
  419. /// <param name="input"></param>
  420. /// <returns></returns>
  421. public async Task<PagedResultDto<ProductDto>> GetProduct(IwbPagedRequestDto input)
  422. {
  423. var query = ProductRepository.GetAll().Where(a => a.IsLock == "N");
  424. if (input.SearchList != null && input.SearchList.Count > 0)
  425. {
  426. List<LambdaObject> objList = new List<LambdaObject>();
  427. foreach (var o in input.SearchList)
  428. {
  429. if (o.KeyWords.IsNullOrEmpty())
  430. continue;
  431. object keyWords = o.KeyWords;
  432. //检查查询条件中带有规格且多个分割条件的
  433. ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
  434. objList.Add(new LambdaObject
  435. {
  436. FieldType = (LambdaFieldType)o.FieldType,
  437. FieldName = o.KeyField,
  438. FieldValue = keyWords,
  439. ExpType = (LambdaExpType)o.ExpType
  440. });
  441. }
  442. var exp = objList.GetExp<Product>();
  443. query = query.Where(exp);
  444. }
  445. var totalCount = await query.CountAsync();
  446. query = !input.Sorting.IsNullOrWhiteSpace() ? query.OrderBy(input.Sorting) : query.OrderByDescending(i => i.TimeCreated);
  447. string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
  448. List<Product> entities;
  449. //检查查询条件中带有规格且多个分割条件的
  450. if (!pattern.IsNullOrEmpty())
  451. {
  452. var es = query.ToList();
  453. es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
  454. totalCount = es.Count;
  455. entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
  456. }
  457. else
  458. {
  459. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  460. entities = await AsyncQueryableExecuter.ToListAsync(query);
  461. }
  462. //query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  463. //var entities = await query.ToListAsync();
  464. var dtos = new PagedResultDto<ProductDto>(
  465. totalCount,
  466. entities.Select(ObjectMapper.Map<ProductDto>).ToList()
  467. );
  468. return dtos;
  469. }
  470. public async Task<Product> GetProductById(EntityDto<string> input)
  471. {
  472. return await ProductRepository.FirstOrDefaultAsync(input.Id);
  473. }
  474. /// <summary>
  475. /// 查询库位信息
  476. /// </summary>
  477. /// <param name="input"></param>
  478. /// <returns></returns>
  479. public async Task<PagedResultDto<StoreHouseLocationDto>> GetStoreHouseLocation(IwbPagedRequestDto input)
  480. {
  481. var query = ShlRepository.GetAll();
  482. if (input.SearchList != null && input.SearchList.Count > 0)
  483. {
  484. List<LambdaObject> objList = new List<LambdaObject>();
  485. foreach (var o in input.SearchList)
  486. {
  487. if (o.KeyWords.IsNullOrEmpty())
  488. continue;
  489. object keyWords = o.KeyWords;
  490. objList.Add(new LambdaObject
  491. {
  492. FieldType = (LambdaFieldType)o.FieldType,
  493. FieldName = o.KeyField,
  494. FieldValue = keyWords,
  495. ExpType = (LambdaExpType)o.ExpType
  496. });
  497. }
  498. var exp = objList.GetExp<StoreHouseLocation>();
  499. query = query.Where(exp);
  500. }
  501. var totalCount = await query.CountAsync();
  502. query = query.OrderByDescending(i => i.CreationTime);
  503. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  504. var entities = await query.ToListAsync();
  505. var dtos = new PagedResultDto<StoreHouseLocationDto>(
  506. totalCount,
  507. entities.Select(ObjectMapper.Map<StoreHouseLocationDto>).ToList()
  508. );
  509. return dtos;
  510. }
  511. /// <summary>
  512. /// 根据订单号查询当前客户默认的产品
  513. /// </summary>
  514. /// <param name="orderNo"></param>
  515. /// <returns></returns>
  516. public string GetDefualtProductByOrderNo(string orderNo)
  517. {
  518. var orderHeader = OrderHeaderRepository.Get(orderNo);
  519. return GetDefualtProductByCustomerId(orderHeader.CustomerId);
  520. }
  521. /// <summary>
  522. /// 根据订单号和零件号查询当前客户默认的产品
  523. /// </summary>
  524. /// <param name="partNo"></param>
  525. /// <param name="orderNo"></param>
  526. /// <returns></returns>
  527. public string GetDefaultProductByPartNo(string partNo,string orderNo)
  528. {
  529. var orderHeader = OrderHeaderRepository.Get(orderNo);
  530. var defaultProduct = CustomerDefaultProductRepository.FirstOrDefault(i => i.CustomerId == orderHeader.CustomerId&&i.PartNo== partNo);
  531. if (defaultProduct != null)
  532. {
  533. return defaultProduct.ProductNo;
  534. }
  535. return "";
  536. }
  537. /// <summary>
  538. /// 根据订单号和客户编码查询当前客户默认的产品
  539. /// </summary>
  540. /// <param name="partNo"></param>
  541. /// <param name="customerId"></param>
  542. /// <returns></returns>
  543. public string QueryProductByCustomerAndPartNo(string partNo, string customerId)
  544. {
  545. var defaultProduct = CustomerDefaultProductRepository.FirstOrDefault(i => i.CustomerId == customerId && i.PartNo == partNo);
  546. if (defaultProduct != null)
  547. {
  548. return defaultProduct.ProductNo;
  549. }
  550. return "";
  551. }
  552. /// <summary>
  553. /// 根据客户号查询当前客户默认的产品
  554. /// </summary>
  555. /// <param name="orderNo"></param>
  556. /// <returns></returns>
  557. public string GetDefualtProductByCustomerId(string customerId)
  558. {
  559. var defualtProducts = CustomerDefaultProductRepository.GetAll().Where(i => i.CustomerId == customerId);
  560. string lcRetval = "";
  561. foreach (var item in defualtProducts)
  562. {
  563. lcRetval += $"<option value=\"{item.ProductNo}\">{item.ProductNo}</option>";
  564. }
  565. return lcRetval;
  566. }
  567. public Customer GetCustomerInfo(EntityDto<string> input)
  568. {
  569. return CustomerRepository.FirstOrDefault(input.Id);
  570. }
  571. public CustomerSend GetCustomerSendInfo(EntityDto<int> input)
  572. {
  573. return CustomerSendRepository.FirstOrDefault(input.Id);
  574. }
  575. [DisableAuditing]
  576. public List<SelectListItem> GetProductPropertyList(string pcPropertyName)
  577. {
  578. var objList = new List<SelectListItem>();
  579. if (pcPropertyName.IsNullOrEmpty())
  580. {
  581. return objList;
  582. }
  583. var entitys = ProductRepository.GetAll().Where(i => i.IsLock == "N");
  584. var loPropertyInfo = typeof(Product).GetProperty(pcPropertyName,
  585. BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
  586. if (loPropertyInfo == null)
  587. {
  588. throw new ArgumentException($"{pcPropertyName} is not a property of type {typeof(Product)}.");
  589. }
  590. IQueryable<string> query = null;
  591. switch (pcPropertyName)
  592. {
  593. case "Material":
  594. query = entitys.Select(i => i.Material).Distinct();
  595. break;
  596. case "SurfaceColor":
  597. query = entitys.Select(i => i.SurfaceColor).Distinct();
  598. break;
  599. case "Rigidity":
  600. query = entitys.Select(i => i.Rigidity).Distinct();
  601. break;
  602. }
  603. if (query != null)
  604. {
  605. foreach (var product in query)
  606. {
  607. objList.Add(new SelectListItem()
  608. {
  609. Text = product,
  610. Value = product
  611. });
  612. }
  613. }
  614. return objList;
  615. }
  616. #region 库存记录查询
  617. public List<CurrentProductStoreHouse> QueryStore(string productNo)
  618. {
  619. if (string.IsNullOrEmpty(productNo))
  620. {
  621. CheckErrors(IwbIdentityResult.Failed("请求的产品编码不存在!"));
  622. }
  623. var entity = CurrentProductStoreHouseRepository.GetAll().Where(i => i.ProductNo == productNo && (i.Quantity > 0||i.ProductionOrderNo.StartsWith("VS"))).OrderByDescending(i => i.TimeLastMod);
  624. List<CurrentProductStoreHouse> productionOrder = new List<CurrentProductStoreHouse>();
  625. List<CurrentProductStoreHouse> hasProductionOrder = new List<CurrentProductStoreHouse>();
  626. if (entity.Any())
  627. {
  628. productionOrder = entity.Where(i => string.IsNullOrEmpty(i.ProductionOrderNo)).ToList();
  629. hasProductionOrder = entity.Where(i => !string.IsNullOrEmpty(i.ProductionOrderNo)).ToList();
  630. }
  631. productionOrder.AddRange(hasProductionOrder);
  632. return productionOrder;
  633. }
  634. public List<CurrentProductStoreHouse> QueryStoreFilter(string productNo,string customerId)
  635. {
  636. if (string.IsNullOrEmpty(productNo))
  637. {
  638. CheckErrors(IwbIdentityResult.Failed("请求的产品编码不存在!"));
  639. }
  640. var entity = CurrentProductStoreHouseRepository.GetAll().Where(i => i.ProductNo == productNo && (i.Quantity > 0 || i.ProductionOrderNo.StartsWith("VS"))&&i.InventoryCheckState!=2);
  641. var disabledOrderNo = CustomerDisabledProductRepository.GetAll().Where(i => i.CustomerNo == customerId)
  642. .Select(i => i.ProductOrderNo).Distinct();
  643. entity = entity.Where(i => !disabledOrderNo.Contains(i.ProductionOrderNo))
  644. .OrderByDescending(i => i.TimeLastMod);
  645. List<CurrentProductStoreHouse> productionOrder = new List<CurrentProductStoreHouse>();
  646. List<CurrentProductStoreHouse> hasProductionOrder = new List<CurrentProductStoreHouse>();
  647. if (entity.Any())
  648. {
  649. productionOrder = entity.Where(i => string.IsNullOrEmpty(i.ProductionOrderNo)&& i.Quantity>0).ToList();
  650. hasProductionOrder = entity.Where(i => !string.IsNullOrEmpty(i.ProductionOrderNo)&& i.Quantity>0).ToList();
  651. }
  652. productionOrder.AddRange(hasProductionOrder);
  653. return productionOrder;
  654. }
  655. #endregion
  656. public BulletinInfo GetBulletinInfo(EntityDto input)
  657. {
  658. var entity = BulletinInfoRepository.FirstOrDefault(i => i.Id == input.Id);
  659. return entity;
  660. }
  661. protected virtual void CheckErrors(IdentityResult identityResult)
  662. {
  663. identityResult.CheckErrors(LocalizationManager);
  664. }
  665. public ShortMessage GetShortMsgDetailInfo(ShortMsgDetailDto input)
  666. {
  667. var entity = ShortMessageRepository.FirstOrDefault(input.MsgID);
  668. var detailInfo = ShortMsgDetailRepository.FirstOrDefault(input.Id);
  669. detailInfo.IsRead = "Y";
  670. ShortMsgDetailRepository.UpdateAsync(detailInfo);
  671. return entity;
  672. }
  673. public List<CustomerSendDto> GetCustomerSendDtoByCustomerId(CustomerSendDto customerId)
  674. {
  675. var entities = CustomerSendRepository.GetAll().Where(i => i.CustomerId == customerId.CustomerId && i.IsLock == "N");
  676. return ObjectMapper.Map<List<CustomerSendDto>>(entities.ToList());
  677. }
  678. public async Task<PagedResultDto<Product>> GetQueryCustomerDefaultProduct(IwbPagedRequestDto input)
  679. {
  680. var query = ProductRepository.GetAll();
  681. query = query.Where(i => i.IsLock == "N");
  682. string lcCustomerId = "";
  683. if (input.SearchList != null && input.SearchList.Count > 0)
  684. {
  685. List<LambdaObject> objList = new List<LambdaObject>();
  686. foreach (var o in input.SearchList)
  687. {
  688. if (o.KeyWords.IsNullOrEmpty())
  689. continue;
  690. object keyWords = o.KeyWords;
  691. if (o.KeyField == "CustomerId" || o.KeyField == "customerId")
  692. {
  693. lcCustomerId = keyWords + "";
  694. continue;
  695. }
  696. objList.Add(new LambdaObject
  697. {
  698. FieldType = (LambdaFieldType)o.FieldType,
  699. FieldName = o.KeyField,
  700. FieldValue = keyWords,
  701. ExpType = (LambdaExpType)o.ExpType
  702. });
  703. }
  704. var exp = objList.GetExp<Product>();
  705. if (exp != null)
  706. {
  707. query = query.Where(exp);
  708. }
  709. }
  710. List<string> loNotContain = new List<string>();
  711. if (!lcCustomerId.IsNullOrEmpty())
  712. {
  713. var loDefualtProducts = CustomerDefaultProductRepository.GetAll().Where(i => i.CustomerId == lcCustomerId);
  714. foreach (CustomerDefaultProduct defaultProduct in loDefualtProducts)
  715. {
  716. loNotContain.Add(defaultProduct.ProductNo);
  717. }
  718. }
  719. if (loNotContain.Any())
  720. {
  721. query = query.Where(i => !loNotContain.Contains(i.Id));
  722. }
  723. var totalCount = query.Count();
  724. query = query.SortBy("Id");
  725. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  726. var entities = query.ToList();
  727. var dtos = new PagedResultDto<Product>(
  728. totalCount,
  729. entities
  730. );
  731. return dtos;
  732. }
  733. public async Task<PagedResultDto<ProductionLogDto>> QueryProductionLog(IwbPagedRequestDto input)
  734. {
  735. var query = ProductionLogRepository.GetAllIncluding(a=>a.EmployeeInfo);
  736. query = ApplyFilter<ProductionLog>(query,input);
  737. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  738. query = query.OrderBy(a=>a.CreationTime);
  739. query = _ApplyPaging(query, input);
  740. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  741. var dtoList = new PagedResultDto<ProductionLogDto>(totalCount, entities.Select(a=>new ProductionLogDto
  742. {
  743. Id = a.Id,
  744. ProductionNo = a.ProductionNo,
  745. ProductOrderNo = a.ProductOrderNo,
  746. EmployeeId = a.EmployeeId,
  747. EmployeeNo = a.EmployeeInfo.No,
  748. EmployeeName = a.EmployeeInfo.Name,
  749. CarNo = a.CarNo,
  750. QuantityWeight = a.QuantityWeight,
  751. QuantityPcs = a.QuantityPcs,
  752. KgWeight = a.KgWeight,
  753. CreationTime = a.CreationTime
  754. }).ToList());
  755. return dtoList;
  756. }
  757. public List<StoreHouse> QueryStoreHouse(int houseType=0)
  758. {
  759. /*List<StoreHouse> result = CacheManager.GetCache(ShwasherConsts.StoreHouseCache).Get("All",
  760. () => { return StoreHouseRepository.GetAllList(i => i.IsLock == "N"); });*/
  761. var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N" );
  762. if (houseType > 0)
  763. {
  764. query = query.Where(i => i.StoreHouseTypeId == houseType);
  765. }
  766. return query.ToList();
  767. }
  768. public List<SelectListItem> QueryStoreHouseSelect(int houseType=0)
  769. {
  770. var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N");
  771. if (houseType > 0)
  772. {
  773. query = query.Where(i => i.StoreHouseTypeId == houseType);
  774. }
  775. List<SelectListItem> resultList = new List<SelectListItem>()
  776. {
  777. new SelectListItem()
  778. {
  779. Text = @"请选择仓库...",
  780. Value = "",
  781. Selected = true
  782. }
  783. };
  784. foreach (var entityHouse in query)
  785. {
  786. SelectListItem item = new SelectListItem()
  787. {
  788. Text = entityHouse.StoreHouseName,
  789. Value = entityHouse.Id.ToString()
  790. };
  791. resultList.Add(item);
  792. }
  793. return resultList;
  794. }
  795. public string QueryStoreHouseSelectStr(int houseType=0)
  796. {
  797. var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N");
  798. if (houseType > 0)
  799. {
  800. query = query.Where(i => i.StoreHouseTypeId == houseType);
  801. }
  802. string str = "";// "<option data-type=\"\" value=\"\">请选择仓库...</option>";
  803. foreach (var l in query)
  804. {
  805. str += $"<option data-type=\"{l.StoreHouseTypeId}\" value=\"{l.Id}\">{l.StoreHouseName}</option>";
  806. }
  807. return str;
  808. }
  809. public List<ViewSemiEnterStore> QueryEnterStoresByPoNo(string productionOrderNo)
  810. {
  811. var entities = ViewSemiEnterStoreRepository.GetAllList(i => i.ProductionOrderNo == productionOrderNo);
  812. return entities;
  813. }
  814. public async Task<TemplateInfo> QueryTemplate(string tmpKey, int type)
  815. {
  816. var tmps =await TemplateInfoRepository.FirstOrDefaultAsync(i => i.TempKey == tmpKey && i.Type == type);
  817. return tmps;
  818. }
  819. public async Task<List<Currency>> QueryAllCurrency()
  820. {
  821. return await CurrencyRepository.GetAllListAsync();
  822. }
  823. public async Task<List<CurrencyExchangeRate>> QueryCurrencyRate(string from="", string to="")
  824. {
  825. if (from.IsNullOrEmpty()&&!to.IsNullOrEmpty())
  826. {
  827. return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.ToCurrencyId == to);
  828. }
  829. else if (!from.IsNullOrEmpty() && to.IsNullOrEmpty())
  830. {
  831. return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.FromCurrencyId == from );
  832. }
  833. else
  834. {
  835. return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.FromCurrencyId == from && i.ToCurrencyId == to);
  836. }
  837. }
  838. public PagedResultDto<ViewEmployee> QueryEmployee(IwbPagedRequestDto input)
  839. {
  840. var query = ViewEmployeeRepository.GetAll();
  841. if (input.SearchList != null && input.SearchList.Count > 0)
  842. {
  843. List<LambdaObject> objList = new List<LambdaObject>();
  844. foreach (var o in input.SearchList)
  845. {
  846. if (o.KeyWords.IsNullOrEmpty())
  847. continue;
  848. object keyWords = o.KeyWords;
  849. objList.Add(new LambdaObject
  850. {
  851. FieldType = (LambdaFieldType)o.FieldType,
  852. FieldName = o.KeyField,
  853. FieldValue = keyWords,
  854. ExpType = (LambdaExpType)o.ExpType
  855. });
  856. }
  857. var exp = objList.GetExp<ViewEmployee>();
  858. if (exp != null)
  859. {
  860. query = query.Where(exp);
  861. }
  862. }
  863. var totalCount = query.Count();
  864. query = query.SortBy("No");
  865. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  866. var entities = query.ToList();
  867. var dtos = new PagedResultDto<ViewEmployee>(
  868. totalCount,
  869. entities
  870. );
  871. return dtos;
  872. }
  873. /// <summary>
  874. /// 查询模具信息
  875. /// </summary>
  876. /// <param name="input"></param>
  877. /// <returns></returns>
  878. public async Task<PagedResultDto<MoldDto>> QueryMold(IwbPagedRequestDto input)
  879. {
  880. var query = MoldRepository.GetAll();
  881. query = ApplyFilter(query,input);
  882. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  883. query = _ApplySorting(query, input);
  884. query = _ApplyPaging(query, input);
  885. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  886. var dtoList = new PagedResultDto<MoldDto>(totalCount, entities.Select(ObjectMapper.Map<MoldDto>).ToList());
  887. return dtoList;
  888. }
  889. /// <summary>
  890. /// 查询模具信息
  891. /// </summary>
  892. /// <param name="input"></param>
  893. /// <returns></returns>
  894. public async Task<PagedResultDto<FixedAssetDto>> QueryFixedAsset(IwbPagedRequestDto input)
  895. {
  896. var query = FixedAssetRepository.GetAll();
  897. query = ApplyFilter(query,input);
  898. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  899. query = _ApplySorting(query, input);
  900. query = _ApplyPaging(query, input);
  901. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  902. var dtoList = new PagedResultDto<FixedAssetDto>(totalCount, entities.Select(ObjectMapper.Map<FixedAssetDto>).ToList());
  903. return dtoList;
  904. }
  905. /// <summary>
  906. /// 查询发货明细信息
  907. /// </summary>
  908. /// <param name="input"></param>
  909. /// <returns></returns>
  910. public async Task<PagedResultDto<ViewOrderSend>> QuerySendGood(IwbPagedRequestDto input)
  911. {
  912. var query = ViewOrderSendRepository.GetAll().Where(a=>!string.IsNullOrEmpty(a.OrderSendBillNo));
  913. query = ApplyFilter(query,input);
  914. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  915. query = query.OrderByDescending(a=>a.OrderItemId);
  916. query = _ApplyPaging(query, input);
  917. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  918. var dtoList = new PagedResultDto<ViewOrderSend>(totalCount, entities);
  919. return dtoList;
  920. }
  921. protected IRepository<ViewStickBill, string> ViewStickBillRepository { get; }
  922. /// <summary>
  923. /// 查询发票信息
  924. /// </summary>
  925. /// <param name="input"></param>
  926. /// <returns></returns>
  927. public async Task<PagedResultDto<ViewStickBill>> QueryInvoice(IwbPagedRequestDto input)
  928. {
  929. var query = ViewStickBillRepository.GetAll();
  930. query = ApplyFilter(query,input);
  931. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  932. query = query.OrderByDescending(a=>a.TimeCreated);
  933. query = _ApplyPaging(query, input);
  934. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  935. var dtoList = new PagedResultDto<ViewStickBill>(totalCount, entities);
  936. return dtoList;
  937. }
  938. public async Task<PagedResultDto<RmProduct>> GetRmProduct(IwbPagedRequestDto input)
  939. {
  940. var query = RmRepository.GetAll();
  941. query = ApplyFilter<RmProduct>(query,input);
  942. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  943. query = _ApplySorting(query, input);
  944. query = _ApplyPaging(query, input);
  945. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  946. var dtoList = new PagedResultDto<RmProduct>(totalCount, entities);
  947. return dtoList;
  948. }
  949. public async Task<PagedResultDto<ViewCurrentRmStoreHouse>> GetRmCurrentStore(IwbPagedRequestDto input)
  950. {
  951. var query = ViewCurrentRmStoreHouseRepository.GetAll();
  952. query = ApplyFilter<ViewCurrentRmStoreHouse>(query, input);
  953. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  954. query = _ApplySorting(query, input);
  955. query = _ApplyPaging(query, input);
  956. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  957. var dtoList = new PagedResultDto<ViewCurrentRmStoreHouse>(totalCount, entities);
  958. return dtoList;
  959. }
  960. public async Task<PagedResultDto<ViewSemiEnterStore>> GetSemiEnterStoreCheckUnqualified(IwbPagedRequestDto input)
  961. {
  962. var checkState = EnterStoreApplyStatusEnum.UnChecked.ToInt() + "";
  963. var query = ViewSemiEnterStoreRepository.GetAll().Where(a => a.ApplyStatus == checkState);
  964. query = ApplyFilter<ViewSemiEnterStore>(query, input);
  965. var totalCount = query.Count();
  966. query = query.OrderByDescending(i => i.TimeCreated);
  967. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  968. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  969. var dots = new PagedResultDto<ViewSemiEnterStore>(
  970. totalCount, entities
  971. );
  972. return dots;
  973. }
  974. /// <summary>
  975. /// 查询产品属性
  976. /// </summary>
  977. /// <param name="input"></param>
  978. /// <returns></returns>
  979. public async Task<PagedResultDto<ProductPropertyDto>> GetProductProperty(IwbPagedRequestDto input)
  980. {
  981. var query = ProductPropertyRepository.GetAll();
  982. query = ApplyFilter(query, input);
  983. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  984. query = _ApplySorting(query, input);
  985. query = _ApplyPaging(query, input);
  986. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  987. var dtoList = new PagedResultDto<ProductPropertyDto>(totalCount, entities.Select(ObjectMapper.Map<ProductPropertyDto>).ToList());
  988. return dtoList;
  989. }
  990. /// <summary>
  991. /// 查询订单明细信息
  992. /// </summary>
  993. /// <param name="input"></param>
  994. /// <returns></returns>
  995. public async Task<PagedResultDto<ViewOrderItems>> QueryOrderItem(IwbPagedRequestDto input)
  996. {
  997. var query = ViewOrderItemsRepository.GetAll();
  998. query = ApplyFilter(query, input);
  999. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  1000. query = query.OrderByDescending(a => a.SendDate);
  1001. string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
  1002. List<ViewOrderItems> entities;
  1003. //检查查询条件中带有规格且多个分割条件的
  1004. if (!pattern.IsNullOrEmpty())
  1005. {
  1006. var es = query.ToList();
  1007. es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
  1008. totalCount = es.Count;
  1009. entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
  1010. }
  1011. else
  1012. {
  1013. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  1014. entities = await AsyncQueryableExecuter.ToListAsync(query);
  1015. }
  1016. //query = _ApplyPaging(query, input);
  1017. //var entities = await AsyncQueryableExecuter.ToListAsync(query);
  1018. var dtoList = new PagedResultDto<ViewOrderItems>(totalCount, entities);
  1019. return dtoList;
  1020. }
  1021. public async Task<OrderProductProcessDto> QueryOrderProductProcess(int orderItemId)
  1022. {
  1023. OrderProductProcessDto result = new OrderProductProcessDto();
  1024. var rs = OrderProductionRepository.GetAllList(i => i.OrderItemId == orderItemId);
  1025. if (rs.Any())
  1026. {
  1027. var productionNoArr = rs.Select(i => i.ProductionOrderNo);
  1028. List<PackageApply> pas =
  1029. await PackageApplyRepository.GetAllListAsync(i => productionNoArr.Contains(i.ProductionOrderNo));
  1030. List<ProductionOrder> pos = await ProductionOrderRepository.GetAllListAsync(i => productionNoArr.Contains(i.ProductionOrderNo));
  1031. result.PackageApplyList = pas;
  1032. result.ProductionOrderList = pos;
  1033. }
  1034. return result;
  1035. }
  1036. protected IQueryable<T> ApplyFilter<T>(IQueryable<T> query, IwbPagedRequestDto input)
  1037. {
  1038. var pagedInput = input as IIwbPagedRequest;
  1039. if (pagedInput == null)
  1040. {
  1041. return query;
  1042. }
  1043. if (!string.IsNullOrEmpty(pagedInput.KeyWords))
  1044. {
  1045. object keyWords = pagedInput.KeyWords;
  1046. LambdaObject obj = new LambdaObject()
  1047. {
  1048. FieldType = (LambdaFieldType)pagedInput.FieldType,
  1049. FieldName = pagedInput.KeyField,
  1050. FieldValue = keyWords,
  1051. ExpType = (LambdaExpType)pagedInput.ExpType
  1052. };
  1053. var exp = obj.GetExp<T>();
  1054. query = exp != null ? query.Where(exp) : query;
  1055. }
  1056. if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0)
  1057. {
  1058. List<LambdaObject> objList = new List<LambdaObject>();
  1059. foreach (var o in pagedInput.SearchList)
  1060. {
  1061. if (string.IsNullOrEmpty(o.KeyWords))
  1062. continue;
  1063. object keyWords = o.KeyWords;
  1064. //检查查询条件中带有规格且多个分割条件的
  1065. ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
  1066. objList.Add(new LambdaObject
  1067. {
  1068. FieldType = (LambdaFieldType)o.FieldType,
  1069. FieldName = o.KeyField,
  1070. FieldValue = keyWords,
  1071. ExpType = (LambdaExpType)o.ExpType
  1072. });
  1073. }
  1074. var exp = objList.GetExp<T>();
  1075. query = exp != null ? query.Where(exp) : query;
  1076. }
  1077. return query;
  1078. }
  1079. /// <summary>
  1080. /// 分页
  1081. /// </summary>
  1082. /// <param name="query">The query.</param>
  1083. /// <param name="input">The input.</param>
  1084. protected IQueryable<T> _ApplyPaging<T>(IQueryable<T> query, IwbPagedRequestDto input)
  1085. {
  1086. //Try to use paging if available
  1087. var pagedInput = input as IPagedResultRequest;
  1088. if (pagedInput != null)
  1089. {
  1090. return query.PageBy(pagedInput);
  1091. }
  1092. //Try to limit query result if available
  1093. var limitedInput = input as ILimitedResultRequest;
  1094. if (limitedInput != null)
  1095. {
  1096. return query.Take(limitedInput.MaxResultCount);
  1097. }
  1098. //No paging
  1099. return query;
  1100. }
  1101. /// <summary>
  1102. /// 排序
  1103. /// </summary>
  1104. /// <param name="query">The query.</param>
  1105. /// <param name="input">The input.</param>
  1106. protected IQueryable<T> _ApplySorting<T>(IQueryable<T> query, IwbPagedRequestDto input)
  1107. {
  1108. //Try to sort query if available
  1109. var sortInput = input as ISortedResultRequest;
  1110. if (sortInput != null)
  1111. {
  1112. if (!sortInput.Sorting.IsNullOrWhiteSpace())
  1113. {
  1114. return query.OrderBy(sortInput.Sorting);
  1115. }
  1116. }
  1117. //IQueryable.Task requires sorting, so we should sort if Take will be used.
  1118. if (input is ILimitedResultRequest)
  1119. {
  1120. return query.OrderBy("CreationTime DESC");
  1121. }
  1122. //No sorting
  1123. return query;
  1124. }
  1125. public async Task<string> CalcTaxPrice(int type, string input,string rate)
  1126. {
  1127. decimal result = 0;
  1128. try
  1129. {
  1130. decimal inputDec = Convert.ToDecimal(input);
  1131. decimal rateDec = Convert.ToDecimal(rate);
  1132. switch (type)
  1133. {
  1134. case 1:
  1135. result = inputDec / (1 + (rateDec / 100));
  1136. break;
  1137. case 2:
  1138. result = inputDec * (1 + (rateDec / 100));
  1139. break;
  1140. }
  1141. }
  1142. catch (Exception e)
  1143. {
  1144. result = 0;
  1145. }
  1146. return Convert.ToDouble(result).ToString("f3");
  1147. }
  1148. #region 2023
  1149. public async Task<PagedResultDto<ProductionOrderDto>> QueryProductionOrderDtoByProNo(PagedRequestDto input)
  1150. {
  1151. var query = ProductionOrderRepository.GetAll();
  1152. var result = from u in query
  1153. join s in SemiProductRepository.GetAll() on u.SemiProductNo equals s.Id into l
  1154. from luq in l.DefaultIfEmpty()
  1155. select new ProductionOrderDto
  1156. {
  1157. Model = luq.Model ?? "",
  1158. CarNo = u.CarNo,
  1159. EnterQuantity = u.EnterQuantity,
  1160. Id = u.Id,
  1161. ProductionType = u.ProductionType,
  1162. OutsourcingFactory = u.OutsourcingFactory,
  1163. CreatorUserId = u.CreatorUserId,
  1164. IsChecked = u.IsChecked,
  1165. IsLock = u.IsLock,
  1166. Material = luq.Material ?? "",
  1167. PartNo = luq.PartNo ?? "",
  1168. PlanProduceDate = u.PlanProduceDate,
  1169. RawMaterials = u.RawMaterials,
  1170. SurfaceColor = luq.SurfaceColor ?? "",
  1171. Rigidity = luq.Rigidity ?? "",
  1172. Remark = u.Remark,
  1173. UserIDLastMod = u.UserIDLastMod,
  1174. TimeCreated = u.TimeCreated,
  1175. TimeLastMod = u.TimeLastMod,
  1176. Size = u.Size,
  1177. ProcessingType = u.ProcessingType,
  1178. ProcessingLevel = u.ProcessingLevel,
  1179. SourceProductionOrderNo = u.SourceProductionOrderNo,
  1180. StoveNo = u.StoveNo,
  1181. Quantity = u.Quantity,
  1182. ProductionOrderNo = u.ProductionOrderNo,
  1183. ProductionOrderStatus = u.ProductionOrderStatus,
  1184. SemiProductNo = u.SemiProductNo,
  1185. SemiProductName = luq.SemiProductName,
  1186. KgWeight = u.KgWeight,
  1187. EnterDate = u.EnterDate,
  1188. InspectDate = u.InspectDate,
  1189. HasExported = u.HasExported
  1190. };
  1191. var endState = ProductionOrderStatusEnum.End.ToInt();
  1192. result = result.Where(a => (a.ProductionOrderStatus != endState));
  1193. var searchList = input.SearchList;
  1194. if (searchList != null && searchList.Count > 0)
  1195. {
  1196. List<LambdaObject> objList = new List<LambdaObject>();
  1197. foreach (var o in searchList)
  1198. {
  1199. if (o.KeyWords.IsNullOrEmpty())
  1200. continue;
  1201. object keyWords = o.KeyWords;
  1202. if (o.KeyField?.ToLower() == "productno")
  1203. {
  1204. result = result.Where(a => a.SemiProductNo.StartsWith(o.KeyWords));
  1205. }
  1206. }
  1207. }
  1208. var totalCount = await AsyncQueryableExecuter.CountAsync(result);
  1209. result = result.OrderByDescending(i => i.TimeCreated);
  1210. result = result.Skip(input.SkipCount).Take(input.MaxResultCount);
  1211. var dtos = new PagedResultDto<ProductionOrderDto>(
  1212. totalCount,
  1213. result.ToList()
  1214. );
  1215. return dtos;
  1216. }
  1217. public async Task<PagedResultDto<ViewCurrentProductStoreHouse>> QueryViewCurrentProductStoreHouseByProNo(PagedRequestDto input)
  1218. {
  1219. var query = ViewCurrentProductStoreHouseRepository.GetAll();
  1220. var searchList = input.SearchList;
  1221. if (searchList != null && searchList.Count > 0)
  1222. {
  1223. List<LambdaObject> objList = new List<LambdaObject>();
  1224. foreach (var o in searchList)
  1225. {
  1226. if (o.KeyWords.IsNullOrEmpty())
  1227. continue;
  1228. object keyWords = o.KeyWords;
  1229. if (o.KeyField?.ToLower() == "productno")
  1230. {
  1231. query = query.Where(a => a.ProductNo.StartsWith(o.KeyWords));
  1232. }
  1233. }
  1234. }
  1235. query = query.Where(i => i.ActualQuantity > 0);
  1236. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  1237. query = query.OrderByDescending(i => i.TimeCreated);
  1238. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  1239. var dtos = new PagedResultDto<ViewCurrentProductStoreHouse>(
  1240. totalCount,
  1241. query.ToList()
  1242. );
  1243. return dtos;
  1244. }
  1245. public async Task<PagedResultDto<ViewCurrentSemiStoreHouse>> QueryViewCurrentSemiStoreHouseByProNo(PagedRequestDto input)
  1246. {
  1247. var query = ViewCurrentSemiStoreHouseRepository.GetAll();
  1248. var searchList = input.SearchList;
  1249. if (searchList != null && searchList.Count > 0)
  1250. {
  1251. List<LambdaObject> objList = new List<LambdaObject>();
  1252. foreach (var o in searchList)
  1253. {
  1254. if (o.KeyWords.IsNullOrEmpty())
  1255. continue;
  1256. object keyWords = o.KeyWords;
  1257. if (o.KeyField?.ToLower() == "productno")
  1258. {
  1259. query = query.Where(a => a.SemiProductNo.StartsWith(o.KeyWords));
  1260. }
  1261. }
  1262. }
  1263. query = query.Where(i => i.ActualQuantity > 0);
  1264. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  1265. query = query.OrderByDescending(i => i.TimeCreated);
  1266. query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
  1267. var dtos = new PagedResultDto<ViewCurrentSemiStoreHouse>(
  1268. totalCount,
  1269. query.ToList()
  1270. );
  1271. return dtos;
  1272. }
  1273. #endregion
  1274. }
  1275. }