yanjinhui
2025-10-26 d3e49d3dceb3953c7bc4e6d0fd7e6258ebccaff1
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/MedicineGoodsServices.cs
@@ -7,6 +7,7 @@
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -24,6 +25,7 @@
        public MedicineGoodsServices(IRepository<Dt_MedicineGoods> BaseDal) : base(BaseDal)
        {
        }
        public IRepository<Dt_MedicineGoods> Repository => BaseDal;
        static string SearchDate = "";
@@ -36,22 +38,22 @@
            var responseContent = new WebResponseContent();
            try
            {
              var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo";
                var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo";
                if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //请求参数
                var requestData = new
                {
                    searchDate = "2022-10-10 20:45:16"  // æ­£ç¡®çš„æ ¼å¼
                    searchDate = "2009-01-10 20:45:16"  // æ­£ç¡®çš„æ ¼å¼
                };
                //if (string.IsNullOrEmpty(SearchDate))
                //{
                //    // é»˜è®¤æŸ¥è¯¢è¿‡åŽ»24小时的数据
                //    SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
                //}
                //// è¯·æ±‚参数
                // è¯·æ±‚参数
                //var requestData = new
                //{
                //    searchDate = SearchDate
@@ -75,28 +77,31 @@
                }
                //获取所有已存在的商品编号
                var existingGoodsNos = BaseDal.Db.Queryable<Dt_MedicineGoods>()
                    .Select(g => g.Goods_no)
                var existingGoodsNos = BaseDal.Db.Queryable<Dt_MaterielInfo>()
                    .Select(g => g.MaterielCode)
                    .ToList();
                // æ”¶é›†æ‰€æœ‰è¦æ’入的实体
                var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MedicineGoods
                var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MaterielInfo
                {
                    Goods_no = Medicat.goods_no,
                    MaterialCode=Medicat.materialCode,
                    Goods_spm = Medicat.goods_spm,
                    Model = Medicat.model,
                    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,
                    Unit = Medicat.unit,
                    MaterielUnit = Medicat.unit,//单位
                    // ä½¿ç”¨ ?? è¿ç®—符提供默认值
                    Item_Iength = Medicat.item_length ,
                    Item_width = Medicat.item_width,
                    Item_hight = Medicat.item_hight,
                    Item_volumn = Medicat.item_volumn,
                    Item_weight = Medicat.item_weight,
                    Storage_cond = Medicat.storage_cond,
                    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,
                    GoodStatus = "未下发",
                    GoodStatusState = "未下发",
                    ModifyDate = Medicat.modify_date
                }).ToList();
                // ä¸€æ¬¡æ€§æ‰¹é‡æ’入数据库
