| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486 | 
							- using AutoMapper;
 
- using MathNet.Numerics.Distributions;
 
- using Microsoft.AspNetCore.Http;
 
- using Microsoft.AspNetCore.Mvc;
 
- using Newtonsoft.Json;
 
- using System.Reflection.Emit;
 
- using wms.dto;
 
- using wms.dto.request;
 
- using wms.dto.request.pt;
 
- using wms.dto.request.pt.dto;
 
- using wms.dto.request.share;
 
- using wms.dto.response;
 
- using wms.dto.response.pt;
 
- using wms.service.IService;
 
- using wms.sqlsugar;
 
- using wms.sqlsugar.model.pt;
 
- using wms.util.Ext;
 
- namespace wms.api.Controllers
 
- {
 
-     /// <summary>
 
-     /// 盘条库控制器
 
-     /// </summary>
 
-     [Route("api/[controller]/[action]")]
 
-     [ApiController]
 
-     public class PtController : BaseController
 
-     {
 
-         private readonly IPTService _ptService;
 
-         private readonly ILogger<PtController> _logger;
 
-         private readonly IMapper _mapper;
 
-         static object lockerPurchaseBillTrans = new object();
 
-         static object lockerErpUnlockStock = new object();
 
-         static object lockerProductionStockOut = new object();
 
-         static object lockerProductionFeedBack = new object();
 
-         static object lockerStockChange = new object();
 
-         static object lockerProductionBack = new object();
 
-         static object lockerPtPurchTaskIn = new object();
 
-         static object lockerPtApplyStockInLoc = new object();
 
-         static object lockerPtCompleteTask = new object();
 
-         static object lockerPtSrmPickOutCompleted = new object();
 
-         static object lockerSyncMaterInfoList = new object();
 
-         static object lockerPtWcsProductionOutTask = new object();
 
-         static object lockerGetPtTunnelList = new object();
 
-         public PtController(IPTService ptService, ILogger<PtController> logger, IMapper mapper) : base(ptService)
 
-         {
 
-             _ptService = ptService;
 
-             _logger = logger;
 
-             _mapper = mapper;
 
-         }
 
-         /// <summary>
 
-         /// 同步物料基础信息
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string SyncMaterInfo(SyncMaterInfoRequest reqBody)
 
-         {
 
-             var result = new SRes();
 
-             //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1);
 
-             PTSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject<PTSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
 
-             if (reqBody.SyncType == 1)
 
-             {
 
-                 reqBody.PageIndex = 1;
 
-                 while (resbody.ResData.Any())
 
-                 {
 
-                     _ptService.SyncMaterInfo(resbody.ResData);
 
-                     reqBody.PageIndex++;
 
-                     resbody = JsonConvert.DeserializeObject<PTSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
 
-                 }
 
-             }
 
-             else if (reqBody.SyncType == 2)
 
-             {
 
-                 //拿到增量
 
-                 var increconf = _ptService.GetSysConfigByCode(Const.MESMaterialInitIncrement);
 
-                 if (increconf != null)
 
-                 {
 
-                     reqBody.StartTime = DateTime.Parse(increconf.SContent);
 
-                     //reqBody.Count = int.Parse(increconf.Remark);
 
-                     resbody = JsonConvert.DeserializeObject<PTSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
 
-                     if (resbody.ResData.Any())
 
-                     {
 
-                         if (_ptService.SyncMaterInfo(resbody.ResData))
 
-                         {
 
-                             var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last();
 
-                             _ptService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns<ptSysConfig>()
 
-                             {
 
-                                 Columns = it => new ptSysConfig { SContent = lastdata.UpdatedTime.ToString("yyyy-MM-dd HH:mm:ss.fff") },
 
-                                 WhereExpression = it => it.Code == Const.MESMaterialInitIncrement
 
-                             });
 
-                         }
 
-                     }
 
-                     else
 
-                     {
 
-                         result.ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode();
 
-                         result.ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription();
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     result.ResCode = ResponseStatusCodeEnum.AccountError.GetHashCode();
 
-                     result.ResMsg = "没有配置信息" + Const.MESMaterialInitIncrement;
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 if (!string.IsNullOrEmpty(reqBody.MatCode))
 
-                 {
 
-                     resbody = JsonConvert.DeserializeObject<PTSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
 
-                     if (resbody.ResData.Any())
 
-                     {
 
-                         if (_ptService.SyncMaterInfo(resbody.ResData))
 
-                         {
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             return result.ToCamelCaseString();
 
-         }
 
-         /// <summary>
 
-         /// 采购到货单/采购退货单/到货重挂清单接口
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes PurchaseBillTrans(PurchaseBillTransReqest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<PurchaseBillTransReqest, SRes>(lockerPurchaseBillTrans, "PurchaseBillTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.PurchaseBillTrans);
 
-         }
 
-         /// <summary>
 
-         /// 盘条主数据接收
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes PtSyncMaterInfoList(PtSyncMaterInfoListRequest reqDto)
 
-         {
 
-             var res = new SRes();
 
-             return ConcurrencyReqControl<PtSyncMaterInfoListRequest, SRes>(lockerSyncMaterInfoList, "PtSyncMaterInfoList", "物料主数据推送", reqDto, _ptService.GetSyncMaterInfo);
 
-         }
 
-         /// <summary>
 
-         /// 采购到货单入库反馈/采购退货出库反馈/异常出库重挂反馈接口
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes PurchaseBillTransFeedBack(PtAutoPurchData request)
 
-         {
 
-             var res = new SRes();
 
-             //自动推送
 
-             if (request.Type == "1")
 
-             {
 
-                 var list = _ptService.GetBillFeedbackList();
 
-                 if (!list.Any())
 
-                 {
 
-                     res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 
-                     res.ResMsg = "没有取到数据" + ResponseStatusCodeEnum.Fail.GetDescription();
 
-                 }
 
-                 //采购入库单
 
-                 if (list.Where(p => p.TypeCode == PtFackbeekType.InterfaceType_PT_PurchaseStockIn.ToString()).ToList().Any())
 
-                 {
 
-                     var purch = list.Where(p => p.TypeCode == PtFackbeekType.InterfaceType_PT_PurchaseStockIn.ToString()).ToList();
 
-                     PurchaseBillTransFeedBackRequest purchaseBill = new PurchaseBillTransFeedBackRequest();
 
-                     var dtolist = _mapper.Map<List<PurchaseBillTransFeedBackRequestItem>>(purch);
 
-                     var purchs = purch.First();
 
-                     purchaseBill.ListInfo = dtolist;
 
-                     purchaseBill.BillCode = purchs.DocsNo;
 
-                     purchaseBill.BillType = purchs.TypeCode;
 
-                     purchaseBill.ReqId = purchs.ReqNo;
 
-                     var resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(purchaseBill));
 
-                     var ids = purch.Select(p => p.Id).ToList();
 
-                     if (resbody.ResCode == ResponseStatusCodeEnum.Sucess.GetHashCode())
 
-                     {
 
-                         _ptService.UpdatePuchinfoModelColumns(new sqlsugar.model.UpdateModelColumns<ptBillPushinfo>()
 
-                         {
 
-                             Columns = it => new ptBillPushinfo() { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
 
-                             WhereExpression = it => ids.Contains(it.Id)
 
-                         });
 
-                     }
 
-                     else
 
-                     {
 
-                         _ptService.UpdatePuchinfoModelColumns(new sqlsugar.model.UpdateModelColumns<ptBillPushinfo>()
 
-                         {
 
-                             Columns = it => new ptBillPushinfo() { PostResult = 2, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
 
-                             WhereExpression = it => ids.Contains(it.Id)
 
-                         });
 
-                     }
 
-                 }
 
-                 //重挂
 
-                 else if (list.Where(p => p.TypeCode == PtFackbeekType.InterfaceType_PT_AnewStockIn.ToString()).ToList().Any())
 
-                 {
 
-                     var purch = list.Where(p => p.TypeCode == PtFackbeekType.InterfaceType_PT_AnewStockIn.ToString()).ToList();
 
-                     PurchaseBillTransFeedBackRequest purchaseBill = new PurchaseBillTransFeedBackRequest();
 
-                     var dtolist = _mapper.Map<List<PurchaseBillTransFeedBackRequestItem>>(purch);
 
-                     var purchs = purch.First();
 
-                     purchaseBill.ListInfo = dtolist;
 
-                     purchaseBill.BillCode = purchs.DocsNo;
 
-                     purchaseBill.BillType = purchs.TypeCode;
 
-                     purchaseBill.ReqId = purchs.ReqNo;
 
-                     var resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(purchaseBill));
 
-                     var ids = purch.Select(p => p.Id).ToList();
 
-                     if (resbody.ResCode == ResponseStatusCodeEnum.Sucess.GetHashCode())
 
-                     {
 
-                         _ptService.UpdatePuchinfoModelColumns(new sqlsugar.model.UpdateModelColumns<ptBillPushinfo>()
 
-                         {
 
-                             Columns = it => new ptBillPushinfo() { PostResult = 1, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
 
-                             WhereExpression = it => ids.Contains(it.Id)
 
-                         });
 
-                     }
 
-                     else
 
-                     {
 
-                         _ptService.UpdatePuchinfoModelColumns(new sqlsugar.model.UpdateModelColumns<ptBillPushinfo>()
 
-                         {
 
-                             Columns = it => new ptBillPushinfo() { PostResult = 2, PostQty = it.PostQty + 1, ResDesc = "自动推送", EditTime = DateTime.Now },
 
-                             WhereExpression = it => ids.Contains(it.Id)
 
-                         });
 
-                     }
 
-                 }
 
-             }
 
-             return res;
 
-         }
 
-         /// <summary>
 
-         /// 放行单传输接口
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public ErpUnlockStockResponse ErpUnlockStock(ErpUnlockStockRequest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<ErpUnlockStockRequest, ErpUnlockStockResponse>(lockerErpUnlockStock, "ErpUnlockStock" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.ErpUnlockStock);
 
-         }
 
-         /// <summary>
 
-         /// 生产领料单传输接口
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes ProductionStockOut(ProductionStockOutRequest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<ProductionStockOutRequest, SRes>(lockerProductionStockOut, "ProductionStockOut" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.ProductionStockOut);
 
-         }
 
-         /// <summary>
 
-         /// 自动叫料
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes WcsProductionOutRequest(WcsProductionOutRequest request)
 
-         {
 
-             return ConcurrencyReqControl<WcsProductionOutRequest, SRes>(lockerPtWcsProductionOutTask, "WcsProductionOutRequest" + request.Endquip, request.Endquip, request, _ptService.WcsProductionOutRequest);
 
-         }
 
-         /// <summary>
 
-         /// 生产领料/退料/改判反馈接口
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes ProductionFeedBack(ProductionFeedBackRequest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<ProductionFeedBackRequest, SRes>(lockerProductionFeedBack, "ProductionFeedBack" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.ProductionFeedBack);
 
-         }
 
-         /// <summary>
 
-         /// 库存改判
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes StockChange(PtStockChangeRequest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<PtStockChangeRequest, SRes>(lockerStockChange, "ProductionFeedBack" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.StockChange);
 
-         }
 
-         /// <summary>
 
-         /// 生产退料单接口
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes ProductionBack(ProductionBackRequest reqDto)
 
-         {
 
-             return ConcurrencyReqControl<ProductionBackRequest, SRes>(lockerProductionBack, "ProductionBack" + reqDto.BillCode, reqDto.BillCode, reqDto, _ptService.ProductionBack);
 
-         }
 
-         [HttpPost]
 
-         public SRes WareCellInit(int row, int col, int deot, int rowcount, int tun)
 
-         {
 
-             return _ptService.WareCellInit(row, col, deot, rowcount, tun);
 
-         }
 
-         /// <summary>
 
-         /// 实时库存查询接口
 
-         /// </summary>
 
-         /// <param name="reqDto"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public PTGetCurStockListResponse GetPtCurStockList(PtGetCurStockListRequest reqDto)
 
-         {
 
-             return _ptService.GetCurStockList(reqDto);
 
-         }
 
-     
 
-         #region 盘条PDA功能
 
-         /// <summary>
 
-         /// 盘条解绑
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes<int> Unbounding(PtUnboundRequest request)
 
-         {
 
-             return _ptService.Unbounding(request);
 
-         }
 
-         /// <summary>
 
-         /// pda单据查询
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string GetDocumentsAll(PtDocumentsRequest request)
 
-         {
 
-             return _ptService.GetPageDocumentsList(request).ToCamelCaseString();
 
-         }
 
-         /// <summary>
 
-         /// pda单据明细查询(传单号)
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string GetDocumentDetails(PtDocumentsRequest request)
 
-         {
 
-             return _ptService.GetDocumentDetailListByDocsNo(request).ToCamelCaseString();
 
-         }
 
-         /// <summary>
 
-         /// pda指定出库确定
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string PdaManualTask(PtManualTaskRequest request)
 
-         {
 
-             request.BusType = TaskBusType.TaskBusType_HJ_PdaManualOut.GetDescription();
 
-             return _ptService.ManualTask(request);
 
-         }
 
-         /// <summary>
 
-         /// pda质检领料出库确定
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string PdaQualityTask(PtManualTaskRequest request)
 
-         {
 
-             request.BusType = TaskBusType.TaskBusType_HJ_QualityOut.GetDescription();
 
-             return _ptService.ManualTask(request);
 
-         }
 
-         /// <summary>
 
-         /// pda重挂出库确定
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string PdaInactionStockTask(PtManualTaskRequest request)
 
-         {
 
-             request.BusType = TaskBusType.TaskBusType_HJ_AnewOut.GetDescription();
 
-             return _ptService.ManualTask(request);
 
-         }
 
-         /// <summary>
 
-         /// 获取设备报警信息
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string GetEquipErrorInfo(PtErrorInfoRequest request)
 
-         {
 
-             return "";
 
-         }
 
-         /// <summary>
 
-         /// 获取物料报警信息
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string GetMaterErrorInfo(PtErrorInfoRequest request)
 
-         {
 
-             return "";
 
-         }
 
-         /// <summary>
 
-         /// 获取业务报警信息
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string GetBusinessErrorInfo(PtErrorInfoRequest request)
 
-         {
 
-             return "";
 
-         }
 
-         /// <summary>
 
-         /// 组盘
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string PdaGroupStock(PtGroupInTaskRequest request)
 
-         {
 
-             return _ptService.PdaGroupStock(request);
 
-         }
 
-         /// <summary>
 
-         /// 生成入库任务
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public string PdaInsterInTask(PtGroupInTaskRequest request)
 
-         {
 
-             return _ptService.PdaInsterInTask(request);
 
-         }
 
-         #endregion
 
-         /// <summary>
 
-         /// PDA 采购入库
 
-         /// </summary>
 
-         /// <param name="request"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes PdaPurchaseTask(PtUnboundRequest request)
 
-         {
 
-             lock (lockerPtPurchTaskIn)
 
-             {
 
-                 return _ptService.PtPurchaseTask(request);
 
-             }
 
-         }
 
-         #region WCS调用
 
-         /// <summary>
 
-         /// 获取巷道
 
-         /// </summary>
 
-         /// <param name="reqEntity"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes<string> GetTunnelPriorityList(GetTunnelPriorityListRequest reqEntity)
 
-         {
 
-             lock (lockerGetPtTunnelList)
 
-             {
 
-                 return _ptService.GetPtTunnelPriorityList(reqEntity);
 
-             } 
 
-         }
 
-         /// <summary>
 
-         /// 分配货位
 
-         /// </summary>
 
-         /// <param name="reqEntity"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes<PtApplyStockInLocResponse> ApplyStockInLoc(PtApplyStockInLocRequest reqEntity)
 
-         {
 
-             return ConcurrencyReqControl<PtApplyStockInLocRequest, SRes<PtApplyStockInLocResponse>>(lockerPtApplyStockInLoc, "PtApplyStockInLoc" + reqEntity.TunnelNum, "分配货位" + reqEntity.PickUpEquipmentNo, reqEntity, _ptService.PtApplyStockInLoc);
 
-         }
 
-         /// <summary>
 
-         /// 完成任务
 
-         /// </summary>
 
-         /// <param name="reqEntity"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes<int> CompleteTask(CompleteTaskRequest reqDto)
 
-         {
 
-             lock (lockerPtCompleteTask)
 
-             {
 
-                 return _ptService.PtCompleteTask(reqDto);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 堆垛机出库放货完成
 
-         /// </summary>
 
-         /// <param name="reqEntity"></param>
 
-         /// <returns></returns>
 
-         [HttpPost]
 
-         public SRes<int> SrmPickOutCompleted(PtSrmPickOutCompletedRequest reqDto)
 
-         {
 
-             lock (lockerPtSrmPickOutCompleted)
 
-             {
 
-                 return _ptService.PtSrmPickOutCompleted(reqDto);
 
-             }
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |