| | |
| | | using Microsoft.CodeAnalysis.Operations; |
| | | using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto; |
| | | using Furion.DatabaseAccessor; |
| | | using Admin.NET.Application.Service.WmsCommonnQuery.Dto; |
| | | using Admin.NET.Application.CommonHelper; |
| | | |
| | | namespace Admin.NET.Application; |
| | | /// <summary> |
| | |
| | | private readonly SqlSugarRepository<SysConfig> _sysConfigRep; |
| | | private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _mesBatchOrderUpiRep; |
| | | private readonly SqlSugarRepository<Mes_Order_Gather> _mesOrderGatherRep; |
| | | private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep; |
| | | private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep; |
| | | private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep; |
| | | private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep; |
| | | private readonly WmsCommonnQueryService _wmsCommonnQueryService; |
| | | |
| | | |
| | | public WmsOperationTaskService(SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep |
| | | public WmsOperationTaskService( |
| | | SqlSugarRepository<Mes_Upi_LineQueue> mes_Upi_LineQueueRep, |
| | | SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep |
| | | , SqlSugarRepository<Mes_Package_Gather> mesPackageGatherRep |
| | | , SqlSugarRepository<SysConfig> sysConfigRep |
| | | , SqlSugarRepository<Mes_BatchOrderUPI_New> mesBatchOrderUpiRep |
| | | , SqlSugarRepository<Mes_Order_Gather> mesOrderGatherRep |
| | | , SqlSugarRepository<WmsRecordUpiProcess> wmsRecordUpiProcessRep |
| | | , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep |
| | | , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep |
| | | , WmsCommonnQueryService wmsCommonnQueryService |
| | | ) |
| | | { |
| | | _wmsCommonnQueryService = wmsCommonnQueryService; |
| | | _wmsRecordUpiNgRep = wmsRecordUpiNgRep; |
| | | _sysConfigRep = sysConfigRep; |
| | | _mesPackageGatherRep = mesPackageGatherRep; |
| | | _rep = rep; |
| | | _wmsStockQuanRep = wmsStockQuanRep; |
| | | _mesBatchOrderUpiRep = mesBatchOrderUpiRep; |
| | | _mesOrderGatherRep = mesOrderGatherRep; |
| | | _wmsRecordUpiProcessRep = wmsRecordUpiProcessRep; |
| | | _wmsRecordPackageProcessRep = wmsRecordPackageProcessRep; |
| | | _mes_Upi_LineQueueRep = mes_Upi_LineQueueRep; |
| | | } |
| | | |
| | | |
| | |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "ForceOutbound")] |
| | | [Description("WmsOperationTask/ForceOutbound")] |
| | | [UnitOfWork] |
| | | public async Task ForceOutbound(ForceOutboundInput input) |
| | | { |
| | | if (input == null || input.PackageCodeList?.Count == 0) |
| | | { |
| | | throw Oops.Oh("参数不能为空"); |
| | | } |
| | | //验证传递的包是否都在齐包之内。 |
| | | List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = false }); |
| | | |
| | | List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>(); |
| | | foreach (var item in input.PackageCodeList) |
| | | { |
| | | var isExistCount = packList.Where(x => x.PackageCode == item).Count(); |
| | | if (isExistCount == 0) |
| | | { |
| | | throw Oops.Oh($"包{item}不是缺包状态,请检查!"); |
| | | } |
| | | |
| | | var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync(); |
| | | var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库).Count(); |
| | | var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库 || x.StockStatus == StockStatusEnum.人工齐包出库任务已创建).Count(); |
| | | if (isExist > 0) |
| | | { |
| | | throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}',不允许强制出库"); |
| | | throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}' 或'{StockStatusEnum.人工齐包出库任务已创建.ToString()}',不允许强制出库"); |
| | | } |
| | | |
| | | //更新状态 |
| | | foreach (var quan in quanList) |
| | | { |
| | | if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结) |
| | | { |
| | | throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态"); |
| | | } |
| | | |
| | | quan.StockStatus = StockStatusEnum.人工强制待出库; |
| | | quan.StockStatusName = StockStatusEnum.人工强制待出库.ToString(); |
| | | quan.UpdateTime = DateTime.Now; |
| | | quan.OperReason = "人工强制待出库"; |
| | | } |
| | | updateQuanList.AddRange(quanList); |
| | | |
| | | var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item); |
| | | packageObj.UpiFlag = UpiFlagEnum.NG; |
| | | packageObj.UpiStatus = UpiStatusEnum.已下线; |
| | | await _mesPackageGatherRep.UpdateAsync(packageObj); |
| | | } |
| | | |
| | | //模式判断 |
| | | var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep); |
| | | var res = await client.ValidateModeAsync(1); |
| | | if (res.result == false) |
| | | { |
| | | throw Oops.Oh(res.resMsg); |
| | | } |
| | | |
| | | await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 人工齐包出库 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "PersonOutbound")] |
| | | [Description("WmsOperationTask/PersonOutbound")] |
| | | [UnitOfWork] |
| | | public async Task PersonOutbound(PersonOutboundInput input) |
| | | { |
| | | if (input == null || input.PackageCodeList?.Count == 0) |
| | | { |
| | | throw Oops.Oh("参数不能为空"); |
| | | } |
| | | //验证传递的包是否都在齐包之内。 |
| | | List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = true }); |
| | | |
| | | List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>(); |
| | | foreach (var item in input.PackageCodeList) |
| | | { |
| | | var isExistCount = packList.Where(x => x.PackageCode == item).Count(); |
| | | if (isExistCount == 0) |
| | | { |
| | | throw Oops.Oh($"包{item}不是齐包状态,请检查!"); |
| | | } |
| | | |
| | | var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync(); |
| | | var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.人工强制待出库 || x.StockStatus == StockStatusEnum.人工强制任务已创建).Count(); |
| | | if (isExist > 0) |
| | | { |
| | | throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.人工强制待出库.ToString()}'或'{StockStatusEnum.人工强制任务已创建.ToString()}',不允许人工齐包出库"); |
| | | } |
| | | |
| | | //更新状态 |
| | | foreach (var quan in quanList) |
| | | { |
| | | if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结) |
| | | { |
| | | throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态"); |
| | | } |
| | | quan.StockStatus = StockStatusEnum.齐包待出库; |
| | | quan.StockStatusName = StockStatusEnum.齐包待出库.ToString(); |
| | | quan.UpdateTime = DateTime.Now; |
| | | quan.OperReason = "人工齐包出库"; |
| | | } |
| | | updateQuanList.AddRange(quanList); |
| | | |
| | | var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item); |
| | | packageObj.UpiStatus = UpiStatusEnum.已齐包; |
| | | packageObj.IsQiBao = true; |
| | | await _mesPackageGatherRep.UpdateAsync(packageObj); |
| | | } |
| | | |
| | | //模式判断 |
| | | var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep); |
| | | var res = await client.ValidateModeAsync(2); |
| | | if (res.result == false) |
| | | { |
| | | throw Oops.Oh(res.resMsg); |
| | | } |
| | | |
| | | await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList); |
| | |
| | | { |
| | | throw Oops.Oh($"没有配置 判断齐套 值"); |
| | | } |
| | | if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value != "无") |
| | | if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value.Trim() != "无") |
| | | { |
| | | throw Oops.Oh($"判断齐套值已经存在值{sysConfig.Value},不允许操作"); |
| | | } |
| | |
| | | |
| | | var setValue = ""; |
| | | var _QiTaoReuslt = ""; |
| | | var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync(); |
| | | var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始 || x.UpiStatus == UpiStatusEnum.不齐包).Count(); |
| | | if (num > 0) |
| | | |
| | | bool isNeedQueryQiTao = true; |
| | | var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5).FirstAsync(); |
| | | if (order == null) |
| | | { |
| | | //不齐套 |
| | | setValue = $"{input.PackageCode}|不齐套|" + curUserName; |
| | | _QiTaoReuslt = "不齐套"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | setValue = $"{input.PackageCode}|齐套|" + curUserName; |
| | | _QiTaoReuslt = "齐套"; |
| | | if (order.IsKitting != null) |
| | | { |
| | | _QiTaoReuslt = (bool)order.IsKitting ? "齐套" : "不齐套"; |
| | | isNeedQueryQiTao = false; |
| | | } |
| | | } |
| | | if (isNeedQueryQiTao) |
| | | { |
| | | var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync(); |
| | | var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始).Count(); |
| | | if (num > 0) |
| | | { |
| | | //不齐套 |
| | | _QiTaoReuslt = "不齐套"; |
| | | } |
| | | else |
| | | { |
| | | _QiTaoReuslt = "齐套"; |
| | | } |
| | | } |
| | | setValue = $"{input.PackageCode}|{_QiTaoReuslt}|" + curUserName; |
| | | |
| | | if (package.UpiStatus == UpiStatusEnum.已下线) |
| | | { |
| | | throw Oops.Oh($"包已下线,齐套结果[{_QiTaoReuslt}]"); |
| | | } |
| | | |
| | | if (order == null) |
| | | { |
| | | Mes_Order_Gather newOrder = new Mes_Order_Gather() |
| | | { |
| | | Info5 = package.Info5, |
| | | IsKitting = _QiTaoReuslt == "齐套" ? true : false, |
| | | PlanNo = package.PlanNo, |
| | | OrderId = package.OrderId |
| | | }; |
| | | await _mesOrderGatherRep.InsertAsync(newOrder); |
| | | } |
| | | else |
| | | { |
| | | order.IsKitting = _QiTaoReuslt == "齐套" ? true : false; |
| | | await _mesOrderGatherRep.UpdateAsync(order); |
| | | } |
| | | |
| | | |
| | | sysConfig.Value = setValue; |
| | | await _sysConfigRep.UpdateAsync(sysConfig); |
| | | //*/ |
| | | |
| | | |
| | | var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper); |
| | |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "ValdateLabel")] |
| | | [Description("WmsOperationTask/ValdateLabel")] |
| | | [UnitOfWork] |
| | | public async Task<Mes_Package_Gather> ValdateLabel(ValidateLabelInput input) |
| | | { |
| | | if (input == null || input.PackageCode == null || input.Upi == null) |
| | |
| | | { |
| | | throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据"); |
| | | } |
| | | |
| | | var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; |
| | | |
| | | WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); |
| | | wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); |
| | | wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordPackage.CreateTime = DateTime.Now; |
| | | wmsRecordPackage.CreateUserName = _cretaorName; |
| | | wmsRecordPackage.Location = "BZ29"; |
| | | wmsRecordPackage.OperRemark = "核对标签"; |
| | | await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); |
| | | |
| | | WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess(); |
| | | wmsRecordUpi = singleUpi.Adapt<WmsRecordUpiProcess>(); |
| | | wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpi.CreateTime = DateTime.Now; |
| | | wmsRecordUpi.CreateUserName = _cretaorName; |
| | | wmsRecordUpi.Location = "BZ29"; |
| | | wmsRecordUpi.OperRemark = "核对标签"; |
| | | await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi); |
| | | |
| | | return singlePackage; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// NG包下线-扫描包号 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "UnlineForNGPackage")] |
| | | [Description("WmsOperationTask/UnlineForNGPackage")] |
| | | [UnitOfWork] |
| | | public async Task UnlineForNGPackage(UnlineForNGPackageInput input) |
| | | { |
| | | if (input == null) |
| | | { |
| | | throw Oops.Oh("参数不能为空"); |
| | | } |
| | | if (string.IsNullOrEmpty(input.PackageCode)) |
| | | { |
| | | throw Oops.Oh("包号不能为空"); |
| | | } |
| | | //if (string.IsNullOrEmpty(input.Reason)) |
| | | //{ |
| | | // throw Oops.Oh("原因不能为空"); |
| | | //} |
| | | |
| | | var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); |
| | | if (singlePackage == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据"); |
| | | } |
| | | |
| | | singlePackage.UpiFlag = UpiFlagEnum.NG; |
| | | singlePackage.UpdateTime = DateTime.Now; |
| | | singlePackage.UpiStatus = UpiStatusEnum.已下线; |
| | | singlePackage.AreaCode = AreaCodeEnum.下线区域; |
| | | |
| | | var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync(); |
| | | if (upiLineQueueList?.Count > 0) |
| | | { |
| | | await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList); |
| | | } |
| | | |
| | | var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync(); |
| | | if (upiList == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{input.PackageCode}的板件数据"); |
| | | } |
| | | var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; |
| | | |
| | | foreach (var item in upiList) |
| | | { |
| | | item.UpiFlag = UpiFlagEnum.NG; |
| | | item.UpdateTime = DateTime.Now; |
| | | item.UpiStatus = UpiStatusEnum.已下线; |
| | | item.AreaCode = AreaCodeEnum.下线区域; |
| | | |
| | | WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess(); |
| | | wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>(); |
| | | wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpi.CreateTime = DateTime.Now; |
| | | wmsRecordUpi.CreateUserName = _cretaorName; |
| | | wmsRecordUpi.Location = ""; |
| | | wmsRecordUpi.OperRemark = "NG下线"; |
| | | await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi); |
| | | |
| | | WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg(); |
| | | wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>(); |
| | | wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpiNg.CreateTime = DateTime.Now; |
| | | wmsRecordUpiNg.CreateUserName = _cretaorName; |
| | | wmsRecordUpiNg.OperRemark = "NG下线"; |
| | | await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); |
| | | wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); |
| | | wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordPackage.Location = ""; |
| | | wmsRecordPackage.OperRemark = "NG下线"; |
| | | wmsRecordPackage.CreateTime = DateTime.Now; |
| | | wmsRecordPackage.CreateUserName = _cretaorName; |
| | | await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); |
| | | |
| | | |
| | | await _mesPackageGatherRep.UpdateAsync(singlePackage); |
| | | await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 标记NG-扫描件号 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "SetNG")] |
| | | [Description("WmsOperationTask/SetNG")] |
| | | [UnitOfWork] |
| | | public async Task SetNG(SetNGInput input) |
| | | { |
| | | if (input == null) |
| | | { |
| | | throw Oops.Oh("参数不能为空"); |
| | | } |
| | | if (string.IsNullOrEmpty(input.Upi)) |
| | | { |
| | | throw Oops.Oh("部件条码不能为空"); |
| | | } |
| | | //if (string.IsNullOrEmpty(input.Reason)) |
| | | //{ |
| | | // throw Oops.Oh("原因不能为空"); |
| | | //} |
| | | |
| | | var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync(); |
| | | if (singleUpi == null) |
| | | { |
| | | throw Oops.Oh($"没有找到部件条码{input.Upi}的数据"); |
| | | } |
| | | var packageCode = singleUpi.PackageCode; |
| | | var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == packageCode).FirstAsync(); |
| | | if (singlePackage == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{packageCode}的汇总数据"); |
| | | } |
| | | |
| | | var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; |
| | | |
| | | singlePackage.UpiFlag = UpiFlagEnum.NG; |
| | | singlePackage.UpdateTime = DateTime.Now; |
| | | singlePackage.UpdateUserName = _cretaorName; |
| | | |
| | | var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync(); |
| | | if (upiList == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{packageCode}的板件数据"); |
| | | } |
| | | foreach (var item in upiList) |
| | | { |
| | | item.UpiFlag = UpiFlagEnum.NG; |
| | | item.UpdateTime = DateTime.Now; |
| | | item.UpdateUserName = _cretaorName; |
| | | |
| | | WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess(); |
| | | wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>(); |
| | | wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpi.CreateTime = DateTime.Now; |
| | | wmsRecordUpi.CreateUserName = _cretaorName; |
| | | wmsRecordUpi.Location = ""; |
| | | wmsRecordUpi.OperRemark = "标记NG"; |
| | | await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi); |
| | | |
| | | WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg(); |
| | | wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>(); |
| | | wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpiNg.CreateTime = DateTime.Now; |
| | | wmsRecordUpiNg.CreateUserName = _cretaorName; |
| | | wmsRecordUpiNg.OperRemark = "标记NG"; |
| | | await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg); |
| | | } |
| | | |
| | | |
| | | WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); |
| | | wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); |
| | | wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordPackage.Location = ""; |
| | | wmsRecordPackage.OperRemark = "标记NG"; |
| | | wmsRecordPackage.CreateTime = DateTime.Now; |
| | | wmsRecordPackage.CreateUserName = _cretaorName; |
| | | await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); |
| | | |
| | | |
| | | await _mesPackageGatherRep.UpdateAsync(singlePackage); |
| | | await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 取消NG-扫描件号 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [ApiDescriptionSettings(Name = "CancelNG")] |
| | | [Description("WmsOperationTask/CancelNG")] |
| | | [UnitOfWork] |
| | | public async Task CancelNG(CancelNGInput input) |
| | | { |
| | | if (input == null) |
| | | { |
| | | throw Oops.Oh("参数不能为空"); |
| | | } |
| | | if (string.IsNullOrEmpty(input.Upi)) |
| | | { |
| | | throw Oops.Oh("部件条码不能为空"); |
| | | } |
| | | //if (string.IsNullOrEmpty(input.Reason)) |
| | | //{ |
| | | // throw Oops.Oh("原因不能为空"); |
| | | //} |
| | | |
| | | var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync(); |
| | | if (singleUpi == null) |
| | | { |
| | | throw Oops.Oh($"没有找到部件条码{input.Upi}的数据"); |
| | | } |
| | | var packageCode = singleUpi.PackageCode; |
| | | var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == packageCode).FirstAsync(); |
| | | if (singlePackage == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{packageCode}的汇总数据"); |
| | | } |
| | | |
| | | var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; |
| | | |
| | | singlePackage.UpiFlag = UpiFlagEnum.正常; |
| | | singlePackage.UpdateTime = DateTime.Now; |
| | | singlePackage.UpdateUserName = _cretaorName; |
| | | |
| | | var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync(); |
| | | if (upiList == null) |
| | | { |
| | | throw Oops.Oh($"没有找到包号{packageCode}的板件数据"); |
| | | } |
| | | foreach (var item in upiList) |
| | | { |
| | | item.UpiFlag = UpiFlagEnum.正常; |
| | | item.UpdateTime = DateTime.Now; |
| | | item.UpdateUserName = _cretaorName; |
| | | |
| | | WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess(); |
| | | wmsRecordUpi = item.Adapt<WmsRecordUpiProcess>(); |
| | | wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpi.CreateTime = DateTime.Now; |
| | | wmsRecordUpi.CreateUserName = _cretaorName; |
| | | wmsRecordUpi.Location = ""; |
| | | wmsRecordUpi.OperRemark = "取消NG"; |
| | | await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi); |
| | | |
| | | WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg(); |
| | | wmsRecordUpiNg = item.Adapt<WmsRecordUpiNg>(); |
| | | wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordUpiNg.CreateTime = DateTime.Now; |
| | | wmsRecordUpiNg.CreateUserName = _cretaorName; |
| | | wmsRecordUpiNg.OperRemark = "取消NG"; |
| | | await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg); |
| | | } |
| | | |
| | | |
| | | WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); |
| | | wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); |
| | | wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); |
| | | wmsRecordPackage.Location = ""; |
| | | wmsRecordPackage.OperRemark = "取消NG"; |
| | | wmsRecordPackage.CreateTime = DateTime.Now; |
| | | wmsRecordPackage.CreateUserName = _cretaorName; |
| | | await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); |
| | | |
| | | |
| | | await _mesPackageGatherRep.UpdateAsync(singlePackage); |
| | | await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); |
| | | |
| | | } |
| | | |
| | | } |
| | | |