| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_ICheckService; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Model.Models.Basic; |
| | | using WIDESEA_Model.Models.Check; |
| | | |
| | | namespace WIDESEA_CheckService |
| | |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly WebSocketServer _webSocketServer; |
| | | private readonly ILogger<ReCheckOrderService> _logger; |
| | | |
| | | private readonly IMaterielInfoService _materielInfoService; |
| | | public readonly IOutboundService _outboundService; |
| | | public IRepository<Dt_ReCheckOrder> Repository => BaseDal; |
| | | public ReCheckOrderService(IRepository<Dt_ReCheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer, ILogger<ReCheckOrderService> logger, IOutboundService outboundService) : base(BaseDal) |
| | | public ReCheckOrderService(IRepository<Dt_ReCheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer, ILogger<ReCheckOrderService> logger, IOutboundService outboundService, IMaterielInfoService materielInfoService) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _webSocketServer = webSocketServer; |
| | | _logger = logger; |
| | | _outboundService = outboundService; |
| | | _materielInfoService = materielInfoService; |
| | | } |
| | | |
| | | public async Task<WebResponseContent> ReceiveReCheckOrder(Dt_ReCheckOrder models, int operateType) |
| | |
| | | |
| | | if (BaseDal.QueryFirst(x => x.OrderNo == model.OrderNo) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"鍗曞彿閲嶅"); |
| | | return WebResponseContent.Instance.Error($"{model.OrderNo}鍗曞彿閲嶅"); |
| | | } |
| | | |
| | | var materielInfo = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().First(x => model.MaterielCode.Equals(x.MaterielCode)); |
| | | |
| | | model.Creater = "MES"; |
| | | model.CreateDate = DateTime.Now; |
| | | model.MaterielName = materielInfo?.MaterielName ?? ""; |
| | | var stockDetailIds = BaseDal.Db.Queryable<Dt_StockInfoDetail>() |
| | | .Where(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo && x.ValidDate !=null) |
| | | .Select(x => x.Id) |
| | | .ToList(); |
| | | |
| | | if (stockDetailIds.Count > 0) |
| | | { |
| | | BaseDal.Db.Updateable<Dt_StockInfoDetail>() |
| | | .SetColumns(x => x.Status == StockStatusEmun.鎵嬪姩鍐荤粨.ObjToInt()) |
| | | .Where(x => stockDetailIds.Contains(x.Id)) |
| | | .ExecuteCommand(); |
| | | } |
| | | BaseDal.AddData(model); |
| | | var outboundOrders = ConvertToOutboundOrders(model); |
| | | |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"鏈壘鍒板崟淇℃伅"); |
| | | } |
| | | var isupdate = false; |
| | | if (recheckOrder.SignSeq == model.SignSeq) |
| | | { |
| | | isupdate = true; |
| | | } |
| | | if (model.Result != 0 && recheckOrder.SignSeq != model.SignSeq) |
| | | { |
| | | var stockDetailIds = BaseDal.Db.Queryable<Dt_StockInfoDetail>() |
| | | .Where(x => x.MaterielCode == model.MaterielCode && x.BatchNo == model.BatchNo && x.ValidDate != null) |
| | | .Select(x => x.Id) |
| | | .ToList(); |
| | | |
| | | if (stockDetailIds.Count > 0) |
| | | { |
| | | var datevaliDate = BaseDal.Db.Queryable<Dt_MaterialExpirationDate>().Where(x => x.MaterialCode.Contains(model.MaterielCode.Substring(0, 6))).First(); |
| | | |
| | | BaseDal.Db.Updateable<Dt_StockInfoDetail>() |
| | | .SetColumns(x => x.Status == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()) |
| | | .Where(x => stockDetailIds.Contains(x.Id)) |
| | | .ExecuteCommand(); |
| | | |
| | | if (model.InspectionNumber == 1) |
| | | { |
| | | BaseDal.Db.Updateable<Dt_StockInfoDetail>() |
| | | .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.OneExtensionDays))) |
| | | .Where(x => stockDetailIds.Contains(x.Id)) |
| | | .ExecuteCommand(); |
| | | } |
| | | else if (model.InspectionNumber == 2) |
| | | { |
| | | BaseDal.Db.Updateable<Dt_StockInfoDetail>() |
| | | .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.TwoExtensionDays))) |
| | | .Where(x => stockDetailIds.Contains(x.Id)) |
| | | .ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | BaseDal.Db.Updateable<Dt_StockInfoDetail>() |
| | | .SetColumns(x => x.ValidDate == Convert.ToDateTime(x.ValidDate).AddDays(Convert.ToDouble(datevaliDate.ThreeExtensionDays))) |
| | | .Where(x => stockDetailIds.Contains(x.Id)) |
| | | .ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | | recheckOrder.OrderNo = model.OrderNo; |
| | | recheckOrder.MaterielCode = model.MaterielCode; |
| | | recheckOrder.BatchNo = model.BatchNo; |
| | |
| | | recheckOrder.FactoryArea = model.FactoryArea; |
| | | recheckOrder.Modifier = "MES"; |
| | | recheckOrder.ModifyDate = DateTime.Now; |
| | | var materielInfo = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().First(x => model.MaterielCode.Equals(x.MaterielCode)); |
| | | recheckOrder.MaterielName= materielInfo?.MaterielName??""; |
| | | |
| | | BaseDal.UpdateData(recheckOrder); |
| | | |
| | | _outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand(); |
| | | _outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>() |
| | | .Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand(); |
| | | if (isupdate) |
| | | { |
| | | _outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand(); |
| | | _outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>() |
| | | .Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand(); |
| | | |
| | | var outboundOrders = ConvertToOutboundOrders(model); |
| | | |
| | | await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1); |
| | | |
| | | var outboundOrders = ConvertToOutboundOrders(model); |
| | | await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | OrderType = InOrderTypeEnum.ReCheck.ObjToInt(), |
| | | OrderStatus = 0, |
| | | CreateType = 0, |
| | | BusinessType = "", |
| | | BusinessType = "30", |
| | | IsBatch = 0, |
| | | FactoryArea = reCheckOrder.FactoryArea, |
| | | Remark = "", |