| | |
| | | { |
| | | public class CabinOrderServices : ServiceBase<Dt_CabinOrder, IRepository<Dt_CabinOrder>>, ICabinOrderServices |
| | | { |
| | | |
| | | static string SearchDate = ""; |
| | | private readonly IBasicService _basicService; |
| | | private readonly IMedicineGoodsServices _medicineGoodsServices; |
| | |
| | | _supplyTaskService = supplyTaskService; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å䏿¸¸ç³»ç»çå
¥åºå |
| | | /// pdaè·ååºåºå |
| | | /// </summary> |
| | | /// <param name="searchDate"></param> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | //public WebResponseContent GetUpstreamOrder(DateTime searchDate) |
| | | //{ |
| | | // var responseContent = new WebResponseContent(); |
| | | |
| | | // try |
| | | // { |
| | | // // 请æ±å°å |
| | | // var url = "http://127.0.0.1:9090/GYZ2/95fck/inOrder"; |
| | | |
| | | // //// 请æ±åæ° |
| | | // var requestData = new |
| | | // { |
| | | // searchDate = searchDate.ToString("yyyy-MM-dd HH:mm:ss") |
| | | // }; |
| | | |
| | | // // åèµ·è¯·æ± |
| | | // var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | |
| | | // // ååºåå |
| | | // var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result); |
| | | |
| | | // if (response.resultCode != "0") |
| | | // { |
| | | // // è°ç¨å¼å¸¸æ¥å£ |
| | | // SendErrorToUpstream(1, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | // return responseContent.Error(response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | // } |
| | | |
| | | // if (response.data == null || !response.data.Any()) |
| | | // { |
| | | // return responseContent.OK("æ æ°å
¥åºåæ°æ®"); |
| | | // } |
| | | |
| | | // Db.Ado.BeginTran(); |
| | | // List<Dt_CabinOrder> _CabinOrders = new List<Dt_CabinOrder>(); |
| | | // foreach (var order in response.data) |
| | | // { |
| | | // try |
| | | // { |
| | | // // æå
¥å
¥åºå表 |
| | | // var entityOrder = new Dt_CabinOrder |
| | | // { |
| | | |
| | | // Order_no = order.order_no, |
| | | // Order_type = order.order_type, |
| | | // Supplier_no = order.supplier_no, |
| | | // Account_tiem = order.account_time, |
| | | // OdrderStatus = "æ°å»º", |
| | | // }; |
| | | // //var orderId = Db.Insertable(entityOrder).ExecuteReturnIdentity(); //å°±æ¯è¿å主é®IDã |
| | | |
| | | // // æå
¥å
¥åºæç»è¡¨ |
| | | // var detailEntities = order.details.Select(d => new Dt_CabinOrderDetail |
| | | // { |
| | | // //OrderId= orderId, |
| | | // Goods_no = d.goods_no, |
| | | // Order_qty = d.order_qty, |
| | | // Batch_num = d.batch_num, |
| | | // Exp_date = d.exp_date, |
| | | // Warehouse_no = d.warehouse_no, |
| | | // Status = 0, |
| | | // }).ToList(); |
| | | // entityOrder.Details.AddRange(detailEntities); //建ç«ä¸»å¯¹è±¡ä¸å对象çå
³èå
³ç³» |
| | | // _CabinOrders.Add(entityOrder); |
| | | |
| | | // //èªå·± |
| | | // /// Db.Insertable(detailEntities).ExecuteCommand(); |
| | | |
| | | // //è¿éè¦è°ç¨ä¸ä¸ªæ¥å£å°ä¸é¢çä¿¡æ¯ä¼ ç»wcsï¼ç¶åæ¹åç¶æ |
| | | // } |
| | | // catch (Exception innerEx) |
| | | // { |
| | | // // éå¯¹ææ¡è®¢åæ¥éæ¶ï¼æ¨éå¼å¸¸ç»ä¸æ¸¸ |
| | | // SendErrorToUpstream(1, order.order_no, innerEx.Message, ""); |
| | | // throw; // æåºå¼å¸¸ï¼è®©å¤å±æè·åæ» |
| | | // } |
| | | // } |
| | | // // æ¹éæå
¥ï¼SqlSugarèªå¨å¤ç主å¤é®å
³ç³»ï¼ |
| | | // Db.Insertable(_CabinOrders).ExecuteCommand(); |
| | | // Db.Ado.CommitTran(); |
| | | |
| | | // //妿EdiIn宿é£ä¹å°±è°ç¨CompleteOrderæ¥å£ |
| | | |
| | | // return responseContent.OK("忥å
¥åºåæå"); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // // å
¨å±å¼å¸¸æ¶ï¼ä¹æ¨éå¼å¸¸ç»ä¸æ¸¸ |
| | | // SendErrorToUpstream(1, "", ex.Message, ""); |
| | | // Db.Ado.RollbackTran(); |
| | | // return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | // } |
| | | //} |
| | | public WebResponseContent GetCabinOrders(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å䏿¸¸ç³»ç»çå
¥åºå |
| | | /// </summary> |
| | | /// <param name="searchDate"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetUpstreamOrder() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | |
| | | |
| | | foreach (var order in newOrders) |
| | | { |
| | | bool skipOrder = false;//æ è®°æ¯å¦è·³è¿è¯¥å
¥åºå |
| | | var entityOrder = new Dt_CabinOrder |
| | | { |
| | | Order_no = order.order_no, |
| | |
| | | // å°ä¸æ¸¸å
¥åºæ°éè½¬ä¸ºæ£æ° |
| | | item.order_qty = Math.Abs(item.order_qty); |
| | | #region æ ¹æ®ç©æç¼ç æ¥è¯¢ç©æä¿¡æ¯ |
| | | //Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == item.goods_no); |
| | | Dt_MedicineGoods materielInfo = BaseDal.Db.Queryable<Dt_MedicineGoods>().Where(x => x.Goods_no == item.goods_no).First(); |
| | | Dt_MaterielInfo materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == item.goods_no); |
| | | //å¦æç©æä¿¡æ¯ä¸åå¨ï¼è·³è¿æ´ä¸ªå
¥åºå |
| | | if (materielInfo == null) |
| | | { |
| | | skipOrder = true; |
| | | Console.WriteLine($"è·³è¿å
¥åºå {order.order_no}ï¼åå ï¼æªæ¾å°åå [{item.goods_no}] çç©æä¿¡æ¯ã"); |
| | | break; |
| | | } |
| | | |
| | | // è¥ç©æä¸å卿 MaterielSourceType 为空ï¼åè·³è¿æ´ä¸ªå
¥åºå |
| | | if (materielInfo == null || !Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | { |
| | | skipOrder = true; |
| | | break; |
| | | } |
| | | //Dt_MedicineGoods materielInfo = BaseDal.Db.Queryable<Dt_MedicineGoods>().Where(x => x.Goods_no == item.goods_no).First(); |
| | | ///æ ¹æ®ç©æä¿¡æ¯å¤§å°ä»¶å±æ§åºåæ¯å¦å
¥ç«åº //大件å
¥å¹³åº |
| | | if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart) |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | } |
| | | //_basicService.MaterielInfoService.Repository.UpdateData(materielInfo); |
| | | _medicineGoodsServices.Db.Updateable(materielInfo).ExecuteCommand(); |
| | | _basicService.MaterielInfoService.Repository.UpdateData(materielInfo); |
| | | //_medicineGoodsServices.Db.Updateable(materielInfo).ExecuteCommand(); |
| | | #endregion |
| | | } |
| | | // âå¦æè·³è¿è¯¥åï¼åç´æ¥continueï¼ä¸ä¿å |
| | | if (skipOrder) |
| | | { |
| | | Console.WriteLine($"è·³è¿å
¥åºå {order.order_no}ï¼å 为å卿ªå®ä¹ç©æå±æ§çååã"); |
| | | continue; |
| | | } |
| | | _CabinOrders.Add(entityOrder); |
| | | orderNos.Add(order.order_no); |
| | |
| | | catch (Exception ex) |
| | | { |
| | | // å
¨å±å¼å¸¸æ¶ï¼ä¹æ¨éå¼å¸¸ç»ä¸æ¸¸ |
| | | SendErrorToUpstream(1, "", ex.Message, ""); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 对没æè¿è¡ç»´æ¤ååä¿¡æ¯è¡¨çå
¥åºåè¿è¡è¿æ»¤å¤ç |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetUpstreamOrder2() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | // 请æ±å°å |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder"; |
| | | //if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | //// 请æ±åæ° |
| | | var requestData = new |
| | | { |
| | | //searchDate = SearchDate |
| | | searchDate = "2020-10-10 20:45:16" // æ£ç¡®çæ ¼å¼ |
| | | }; |
| | | //SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result); |
| | | |
| | | if (response.resultCode != "0") |
| | | { |
| | | SendErrorToUpstream(1, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | |
| | | if (response.data == null || !response.data.Any()) |
| | | return responseContent.OK("æ æ°å
¥åºåæ°æ®"); |
| | | |
| | | var existingOrderNos = BaseDal.Db.Queryable<Dt_CabinOrder>() |
| | | .Select(x => x.Order_no) |
| | | .ToList(); |
| | | |
| | | var newOrders = response.data |
| | | .Where(order => !existingOrderNos.Contains(order.order_no)) |
| | | .ToList(); |
| | | |
| | | if (!newOrders.Any()) |
| | | return responseContent.OK("ææå
¥åºåå·²åå¨ï¼æ éæ°å¢"); |
| | | |
| | | Db.Ado.BeginTran(); |
| | | try |
| | | { |
| | | List<Dt_CabinOrder> _CabinOrders = new(); |
| | | List<string> orderNos = new(); |
| | | |
| | | foreach (var order in newOrders) |
| | | { |
| | | bool skipOrder = false; // æ è®°æ¯å¦è·³è¿è¯¥å
¥åºå |
| | | var entityOrder = new Dt_CabinOrder |
| | | { |
| | | Order_no = order.order_no, |
| | | Order_type = order.order_type, |
| | | Supplier_no = order.supplier_no, |
| | | Account_tiem = order.account_time, |
| | | OdrderStatus = "æ°å»º", |
| | | Supplier_name = order.supplier_name, |
| | | Warehouse_no = order.warehouse_no, |
| | | Details = new List<Dt_CabinOrderDetail>() |
| | | }; |
| | | |
| | | foreach (var item in order.details) |
| | | { |
| | | item.order_qty = Math.Abs(item.order_qty); |
| | | |
| | | // æ¥è¯¢ç©æä¿¡æ¯ |
| | | var materielInfo = BaseDal.Db.Queryable<Dt_MedicineGoods>() |
| | | .Where(x => x.Goods_no == item.goods_no) |
| | | .First(); |
| | | |
| | | |
| | | //å¦æç©æä¿¡æ¯ä¸åå¨ï¼è·³è¿æ´ä¸ªå
¥åºå |
| | | if (materielInfo == null) |
| | | { |
| | | skipOrder = true; |
| | | Console.WriteLine($"è·³è¿å
¥åºå {order.order_no}ï¼åå ï¼æªæ¾å°åå [{item.goods_no}] çç©æä¿¡æ¯ã"); |
| | | break; |
| | | } |
| | | |
| | | // è¥ç©æä¸å卿 MaterielSourceType 为空ï¼åè·³è¿æ´ä¸ªå
¥åºå |
| | | if (materielInfo == null || !Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | { |
| | | skipOrder = true; |
| | | break; |
| | | } |
| | | |
| | | // åºå大件/å°ä»¶ |
| | | if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart) |
| | | { |
| | | var detail = new Dt_CabinOrderDetail |
| | | { |
| | | Reservoirarea = order.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = item.order_qty, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OrderDetailStatus = "æ°å»º", |
| | | Status = 2 |
| | | }; |
| | | entityOrder.Details.Add(detail); |
| | | } |
| | | else |
| | | { |
| | | Dt_CabinOrderDetail orderDetail = null; |
| | | var ys = item.order_qty % materielInfo.BoxQty; // ä¸è½æ´é¤çæ£ä»¶ |
| | | var xs = item.order_qty / materielInfo.BoxQty; // æ´ç®±æ°é |
| | | |
| | | // ææ£ä»¶ |
| | | if (ys > 0) |
| | | { |
| | | orderDetail = new Dt_CabinOrderDetail |
| | | { |
| | | Reservoirarea = order.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = ys, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OrderDetailStatus = "æ°å»º", |
| | | Status = 0 |
| | | }; |
| | | materielInfo.Business_qty += ys; |
| | | } |
| | | |
| | | // ä¸è¶³æä½åºåæ¶è¡¥å
¥ç«åº |
| | | while (materielInfo.Business_qty < materielInfo.MinQty && xs > 0) |
| | | { |
| | | xs--; |
| | | if (orderDetail == null) |
| | | { |
| | | orderDetail = new Dt_CabinOrderDetail |
| | | { |
| | | Reservoirarea = order.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = materielInfo.BoxQty, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OrderDetailStatus = "æ°å»º", |
| | | Status = 0 |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | orderDetail.Order_qty += materielInfo.BoxQty; |
| | | } |
| | | materielInfo.Business_qty += materielInfo.BoxQty; |
| | | } |
| | | |
| | | if (orderDetail != null) entityOrder.Details.Add(orderDetail); |
| | | |
| | | // å©ä½æ´ç®±å
¥å¹³åº |
| | | if (xs > 0) |
| | | { |
| | | entityOrder.Details.Add(new Dt_CabinOrderDetail |
| | | { |
| | | Reservoirarea = order.warehouse_no, |
| | | Goods_no = item.goods_no, |
| | | Order_qty = materielInfo.BoxQty * xs, |
| | | Batch_num = item.batch_num, |
| | | Exp_date = item.exp_date, |
| | | OrderDetailStatus = "æ°å»º", |
| | | Status = 2 |
| | | }); |
| | | } |
| | | } |
| | | |
| | | _medicineGoodsServices.Db.Updateable(materielInfo).ExecuteCommand(); |
| | | } |
| | | |
| | | // âå¦æè·³è¿è¯¥åï¼åç´æ¥continueï¼ä¸ä¿å |
| | | if (skipOrder) |
| | | { |
| | | Console.WriteLine($"è·³è¿å
¥åºå {order.order_no}ï¼å 为å卿ªå®ä¹ç©æå±æ§çååã"); |
| | | continue; |
| | | } |
| | | |
| | | _CabinOrders.Add(entityOrder); |
| | | orderNos.Add(order.order_no); |
| | | } |
| | | |
| | | if (_CabinOrders.Any()) |
| | | { |
| | | BaseDal.Db.InsertNav(_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | Db.Ado.CommitTran(); |
| | | return responseContent.OK($"æå忥 {_CabinOrders.Count} æ¡å
¥åºå"); |
| | | } |
| | | else |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | return responseContent.OK("æ å¯å¤ççå
¥åºåï¼åå屿§æªå®ä¹ææªæ¾å°ï¼"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | SendErrorToUpstream(1, "", ex.Message, ""); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | SendErrorToUpstream(1, "", ex.Message, ""); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | |
| | | string materialCode = "YY";//é»è®¤å¼ |
| | | //è·åå½å订åç第ä¸ä¸ªæç»é¡¹ |
| | | var firstDetail = order.Details.FirstOrDefault(); |
| | | if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterialCode)) |
| | | if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterielErpType)) |
| | | { |
| | | //妿æ¡ä»¶æ»¡è¶³ï¼å°ç©æä»£ç 设置为第ä¸ä¸ªæç»é¡¹å¯¹åºçè¯åç©æä»£ç |
| | | materialCode = firstDetail.MedicineGoods.MaterialCode; |
| | | materialCode = firstDetail.MedicineGoods.MaterielErpType; |
| | | } |
| | | |
| | | var ediDto = new ToediInInfo |
| | |
| | | //产å |
| | | productCode = d.Goods_no, |
| | | //skuåç§° |
| | | productName = d.MedicineGoods?.Goods_spm, |
| | | productName = d.MedicineGoods?.MaterielName, |
| | | //skuè§æ ¼ |
| | | productSpecifications = d.MedicineGoods?.Model, |
| | | productSpecifications = d.MedicineGoods?.MaterielSpec, |
| | | //æ°é |
| | | quantity = (int)d.Order_qty, |
| | | //ææ |