From 1b8daa902b075c7cedee7bbcc13b914b7a5b4ad4 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 03 十一月 2025 11:48:49 +0800
Subject: [PATCH] 优化盘点逻辑
---
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs | 280 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 278 insertions(+), 2 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
index 82dcfc5..5817be8 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/MaterielInfoService.cs"
@@ -6,12 +6,14 @@
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
@@ -22,6 +24,280 @@
{
}
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");
+ }
+ string getDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ // 璇锋眰鍙傛暟
+ var requestData = new
+ {
+ searchDate = SearchDate
+ };
+
+ // 鍙戣捣璇锋眰
+ 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)
+ {
+ SearchDate = getDate;
+ 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);
+ SearchDate = getDate;
+ //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("鏃犳湭涓嬪彂鑽搧");
+ }
+ //鎵惧埌浜嗗氨灏嗘暣涓猯ist鍙戠粰涓嬫父绯荤粺
+ 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();
@@ -84,8 +360,8 @@
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");
--
Gitblit v1.9.3