| | |
| | | { |
| | | public class InventoryServices : ServiceBase<Dt_Inventory, IRepository<Dt_Inventory>>, IInventoryServices |
| | | { |
| | | private readonly ICabinOrderServices _cabinOrderServices; |
| | | private readonly IDeliveryOrderServices _deliveryOrderServices; |
| | | public InventoryServices(IRepository<Dt_Inventory> BaseDal, IDeliveryOrderServices deliveryOrderServices) : base(BaseDal) |
| | | private readonly ISupplyTaskService _supplyTaskService; |
| | | public InventoryServices(IRepository<Dt_Inventory> BaseDal, ICabinOrderServices cabinOrderServices, IDeliveryOrderServices deliveryOrderServices, ISupplyTaskService supplyTaskService) : base(BaseDal) |
| | | { |
| | | _cabinOrderServices = cabinOrderServices; |
| | | _deliveryOrderServices = deliveryOrderServices; |
| | | _supplyTaskService = supplyTaskService; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å䏿¸¸åºåä¿¡æ¯ |
| | |
| | | |
| | | if (response.resultCode != "0") |
| | | { |
| | | SendErrorToUpstream(8, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | //SendErrorToUpstream(8, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | |
| | |
| | | catch (Exception ex) |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | SendErrorToUpstream(8, "", ex.Message, ""); |
| | | //SendErrorToUpstream(8, "", ex.Message, ""); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request) |
| | | { |
| | | try |
| | | { |
| | | if (request == null || request.details == null || request.details.Count < 1) throw new Exception("请æ±åæ°æ æ"); |
| | | var Warecode = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | switch (request.orderType) |
| | | { |
| | | case "1": //å
¥åº |
| | | { |
| | | Dt_CabinOrder cabinOrder = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == request.externalOrderNo && x.Warehouse_no == Warecode).Includes(x => x.Details).First(); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°å
¥åºåå·ã{request.externalOrderNo}ãçå
¥åºåä¿¡æ¯"); |
| | | if (cabinOrder.OdrderStatus == "已宿") |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = $"æå" }; |
| | | WebResponseContent content = _cabinOrderServices.CompleteLKInOrder(cabinOrder, request); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | Dt_DeliveryOrder deliveryOrder = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == request.externalOrderNo && x.Warehouse_no == Warecode).Includes(x => x.Details).First(); |
| | | if (deliveryOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçåºåºåä¿¡æ¯"); |
| | | if (deliveryOrder.OutStatus == "已宿") |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = $"æå" }; |
| | | WebResponseContent content = _deliveryOrderServices.CompleteLKOutOrder(deliveryOrder, request); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | #region æ¾çç¹ä»»å¡ |
| | | List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => x.OrderNo == request.externalOrderNo && x.WarehouseCode == Warecode && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt()); |
| | | foreach (var detail in request.details) |
| | | { |
| | | Dt_SupplyTask? supplyTask = supplyTasks.Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo).FirstOrDefault(); |
| | | if (supplyTask == null) throw new Exception($"æªæ¾å°è®¢åå·ã{request.externalOrderNo}ãç©æç¼å·ã{detail.productCode}ãççç¹ä»»å¡"); |
| | | if (detail.isLossOrProfit == 1) // çäº |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity - detail.ea; |
| | | } |
| | | else if (detail.isLossOrProfit == 2) // çç |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity + detail.ea; |
| | | } |
| | | else // çä¸ |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity; |
| | | } |
| | | var content = _deliveryOrderServices.CheckTaskFinish(supplyTask); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | #endregion |
| | | } |
| | | break; |
| | | default: |
| | | throw new Exception($"æªå®ä¹çç±»åã{request.orderType}ã"); |
| | | } |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "0", |
| | | msg = $"æå" |
| | | }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "500", |
| | | msg = $"å¤ç失败: {ex.Message}" |
| | | }; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// wcsåä¼ ç»æè°ç¨æçæ¹æ³ ä¸ç®¡æ¯å
¥åº åºåº çç¹é½ä¼è°ç¨è¿ä¸ªæ¥å£ |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <returns></returns> |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request) |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback1(EdiOrderCallbackRequest request) |
| | | { |
| | | try |
| | | { |
| | |
| | | } |
| | | var reslut = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | // 2ï¸â£ å¼å¯äºå¡ |
| | | BaseDal.Db.Ado.BeginTran(); |
| | | //BaseDal.Db.Ado.BeginTran(); |
| | | foreach (var detail in request.details) |
| | | { |
| | | #region æ¥è¯¢ç©æä¿¡æ¯ãè®¡ç®æ»å |
| | |
| | | #endregion |
| | | else |
| | | { |
| | | if (cabinOrder == null || cabinOrder.OdrderStatus == "已宿") |
| | | throw new Exception($"å
¥åºå已宿"); |
| | | if (cabinOrder.OdrderStatus == "已宿") |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "0", |
| | | msg = "æå" |
| | | }; |
| | | Dt_CabinOrderDetail cabinOrderDetail = cabinOrder.Details.Where(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo && x.Status == 1).First(); |
| | | if (cabinOrderDetail == null || cabinOrderDetail.OrderDetailStatus == "已宿") |
| | | throw new Exception($"å
¥åºåæç»å·²å®æ"); |
| | |
| | | ProductionDate = detail.finishDate.ToString("yyyy-MM-dd"), |
| | | ShelfLife = 0, |
| | | ValidityPeriod = cabinOrderDetail.Exp_date, |
| | | Remark = "WCSåä¼ å建" |
| | | Remark = "æºè½ç«åº" |
| | | }; |
| | | BaseDal.Db.Insertable(inventoryInfo).ExecuteCommand(); |
| | | } |
| | |
| | | ERPStockQuantity = 0, |
| | | Status = false, |
| | | ProductionDate = detail.finishDate.ToString("yyyy-MM-dd"), |
| | | ValidityPeriod = inventoryInfo.ValidityPeriod, |
| | | ValidityPeriod = inventoryInfo.ValidityPeriod.ObjToDate(), |
| | | Remark = "èªå¨å建" |
| | | }; |
| | | BaseDal.Db.Insertable(inventory_Batch).ExecuteCommand(); |
| | |
| | | case "2": |
| | | { |
| | | Dt_DeliveryOrder cabinOrder = Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == request.externalOrderNo && x.Warehouse_no == reslut).Includes(x => x.Details).First(); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçå
¥åºåä¿¡æ¯"); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçåºåºåä¿¡æ¯"); |
| | | |
| | | if (cabinOrder.Out_type == "6") |
| | | { |
| | |
| | | } |
| | | |
| | | // 9ï¸â£ æäº¤äºå¡ |
| | | BaseDal.Db.Ado.CommitTran(); |
| | | //BaseDal.Db.Ado.CommitTran(); |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | |
| | | catch (Exception ex) |
| | | { |
| | | // ð åæ»äºå¡ |
| | | BaseDal.Db.Ado.RollbackTran(); |
| | | //BaseDal.Db.Ado.RollbackTran(); |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "500", |
| | | msg = $"å¤ç失败: {ex.Message}" |
| | | }; |
| | | |
| | | //Console.WriteLine(ex.Message); |
| | | } |
| | | } |
| | | |