| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253 | 
							- using AutoMapper;
 
- using SqlSugar;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq.Expressions;
 
- using System.Text;
 
- using wms.dto;
 
- using wms.dto.response;
 
- using wms.dto.response.pt;
 
- using wms.service.IService;
 
- using wms.sqlsugar;
 
- using wms.sqlsugar.model;
 
- using wms.sqlsugar.model.pt;
 
- using wms.util.Check;
 
- using wms.util.Ext;
 
- using System.Linq;
 
- using Newtonsoft.Json;
 
- using Microsoft.Extensions.Logging;
 
- using wms.util;
 
- using wms.dto.request.pt;
 
- using wms.dataservice.IDataSetvice;
 
- using wms.dataservice;
 
- using wms.dto.request.pt.dto;
 
- using wms.dto.response.pt.dto;
 
- using wms.util.Http;
 
- using wms.dataservice.DataService;
 
- using NPOI.SS.Formula.Functions;
 
- using wms.dto.request;
 
- using wms.dto.request.share;
 
- using Org.BouncyCastle.Asn1.Ocsp;
 
- using Castle.Core.Internal;
 
- using WCS.Entity;
 
- namespace wms.service.Service
 
- {
 
-     public class PTService : IPTService
 
-     {
 
-         private readonly IMapper _mapper;
 
-         private readonly ILogger<PTService> _logger;
 
-         private readonly IPTDataService _iptDataService;
 
-         public PTService(IMapper mapper, ILogger<PTService> logger, IPTDataService iptDataService)
 
-         {
 
-             _mapper = mapper;
 
-             _logger = logger;
 
-             _iptDataService = iptDataService;
 
-         }
 
-         Repository<ptBaseContainer> _ptbaseContInfo => new Repository<ptBaseContainer>();
 
-         Repository<ptSysConfig> _sysconfigrepository => new Repository<ptSysConfig>();
 
-         Repository<ptBaseMater> _materrepository => new Repository<ptBaseMater>();
 
-         RepositoryTask<ptWCS_TaskInfo> _ptwcsTaskinfo => new RepositoryTask<ptWCS_TaskInfo>();
 
-         Repository<ptBaseWarehouse> _baseWareHouserepository => new Repository<ptBaseWarehouse>();
 
-         Repository<ptBaseWareLocation> _baseWareLocationrepository => new Repository<ptBaseWareLocation>();
 
-         Repository<ptBillDocsinfo> _docrepository => new Repository<ptBillDocsinfo>();
 
-         Repository<ptBillPushinfo> _ptbillPushinfo => new Repository<ptBillPushinfo>();
 
-         RepositoryTask<ptWCS_TaskOld> _ptwcsTaskold => new RepositoryTask<ptWCS_TaskOld>();
 
-         Repository<ptSysJob> _sysJobrepository => new Repository<ptSysJob>();
 
-         Repository<ptSysJobApiRelation> _sysJobApirepository => new Repository<ptSysJobApiRelation>();
 
-         Repository<ptBillInvFlow> _ptBillInvFlow => new Repository<ptBillInvFlow>();
 
-         Repository<ptBillInvnow> _ptbillInvnow => new Repository<ptBillInvnow>();
 
-         Repository<ptBillInvinit> _ptbillInvinit => new Repository<ptBillInvinit>();
 
-         RepositoryTask<ptWCS_TaskDtl> _ptwcsTaskdtl => new RepositoryTask<ptWCS_TaskDtl>();
 
-         Repository<ptBillMesmiddle> _ptbillmes => new Repository<ptBillMesmiddle>();
 
-         //Repository<ptBillPboxrule> _ptBillLocationMap => new Repository<ptBillPboxrule>();
 
-         ITenant _db => SqlSugarHelper.Db;//处理事务
 
-         /// <summary>
 
-         /// 获取配置内容信息
 
-         /// </summary>
 
-         /// <param name="code">配置表code值</param>
 
-         /// <returns></returns>
 
-         public string GetSysConfigContentByCode(string code)
 
-         {
 
-             //先读缓存
 
-             var cacheContent = RedisHelper.Get("sys_config" + code);
 
-             if (!string.IsNullOrEmpty(cacheContent))
 
-             {
 
-                 return cacheContent;
 
-             }
 
-             var sysconf = _sysconfigrepository.GetSingle(p => p.Code == code);
 
-             if (sysconf == null)
 
-             {
 
-                 throw new Exception("数据表没有配置" + code);
 
-             }
 
-             var content = sysconf.SContent;
 
-             string sysname = sysconf.Default1;//所属系统mes/erp
 
-             RedisHelper.Set("sys_config" + code, content + "|" + sysname);
 
-             return content;
 
-         }
 
-         /// <summary>
 
-         /// 获取配置信息
 
-         /// </summary>
 
-         /// <param name="code"></param>
 
-         /// <returns></returns>
 
-         public ptSysConfig GetSysConfigByCode(string code)
 
-         {
 
-             //Repository<dynamic> _billdtrepository = new Repository<dynamic>();
 
-             return _sysconfigrepository.GetSingle(p => p.Code == code);
 
-         }
 
-         /// <summary>
 
-         /// 获取物料信息
 
-         /// </summary>
 
-         /// <param name="code"></param>
 
-         /// <returns></returns>
 
-         public ptBaseMater GetBaseMaterByExpression(Expression<Func<ptBaseMater, bool>> WhereExpression)
 
-         {
 
-             return _materrepository.GetSingle(WhereExpression);
 
-         }
 
-         /// <summary>
 
-         /// 获取配置信息
 
-         /// </summary>
 
-         /// <param name="code"></param>
 
-         /// <returns></returns>
 
-         public ptSysConfig GetSysConfigByExpression(Expression<Func<ptSysConfig, bool>> WhereExpression)
 
-         {
 
-             return _sysconfigrepository.GetSingle(WhereExpression);
 
-         }
 
-         /// <summary>
 
-         /// 获取反馈信息
 
-         /// </summary>
 
-         /// <param name="code"></param>
 
-         /// <returns></returns>
 
-         public List<ptBillPushinfo> GetBillFeedbackList()
 
-         {
 
-             return _ptbillPushinfo.GetList(p => p.PostResult != 1 && p.PostQty <= 5).OrderBy(p => p.AddTime).Take(1).ToList();
 
-         }
 
-         public bool UpdatePuchinfoModelColumns(UpdateModelColumns<ptBillPushinfo> updateModel)
 
-         {
 
-             return _ptbillPushinfo.Update(updateModel.Columns, updateModel.WhereExpression);
 
-         }
 
-         /// <summary>
 
-         /// 更新SysConfig表字段
 
-         /// </summary>
 
-         /// <param name="updateModel"></param>
 
-         /// <returns></returns>
 
-         public bool UpdateSysConfigModelColumns(UpdateModelColumns<ptSysConfig> updateModel)
 
-         {
 
-             return _sysconfigrepository.Update(updateModel.Columns, updateModel.WhereExpression);
 
-         }
 
-         public bool SyncMaterInfo(List<PTSyncMaterInfoResponseItem> ResData)
 
-         {
 
-             foreach (var item in ResData)
 
-             {
 
-                 if (_materrepository.IsAny(p => p.Code == item.MatCode))
 
-                 {
 
-                     _materrepository.UpdateModelColumns(p => new ptBaseMater() { IsHold = item.IsHold, HoldDuration = item.HoldDuration },
 
-                        p => p.Code == item.MatCode);
 
-                 }
 
-                 else
 
-                 {
 
-                     var model = _mapper.Map<ptBaseMater>(item);
 
-                     _materrepository.Insert(model);
 
-                 }
 
-             }
 
-             return true;
 
-         }
 
-         public SRes PurchaseBillTrans(PurchaseBillTransReqest request)
 
-         {
 
-             var result = new SRes();
 
-             if (string.IsNullOrEmpty(request.BillCode))
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 result.ResMsg = "单号" + ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return result;
 
-             }
 
-             if (!request.ListInfo.Any())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.DocDetailNotExist.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.DocDetailNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var warehouse = _baseWareHouserepository.GetSingle(p => p.Code == request.WareCode);
 
-             if (warehouse == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             //存单据
 
-             var doc = _docrepository.GetSingle(p => p.DocsNo == request.BillCode);
 
-             if (doc == null)
 
-             {
 
-                 var docsinfo = new ptBillDocsinfo()
 
-                 {
 
-                     DocsNo = request.BillCode,
 
-                     WarehouseId = warehouse.Id,
 
-                     ReqNo = request.ReqId,
 
-                     Type = request.BillType,
 
-                     StateNum = DocState.DocState_Create.GetHashCode(),
 
-                     IsStop = 0,
 
-                     JsonContent = JsonConvert.SerializeObject(request.ListInfo),
 
-                     DownQty = request.ListInfo.Count,
 
-                     AddWho = "wms",
 
-                     EditWho = "wms"
 
-                 };
 
-                 var code = InsertBillInvinit(request, warehouse);
 
-                 if (code.ResCode == ResponseStatusCodeEnum.Sucess.GetHashCode())
 
-                 {
 
-                     _docrepository.Insert(docsinfo);
 
-                 }
 
-                 else
 
-                 {
 
-                     result.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                     result.ResMsg = "明细存储失败";
 
-                     return result;
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 _docrepository.UpdateModelColumns(p => new ptBillDocsinfo()
 
-                 {
 
-                     JsonContent = JsonConvert.SerializeObject(request.ListInfo),
 
-                     EditTime = DateTime.Now
 
-                 }, p => p.DocsNo == request.BillCode);
 
-             }
 
-             return result;
 
-         }
 
-         private SRes InsertBillInvinit(PurchaseBillTransReqest request, ptBaseWarehouse warehouse)
 
-         {
 
-             var result = new SRes();
 
-             List<ptBillInvinit> invlist = new List<ptBillInvinit>();
 
-             //明细存条码表
 
-             foreach (var item in request.ListInfo)
 
-             {
 
-                 var mater = _materrepository.GetSingle(p => p.Code == item.MatCode);
 
-                 if (mater == null)
 
-                 {
 
-                     result.ResCode = ResponseStatusCodeEnum.BaseMaterCodeNotExist.GetHashCode();
 
-                     result.ResMsg = item.MatCode + ResponseStatusCodeEnum.BaseMaterCodeNotExist.GetDescription();
 
-                     return result;
 
-                 }
 
-                 var invinit = new ptBillInvinit()
 
-                 {
 
-                     WarehouseId = warehouse.Id,
 
-                     ContGrpBarCode = item.RFID,
 
-                     ContGrpId = GetId(),
 
-                     BoxBarCode = item.RFID,
 
-                     BoilerNo = item.BoilerNo,
 
-                     PackNo = item.PackNo,
 
-                     BatchNo = item.Batch,
 
-                     CLBarCode = item.MatBarCode,
 
-                     CaQty = item.Carbon,
 
-                     ProductTime = item.ProductDate,
 
-                     BrandNo = item.Brand,
 
-                     ExecStd = item.ExecStandard,
 
-                     LicenceCode = item.Licence,
 
-                     TolWQty = item.Weight,
 
-                     HoldDuration = item.HoldDuration,
 
-                     Describe = item.Describe,
 
-                     InvStateCode = InvState.InvEcecState_BuildUp.ToString(),
 
-                     InvBarCode = item.MatBarCode,
 
-                     ExecStateCode = InvLockState.InvState_Lock.ToString(),
 
-                     InDocsNo = request.BillCode,
 
-                     InDocsRowNo = request.BillCode,
 
-                     MatId = 1111,
 
-                     MatCode = item.MatCode,
 
-                     RFIDBarCode = item.RFID,
 
-                     HWTypeCode = "",
 
-                     ExecDocsNo = request.BillCode,
 
-                     ExecDocsRowNo = request.BillCode,
 
-                     ExecDocsTypeCode = request.BillType,
 
-                     HWBarCode = item.RFID,
 
-                     RodBarCode = item.RodBar,
 
-                     InvInOut = 1,
 
-                     ExecWho = "",
 
-                     MatName = "",
 
-                     Size = 1,
 
-                     SuppCode = request.SupCode,
 
-                     SuppName = request.SupName
 
-                 };
 
-                 invlist.Add(_mapper.Map<ptBillInvinit>(invinit));
 
-             }
 
-             _ptbillInvinit.InsertRange(invlist);
 
-             return result;
 
-         }
 
-         public SRes PurchaseBillTransFeedBack(PurchaseBillTransFeedBackRequest reqDto)
 
-         {
 
-             var result = new SRes();
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 放行单传输
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         public ErpUnlockStockResponse ErpUnlockStock(ErpUnlockStockRequest reqDto)
 
-         {
 
-             var result = new ErpUnlockStockResponse() { ListInfo = new List<ErpUnlockStockResponseItem>()};
 
-             if (!reqDto.ListInfo.Any())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.DocDetailNotExist.GetHashCode();
 
-                 result.ResMsg = reqDto.BillCode + ResponseStatusCodeEnum.DocDetailNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var inv = _ptbillInvnow.GetList(p => p.InDocsNo == reqDto.BillCode && p.ExecStateCode == InvLockState.InvState_Lock.ToString() && p.InvStateCode == InvState.InvEcecState_In.ToString());
 
-             if (!inv.Any())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                 result.ResMsg = reqDto.BillCode + "不存在库存明细";
 
-                 return result;
 
-             }
 
-             foreach (var item in reqDto.ListInfo)
 
-             {
 
-                 if (inv.Where(p => p.ContGrpBarCode == item.RFID && p.CLBarCode == item.MatBarCode).Any())
 
-                 {
 
-                     var stock = inv.Where(p => p.ContGrpBarCode == item.RFID && p.CLBarCode == item.MatBarCode).First();
 
-                     var flow = _mapper.Map<ptBillInvFlow>(stock);
 
-                     flow.Id = GetId();
 
-                     flow.ExecStateCode = item.State == "Normal" ? InvLockState.InvState_Normal.ToString() : InvLockState.InvState_Lock.ToString();
 
-                     flow.EditTime = DateTime.Now;
 
-                     flow.AddTime = DateTime.Now;
 
-                     try
 
-                     {
 
-                         _db.BeginTran();
 
-                         _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                         {
 
-                             ExecStateCode = item.State == "Normal" ? InvLockState.InvState_Normal.ToString() : InvLockState.InvState_Lock.ToString(),
 
-                             EditTime = DateTime.Now
 
-                         }, p => p.ContGrpBarCode == item.RFID && p.CLBarCode == item.MatBarCode);
 
-                         _ptBillInvFlow.Insert(flow);
 
-                         _db.CommitTran();
 
-                         var erpUnlockStock = new ErpUnlockStockResponseItem()
 
-                         {
 
-                             RFID = item.RFID,
 
-                             MatBarCode = item.MatBarCode,
 
-                             ResState = "S",
 
-                             ResDesc = ""
 
-                         };
 
-                         result.ListInfo.Add(_mapper.Map<ErpUnlockStockResponseItem>(erpUnlockStock));
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         _db.RollbackTran();
 
-                         var erpUnlockStock = new ErpUnlockStockResponseItem()
 
-                         {
 
-                             RFID = item.RFID,
 
-                             MatBarCode = item.MatBarCode,
 
-                             ResState = "E",
 
-                             ResDesc = "放行失败"
 
-                         };
 
-                         result.ListInfo.Add(_mapper.Map<ErpUnlockStockResponseItem>(erpUnlockStock));
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     var unlockStock = new ErpUnlockStockResponseItem()
 
-                     {
 
-                         RFID = item.RFID,
 
-                         MatBarCode = item.MatBarCode,
 
-                         ResState = "E",
 
-                         ResDesc = "未找到该RFID条码"
 
-                     };
 
-                     result.ListInfo.Add(_mapper.Map<ErpUnlockStockResponseItem>(unlockStock));
 
-                     continue;
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 车间自动叫料出库
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         public SRes WcsProductionOutRequest(WcsProductionOutRequest request)
 
-         {
 
-             var result = new SRes();
 
-             var equip = _sysconfigrepository.GetList(p => p.SType == Const.Type);
 
-             var syscom = equip.Where(p => p.Code == request.Endquip).First();
 
-             if (!string.IsNullOrEmpty(syscom.Default1))
 
-             {
 
-                 _sysconfigrepository.UpdateSetColumnsTrue(p => new ptSysConfig()
 
-                 {
 
-                     Default1 = "",
 
-                     EditTime = DateTime.Now
 
-                 }, p => p.Code == request.Endquip);
 
-             }
 
-             var mesRequest = _ptbillmes.GetList();
 
-             foreach (var item in mesRequest)
 
-             {
 
-                
 
-             }
 
-             //添加单据
 
-             //var doc = _docrepository.GetSingle(p => p.DocsNo == mesRequest.BillCode);
 
-             //if (doc == null)
 
-             //{
 
-             //    var docsinfo = new ptBillDocsinfo()
 
-             //    {
 
-             //        DocsNo = mesRequest.BillCode,
 
-             //        WarehouseId = 1685164446336552960,
 
-             //        ReqNo = GetId().ToString(),
 
-             //        TypeNum = PtDocType.DocType_PT_ProductionStockOut.ToString(),
 
-             //        StateNum = DocState.DocState_Create.GetHashCode(),
 
-             //        IsStop = 0,
 
-             //        JsonContent = JsonConvert.SerializeObject(mesRequest),
 
-             //        AddWho = "wms",
 
-             //        EditWho = "wms"
 
-             //    };
 
-             //    _docrepository.Insert(docsinfo);
 
-             //}
 
-             //else
 
-             //{
 
-             //    _docrepository.UpdateModelColumns(p => new ptBillDocsinfo()
 
-             //    {
 
-             //        JsonContent = JsonConvert.SerializeObject(mesRequest),
 
-             //        EditTime = DateTime.Now
 
-             //    }, p => p.DocsNo == mesRequest.BillCode);
 
-             //}
 
-             //申请出库
 
-             //var res = ApplyProductionStockOut(_mapper.Map<ProductionStockOutRequest>(mesRequest));
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 生产领料出库
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         public SRes ProductionStockOut(ProductionStockOutRequest reqDto)
 
-         {
 
-             var result = new SRes();
 
-             var ware = _baseWareHouserepository.GetSingle(p => p.Code == reqDto.WareCode);
 
-             if (ware == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 result.ResMsg = reqDto.WareCode + ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             if (string.IsNullOrEmpty(reqDto.BillCode) || string.IsNullOrEmpty(reqDto.MatCode))
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 result.ResMsg = "单号与物料编码不可为空";
 
-                 return result;
 
-             }
 
-             //var mesRequest = new ptBillMesmiddle()
 
-             //{
 
-             //    BillCode = reqDto.BillCode,
 
-             //    PackNo = reqDto.PackNo,
 
-             //    MatCode = reqDto.MatCode,
 
-             //    MatBarCode = reqDto.MatBarCode,
 
-             //    BoilerNo = reqDto.BoilerNo,
 
-             //    WareCode = reqDto.WareCode
 
-             //};
 
-             //_ptbillmes.Insert(mesRequest);
 
-             //添加单据
 
-             var doc = _docrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
 
-             if (doc == null)
 
-             {
 
-                 var docsinfo = new ptBillDocsinfo()
 
-                 {
 
-                     DocsNo = reqDto.BillCode,
 
-                     WarehouseId = ware.Id,
 
-                     ReqNo = GetId().ToString(),
 
-                     Type = PtDocType.DocType_PT_ProductionStockOut.ToString(),
 
-                     StateNum = DocState.DocState_Create.GetHashCode(),
 
-                     IsStop = 0,
 
-                     JsonContent = JsonConvert.SerializeObject(reqDto),
 
-                     AddWho = "wms",
 
-                     EditWho = "wms"
 
-                 };
 
-                 _docrepository.Insert(docsinfo);
 
-             }
 
-             else
 
-             {
 
-                 _docrepository.UpdateModelColumns(p => new ptBillDocsinfo()
 
-                 {
 
-                     JsonContent = JsonConvert.SerializeObject(reqDto),
 
-                     EditTime = DateTime.Now
 
-                 }, p => p.DocsNo == reqDto.BillCode);
 
-             }
 
-             //申请出库
 
-             result = ApplyProductionStockOut(reqDto);
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 申请出库
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         private SRes ApplyProductionStockOut(ProductionStockOutRequest request)
 
-         {
 
-             var res = new SRes();
 
-             //考虑巷道剩余空轮数量
 
-             var locationlist = from loc in _baseWareLocationrepository.GetList(p => p.IsStop == 0 && p.StateNum == LocationState.LocationState_Full.GetHashCode())
 
-                                join stock in _ptbillInvnow.GetList(p => p.InvStateCode == InvState.InvEcecState_In.ToString() && p.ExecStateCode == InvLockState.InvState_Normal.ToString())
 
-                                on loc.ContGrpBarCode equals stock.ContGrpBarCode
 
-                                orderby stock.ProductTime
 
-                                select new
 
-                                {
 
-                                    stock.MatCode,
 
-                                    stock.InvBarCode,
 
-                                    stock.BoilerNo,
 
-                                    stock.RodBarCode,
 
-                                    stock.Grade,
 
-                                    stock.PackNo,
 
-                                    stock.InvStateCode,
 
-                                    stock.ProductTime,
 
-                                    loc.Col,
 
-                                    loc.Layer,
 
-                                    loc.Shelf,
 
-                                    loc.Depth,
 
-                                    loc.Code,
 
-                                    loc.Tunnel,
 
-                                    loc.WarehouseCode,
 
-                                    loc.ContGrpBarCode,
 
-                                    loc.Id,
 
-                                    loc.StateNum,
 
-                                };
 
-             if (!string.IsNullOrEmpty(request.MatCode))
 
-             {
 
-                 locationlist = locationlist.Where(p => p.MatCode == request.MatCode);
 
-             }
 
-             if (!string.IsNullOrEmpty(request.MatBarCode))
 
-             {
 
-                 locationlist = locationlist.Where(p => p.InvBarCode == request.MatBarCode);
 
-             }
 
-             if (!string.IsNullOrEmpty(request.BoilerNo))
 
-             {
 
-                 locationlist = locationlist.Where(p => p.BoilerNo == request.BoilerNo);
 
-             }
 
-             if (!string.IsNullOrEmpty(request.PackNo))
 
-             {
 
-                 locationlist = locationlist.Where(p => p.PackNo == request.PackNo);
 
-             }
 
-             if (locationlist == null || !locationlist.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.NotEnoughStock.GetHashCode();
 
-                 res.ResMsg = request.MatCode + "|" + request.BoilerNo + ResponseStatusCodeEnum.NotEnoughStock.GetDescription();
 
-                 return res;
 
-             }
 
-             if (string.IsNullOrEmpty(request.BoilerNo))
 
-             {
 
-                 //多个炉号业务处理
 
-                 var boilernum = locationlist.Select(p => new { p.BoilerNo, p.ProductTime } ).Distinct().OrderBy(p => p.ProductTime).ToList();
 
-                 if (boilernum.Count() > 1)
 
-                 {
 
-                     List<string> boils = new List<string>();
 
-                     for (int i = 0; i < boilernum.Count(); i++)
 
-                     {
 
-                         var boil = boilernum;
 
-                         foreach (var item in boil)
 
-                         {
 
-                             if (item.BoilerNo == boilernum[i].BoilerNo)
 
-                             {
 
-                                 continue;
 
-                             }
 
-                             if (DateTime.Equals(boilernum[i].ProductTime, item.ProductTime))
 
-                             {
 
-                                 boils.Add(item.BoilerNo);
 
-                             }
 
-                         }
 
-                     }
 
-                     boils = boils.Distinct().ToList();
 
-                     if (boils.Any())
 
-                     {
 
-                         //多个炉号的生产时间在同一天的
 
-                         locationlist = locationlist.Where(p => boils.Contains(p.BoilerNo)).GroupBy(p => p.BoilerNo).OrderBy(p => p.Count()).First();
 
-                     }
 
-                     else
 
-                     {
 
-                         var loca = locationlist.OrderBy(p => p.ProductTime).First();
 
-                         locationlist = locationlist.Where(p => p.BoilerNo == loca.BoilerNo).OrderBy(p => p.PackNo);
 
-                     }
 
-                    
 
-                 }
 
-             }
 
-             //出库任务
 
-             var temploc = locationlist.First();
 
-             var outstation = "";
 
-             switch (temploc.Tunnel)
 
-             {
 
-                 case 1:
 
-                     outstation = "";
 
-                     break;
 
-                 case 2:
 
-                     outstation = "";
 
-                     break;
 
-                 case 3:
 
-                     outstation = "";
 
-                     break;
 
-                 case 4:
 
-                     outstation = "";
 
-                     break;
 
-                 case 5:
 
-                     outstation = "";
 
-                     break;
 
-                 case 6:
 
-                     outstation = "";
 
-                     break;
 
-                 case 7:
 
-                     outstation = "";
 
-                     break;
 
-                 case 8:
 
-                     outstation = "";
 
-                     break;
 
-                 default:
 
-                     break;
 
-             }
 
-             var sotck = _ptbillInvnow.GetFirst(p => p.ContGrpBarCode == temploc.ContGrpBarCode && p.InvStateCode == InvState.InvEcecState_In.ToString() && p.ExecStateCode == InvLockState.InvState_Normal.ToString());
 
-             try
 
-             {
 
-                 _db.BeginTran();
 
-                 //货位表
 
-                 _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_StockOut.GetHashCode() }, p => p.Id == temploc.Id);
 
-                 //库存表
 
-                 _ptbillInvnow.UpdateModelColumns(p => new ptBillInvnow() { InvStateCode = InvState.InvEcecState_OutGoing.ToString(), EditTime = DateTime.Now }, p => p.Id == sotck.Id);
 
-                 var invflow = _mapper.Map<ptBillInvFlow>(sotck);
 
-                 invflow.InvStateCode = InvState.InvEcecState_OutGoing.ToString();
 
-                 invflow.AddTime = DateTime.Now;
 
-                 invflow.Id = IdFactory.NewId();
 
-                 _ptBillInvFlow.Insert(invflow);
 
-                 //添加出库任务
 
-                 CreateStockOutTask(new PtCreateStockOutTaskRequest()
 
-                 {
 
-                     ContGrpBarCode = temploc.ContGrpBarCode,
 
-                     CellNo = temploc.Code,
 
-                     EquCode = outstation,
 
-                     Qty = sotck.LengthQty,
 
-                     Tunnel = temploc.Tunnel.ToString(),
 
-                     WarehouseCode = temploc.WarehouseCode,
 
-                     MatCode = request.MatCode,
 
-                     InvBarCode = request.MatBarCode,
 
-                     BusType = PtTaskBusType.TaskBusType_PT_ProductionStockOut.GetDescription(),
 
-                     DocNo = request.BillCode
 
-                 });
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 _logger.LogInformation(ex.ToString());
 
-                 res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.DataSaveErr.GetDescription();
 
-                 return res;
 
-             }
 
-             return res;
 
-         }
 
-         private SRes<ptWCS_TaskInfo> CreateStockOutTask(PtCreateStockOutTaskRequest reqDto)
 
-         {
 
-             var res = new SRes<ptWCS_TaskInfo>();
 
-             var wcstask = new ptWCS_TaskInfo()
 
-             {
 
-                 Type = TaskType.OutDepot,
 
-                 Status = TaskStatus.NewBuild,
 
-                 Priority = 0,
 
-                 Device = "SRM" + reqDto.Tunnel,
 
-                 SrmStation = reqDto.EquCode,
 
-                 AddrFrom = reqDto.CellNo,
 
-                 AddrTo = reqDto.EquCode,
 
-                 LastInteractionPoint = "",
 
-                 BarCode = reqDto.ContGrpBarCode,
 
-                 Length = reqDto.Qty,
 
-                 AddTime = DateTime.Now,
 
-                 StartTime = DateTime.Now,
 
-                 DocID = int.Parse(reqDto.DocNo),
 
-                 PalletType = 1,
 
-                 ProdLine = 0,
 
-                 AddWho = "wms",
 
-                 WarehouseCode = reqDto.WarehouseCode,
 
-                 Enabled = true,
 
-                 Tunnel = reqDto.Tunnel,
 
-                 BusType = reqDto.BusType,
 
-                 MatCode = reqDto.MatCode,
 
-                 MaterialCode = reqDto.MatCode,
 
-                 InvBarCode = reqDto.InvBarCode
 
-             };
 
-             try
 
-             {
 
-                 _db.BeginTran();
 
-                 var task = _ptwcsTaskinfo.InsertReturnEntity(wcstask);
 
-                 var taskold = _mapper.Map<ptWCS_TaskOld>(task);
 
-                 _ptwcsTaskold.InsertableSplitTable(taskold);
 
-                 var taskdetail = new ptWCS_TaskDtl()
 
-                 {
 
-                     ID = Guid.NewGuid(),
 
-                     CurPoint = reqDto.CellNo,
 
-                     AddTime = DateTime.Now,
 
-                     AddWho = "wms",
 
-                     Enabled = true,
 
-                     ParentTaskCode = task.ID,
 
-                     Desc = reqDto.CellNo + "生产领料出库",
 
-                 };
 
-                 _ptwcsTaskdtl.InsertableSplitTable(taskdetail);
 
-                 _db.CommitTran();
 
-                 res.ResData = task;
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.DataSaveErr.GetDescription();
 
-                 _logger.LogInformation("保存任务异常:" + ex.ToString());
 
-                 return res;
 
-             }
 
-             return res;
 
-         }
 
-         public SRes ProductionFeedBack(ProductionFeedBackRequest reqDto)
 
-         {
 
-             var result = new SRes();
 
-             return result;
 
-         }
 
-         public SRes StockChange(PtStockChangeRequest reqDto)
 
-         {
 
-             var result = new SRes();
 
-             if (!reqDto.ListInfo.Any())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.DocDetailNotExist.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.DocDetailNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var ware = _baseWareHouserepository.GetSingle(p => p.Code == reqDto.WareCode);
 
-             if (ware == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 result.ResMsg = reqDto.WareCode + ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var doc = _docrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
 
-             if (doc == null)
 
-             {
 
-                 var docno = new ptBillDocsinfo()
 
-                 {
 
-                     DocsNo = reqDto.BillCode,
 
-                     IsStop = 0,
 
-                     WarehouseId = ware.Id,
 
-                     ReqNo = reqDto.ReqId,
 
-                     Type = PtDocType.DocType_PT_StateTrans.ToString(),
 
-                     StateNum = DocState.DocState_Create.GetHashCode(),
 
-                     JsonContent = JsonConvert.SerializeObject(reqDto.ListInfo),
 
-                     AddWho = "mes",
 
-                     EditWho = "mes"
 
-                 };
 
-                 _docrepository.Insert(docno);
 
-             }
 
-             foreach (var item in reqDto.ListInfo)
 
-             {
 
-                 var puch = new ptBillPushinfo()
 
-                 {
 
-                     DocsNo = reqDto.BillCode,
 
-                     TypeCode = PtFackbeekType.StateTrans.ToString(),
 
-                     RFIDBarCode = item.RFID,
 
-                     HWBarCode = item.RFID,
 
-                     CLBarCode = item.MatBarCode,
 
-                     WarehouseId = ware.Id,
 
-                     WarehouseCode = ware.Code,
 
-                     ReqNo = Guid.NewGuid().ToString(),
 
-                     BoilerNo = item.BoilerNo,
 
-                     PackNo = item.PackNo
 
-                 };
 
-                 var stock = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item.RFID);
 
-                 if (stock == null)
 
-                 {
 
-                     puch.ResStateCode = "E";
 
-                     puch.ResDesc = item.RFID + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                     _ptbillPushinfo.Insert(puch);
 
-                     continue;
 
-                 }
 
-                 else
 
-                 {
 
-                     if (stock.InvStateCode == InvState.InvEcecState_In.ToString() || stock.InvStateCode == InvState.InvEcecState_BuildUp.ToString())
 
-                     {
 
-                         if (item.State == "Lock" || item.State == "Normal")
 
-                         {
 
-                             var it = _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                             {
 
-                                 ExecStateCode = item.State == "Lock" ? InvLockState.InvState_Lock.ToString() : InvLockState.InvState_Normal.ToString(),
 
-                                 EditTime = DateTime.Now,
 
-                                 BoilerNo = item.BoilerNo,
 
-                                 PackNo = item.PackNo,
 
-                                 Memo = item.Reason
 
-                             }, p => p.ContGrpBarCode == item.RFID);
 
-                             var nov = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item.RFID);
 
-                             var flow = _mapper.Map<ptBillInvFlow>(nov);
 
-                             flow.Id = GetId();
 
-                             flow.AddTime = DateTime.Now;
 
-                             flow.EditTime = DateTime.Now;
 
-                             puch.ResStateCode = "S";
 
-                             puch.ResDesc = "成功";
 
-                             _ptbillPushinfo.Insert(puch);
 
-                             _ptBillInvFlow.Insert(flow);
 
-                             continue;
 
-                         }
 
-                         else
 
-                         {
 
-                             _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                             {
 
-                                 IsFast = item.State == "Fast" ? true : false,
 
-                                 EditTime = DateTime.Now,
 
-                                 BoilerNo = item.BoilerNo,
 
-                                 PackNo = item.PackNo,
 
-                                 Memo = item.Reason
 
-                             }, p => p.ContGrpBarCode == item.RFID);
 
-                             var nov = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item.RFID);
 
-                             var flow = _mapper.Map<ptBillInvFlow>(nov);
 
-                             flow.Id = GetId();
 
-                             flow.AddTime = DateTime.Now;
 
-                             flow.EditTime = DateTime.Now;
 
-                             puch.ResStateCode = "S";
 
-                             puch.ResDesc = "成功";
 
-                             _ptbillPushinfo.Insert(puch);
 
-                             _ptBillInvFlow.Insert(flow);
 
-                             continue;
 
-                         }
 
-                     }
 
-                     //堆垛机还未上报放货完成
 
-                     else if (stock.InvStateCode == InvState.InvEcecState_OutGoing.ToString() && stock.PutRow != 0 && stock.PutCol != 0 && stock.PutLayer != 0)
 
-                     {
 
-                         if (item.State == "Lock" || item.State == "Normal")
 
-                         {
 
-                             _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                             {
 
-                                 ExecStateCode = item.State == "Lock" ? InvLockState.InvState_Lock.ToString() : InvLockState.InvState_Normal.ToString(),
 
-                                 EditTime = DateTime.Now,
 
-                                 BoilerNo = item.BoilerNo,
 
-                                 PackNo = item.PackNo,
 
-                                 Memo = item.Reason,
 
-                                 InvStateCode = InvState.InvEcecState_In.ToString()
 
-                             }, p => p.ContGrpBarCode == item.RFID);
 
-                             var nov = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item.RFID);
 
-                             var flow = _mapper.Map<ptBillInvFlow>(nov);
 
-                             flow.Id = GetId();
 
-                             flow.AddTime = DateTime.Now;
 
-                             flow.EditTime = DateTime.Now;
 
-                             puch.ResStateCode = "S";
 
-                             puch.ResDesc = "成功";
 
-                             _ptbillPushinfo.Insert(puch);
 
-                             _ptBillInvFlow.Insert(flow);
 
-                             //出库任务取消
 
-                             continue;
 
-                         }
 
-                         else
 
-                         {
 
-                             _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                             {
 
-                                 IsFast = item.State == "Fast" ? true : false,
 
-                                 EditTime = DateTime.Now,
 
-                                 BoilerNo = item.BoilerNo,
 
-                                 PackNo = item.PackNo,
 
-                                 Memo = item.Reason,
 
-                                 InvStateCode = InvState.InvEcecState_In.ToString()
 
-                             }, p => p.ContGrpBarCode == item.RFID);
 
-                             var nov = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item.RFID);
 
-                             var flow = _mapper.Map<ptBillInvFlow>(nov);
 
-                             flow.Id = GetId();
 
-                             flow.AddTime = DateTime.Now;
 
-                             flow.EditTime = DateTime.Now;
 
-                             puch.ResStateCode = "S";
 
-                             puch.ResDesc = "成功";
 
-                             _ptbillPushinfo.Insert(puch);
 
-                             _ptBillInvFlow.Insert(flow);
 
-                             //出库任务取消
 
-                             continue;
 
-                         }
 
-                     }
 
-                     //已上报放货完成
 
-                     else if (stock.InvStateCode == InvState.InvEcecState_OutGoing.ToString() && stock.PutRow == 0 && stock.PutCol == 0 && stock.PutLayer == 0)
 
-                     {
 
-                         
 
-                     }
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-         public SRes ProductionBack(ProductionBackRequest reqDto)
 
-         {
 
-             var result = new SRes();
 
-             if (!reqDto.ListInfo.Any() || string.IsNullOrEmpty(reqDto.BillCode) || string.IsNullOrEmpty(reqDto.WareCode))
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return result;
 
-             }
 
-             var ware = _baseWareHouserepository.GetSingle(p => p.Code == reqDto.WareCode);
 
-             if (ware == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var doc = _docrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
 
-             if (doc == null)
 
-             {
 
-                 var docno = new ptBillDocsinfo()
 
-                 {
 
-                     DocsNo = reqDto.BillCode,
 
-                     IsStop = 0,
 
-                     WarehouseId = ware.Id,
 
-                     ReqNo = reqDto.BillCode,
 
-                     Type = PtDocType.DocType_PT_ProductionBackStockIn.ToString(),
 
-                     StateNum = DocState.DocState_Create.GetHashCode(),
 
-                     JsonContent = JsonConvert.SerializeObject(reqDto.ListInfo),
 
-                     AddWho = "mes",
 
-                     EditWho = "mes"
 
-                 };
 
-                 _docrepository.Insert(docno);
 
-             }
 
-             foreach (var item in reqDto.ListInfo)
 
-             {
 
-                 var flowold = _ptBillInvFlow.AsQueryable().Where(p => p.ContGrpBarCode == item.RFID).OrderByDescending(p => p.EditTime).First();
 
-                 var mater = _materrepository.GetSingle(p => p.Code == flowold.MatCode);
 
-                 var nov = new ptBillInvnow()
 
-                 {
 
-                     WarehouseId = ware.Id,
 
-                     ContGrpBarCode = item.RFID,
 
-                     ContGrpId = GetId(),
 
-                     BoxBarCode = item.RFID,
 
-                     BoilerNo = item.BoilerNo,
 
-                     PackNo = item.PackNo,
 
-                     CLBarCode = item.MatBarCode,
 
-                     InvStateCode = InvState.InvEcecState_BuildUp.ToString(),
 
-                     InvBarCode = item.MatBarCode,
 
-                     ExecStateCode = item.State == "Lock" ? InvLockState.InvState_Lock.ToString() : InvLockState.InvState_Normal.ToString(),
 
-                     InDocsNo = reqDto.BillCode,
 
-                     InDocsRowNo = reqDto.BillCode,
 
-                     MatId = mater.Id,
 
-                     MatCode = mater.Code,
 
-                     RFIDBarCode = item.RFID,
 
-                     HWTypeCode = mater.SpoolType,
 
-                     ExecDocsNo = reqDto.BillCode,
 
-                     ExecDocsRowNo = reqDto.BillCode,
 
-                     ExecDocsTypeCode = PtDocType.DocType_PT_ProductionBackStockIn.ToString(),
 
-                     HWBarCode = item.RFID,
 
-                     RodBarCode = item.RFID,
 
-                     InvInOut = 1,
 
-                     MatName = mater.Name,
 
-                     Size = 1,
 
-                     IsBack = true
 
-                 };
 
-                 var task = new ptWCS_TaskInfo()
 
-                 {
 
-                     Status = TaskStatus.NewBuild,
 
-                     Type = TaskType.EnterDepot,
 
-                     Priority = 0,
 
-                     Device = item.LocCode,
 
-                     SrmStation = item.LocCode,
 
-                     AddrFrom = item.LocCode,
 
-                     BarCode = item.RFID,
 
-                     StartTime = DateTime.Now,
 
-                     AddTime = DateTime.Now,
 
-                     EditTime = DateTime.Now,
 
-                     AddWho = "wms",
 
-                     EditWho = "wms",
 
-                     WarehouseCode = ware.Code,
 
-                     WorkBench = item.LocCode,
 
-                     AddrTo = "",
 
-                     Tunnel = "",
 
-                     PalletType = 1,
 
-                     MaterialCode = mater.Code,
 
-                     MatCode = mater.Code,
 
-                     BusType = PtTaskBusType.TaskBusType_PT_ProductionBackStockIn.GetDescription()
 
-                 };
 
-                 try
 
-                 {
 
-                     _db.BeginTran();
 
-                     _ptbillInvnow.Insert(nov);
 
-                     _ptBillInvFlow.Insert(_mapper.Map<ptBillInvFlow>(nov));
 
-                     var wcs = _ptwcsTaskinfo.InsertReturnEntity(task);
 
-                     var wcsold = _mapper.Map<ptWCS_TaskOld>(wcs);
 
-                     _ptwcsTaskold.InsertableSplitTable(wcsold);
 
-                     var taskdetail = new ptWCS_TaskDtl()
 
-                     {
 
-                         ID = Guid.NewGuid(),
 
-                         CurPoint = item.LocCode,
 
-                         AddTime = DateTime.Now,
 
-                         AddWho = "wms",
 
-                         Enabled = true,
 
-                         ParentTaskCode = wcs.ID,
 
-                         Desc = wcs.BusType
 
-                     };
 
-                     _ptwcsTaskdtl.InsertableSplitTable(taskdetail);
 
-                     _db.CommitTran();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _db.RollbackTran();
 
-                     result.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                     result.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                     return result;
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-         public PTGetCurStockListResponse GetCurStockList(PtGetCurStockListRequest reqDto)
 
-         {
 
-             var result = new PTGetCurStockListResponse() { list = new List<PtResDataItem>() };
 
-             int count = 0;
 
-             var stock = _ptbillInvnow.Context.Queryable<ptBillInvnow, ptBaseMater>((inv, mater) => new object[]
 
-                         {
 
-                             JoinType.Left, inv.MatCode == mater.Code
 
-                         })
 
-                         .Where((inv, mater) => inv.InvStateCode == InvState.InvEcecState_In.ToString())
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.MatCode), (inv, mater) => inv.MatCode.Contains(reqDto.MatCode))
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.MatName), (inv, mater) => inv.MatName.Contains(reqDto.MatName))
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.BoilerNo), (inv, mater) => inv.BoilerNo.Contains(reqDto.BoilerNo))
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.RFID), (inv, mater) => inv.ContGrpBarCode.Contains(reqDto.RFID))
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.MatBarCode), (inv, mater) => inv.InvBarCode.Contains(reqDto.MatBarCode))
 
