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;
- }
- }
- }
|