@@ -105,7 +110,7 @@
                ProductSynchronous();
                return responseContent.OK("同步成功");
            }
            catch (Exception ex)
            {
                SendErrorToUpstream(5, "", ex.Message, "");
@@ -123,7 +128,9 @@
            try
            {
                //先找到所有未下发的药品
                var list = BaseDal.QueryData(x => x.GoodStatus == "未下发").ToList();
                //var list = BaseDal.QueryData(x => x.GoodStatus == "未下发").ToList();
                //把小件未下发的的信息
                var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "未下发" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList();
                if (list == null || !list.Any())
                {
                    return new WebResponseContent().OK("无未下发药品");
@@ -136,28 +143,31 @@
                        //用户code
                        customerCode = "905",
                        //物料类型
                        materialCode =item.MaterialCode,
                        materialCode = item.MaterielErpType,
                        //产品编码
                        productCode= item.Goods_no,
                        productCode = item.MaterielCode,
                        //产品名
                        productName =item.Goods_spm ,
                        productName = item.MaterielName,
                        //产品条码
                        productBarCode= item.Goods_no,
                        productBarCode = item.Barcode,
                        //药剂
                        medicine = item.Dosage_form,//这里要调用方法,转化方法
                        //规格
                        productSpecifications=item.Model,
                        productSpecifications = item.MaterielSpec,
                        //单位
                        unit = item.Unit,
                        unit = item.MaterielUnit,
                        //长
                        singleProductLongNum = item.Item_Iength.ToString(),
                        singleProductLongNum = (item.MaterielLength ?? 0).ToString(),
                        //宽
                        singleProductWideNum = item.Item_weight.ToString(),
                        singleProductWideNum = (item.MaterielWide ?? 0).ToString(),
                        //高
                        singleProductHighNum = item.Item_hight.ToString(),
                        singleProductHighNum = (item.MaterielHeight ?? 0).ToString(),
                        //重量
                        singleProductWeight = item.Item_weight.ToString(),
                        singleProductWeight = (item.MaterielWeight ?? 0).ToString(),
                        //体积
                        singleProductVolume = item.Item_volumn.ToString(),
                        singleProductVolume = (item.MaterielVolume ?? 0).ToString(),
                        //是否取消 0是不删除,1删除
                        isDelete = "0"
                    };
@@ -165,18 +175,18 @@
                    var result = HttpHelper.Post(url, medicineDTO.ToJsonString());
                    var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
                    if (resp!=null&&resp.code=="0")
                    if (resp != null && resp.code == "0")
                    {
                        //更新药品状态-已完成
                        BaseDal.Db.Updateable<Dt_MedicineGoods>()
                            .SetColumns(x => x.GoodStatus == "下发完成")
                            .Where(x => x.Goods_no == item.Goods_no)
                            .ExecuteCommand();
                        BaseDal.Db.Updateable<Dt_MaterielInfo>()
                            .SetColumns(x => x.GoodStatusState == "下发完成")
                            .Where(x => x.MaterielCode == item.MaterielCode)
                            .ExecuteCommand();
                    }
                    else
                    {
                        SendErrorToUpstream(5, medicineDTO.materialCode, resp?.msg ?? "WCS药品信息同步失败", "");
                        return new WebResponseContent { Status = false, Message = "订单推送失败" };
                    }
@@ -198,10 +208,9 @@
        /// <returns></returns>
        public WebResponseContent DeleteProduct(string goodsno)
        {
            try
            {
                var goods = BaseDal.QueryData(x => x.Goods_no == goodsno).FirstOrDefault();
                var goods = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.MaterielCode == goodsno).First();
                if (goods == null)
                {
                    return new WebResponseContent
@@ -217,26 +226,26 @@
                    //物料类型
                    materialCode = "YY",
                    //产品编码
                    productCode = goods.Goods_no,
                    productCode = goods.MaterielCode,
                    //产品名
                    productName = goods.Goods_spm,
                    productName = goods.MaterielName,
                    //产品条码
                    productBarCode = goods.Goods_no,
                    productBarCode = goods.MaterielCode,
                    //规格
                    productSpecifications = goods.Model,
                    productSpecifications = goods.MaterielSpec,
                    //单位
                    unit = goods.Unit,
                    unit = goods.MaterielUnit,
                    //长
                    singleProductLongNum = goods.Item_Iength.ToString(),
                    singleProductLongNum = goods.MaterielLength.ToString(),
                    //宽
                    singleProductWideNum = goods.Item_weight.ToString(),
                    singleProductWideNum = goods.MaterielWide.ToString(),
                    //高
                    singleProductHighNum = goods.Item_hight.ToString(),
                    singleProductHighNum = goods.MaterielHeight.ToString(),
                    //重量
                    singleProductWeight = goods.Item_weight.ToString(),
                    singleProductWeight = goods.MaterielWeight.ToString(),
                    //体积
                    singleProductVolume = goods.Item_volumn.ToString(),
                    singleProductVolume = goods.MaterielVolume.ToString(),
                    //是否取消 0是不删除,1删除
                    isDelete = "1"
                };
@@ -248,17 +257,14 @@
                if (resp != null && resp.code == "0")
                {
                    //我自己也删除
                    BaseDal.DeleteData(goods);
                    base.Db.Deleteable<Dt_MaterielInfo>().Where(x => x.MaterielCode == goodsno);
                    return new WebResponseContent { Status = true, Message = "删除成功" };
                }
                return new WebResponseContent { Status = false, Message = "删除失败请重试" };
            }
            catch (Exception ex)
            {
              return new WebResponseContent { Status=false,Message = ex.Message };
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
@@ -289,7 +295,61 @@
                Console.WriteLine("异常接口推送失败:" + e.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 "未知";
        }
    }
}