-                         .WhereIF(string.IsNullOrEmpty(reqDto.Batch), (inv, mater) => inv.BatchNo.Contains(reqDto.Batch))
 
-                         .Select((inv, mater) => new PtResDataItem()
 
-                         {
 
-                             RFID = inv.ContGrpBarCode,
 
-                             RodBar = inv.RodBarCode,
 
-                             BoilerNo = inv.BoilerNo,
 
-                             MatBarCode = inv.InvBarCode,
 
-                             PackNo = inv.PackNo,
 
-                             Batch = inv.BatchNo,
 
-                             Carbon = inv.CaQty,
 
-                             ProductDate = inv.ProductTime,
 
-                             Brand = inv.BrandNo,
 
-                             Describe = inv.Describe,
 
-                             ExecStandard = inv.ExecStd,
 
-                             Licence = inv.LicenceCode,
 
-                             PackWeight = inv.TolWQty,
 
-                             FigureNo = mater.FigureNo,
 
-                             ComCode = mater.ComCode,
 
-                             ComName = mater.ComName,
 
-                             CalcUnit = mater.CalcUnit,
 
-                             StockUnit = mater.StockUnit,
 
-                             Weight = mater.Weight,
 
-                             WeightUnit = mater.WeightUnit,
 
-                             IsHold = mater.IsHold,
 
-                             HoldDuration = inv.HoldDuration,
 
-                             LocCell = inv.PutCol.ToString(),
 
-                             LocLayer = inv.PutLayer.ToString(),
 
-                             LocRow = inv.PutRow.ToString(),
 
-                             LocCode = inv.PutRow.ToString() + inv.PutCol.ToString() + inv.PutLayer.ToString(),
 
-                             WareCode = "pthouse"
 
-                         })
 
-                         .ToPageList(reqDto.PageIndex, reqDto.PageSize, ref count);
 
-             result.TotalCount = stock.Count();
 
-             result.list = stock;
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 采购入库任务
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         public SRes PtPurchaseTask(PtUnboundRequest request)
 
-         {
 
-             var result = new SRes();
 
-             try
 
-             {
 
-                 var stock = new ptBillInvnow()
 
-                 {
 
-                     WarehouseId = 1685164446336552960,
 
-                     ContGrpBarCode = "Test" + DateTime.Now.ToString("hhmmssfff"),
 
-                     ContGrpId = GetId(),
 
-                     InvStateCode = InvState.InvEcecState_BuildUp.ToString(),
 
-                     ExecStateCode = InvLockState.InvState_Lock.ToString()
 
-                 };
 
-                 var task = new ptWCS_TaskInfo()
 
-                 {
 
-                     Status = TaskStatus.NewBuild,
 
-                     Type = TaskType.EnterDepot,
 
-                     Priority = 0,
 
-                     Device = request.Equip,
 
-                     SrmStation = request.Equip,
 
-                     AddrFrom = request.Equip,
 
-                     BarCode = stock.ContGrpBarCode,
 
-                     StartTime = DateTime.Now,
 
-                     AddTime = DateTime.Now,
 
-                     EditTime = DateTime.Now,
 
-                     AddWho = "wms",
 
-                     EditWho = "wms",
 
-                     WarehouseCode = Const.PtWareHouse,
 
-                     WorkBench = request.Equip,
 
-                     AddrTo = "",
 
-                     Tunnel = "",
 
-                     PalletType = 1,
 
-                     MaterialCode = "",
 
-                     BusType = PtTaskBusType.TaskBusType_PT_PurchaseStockIn.GetDescription()
 
-                 };
 
-                 _db.BeginTran();
 
-                 _ptbillInvnow.Insert(stock);
 
-                 var wcs = _ptwcsTaskinfo.InsertReturnEntity(task);
 
-                 var wcsold = _mapper.Map<ptWCS_TaskOld>(wcs);
 
-                 _ptwcsTaskold.InsertableSplitTable(wcsold);
 
-                 var taskdetail = new ptWCS_TaskDtl()
 
-                 {
 
-                     ID = Guid.NewGuid(),
 
-                     CurPoint = request.Equip,
 
-                     AddTime = DateTime.Now,
 
-                     AddWho = "wms",
 
-                     Enabled = true,
 
-                     ParentTaskCode = wcs.ID,
 
-                     Desc = wcs.BusType
 
-                 };
 
-                 _ptwcsTaskdtl.InsertableSplitTable(taskdetail);
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 result.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.DataSaveErr.GetDescription() + ex.Message;
 
-                 return result;
 
-             }
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 生成库存
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         public SRes InsertStockInfo(string code)
 
-         {
 
-             var result = new SRes();
 
-             //查询条码表
 
-             var barcode = _ptbillInvinit.GetSingle(p => p.ContGrpBarCode == code);
 
-             if (barcode == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.BaseBarcodeNotExist.GetHashCode();
 
-                 result.ResMsg = code + ResponseStatusCodeEnum.BaseBarcodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var invlist = _ptbillInvnow.GetList(p => p.ContGrpBarCode.StartsWith("Test"));
 
-             if (!invlist.Any())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                 result.ResMsg = code + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var inv = invlist.First();
 
-             var stock = _mapper.Map<ptBillInvnow>(barcode);
 
-             stock.AddTime = DateTime.Now;
 
-             stock.EditTime = DateTime.Now;
 
-             try
 
-             {
 
-                 _db.BeginTran();
 
-                 _ptbillInvnow.DeleteById(inv.Id);
 
-                 _ptbillInvnow.Insert(stock);
 
-                 _ptBillInvFlow.Insert(_mapper.Map<ptBillInvFlow>(stock));
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 result.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                 result.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                 return result;
 
-             }
 
-             return result;
 
-         }
 
-         private long GetId()
 
-         {
 
-             return IdFactory.NewId();
 
-         }
 
-         public SRes<int> Unbounding(PtUnboundRequest request)
 
-         {
 
-             var res = new SRes<int>() { ResCode = 500 };
 
-             var task = _ptwcsTaskinfo.GetList(p => p.AddrFrom == request.Equip && p.Status < TaskStatus.Finish);
 
-             if (task.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.IsTaskNotUnbounding.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.IsTaskNotUnbounding.GetDescription();
 
-                 return res;
 
-             }
 
-             var equip = _baseWareLocationrepository.GetSingle(p => p.Code == request.Equip);
 
-             if (equip == null)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.EquipInfoNotExist.GetDescription();
 
-                 return res;
 
-             }
 
-             var stock = _iptDataService.GetStockByEquip(request.Equip);
 
-             if (stock.Any())
 
-             {
 
-                 _baseWareLocationrepository.UpdateSetColumnsTrue(p => new ptBaseWareLocation()
 
-                 {
 
-                     ContGrpId = Const.Zero,
 
-                     ContGrpBarCode = "",
 
-                     EditTime = DateTime.Now
 
-                 }, p => request.Equip == p.Code);
 
-                 _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                 {
 
-                     InvStateCode = InvState.InvEcecState_Out.ToString(),
 
-                     EditTime = DateTime.Now
 
-                 }, p => stock.Contains(p.HWBarCode));
 
-                 res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
 
-             }
 
-             else
 
-             {
 
-                 res.ResMsg = ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-             }
 
-             return res;
 
-         }
 
