| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.FangCang; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.SquareCabin; |
| | | using WIDESEA_ISquareCabinRepository; |
| | | using WIDESEA_ISquareCabinServices; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_SquareCabinRepository; |
| | | using static System.Net.WebRequestMethods; |
| | | using static WIDESEA_DTO.SquareCabin.OrderDto; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | |
| | | public CabinOrderServices(ICabinOrderRepository BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | static string SearchDate = ""; |
| | | |
| | | /// <summary> |
| | | /// è·å䏿¸¸ç³»ç»çå
¥åºå |
| | | /// </summary> |
| | | /// <param name="searchDate"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetUpstreamOrder(DateTime searchDate) |
| | | //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 GetUpstreamOrder() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | |
| | |
| | | { |
| | | // 请æ±å°å |
| | | var url = "http://127.0.0.1:9090/GYZ2/95fck/inOrder"; |
| | | |
| | | // 请æ±åæ° |
| | | if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | //// 请æ±åæ° |
| | | var requestData = new |
| | | { |
| | | searchDate = searchDate.ToString("yyyy-MM-dd HH:mm:ss") |
| | | searchDate = SearchDate |
| | | }; |
| | | |
| | | 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); |
| | |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | try |
| | | { |
| | | List<Dt_CabinOrder> _CabinOrders = new List<Dt_CabinOrder>(); |
| | | //åå¨å
¥åºåå· |
| | | List<string> orderNos = new List<string>(); |
| | | |
| | | 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, |
| | | }; |
| | | |
| | | var orderId = Db.Insertable(entityOrder).ExecuteReturnIdentity(); //å°±æ¯è¿å主é®IDã |
| | | |
| | | // æå
¥å
¥åºæç»è¡¨ |
| | | var detailEntities = order.details.Select(d => new Dt_CabinOrderDetail |
| | | OdrderStatus = "æ°å»º", |
| | | Details = 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(); |
| | | OrderDetailStatus="æ°å»º", |
| | | Status = d.warehouse_no== "001" ? 0 : 2, //妿æ¯001æ¿é£ä¹å°±æ¯æªåæ¥ç¶æï¼å¦æä¸æ¯001æ¿é£ä¹å°±æ¯æ éåæ¥ç¶æ |
| | | }).ToList() |
| | | }; |
| | | _CabinOrders.Add(entityOrder); |
| | | orderNos.Add(order.order_no); |
| | | }; |
| | | BaseDal.Db.InsertNav(_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | |
| | | Db.Insertable(detailEntities).ExecuteCommand(); |
| | | } |
| | | catch (Exception innerEx) |
| | | //å¨ä¸åç»wcs |
| | | var reslut= EdiIn(); //åç»ä¸æ¸¸ |
| | | //妿è¿ä¸ªæ¹æ³æåäºï¼é£ä¹å°±è°ç¨CompleteOrderæ¥å£ï¼ç¶åæ¹å |
| | | if (reslut.Status==true) |
| | | { |
| | | // éå¯¹ææ¡è®¢åæ¥éæ¶ï¼æ¨éå¼å¸¸ç»ä¸æ¸¸ |
| | | SendErrorToUpstream(1, order.order_no, innerEx.Message, ""); |
| | | throw; // æåºå¼å¸¸ï¼è®©å¤å±æè·åæ» |
| | | } |
| | | } |
| | | //妿EdiIn宿é£ä¹å°±è°ç¨CompleteOrderæ¥å£ï¼å°ç¶ææ¹ä¸ºUpOrderStatus == "已宿 |
| | | foreach (var no in orderNos) |
| | | { |
| | | //CompleteOrder(no); // ä½¿ç¨æ¶éçåå· |
| | | |
| | | //Db.Updateable<Dt_CabinOrder>() |
| | | // .SetColumns(o => o.UpOrderStatus == "已宿") // æ´æ°ä¸æ¸¸ç¶æ |
| | | // .Where(o => o.Order_no == no && o.OdrderStatus == "已宿") |
| | | // .ExecuteCommand(); |
| | | } |
| | | } |
| | | Db.Ado.CommitTran(); |
| | | |
| | | 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, ""); |
| | | Db.Ado.RollbackTran(); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¼ ç»wcs |
| | | /// </summary> |
| | | public WebResponseContent EdiIn() |
| | | { |
| | | try |
| | | { |
| | | // 1. å
æ¾åºè³å°æä¸æ¡ç¬¦åæ¡ä»¶çæç»å¯¹åºç订åID |
| | | //var validOrderIds = Db.Queryable<Dt_CabinOrderDetail>() |
| | | // .Where(d => d.Status == 0 || d.Status == 2) |
| | | // .Select(d => d.OrderId) |
| | | // .Distinct() |
| | | // .ToList(); |
| | | |
| | | // 2. æ¥è¯¢ç¬¦åæ¡ä»¶ç订åï¼è¡¨å¤´=æ°å»º && å
嫿ææç»ï¼ |
| | | var orders = BaseDal.Db.Queryable<Dt_CabinOrder>() |
| | | .Where(o => o.OdrderStatus == "æ°å»º") |
| | | .Includes(o => o.Details, d => d.MedicineGoods) |
| | | .ToList(); |
| | | // 3. åè¿æ»¤æä¸ç¬¦åæ¡ä»¶çæç»ï¼åªä¿ç Status=0ï¼ |
| | | foreach (var order in orders) |
| | | { |
| | | order.Details = order.Details.Where(d => d.Status == 0).ToList(); |
| | | } |
| | | |
| | | if (orders == null || !orders.Any()) |
| | | { |
| | | Console.WriteLine("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | return WebResponseContent.Instance.Error("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | } |
| | | |
| | | // 4. éå订åï¼ç»è£
DTO å¹¶æ¨é |
| | | foreach (var order in orders) |
| | | { |
| | | var ediDto = new ToediInInfo |
| | | { |
| | | //客æ·ä»£ç |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = "YY", |
| | | //å
¥åºåå· |
| | | externalOrderNo = order.Order_no, |
| | | //å
¥åºåç±»å |
| | | inOrderType = order.Order_type == "1" ? "10" : "20", |
| | | //ä¼å
级 |
| | | priority = 0, |
| | | //æ¯å¦åæ¶ |
| | | Is_cancel = 0, |
| | | details = order.Details.Select(d => new ToediInDetail |
| | | { |
| | | //æ¹å· |
| | | batchNo = d.Batch_num, |
| | | //产å |
| | | productCode = d.Goods_no, |
| | | //skuåç§° |
| | | productName = d.MedicineGoods?.Goods_spm, |
| | | //skuè§æ ¼ |
| | | productSpecifications = d.MedicineGoods?.Model, |
| | | //æ°é |
| | | quantity = (int)d.Order_qty, |
| | | //ææ |
| | | validityPeriod = d.Exp_date, |
| | | //ç产åå®¶ |
| | | manufacturer = d.MedicineGoods?.Factory, |
| | | //æ¿å· |
| | | libraryNo = d.Warehouse_no, |
| | | //ççå
¥åº |
| | | //stocktakingDetails = new List<ToediInStock>() |
| | | //stocktakingDetails = new List<ToediInStock>() |
| | | //{ |
| | | // new ToediInStock |
| | | // { |
| | | // //æç®±å· |
| | | // palletCode = "PDA001", |
| | | // //æ°é |
| | | // quantity = d.Order_qty.ToString() |
| | | // } |
| | | // } |
| | | }).ToList() |
| | | }; |
| | | |
| | | var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn"; |
| | | var result = HttpHelper.Post(url, ediDto.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | // æ´æ°è¡¨å¤´ç¶æ |
| | | Db.Updateable<Dt_CabinOrder>() |
| | | .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "å¼å§" }) |
| | | .Where(o => o.Id == order.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ´æ°æç»ç¶æä¸ºå·²åæ¥ |
| | | Db.Updateable<Dt_CabinOrderDetail>() |
| | | .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "已宿" }) |
| | | .Where(d => d.OrderId == order.Id && d.Status == 0) |
| | | .ExecuteCommand(); |
| | | |
| | | Console.WriteLine($"订å {order.Order_no} æ¨éæå"); |
| | | } |
| | | else |
| | | { |
| | | SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS æ¨é失败", ""); |
| | | Console.WriteLine($"订å {order.Order_no} æ¨é失败ï¼{resp?.msg}"); |
| | | return new WebResponseContent { Status = false, Message = "è®¢åæ¨é失败" }; |
| | | } |
| | | } |
| | | return new WebResponseContent { Status = true, Message = "æ¨éæå" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("EdiIn å¼å¸¸ï¼" + ex.Message); |
| | | return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// å
¥åºæ¥å®ææ¥å£ |
| | |
| | | { |
| | | return responseContent.Error("å
¥åºåå·ä¸å¯ä»¥ä¸ºç©º"); |
| | | } |
| | | |
| | | var url = " http://127.0.0.1:9090/GYZ2/95fck/inOrderOk"; |
| | | var reslut=HttpHelper.Post(url, new {order_no }.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(reslut); |
| | | var result = HttpHelper.Post(url, new { order_no }.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result); |
| | | |
| | | if (response.resultCode != "0") |
| | | { |
| | | SendErrorToUpstream(2, "", "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | return responseContent.OK("æä½æå"); |
| | | |
| | | // å
æ¥è¡¨å¤´ |
| | | var order = Db.Queryable<Dt_CabinOrder>() |
| | | .First(o => o.Order_no == order_no); |
| | | |
| | | if (order == null) |
| | | { |
| | | return responseContent.Error($"æªæ¾å°å
¥åºåå·: {order_no}"); |
| | | } |
| | | |
| | | // æ¥è¯¢æææç»æ¯å¦é½å·²å®æ |
| | | var allDetailsCompleted = Db.Queryable<Dt_CabinOrderDetail>() |
| | | .Where(d => d.OrderId == order.Id&&d.OrderDetailStatus=="已宿") // æç»è¡¨ç¨ OrderId å
³è主表 |
| | | .Count(); |
| | | |
| | | if (allDetailsCompleted>0) |
| | | { |
| | | // æ´æ°è¡¨å¤´ç¶æä¸ºå·²å®æ |
| | | Db.Updateable<Dt_CabinOrder>() |
| | | .SetColumns(o => o.OdrderStatus == "已宿") |
| | | .Where(o => o.Order_no == order_no) |
| | | .ExecuteCommand(); |
| | | |
| | | return responseContent.OK("æä½æåï¼å
¥åºååæç»å
¨é¨å®æ"); |
| | | } |
| | | else |
| | | { |
| | | return responseContent.OK("æä½æåï¼ä½ä»ææªå®æçæç»"); |
| | | } |
| | | //å é¤å
¨é¨ç¶ä¸ºå·²å®æçæç»å表头ï¼ç§»å
¥åå²è¡¨ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | SendErrorToUpstream(1, "", ex.Message, ""); |
| | | return responseContent.Error("åæ¥å¤±è´¥: " + ex.Message); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¨éå¼å¸¸ä¿¡æ¯ç»ä¸æ¸¸ç³»ç»1.å
¥åºåæ¥å£ï¼2.å
¥åºåæ¥å®ææ¥å£ï¼3.åºåºåæ¥å£ï¼4.åºåºæ¥å®ææ¥å£ï¼5.è¯ååºç¡ä¿¡æ¯åæ¥æ¥å£ï¼6.ä¾åºåä¿¡æ¯æ¥å£ï¼7.客æ·ä¿¡æ¯æ¥å£ï¼8.åºå |
| | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |