| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IWMsInfoServices; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.SquareCabin.OrderDto; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_WMsInfoServices |
| | |
| | | { |
| | | } |
| | | public IRepository<Dt_MaterielInfo> Repository => BaseDal; |
| | | |
| | | |
| | | static string SearchDate = "2025-11-01 00:00:00"; |
| | | |
| | | /// <summary> |
| | | /// è·åè¯ååºç¡ä¿¡æ¯åæ¥æ¥å£ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetMedicineGoodsInfom() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo"; |
| | | if (string.IsNullOrEmpty(SearchDate)) |
| | | { |
| | | // é»è®¤æ¥è¯¢è¿å»24å°æ¶çæ°æ® |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | } |
| | | // 请æ±åæ° |
| | | var requestData = new |
| | | { |
| | | searchDate = SearchDate |
| | | }; |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | // åèµ·è¯·æ± |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | |
| | | // ååºåå |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result); |
| | | |
| | | if (response == null || response.resultCode != "0") |
| | | { |
| | | // è°ç¨å¼å¸¸æ¥å£ |
| | | //SendErrorToUpstream(5, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response?.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | if (response.data.Count < 1) |
| | | { |
| | | return responseContent.OK("æ æ°è¯åæ°æ®"); |
| | | } |
| | | |
| | | var codes = response.data.Select(x => x.goods_no).ToList(); |
| | | |
| | | //è·åææå·²åå¨çååç¼å· |
| | | var existingGoodsNos = BaseDal.QueryData(x => codes.Contains(x.MaterielCode)).Select(x => x.MaterielCode).ToList(); |
| | | |
| | | // æ¶éææè¦æå
¥çå®ä½ |
| | | var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MaterielInfo |
| | | { |
| | | MaterielCode = Medicat.goods_no, |
| | | MaterielErpType = Medicat.goods_type, |
| | | item = Medicat.goods_tym, //éç¨å |
| | | MaterielName = Medicat.goods_spm,//ç©æåç§° |
| | | Dosage_form = GetDosageForm(Medicat.dosage_form),//è¯å |
| | | Barcode = Medicat.barcode,//æ¡å½¢å |
| | | MaterielSpec = Medicat.model, |
| | | Factory = Medicat.factory, |
| | | MaterielUnit = Medicat.unit,//åä½ |
| | | MaterielSourceType = MaterielSourceTypeEnum.PurchasePart, |
| | | // ä½¿ç¨ ?? è¿ç®ç¬¦æä¾é»è®¤å¼ |
| | | MaterielLength = (float?)Medicat.item_length, |
| | | MaterielWide = (float?)Medicat.item_width, |
| | | MaterielHeight = (float?)Medicat.item_hight, |
| | | MaterielVolume = (float?)Medicat.item_volumn, |
| | | MaterielWeight = (float?)Medicat.item_weight, |
| | | MaterielStoragecondition = float.TryParse(Medicat.storage_confition, out var val) ? val : null, //å¨åæ¡ä»¶ |
| | | Remark = Medicat.remark, |
| | | GoodStatusState = "æªä¸å", |
| | | ModifyDate = Medicat.modify_date |
| | | }).ToList(); |
| | | // 䏿¬¡æ§æ¹éæå
¥æ°æ®åº |
| | | BaseDal.AddData(entityList); |
| | | |
| | | //ProductSynchronous(); |
| | | return responseContent.OK("忥æå"); |
| | | } |
| | | |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("è·åERPç©æä¿¡æ¯å¼å¸¸ï¼" + ex.Message); |
| | | //SendErrorToUpstream(5, "", ex.Message, ""); |
| | | return responseContent.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建è¯ååå
¸ |
| | | /// </summary> |
| | | private static readonly Dictionary<string, string> _dosageFormMap = new Dictionary<string, string> |
| | | { |
| | | {"001", "çå"}, {"002", "çå"}, {"003", "çå"}, {"004", "çå"}, {"005", "çå"}, |
| | | {"006", "çå"}, {"007", "çå"}, {"008", "çå"}, {"009", "çå"}, {"010", "çå"}, |
| | | {"011", "å
¶å®"}, {"012", "çå"}, {"013", "å
¶å®"}, {"014", "çå"}, {"015", "çå"}, |
| | | {"016", "çå"}, {"017", "çå"}, {"018", "å
¶å®"}, {"019", "å
¶å®"}, {"020", "å
¶å®"}, |
| | | {"021", "éå"}, {"022", "éå"}, {"023", "éå"}, {"024", "éå"}, {"025", "䏿è¯"}, |
| | | {"026", "䏿è¯"}, {"027", "å
¶å®"}, {"028", "å
¶å®"}, {"029", "å
¶å®"}, {"030", "å
¶å®"}, |
| | | {"031", "å
¶å®"}, {"032", "å
¶å®"}, {"033", "å
¶å®"}, {"034", "䏿è¯"}, {"035", "䏿è¯"}, |
| | | {"036", "䏿è¯"}, {"037", "䏿è¯"}, {"038", "å
¶å®"}, {"039", "å
¶å®"}, {"040", "å
¶å®"}, |
| | | {"041", "䏿è¯"}, {"042", "䏿è¯"}, {"043", "䏿è¯"}, {"044", "å
¶å®"}, {"045", "䏿è¯"}, |
| | | {"046", "䏿è¯"}, {"047", "䏿è¯"}, {"048", "䏿è¯"}, {"049", "䏿è¯"}, {"050", "䏿è¯"}, |
| | | {"051", "䏿è¯"}, {"052", "䏿è¯"}, {"053", "䏿è¯"}, {"054", "䏿è¯"}, {"055", "䏿è¯"}, |
| | | {"056", "å
¶å®"}, {"057", "å
¶å®"}, {"058", "å
¶å®"}, {"059", "å
¶å®"}, {"060", "å
¶å®"}, |
| | | {"061", "å
¶å®"}, {"062", "å
¶å®"}, {"063", "å
¶å®"}, {"064", "å
¶å®"}, {"065", "å
¶å®"}, |
| | | {"066", "å
¶å®"}, {"067", "䏿è¯"}, {"068", "䏿è¯"}, {"069", "䏿è¯"}, {"070", "å
¶å®"}, |
| | | {"071", "å
¶å®"}, {"072", "å
¶å®"}, {"073", "䏿è¯"}, {"074", "å
¶å®"}, {"075", "å
¶å®"}, |
| | | {"076", "䏿è¯"}, {"077", "å
¶å®"}, {"078", "å
¶å®"}, {"079", "䏿è¯"}, {"080", "䏿è¯"}, |
| | | {"081", "䏿è¯"}, {"082", "䏿è¯"}, {"083", "å
¶å®"}, {"084", "䏿è¯"}, {"085", "å
¶å®"}, |
| | | {"086", "䏿è¯"}, {"087", "å
¶å®"}, {"088", "å
¶å®"}, {"089", "䏿è¯"}, {"090", "䏿è¯"}, |
| | | {"091", "å
¶å®"}, {"092", "å
¶å®"}, {"093", "å
¶å®"}, {"094", "䏿è¯"}, {"095", "å
¶å®"}, |
| | | {"096", "å
¶å®"}, {"097", "å
¶å®"}, {"098", "å
¶å®"}, {"099", "å
¶å®"}, {"100", "å
¶å®"}, |
| | | {"101", "å
¶å®"}, {"102", "å
¶å®"}, {"103", "å
¶å®"}, {"104", "å
¶å®"}, {"105", "å
¶å®"}, |
| | | {"106", "å
¶å®"}, {"107", "å
¶å®"}, {"108", "å
¶å®"}, {"109", "å
¶å®"}, {"110", "å
¶å®"}, |
| | | {"111", "å
¶å®"}, {"112", "å
¶å®"}, {"113", "å
¶å®"}, {"114", "å
¶å®"}, {"115", "å
¶å®"}, |
| | | {"116", "å
¶å®"}, {"117", "å
¶ä»"} |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ååç¼å·è·ååååç±» |
| | | /// </summary> |
| | | /// <param name="dosageCode">ååç¼å·(001-117)</param> |
| | | /// <returns>åååç±»(çå/éå/䏿è¯/å
¶å®/å
¶ä»)</returns> |
| | | public static string GetDosageForm(string dosageCode) |
| | | { |
| | | if (string.IsNullOrEmpty(dosageCode)) |
| | | return "æªç¥"; |
| | | |
| | | // å¤çç¼å·æ ¼å¼ï¼ç¡®ä¿æ¯3使°å |
| | | if (dosageCode.Length == 1) |
| | | dosageCode = "00" + dosageCode; |
| | | else if (dosageCode.Length == 2) |
| | | dosageCode = "0" + dosageCode; |
| | | |
| | | if (_dosageFormMap.TryGetValue(dosageCode, out string form)) |
| | | { |
| | | return form; |
| | | } |
| | | |
| | | return "æªç¥"; |
| | | } |
| | | public WebResponseContent ProductSynchronous() |
| | | { |
| | | try |
| | | { |
| | | List<Dt_MaterielInfo> materielInfos = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "æªä¸å").ToList(); |
| | | if (materielInfos.Count < 1) return WebResponseContent.Instance.Error("æ æªä¸åè¯å"); |
| | | var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous"; |
| | | foreach (var item in materielInfos) |
| | | { |
| | | var medicineDTO = new ProductInfo |
| | | { |
| | | //ç¨æ·code |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = item.MaterielErpType, |
| | | //产åç¼ç |
| | | productCode = item.MaterielCode, |
| | | //产åå |
| | | productName = item.MaterielName, |
| | | //äº§åæ¡ç |
| | | productBarCode = item.Barcode, |
| | | |
| | | //è¯å |
| | | medicine = item.Dosage_form,//è¿éè¦è°ç¨æ¹æ³ï¼è½¬åæ¹æ³ |
| | | |
| | | //è§æ ¼ |
| | | productSpecifications = item.MaterielSpec, |
| | | //åä½ |
| | | unit = item.MaterielUnit, |
| | | //é¿ |
| | | singleProductLongNum = (item.MaterielLength ?? 0).ToString(), |
| | | //宽 |
| | | singleProductWideNum = (item.MaterielWide ?? 0).ToString(), |
| | | //é« |
| | | singleProductHighNum = (item.MaterielHeight ?? 0).ToString(), |
| | | //éé |
| | | singleProductWeight = (item.MaterielWeight ?? 0).ToString(), |
| | | //ä½ç§¯ |
| | | singleProductVolume = (item.MaterielVolume ?? 0).ToString(), |
| | | //æ¯å¦åæ¶ 0æ¯ä¸å é¤ï¼1å é¤ |
| | | isDelete = "0" |
| | | }; |
| | | var result = HttpHelper.Post(url, medicineDTO.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | if (resp != null && resp.code == "0") item.GoodStatusState = "ä¸å宿"; |
| | | } |
| | | BaseDal.UpdateData(materielInfos); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ä¸åWCSç©æä¿¡æ¯å¼å¸¸ï¼" + ex.Message); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// åç»ä¸æ¸¸wcs忥è¯åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent ProductSynchronous1() |
| | | { |
| | | try |
| | | { |
| | | //æå°ä»¶æªä¸åççä¿¡æ¯åç®±è§ä¸º0ï¼æä½åºå为0çè¿æ»¤æ |
| | | //var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "æªä¸å" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList(); |
| | | var list = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "æªä¸å").ToList(); |
| | | if (list.Count < 1) |
| | | { |
| | | return new WebResponseContent().OK("æ æªä¸åè¯å"); |
| | | } |
| | | //æ¾å°äºå°±å°æ´ä¸ªliståç»ä¸æ¸¸ç³»ç» |
| | | foreach (var item in list) |
| | | { |
| | | var medicineDTO = new ProductInfo |
| | | { |
| | | //ç¨æ·code |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = item.MaterielErpType, |
| | | //产åç¼ç |
| | | productCode = item.MaterielCode, |
| | | //产åå |
| | | productName = item.MaterielName, |
| | | //äº§åæ¡ç |
| | | productBarCode = item.Barcode, |
| | | |
| | | //è¯å |
| | | medicine = item.Dosage_form,//è¿éè¦è°ç¨æ¹æ³ï¼è½¬åæ¹æ³ |
| | | |
| | | //è§æ ¼ |
| | | productSpecifications = item.MaterielSpec, |
| | | //åä½ |
| | | unit = item.MaterielUnit, |
| | | //é¿ |
| | | singleProductLongNum = (item.MaterielLength ?? 0).ToString(), |
| | | //宽 |
| | | singleProductWideNum = (item.MaterielWide ?? 0).ToString(), |
| | | //é« |
| | | singleProductHighNum = (item.MaterielHeight ?? 0).ToString(), |
| | | //éé |
| | | singleProductWeight = (item.MaterielWeight ?? 0).ToString(), |
| | | //ä½ç§¯ |
| | | singleProductVolume = (item.MaterielVolume ?? 0).ToString(), |
| | | //æ¯å¦åæ¶ 0æ¯ä¸å é¤ï¼1å é¤ |
| | | isDelete = "0" |
| | | }; |
| | | var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous"; |
| | | var result = HttpHelper.Post(url, medicineDTO.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | item.GoodStatusState = "ä¸å宿"; |
| | | } |
| | | else |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | } |
| | | BaseDal.UpdateData(list); |
| | | //Db.Updateable(list).ExecuteCommand(); |
| | | return new WebResponseContent { Status = true, Message = "æå" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ProductSynchronous å¼å¸¸ï¼" + ex.Message); |
| | | return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | } |
| | | |
| | | } |
| | | public override WebResponseContent DeleteData(object[] keys) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | |
| | | saveModel.MainData.Remove("goodStatusState"); |
| | | saveModel.MainData.Add("goodStatusState", "æªä¸å"); |
| | | } |
| | | // æ¹æ³2ï¼æè
ç´æ¥æ¯è¾å符串 |
| | | if (saveModel.MainData["boxQty"].ToString() == "0"|| saveModel.MainData["minQty"].ToString() == "0" ) |
| | | // 妿ç°å¨è¿ä¸ªç©æä¿¡æ¯æ¯å°ä»¶å¹¶ä¸ç®±è§æè
æä½åºå为0ï¼é£ä¹å°±è¦æç¤ºä» |
| | | if (saveModel.MainData["materielSourceType"].ToString() == "SelfMadePart" && (saveModel.MainData["boxQty"].ToString() == "0" || saveModel.MainData["minQty"].ToString() == "0")) |
| | | { |
| | | // è¿éæ·»å ä½ çé»è¾ |
| | | return WebResponseContent.Instance.Error("ç®±è§åæå°åºåæ°ä¸å¯å·²ä¸º0"); |