-         public SRes<PtDocumentsdetailList> GetDocumentDetailListByDocsNo(PtDocumentsRequest request)
 
-         {
 
-             var res = new SRes<PtDocumentsdetailList>() { ResDataList = new List<PtDocumentsdetailList>() };
 
-             var list = _iptDataService.GetDocumentDetailListByDocsNo(request);
 
-             res.ResDataList = list.Item1;
 
-             res.ToCount = list.Item2;
 
-             res.PageIndex = request.PageIndex;
 
-             res.PageSize = request.PageSize;
 
-             res.PageNumber = Math.Ceiling((decimal)res.ToCount / res.PageSize);
 
-             return res;
 
-         }
 
-         public SRes<PtDocumentsResponse> GetPageDocumentsList(PtDocumentsRequest request)
 
-         {
 
-             var res = new SRes<PtDocumentsResponse>() { ResDataList = new List<PtDocumentsResponse>() };
 
-             if (request.TypeCode == null)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 res.ResMsg = "单据类型" + ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return res;
 
-             }
 
-             var list = _iptDataService.GetPageDocumentsList(request);
 
-             res.ResDataList = list.Item1;
 
-             res.ToCount = list.Item2;
 
-             res.PageIndex = request.PageIndex;
 
-             res.PageSize = request.PageSize;
 
-             res.PageNumber = Math.Ceiling((decimal)res.ToCount / res.PageSize);
 
-             return res;
 
-         }
 
-         public string ManualTask(PtManualTaskRequest request)
 
-         {
 
-             var res = new SRes();
 
-             if (!request.Location.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 res.ResMsg = "货位" + ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return res.ToCamelCaseString();
 
-             }
 
-             try
 
-             {
 
-                 foreach (var item in request.Location)
 
-                 {
 
-                     var location = _baseWareLocationrepository.GetSingle(p => p.Code == item);
 
-                     if (location == null)
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.WareLocationCodeNotExist.GetHashCode();
 
-                         res.ResMsg = item + ResponseStatusCodeEnum.WareLocationCodeNotExist.GetDescription();
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     if (location.StateNum != LocationState.LocationState_Full.GetHashCode())
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                         res.ResMsg = item + ResponseStatusCodeEnum.Fail.GetDescription() + "货位状态不满足出库条件";
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     if (location.IsStop == Const.One)
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                         res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription() + item + "被禁用";
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     var stock = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == location.ContGrpBarCode && p.InvStateCode == InvState.InvEcecState_In.ToString());
 
-                     if (stock == null)
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                         res.ResMsg = ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     if (stock.ExecStateCode != InvLockState.InvState_Normal.ToString())
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                         res.ResMsg =  stock.ContGrpBarCode + "状态已被锁定,不允许出库";
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     if (stock.InvStateCode != InvState.InvEcecState_In.ToString())
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                         res.ResMsg = item + "组盘状态不是已入库";
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                     ptWCS_TaskInfo ptwcsTask = new ptWCS_TaskInfo();
 
-                     ptwcsTask.Status = TaskStatus.NewBuild;
 
-                     ptwcsTask.Type = TaskType.OutDepot;
 
-                     ptwcsTask.Priority = 0;
 
-                     ptwcsTask.Device = "SRM" + location.Tunnel;
 
-                     ptwcsTask.SrmStation = request.EndPoint;
 
-                     ptwcsTask.AddrFrom = item;
 
-                     ptwcsTask.BarCode = stock.ContGrpBarCode;
 
-                     ptwcsTask.StartTime = DateTime.Now;
 
-                     ptwcsTask.AddTime = DateTime.Now;
 
-                     ptwcsTask.EditTime = DateTime.Now;
 
-                     ptwcsTask.AddWho = "wms";
 
-                     ptwcsTask.WarehouseCode = location.WarehouseCode;
 
-                     ptwcsTask.Enabled = true;
 
-                     ptwcsTask.WorkBench = request.EndPoint;
 
-                     ptwcsTask.AddrTo = request.EndPoint;
 
-                     ptwcsTask.Tunnel = location.Tunnel.ToString();
 
-                     ptwcsTask.PalletType = 1;
 
-                     ptwcsTask.Length = stock.LengthQty;
 
-                     ptwcsTask.MaterialCode = stock.MatCode;
 
-                     ptwcsTask.OutType = OutTypeEnum.全自动手动出库任务;
 
-                     ptwcsTask.BusType = request.BusType;
 
-                     _db.BeginTran();
 
-                     var wcs = _ptwcsTaskinfo.InsertReturnEntity(ptwcsTask);
 
-                     var wcstaskold = _mapper.Map<ptWCS_TaskOld>(wcs);
 
-                     _ptwcsTaskold.InsertableSplitTable(wcstaskold);
 
-                     var taskdtl = new ptWCS_TaskDtl()
 
-                     {
 
-                         ID = Guid.NewGuid(),
 
-                         CurPoint = item,
 
-                         AddTime = DateTime.Now,
 
-                         AddWho = "wms",
 
-                         Enabled = true,
 
-                         ParentTaskCode = wcs.ID,
 
-                         Desc = wcs.OutType.ToString(),
 
-                     };
 
-                     _ptwcsTaskdtl.InsertableSplitTable(taskdtl);
 
-                     _baseWareLocationrepository.UpdateSetColumnsTrue(p => new ptBaseWareLocation()
 
-                     {
 
-                         StateNum = LocationState.LocationState_StockOut.GetHashCode(),
 
-                         EditTime = DateTime.Now
 
-                     }, p => p.Code == item);
 
-                     _ptbillInvnow.UpdateSetColumnsTrue(p => new ptBillInvnow()
 
-                     {
 
-                         InvStateCode = InvState.InvEcecState_OutGoing.ToString(),
 
-                         EditTime = DateTime.Now
 
-                     }, p => p.ContGrpBarCode == stock.ContGrpBarCode);
 
-                     var flow = _mapper.Map<ptBillInvFlow>(stock);
 
-                     flow.Id = IdFactory.NewId();
 
-                     flow.InvStateCode = InvState.InvEcecState_OutGoing.ToString();
 
-                     flow.EditTime = DateTime.Now;
 
-                     _ptBillInvFlow.Insert(flow);
 
-                     _db.CommitTran();
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 _logger.LogInformation("出库异常:" + ex.Message);
 
-                 res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.DataSaveErr.GetDescription();
 
-                 return res.ToCamelCaseString();
 
-             }
 
-             return res.ToCamelCaseString();
 
-         }
 
-         public SRes WareCellInit(int row, int col, int deot, int rowcount, int tun)
 
-         {
 
-             var res = new SRes();
 
-             for (int i = 0; i < row; i++)
 
-             {
 
-                 string shlf = tun.ToString();
 
-                 if (row == 2)
 
-                 {
 
-                     if (i == 0)
 
-                     {
 
-                         shlf = shlf + "L";
 
-                     }
 
-                     else
 
-                     {
 
-                         shlf = shlf + "R";
 
-                     }
 
-                 }
 
-                 for (int j = 0; j < deot; j++)
 
-                 {
 
-                     for (int k = 0; k < col; k++)
 
-                     {
 
-                         var code = new ptBaseWareLocation()
 
-                         {
 
-                             Code = (rowcount + i).ToString() + "-" + (k + 1).ToString() + "-" + (j + 1).ToString() + "-" + shlf + "-" + "01",
 
-                             Tunnel = tun,
 
-                             IsStop = 0,
 
-                             Name = (rowcount + i).ToString() + "行" + (k + 1).ToString() + "列" + (j + 1).ToString() + "层" + shlf + "货架" + 1 + "深度",
 
-                             WarehouseId = 1685164446336552960,
 
-                             WarehouseCode = "pthouse",
 
-                             WareAreaId = 1685164446352102710,
 
-                             StateNum = 1,
 
-                             TypeNum = 1,
 
-                             Size = 1,
 
-                             Row = (rowcount + i),
 
-                             Col = (k + 1),
 
-                             Layer = (j + 1),
 
-                             Depth = 1,
 
-                             SCRel = "",
 
-                             ContGrpId = 0,
 
-                             ContGrpBarCode = "",
 
-                             AddWho = "wms",
 
-                             EditWho = "wms",
 
-                             Shelf = shlf,
 
-                             Sort = j * col + (k + 1),
 
-                         };
 
-                         _baseWareLocationrepository.Insert(code);
 
-                     }
 
-  
 
-                 }
 
-             }
 
-             return res;
 
-         }
 
-         public string PdaGroupStock(PtGroupInTaskRequest request)
 
-         {
 
-             var res = new SRes();
 
-             if (!request.RFIDBarCode.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 res.ResMsg = "RFID" + ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return res.ToCamelCaseString();
 
-             }
 
-             foreach (var item in request.RFIDBarCode)
 
-             {
 
-                 var code = _ptbaseContInfo.GetSingle(p => p.ContBarCode == item);
 
-                 if (code == null)
 
-                 {
 
-                     var initbarcode = InsertContInfo(item);
 
-                     if (initbarcode == false)
 
-                     {
 
-                         res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                         res.ResMsg = "同步" + ResponseStatusCodeEnum.Fail.GetDescription();
 
-                         return res.ToCamelCaseString();
 
-                     }
 
-                 }
 
-                 var bar = _ptbaseContInfo.GetSingle(p => p.ContBarCode == item);
 
-                 //var mater = _materrepository.GetSingle(p => p.Code == barcode.MatCode);
 
-                 //if (mater == null)
 
-                 //{
 
-                 //    res.ResCode = ResponseStatusCodeEnum.BaseMaterCodeNotExist.GetHashCode();
 
-                 //    res.ResMsg = item + ResponseStatusCodeEnum.BaseMaterCodeNotExist.GetDescription();
 
-                 //    return res.ToCamelCaseString();
 
-                 //}
 
-                 var stock = _ptbillInvnow.GetSingle(p => p.ContGrpBarCode == item);
 
-                 if (stock != null)
 
-                 {
 
-                     res.ResCode = ResponseStatusCodeEnum.GroupStockDetailMaterialBarCodeExist.GetHashCode();
 
-                     res.ResMsg = item + ResponseStatusCodeEnum.GroupStockDetailMaterialBarCodeExist.GetDescription();
 
-                     return res.ToCamelCaseString();
 
-                 }
 
-                 var task = _ptwcsTaskold.AsQueryable().Where(p => p.BarCode == item && p.Status < TaskStatus.Finish).SplitTable(p => p.Take(2)).First();
 
-                 if (task != null)
 
-                 {
 
-                     res.ResCode = ResponseStatusCodeEnum.WcsTaskExist.GetHashCode();
 
-                     res.ResMsg = item + ResponseStatusCodeEnum.WcsTaskExist.GetDescription();
 
-                     return res.ToCamelCaseString();
 
-                 }
 
-                 try
 
-                 {
 
-                     ptBillInvnow container = new ptBillInvnow();
 
-                     container.ContGrpId = GetId();
 
-                     container.ContGrpBarCode = item;
 
-                     container.BoxBarCode = item;
 
-                     container.InvStateCode = InvState.InvEcecState_BuildUp.ToString();
 
-                     container.InvBarCode = item;
 
-                     container.ExecStateCode = InvLockState.InvState_Normal.ToString();
 
-                     container.InDocsNo = "";
 
-                     container.InDocsRowNo = "";
 
-                     container.WarehouseId = bar.WarehouseId;
 
-                     //container.MatId = mater.Id;
 
-                     //container.MatCode = mater.Code;
 
-                     container.TolWQty = bar.WidthQty;
 
-                     container.NetWQty = bar.LengthQty;
 
-                     container.TareWQty = bar.WeightQty;
 
-                     container.LengthQty = bar.LengthQty;
 
-                     container.RFIDBarCode = item;
 
-                     //container.HWTypeCode = mater.SpoolType;
 
-                     container.SolderQty = bar.HighQty;
 
-                     container.ExecDocsNo = "";
 
-                     container.ExecDocsRowNo = "";
 
-                     container.ExecDocsTypeCode = "";
 
-                     container.HWBarCode = item;
 
-                     container.InvInOut = 1;
 
-                     container.ExecWho = "人工组盘";
 
-                     //container.MatName = mater.Name;
 
-                     container.Size = 1;
 
-                     _db.BeginTran();
 
-                     if (_ptbillInvnow.Insert(container))
 
-                     {
 
-                         _ptBillInvFlow.Insert(_mapper.Map<ptBillInvFlow>(container));
 
-                     }
 
-                     _db.CommitTran();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _db.RollbackTran();
 
-                     _logger.LogInformation("组盘异常:" + item + ex.Message);
 
-                     res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 
-                     res.ResMsg = item + ResponseStatusCodeEnum.DataSaveErr.GetDescription();
 
-                     return res.ToCamelCaseString();
 
-                 }
 
-             }
 
-             return res.ToCamelCaseString();
 
-         }
 
-         public string PdaInsterInTask(PtGroupInTaskRequest request)
 
-         {
 
-             var res = new SRes();
 
-             if (!request.RFIDBarCode.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.ErrParamNotNull.GetHashCode();
 
-                 res.ResMsg = "RFID" + ResponseStatusCodeEnum.ErrParamNotNull.GetDescription();
 
-                 return res.ToCamelCaseString();
 
-             }
 
-             try
 
-             {
 
-                 if (request.BusType == 1)
 
-                 {
 
-                     foreach (var item in request.RFIDBarCode)
 
-                     {
 
-                         var stock = _ptbillInvnow.GetSingle(p => p.RFIDBarCode == item && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                         if (stock == null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         var task = _ptwcsTaskold.AsQueryable().Where(p => p.BarCode == item && p.Status < TaskStatus.Finish).SplitTable(p => p.Take(1)).First();
 
-                         if (task != null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.WcsTaskExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.WcsTaskExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         //分解入库任务
 
-                         var it = InsertTaskIn(new PtTaskRsponse() { BusType = TaskBusType.TaskBusType_HJ_QualityStockIn.GetDescription(), ContGrpBarCode = stock.ContGrpBarCode, ContGrpId = stock.ContGrpId, StartPoint = request.Equip, Size = 1, Remark = stock.MatCode });
 
-                         if (!it)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                             res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                     }
 
-                 }
 
-                 else if (request.BusType == 2)
 
-                 {
 
-                     foreach (var item in request.RFIDBarCode)
 
-                     {
 
-                         var stock = _ptbillInvnow.GetSingle(p => p.RFIDBarCode == item && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                         if (stock == null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         var task = _ptwcsTaskold.AsQueryable().Where(p => p.BarCode == item && p.Status < TaskStatus.Finish).SplitTable(p => p.Take(1)).First();
 
-                         if (task != null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.WcsTaskExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.WcsTaskExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         //分解入库任务
 
-                         var it = InsertTaskIn(new PtTaskRsponse() { BusType = TaskBusType.TaskBusType_HJ_AnewStockIn.GetDescription(), ContGrpBarCode = stock.ContGrpBarCode, ContGrpId = stock.ContGrpId, StartPoint = request.Equip, Size = 1, Remark = stock.MatCode });
 
-                         if (!it)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                             res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                     }
 
-                 }
 
-                 else if (request.BusType == 3)
 
-                 {
 
-                     foreach (var item in request.RFIDBarCode)
 
-                     {
 
-                         var stock = _ptbillInvnow.GetSingle(p => p.RFIDBarCode == item && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                         if (stock == null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         var task = _ptwcsTaskold.AsQueryable().Where(p => p.BarCode == item && p.Status < TaskStatus.Finish).SplitTable(p => p.Take(1)).First();
 
-                         if (task != null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.WcsTaskExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.WcsTaskExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         //分解入库任务
 
-                         var it = InsertTaskIn(new PtTaskRsponse() { BusType = TaskBusType.TaskBusType_HJ_OtherStockIn.GetDescription(), ContGrpBarCode = stock.ContGrpBarCode, ContGrpId = stock.ContGrpId, StartPoint = request.Equip, Size = 1, Remark = stock.MatCode });
 
-                         if (!it)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                             res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                     }
 
-                 }
 
-                 else if (request.BusType == 4)
 
-                 {
 
-                     foreach (var item in request.RFIDBarCode)
 
-                     {
 
-                         var stock = _ptbillInvnow.GetSingle(p => p.RFIDBarCode == item && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                         if (stock == null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         var task = _ptwcsTaskold.AsQueryable().Where(p => p.BarCode == item && p.Status < TaskStatus.Finish).SplitTable(p => p.Take(1)).First();
 
-                         if (task != null)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.WcsTaskExist.GetHashCode();
 
-                             res.ResMsg = item + ResponseStatusCodeEnum.WcsTaskExist.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                         //分解入库任务
 
-                         var it = InsertTaskIn(new PtTaskRsponse() { BusType = TaskBusType.TaskBusType_HJ_PurchaseSpoolStockIn.GetDescription(), ContGrpBarCode = stock.ContGrpBarCode, ContGrpId = stock.ContGrpId, StartPoint = request.Equip, Size = 1, Remark = stock.MatCode });
 
-                         if (!it)
 
-                         {
 
-                             res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                             res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                             return res.ToCamelCaseString();
 
-                         }
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                     res.ResMsg = "RFID:" + string.Join(',', request.RFIDBarCode) + "业务类型错误";
 
-                     return res.ToCamelCaseString();
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _logger.LogInformation("任务下发失败:" + ex.Message);
 
-                 res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                 res.ResMsg = ResponseStatusCodeEnum.Fail.GetDescription();
 
-                 return res.ToCamelCaseString();
 
-             }
 
-             return res.ToCamelCaseString();
 
-         }
 
-         private bool InsertTaskIn(PtTaskRsponse request)
 
-         {
 
-             var bar = _ptbaseContInfo.GetSingle(p => p.ContBarCode == request.ContGrpBarCode);
 
-             if (bar == null)
 
-             {
 
-                 return false;
 
-             }
 
-             var ware = _baseWareHouserepository.GetSingle(p => p.Id == bar.WarehouseId);
 
-             if (ware == null)
 
-             {
 
-                 return false;
 
-             }
 
-             try
 
-             {
 
-                 ptWCS_TaskInfo billTask = new ptWCS_TaskInfo();
 
-                 billTask.Status = TaskStatus.NewBuild;
 
-                 billTask.Type = TaskType.EnterDepot;
 
-                 billTask.Priority = 0;
 
-                 billTask.Device = "srm";
 
-                 billTask.SrmStation = request.StartPoint;
 
-                 billTask.AddrFrom = request.StartPoint;
 
-                 billTask.BarCode = request.ContGrpBarCode;
 
-                 billTask.StartTime = DateTime.Now;
 
-                 billTask.AddWho = "wms";
 
-                 billTask.WarehouseCode = ware.Code;
 
-                 billTask.Enabled = true;
 
-                 billTask.WorkBench = request.StartPoint;
 
-                 billTask.AddrTo = "";
 
-                 //billTask.Floor = 2;
 
-                 billTask.Tunnel = "";
 
-                 billTask.PalletType = 1;
 
-                 billTask.AddTime = DateTime.Now;
 
-                 billTask.EditTime = DateTime.Now;
 
-                 billTask.MaterialCode = request.Remark;
 
-                 billTask.MatCode = request.Remark;
 
-                 billTask.BusType = request.BusType;
 
-                 _db.BeginTran();
 
-                 var wcs = _ptwcsTaskinfo.InsertReturnEntity(billTask);
 
-                 var taskold = _mapper.Map<ptWCS_TaskOld>(wcs);
 
-                 _ptwcsTaskold.InsertableSplitTable(taskold);
 
-                 var taskdetail = new ptWCS_TaskDtl()
 
-                 {
 
-                     ID = Guid.NewGuid(),
 
-                     CurPoint = request.StartPoint,
 
-                     AddTime = DateTime.Now,
 
-                     AddWho = "wms",
 
-                     Enabled = true,
 
-                     ParentTaskCode = wcs.ID,
 
-                     Desc = request.StartPoint + "pda入库",
 
-                 };
 
-                 _ptwcsTaskdtl.InsertableSplitTable(taskdetail);
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 return false;
 
-             }
 
-             return true;
 
-         }
 
-         private bool InsertContInfo(string code)
 
-         {
 
-             try
 
-             {
 
-                 ptBaseContainer barcode = new ptBaseContainer();
 
-                 barcode.ContBarCode = code;
 
-                 barcode.TypeCode = ContainerType.ContainerType_RFID.ToString();
 
-                 barcode.PrintQty = 1;
 
-                 //barcode.WarehouseId = 1668442390064664576;
 
-                 barcode.Name = code;
 
-                // barcode.WeightQty = 158;
 
-                 _ptbaseContInfo.Insert(barcode);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return false;
 
-             }
 
-             return true;
 
-         }
 
-         /// <summary>
 
-         /// 分配巷道
 
-         /// </summary>
 
-         /// <param name="reqEntity"></param>
 
-         /// <returns></returns>
 
-         public SRes<string> GetPtTunnelPriorityList(GetTunnelPriorityListRequest reqEntity)
 
-         {
 
-             var result = new SRes<string>();
 
-             var wcstask = _ptwcsTaskold.AsQueryable().Where(p => p.ID == reqEntity.TaskNum).SplitTable(p => p.Take(2)).First();
 
-             if (wcstask == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 
-                 result.ResMsg = reqEntity.TaskNum + ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             //先处理库存
 
-             var p = InsertStockInfo(reqEntity.Memo1);
 
-             if (p.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode())
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                 result.ResMsg = "库存更新" + ResponseStatusCodeEnum.Fail.GetDescription();
 
-                 return result;
 
-             }
 
-             //获取任务数占用最少的
 
-             var wcstasks = _ptwcsTaskinfo.GetList(p => p.WarehouseCode == wcstask.WarehouseCode && p.Type == TaskType.EnterDepot && p.Status < TaskStatus.Finish &&
 
-             p.Tunnel != "0" && p.Tunnel != "" && p.Tunnel != null).ToList();
 
-             var tunnelcountlist = new List<TunnelCountTemp>();
 
-             var runningtasks = wcstasks;
 
-             if (runningtasks.Any())
 
-             {
 
-                 tunnelcountlist = (from task in runningtasks.GroupBy(p => p.Tunnel)
 
-                                    select new TunnelCountTemp
 
-                                    {
 
-                                        Tunnel = task.Key,
 
-                                        Count = task.Count()
 
-                                    }).ToList();
 
-             }
 
-             //获取库位所有巷道列表
 
-             var alltunnels = _baseWareLocationrepository.GetList().Select(p => p.Tunnel).Distinct();
 
-             foreach (var item in alltunnels)
 
-             {
 
-                 if (!tunnelcountlist.Where(p => p.Tunnel == item.ToString()).Any())
 
-                 {
 
-                     tunnelcountlist.Add(new TunnelCountTemp()
 
-                     {
 
-                         Tunnel = item.ToString(),
 
-                         Count = 0
 
-                     });
 
-                 }
 
-             }
 
-             var tasktunnelcountlist = tunnelcountlist.OrderBy(p => p.Count).ToList(); 
 
-             var warehouse = _baseWareHouserepository.GetSingle(p => p.Code == wcstask.WarehouseCode);
 
-             //获取已占用库位最少的货架
 
-             var threshold = 5; //int.Parse(ConfigUtil.GetConfiguration["Threshold"]);//阈值
 
-             //获取所有有货的货位
 
-             var locationsreturn = _baseWareLocationrepository.GetList(p => p.WarehouseId == warehouse.Id && p.StateNum == LocationState.LocationState_Full.GetHashCode());
 
-             //获取所有可用货位的数量
 
-             var shelflocationcount = _baseWareLocationrepository.GetList(p => p.WarehouseCode == wcstask.WarehouseCode && p.TypeNum == LocationType.LocationType_StorageLocation.GetHashCode() && p.IsStop == 0).GroupBy(p => new { p.Tunnel, p.Shelf }).Select(p => new { Tunnel = p.Key.Tunnel, Shelf = p.Key.Shelf, LocationCount = p.Select(q => q.Id).Count() });
 
-             if (locationsreturn == null || !locationsreturn.Any())
 
-             {
 
-                 result.ResData = string.Join(",", tasktunnelcountlist.OrderBy(p => p.Count).Select(p => p.Tunnel));
 
-             }
 
-             else
 
-             {
 
-                 var grouplocationtunnels = (from location in locationsreturn.GroupBy(p => p.Tunnel)
 
-                                             select new TunnelCountTemp
 
-                                             {
 
-                                                 Tunnel = location.Key.ToString(),
 
-                                                 Count = location.Count(),
 
-                                                 Proportion = location.Count() / (shelflocationcount.Where(p => p.Tunnel == location.Key).Any() ? decimal.Parse(shelflocationcount.Where(p => p.Tunnel == location.Key).Sum(p => p.LocationCount).ToString()) : 1)
 
-                                             }).ToList().OrderBy(p => p.Count).ToList();
 
-                 foreach (var item in alltunnels)
 
-                 {
 
-                     if (!grouplocationtunnels.Where(p => p.Tunnel == item.ToString()).Any())
 
-                     {
 
-                         grouplocationtunnels.Add(new TunnelCountTemp()
 
-                         {
 
-                             Tunnel = item.ToString(),
 
-                             Count = 0,
 
-                             Proportion = 0
 
-                         });
 
-                     }
 
-                 }
 
-                 grouplocationtunnels = grouplocationtunnels.OrderBy(p => p.Proportion).ToList();
 
-                 var sorttunnels = grouplocationtunnels.OrderBy(p => p.Proportion).Select(p => p.Tunnel).ToList();
 
-                 for (var i = 0; i < grouplocationtunnels.Count - 1; i++)
 
-                 {
 
-                     if (tasktunnelcountlist.Where(p => p.Tunnel == grouplocationtunnels[i].Tunnel).First().Count - threshold > tasktunnelcountlist.Where(p => p.Tunnel == grouplocationtunnels[i + 1].Tunnel).First().Count)
 
-                     {
 
-                         sorttunnels[i] = grouplocationtunnels[i + 1].Tunnel;
 
-                         sorttunnels[i + 1] = grouplocationtunnels[i].Tunnel;
 
-                         i++;
 
-                     }
 
-                     else
 
-                     {
 
-                         sorttunnels[i] = grouplocationtunnels[i].Tunnel;
 
-                     }
 
-                 }
 
-                 result.ResData = string.Join(",", sorttunnels);
 
-             }
 
-             //删除没有空闲货位的货架
 
-             var arrresultTunnels = result.ResData.Split(',');
 
-             //获取可分配货位的数
 
-             var emptylocationsreturn = _baseWareLocationrepository.GetList(p => p.WarehouseCode == wcstask.WarehouseCode && p.StateNum == LocationState.LocationState_Empty.GetHashCode() && p.IsStop == 0);
 
-             var resultTunenls = new List<string>();
 
-             foreach (var sorttunnel in arrresultTunnels)
 
-             {
 
-                 var tunneltaskcount = wcstasks.Where(p => p.Tunnel == sorttunnel).Count();
 
-                 int left = 0;
 
-                 if (emptylocationsreturn.Where(p => p.Tunnel == int.Parse(sorttunnel)).Count() - tunneltaskcount > left)
 
-                 {
 
-                     resultTunenls.Add(sorttunnel);
 
-                 }  
 
-             }
 
-             result.ResData = string.Join(",", resultTunenls);
 
-             //根据配置过滤禁用的巷道
 
-             var disabletunnels = _sysconfigrepository.GetList(p => p.SType == "InStop" && !string.IsNullOrEmpty(p.SContent));
 
-             if (disabletunnels != null && disabletunnels.Any())
 
-             {
 
-                 var resultTunenlsNew = new List<string>();
 
-                 var resultTunenlsTemp = result.ResData.Split(',');
 
-                 foreach (var tun in resultTunenlsTemp)
 
-                 {
 
-                     if (!disabletunnels.Select(p => p.Default1).Contains(tun))
 
-                     {
 
-                         resultTunenlsNew.Add(tun);
 
-                     }
 
-                 }
 
-                 result.ResData = string.Join(",", resultTunenlsNew);
 
-             }
 
-             return result;
 
-         }
 
-         public SRes<PtApplyStockInLocResponse> PtApplyStockInLoc(PtApplyStockInLocRequest reqEntity)
 
-         {
 
-             var res = ApplyStockInLocTemp(reqEntity);
 
-             if (string.IsNullOrEmpty(res.ResData.CellNo))
 
-             {
 
-                 return res;
 
-             }
 
-             try
 
-             {
 
-                 _db.BeginTran();
 
-                 //更新货位
 
-                 _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_StockIn.GetHashCode(), ContGrpBarCode = "", ContGrpId = 0, EditTime = DateTime.Now },
 
-                        p => p.Code == res.ResData.CellNo);
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 _logger.LogInformation(ex.ToString());
 
-             }
 
-             return res;
 
-         }
 
-         private SRes<PtApplyStockInLocResponse> ApplyStockInLocTemp(PtApplyStockInLocRequest reqEntity)
 
-         {
 
-             var res = new SRes<PtApplyStockInLocResponse>()
 
-             {
 
-                 ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(),
 
-                 ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription(),
 
-                 ResData = new PtApplyStockInLocResponse()
 
-             };
 
-             var wcstask = _ptwcsTaskold.AsQueryable().Where(p => p.ID == reqEntity.TaskNum).SplitTable(tabs => tabs.Take(2)).First(); ;
 
-             if (wcstask == null)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 
-                 res.ResMsg = reqEntity.TaskNum + ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 
-                 return res;
 
-             }
 
-             if (wcstask.Type == TaskType.OutDepot)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
 
-                 res.ResMsg = "该任务是出库任务,不能分配货位;wms任务号" + wcstask.ID;
 
-                 return res;
 
-             }
 
-             if (!string.IsNullOrEmpty(wcstask.AddrTo) && wcstask.AddrTo != "srm")
 
-             {
 
-                 res.ResData.TunnelNum = wcstask.Tunnel;
 
-                 res.ResData.CellNo = wcstask.AddrTo;
 
-                 res.ResData.Row = wcstask.AddrTo.Split('-')[0] != null ? int.Parse(wcstask.AddrTo.Split('-')[0]) : 0;
 
-                 res.ResData.Colomn = wcstask.AddrTo.Split('-')[1] != null ? int.Parse(wcstask.AddrTo.Split('-')[1]) : 0;
 
-                 res.ResData.Layer = wcstask.AddrTo.Split('-')[2] != null ? int.Parse(wcstask.AddrTo.Split('-')[2]) : 0;
 
-                 return res;
 
-             }
 
-             if (reqEntity.TunnelNum <= 0)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.NotTunnelNum.GetHashCode();
 
-                 res.ResMsg = reqEntity.TaskNum + ResponseStatusCodeEnum.NotTunnelNum.GetDescription();
 
-                 return res;
 
-             }
 
-             var warehouse = _baseWareHouserepository.GetFirst(p => p.Code == wcstask.WarehouseCode);
 
-             if (warehouse == null)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 res.ResMsg = wcstask.WarehouseCode + ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return res;
 
-             }
 
-             //验证库存
 
-             var stock = _ptbillInvnow.GetFirst(p => p.HWBarCode == wcstask.BarCode && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-             if (stock == null)
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                 res.ResMsg = wcstask.BarCode + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                 return res;
 
-             }
 
-             var locell = new PtApplyLocRequest()
 
-             {
 
-                 MaterialId = stock.MatId,
 
-                 MaterialCode = stock.MatCode,
 
-                 Size = stock.Size,
 
-                 TunnelNum = reqEntity.TunnelNum,
 
-                 WarehuoseId = warehouse.Id,
 
-                 IsMove = wcstask.Type == TaskType.TransferDepot ? true : false,
 
-             };
 
-             //预留货位数量
 
-             var emptyLoc = _baseWareLocationrepository.AsQueryable().Where(p => p.IsStop == 0
 
-             && p.StateNum == LocationState.LocationState_Empty.GetHashCode()
 
-             && p.TypeNum == LocationType.LocationType_StorageLocation.GetHashCode()
 
-             && p.Tunnel == locell.TunnelNum
 
-             && p.WarehouseId == locell.WarehuoseId
 
-             && p.Size == locell.Size
 
-             ).OrderBy(p => p.Sort).ToList();
 
-             if (!emptyLoc.Any())
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.NotEnoughLocation.GetHashCode();
 
-                 res.ResMsg = reqEntity.TunnelNum + ResponseStatusCodeEnum.NotEnoughLocation.GetDescription();
 
-                 return res;
 
-             }
 
-             //移库预留货位
 
-             if (!locell.IsMove && emptyLoc.Count <= int.Parse(AppSettings.GetConfig("IsMoveCellCount")))
 
-             {
 
-                 res.ResCode = ResponseStatusCodeEnum.NotEnoughLocation.GetHashCode();
 
-                 res.ResMsg = reqEntity.TunnelNum + "巷道的可用货位数" + emptyLoc.Count + ",禁止分配货位,预留移库使用";
 
-                 return res;
 
-             }
 
-             var loc = emptyLoc.First();
 
-             res.ResData.TunnelNum = loc.Tunnel.ToString();
 
-             res.ResData.CellNo = loc.Code;
 
-             res.ResData.Row = loc.Row;
 
-             res.ResData.Colomn = loc.Col;
 
-             res.ResData.Layer = loc.Layer;
 
-             return res;
 
-         }
 
-         public SRes<int> PtCompleteTask(CompleteTaskRequest reqDto)
 
-         {
 
-             var result = new SRes<int>()
 
-             {
 
-                 ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(),
 
-                 ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription(),
 
-                 ResData = reqDto.TaskNum
 
-             };
 
-             var task = _ptwcsTaskold.AsQueryable().Where(p => p.ID == reqDto.TaskNum).SplitTable(tabs => tabs.Take(2)).First();
 
-             if (task == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 
-                 result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             var warehouse = _baseWareHouserepository.GetSingle(p => p.Code == task.WarehouseCode);
 
-             if (warehouse == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 
-                 result.ResMsg = task.WarehouseCode + ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             if (task.Type == TaskType.EnterDepot)
 
-             {
 
-                 //库存,货位
 
-                 try
 
-                 {
 
-                     var stock = _ptbillInvnow.GetFirst(p => p.ContGrpBarCode == task.BarCode && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                     if (stock == null)
 
-                     {
 
-                         result.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                         result.ResMsg = task.BarCode + "没有已组盘的信息";
 
-                         return result;
 
-                     }
 
-                     _db.BeginTran();
 
-                     int row = int.Parse(task.AddrTo.Split('-')[0]);
 
-                     int col = int.Parse(task.AddrTo.Split('-')[1]);
 
-                     int layer = int.Parse(task.AddrTo.Split('-')[2]);
 
-                     //更新库存
 
-                     _ptbillInvnow.UpdateModelColumns(p => new ptBillInvnow() { InvStateCode = InvState.InvEcecState_In.ToString(), PutRow = row, PutCol = col, PutLayer = layer, OneInTime = DateTime.Now, EditTime = DateTime.Now, ExecStateCode = InvLockState.InvState_Lock.ToString() },
 
-                            p => p.ContGrpBarCode == task.BarCode && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
 
-                     _ptbillInvinit.Delete(p => p.ContGrpBarCode == stock.ContGrpBarCode);
 
-                     //更新货位
 
-                     _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_Full.GetHashCode(), ContGrpBarCode = stock.ContGrpBarCode, ContGrpId = stock.ContGrpId, EditTime = DateTime.Now },
 
-                            p => p.Code.Contains(task.AddrTo));
 
-                     var stocklist = _ptbillInvnow.GetList(p => p.ContGrpBarCode == task.BarCode && p.InvStateCode == InvState.InvEcecState_In.ToString());
 
-                     foreach (var item in stocklist)
 
-                     {
 
-                         item.Id = IdFactory.NewId();
 
-                         item.AddTime = DateTime.Now;
 
-                     }
 
-                     _ptBillInvFlow.InsertRange(_mapper.Map<List<ptBillInvFlow>>(stocklist));
 
-                     var list = new List<ptBillPushinfo>();
 
-                     string pushtype = "";
 
-                     if (task.BusType == PtTaskBusType.TaskBusType_PT_PurchaseStockIn.GetDescription())
 
-                     {
 
-                         pushtype = PtFackbeekType.InterfaceType_PT_PurchaseStockIn.ToString();
 
-                     }
 
-                     else if (task.BusType == PtTaskBusType.TaskBusType_PT_ProductionBackStockIn.GetDescription())
 
-                     {
 
-                         pushtype = PtFackbeekType.ReturnMat.ToString();
 
-                     }
 
-                     //回调数据
 
-                     foreach (var item in stocklist)
 
-                     {
 
-                         list.Add(new ptBillPushinfo
 
-                         {
 
-                             DocsNo = stock.InDocsNo,
 
-                             TypeCode = pushtype,
 
-                             RFIDBarCode = stock.ContGrpBarCode,
 
-                             HWBarCode = stock.RodBarCode,
 
-                             CLBarCode = item.CLBarCode,
 
-                             WarehouseId = warehouse.Id,
 
-                             WarehouseCode = warehouse.Code,
 
-                             WareCellId = 0,
 
-                             WareCellCode = task.AddrTo,
 
-                             MatId = item.MatId,
 
-                             MatCode = item.MatCode,
 
-                             MatName = item.MatName,
 
-                             ReqNo = Guid.NewGuid().ToString()
 
-                         });
 
-                     }
 
-                     _ptbillPushinfo.InsertRange(list);
 
-                     _db.CommitTran();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _db.RollbackTran();
 
-                     result.ResCode = ResponseStatusCodeEnum.InnerServerErr.GetHashCode();
 
-                     result.ResMsg = task.ID + "完成任务异常";
 
-                     _logger.LogInformation("完成任务异常" + ex.ToString());
 
-                 }
 
-             }
 
-             else if (task.Type == TaskType.OutDepot)
 
-             {
 
-                 //库存删除
 
-                 var stocklist = _ptbillInvnow.GetList(p => p.ContGrpBarCode == task.BarCode && p.InvStateCode == InvState.InvEcecState_OutGoing.ToString());
 
-                 if (stocklist == null || !stocklist.Any())
 
-                 {
 
-                     result.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                     result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                     return result;
 
-                 }
 
-                 var flowlist = _mapper.Map<List<ptBillInvFlow>>(stocklist);
 
-                 foreach (var item in flowlist)
 
-                 {
 
-                     item.Id = IdFactory.NewId();
 
-                     item.InvStateCode = InvState.InvEcecState_Out.ToString();
 
-                     item.AddTime = DateTime.Now;
 
-                     item.Memo = "任务完成";
 
-                 }
 
-                 var list = new List<ptBillPushinfo>();
 
-                 string pushtype = "";
 
-                 if (task.BusType == PtTaskBusType.TaskBusType_PT_ProductionStockOut.GetDescription())
 
-                 {
 
-                     pushtype = PtFackbeekType.PickMat.ToString();
 
-                     //回调数据
 
-                     foreach (var item in stocklist)
 
-                     {
 
-                         list.Add(new ptBillPushinfo
 
-                         {
 
-                             DocsNo = item.InDocsNo,
 
-                             TypeCode = pushtype,
 
-                             RFIDBarCode = item.ContGrpBarCode,
 
-                             HWBarCode = item.HWBarCode,
 
-                             CLBarCode = item.CLBarCode,
 
-                             WarehouseId = warehouse.Id,
 
-                             WarehouseCode = warehouse.Code,
 
-                             WareCellId = 0,
 
-                             WareCellCode = task.AddrTo,
 
-                             MatId = item.MatId,
 
-                             MatCode = item.MatCode,
 
-                             MatName = item.MatName,
 
-                             ReqNo = Guid.NewGuid().ToString()
 
-                         });
 
-                     }
 
-                 }
 
-                 try
 
-                 {
 
-                     _db.BeginTran();
 
-                     _ptbillInvnow.Delete(p => stocklist.Select(p => p.Id).ToList().Contains(p.Id));
 
-                     _ptbillInvinit.Delete(p => p.ContGrpBarCode == task.BarCode);
 
-                     _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_Empty.GetHashCode(), ContGrpBarCode = "", ContGrpId = 0, EditTime = DateTime.Now },
 
-                         p => p.StateNum == LocationState.LocationState_StockOut.GetHashCode() && p.ContGrpId == flowlist.First().ContGrpId && p.Code.Contains(task.AddrFrom));
 
-                     _ptbillPushinfo.InsertRange(list);
 
-                     _ptBillInvFlow.InsertRange(flowlist);
 
-                     _db.CommitTran();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _db.RollbackTran();
 
-                     _logger.LogInformation(ex.ToString());
 
-                     result.ResCode = ResponseStatusCodeEnum.InnerServerErr.GetHashCode();
 
-                     result.ResMsg = task.ID + "完成任务异常";
 
-                 }
 
-             }
 
-             else if (task.Type == TaskType.TransferDepot)
 
-             {
 
-                 var fromcell = _baseWareLocationrepository.GetFirst(p => p.Code == task.AddrFrom);
 
-                 var grcontid = fromcell.ContGrpId;
 
-                 var grcontcode = fromcell.ContGrpBarCode;
 
-                 var fromcellno = fromcell.Code;
 
-                 var tocellno = task.AddrTo;
 
-                 try
 
-                 {
 
-                     _db.BeginTran();
 
-                     _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_Empty.GetHashCode(), ContGrpBarCode = "", ContGrpId = 0, EditTime = DateTime.Now }, p => p.Code.Contains(fromcellno));
 
-                     _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_Full.GetHashCode(), ContGrpBarCode = grcontcode, ContGrpId = grcontid, EditTime = DateTime.Now }, p => p.Code.Contains(tocellno));
 
-                     int row = int.Parse(tocellno.Split('-')[0]);
 
-                     int col = int.Parse(tocellno.Split('-')[1]);
 
-                     int layer = int.Parse(tocellno.Split('-')[2]);
 
-                     _ptbillInvnow.UpdateModelColumns(p => new ptBillInvnow() { PutRow = row, PutCol = col, PutLayer = layer }, p => p.ContGrpId == grcontid && p.InvStateCode == InvState.InvEcecState_In.ToString());
 
-                     var stock = _ptbillInvnow.GetFirst(p => p.ContGrpId == grcontid && p.ContGrpBarCode == grcontcode && p.InvStateCode == InvState.InvEcecState_In.ToString());
 
-                     //流水表
 
-                     var flow = _mapper.Map<ptBillInvFlow>(stock);
 
-                     flow.Id = IdFactory.NewId();
 
-                     flow.AddTime = DateTime.Now;
 
-                     flow.Memo = grcontcode + "移库(" + fromcellno + "至" + tocellno + ")";
 
-                     _ptBillInvFlow.Insert(flow);
 
-                     //推送表
 
-                     _db.CommitTran();
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _db.RollbackTran();
 
-                     result.ResCode = ResponseStatusCodeEnum.InnerServerErr.GetHashCode();
 
-                     result.ResMsg = task.ID + "完成任务异常";
 
-                     _logger.LogInformation("完成任务异常" + ex.ToString());
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-         public SRes<int> PtSrmPickOutCompleted(PtSrmPickOutCompletedRequest reqDto)
 
-         {
 
-             var result = new SRes<int>()
 
-             {
 
-                 ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(),
 
-                 ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription(),
 
-                 ResData = reqDto.TaskNum
 
-             };
 
-             var wcstask = _ptwcsTaskold.AsQueryable().Where(p => p.ID == reqDto.TaskNum).SplitTable(tabs => tabs.Take(2)).First();
 
-             if (wcstask == null)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 
-                 result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 
-                 return result;
 
-             }
 
-             if (wcstask.Type != TaskType.OutDepot)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.OnlyStockOutAvil.GetHashCode();
 
-                 result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.OnlyStockOutAvil.GetDescription();
 
-                 return result;
 
-             }
 
-             if (wcstask.Status >= TaskStatus.Finish)
 
-             {
 
-                 result.ResCode = ResponseStatusCodeEnum.WcsTaskStateIsComplete.GetHashCode();
 
-                 result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.WcsTaskStateIsComplete.GetDescription();
 
-                 return result;
 
-             }
 
-             try
 
-             {
 
-                 _db.BeginTran();
 
-                 //更新库存
 
-                 _ptbillInvnow.UpdateModelColumns(p => new ptBillInvnow() { PutRow = 0, PutCol = 0, PutLayer = 0 }, p => p.InvStateCode == InvState.InvEcecState_OutGoing.ToString() && p.ContGrpBarCode == wcstask.BarCode);
 
-                 var stocklist = _ptbillInvnow.GetList(p => p.ContGrpBarCode == wcstask.BarCode && p.InvStateCode == InvState.InvEcecState_OutGoing.ToString());
 
-                 if (stocklist == null || !stocklist.Any())
 
-                 {
 
-                     result.ResCode = ResponseStatusCodeEnum.StockNotExist.GetHashCode();
 
-                     result.ResMsg = reqDto.TaskNum + ResponseStatusCodeEnum.StockNotExist.GetDescription();
 
-                     return result;
 
-                 }
 
-                 var flowlist = _mapper.Map<List<ptBillInvFlow>>(stocklist);
 
-                 foreach (var item in flowlist)
 
-                 {
 
-                     item.Id = IdFactory.NewId();
 
-                     item.AddTime = DateTime.Now;
 
-                     item.Memo = "堆垛机出库放货完成";
 
-                 }
 
-                 //货位
 
-                 _baseWareLocationrepository.UpdateModelColumns(p => new ptBaseWareLocation() { StateNum = LocationState.LocationState_Empty.GetHashCode(), ContGrpBarCode = "", ContGrpId = 0, EditTime = DateTime.Now },
 
-                          p => p.ContGrpBarCode == wcstask.BarCode && p.Code.Contains(wcstask.AddrFrom));
 
-                 _ptBillInvFlow.InsertRange(flowlist);
 
-                 _db.CommitTran();
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 _db.RollbackTran();
 
-                 _logger.LogInformation(ex.ToString());
 
-                 result.ResCode = ResponseStatusCodeEnum.InnerServerErr.GetHashCode();
 
-                 result.ResMsg = wcstask.ID + "堆垛机出库放货完成异常";
 
-             }
 
-             return result;
 
-         }
 
-         public SRes GetSyncMaterInfo(PtSyncMaterInfoListRequest ResData)
 
-         {
 
-             var res = new SRes();
 
-             if (!string.IsNullOrEmpty(ResData.MatCode))
 
-             {
 
-                 ResData.UpdatedTime = DateTime.Now.ToString();
 
-                 if (_materrepository.IsAny(p => p.Code == ResData.MatCode))
 
-                 {
 
-                     _materrepository.UpdateModelColumns(p => new ptBaseMater() { IsHold = ResData.IsHold, HoldDuration = ResData.HoldDuration, Name = ResData.MatName, EditTime = DateTime.Now, Description = ResData.Describe },
 
-                        p => p.Code == ResData.MatCode);
 
-                 }
 
-                 else
 
-                 {
 
-                     var model = _mapper.Map<ptBaseMater>(ResData);
 
-                     model.AddTime = DateTime.Now;
 
-                     model.WarehouseId = 263682712;
 
-                     _materrepository.Insert(model);
 
-                 }
 
-             }
 
-             return res;
 
-         }
 
-     }
 
- }
 
 
  |