using LikuServiceReference; using LogLibrary.Log; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; using Org.BouncyCastle.Tls; using StackExchange.Profiling.Internal; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Linq.Expressions; using System.Net.NetworkInformation; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Caches; using WIDESEA_Core.DB; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_Core.Log; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.System; using WIDESEA_IBasicRepository; using WIDESEA_IInboundService; using WIDESEA_InboundService; using WIDESEA_IOutboundRepository; using WIDESEA_IOutboundService; using WIDESEA_ISystemRepository; using WIDESEA_ISystemService; using WIDESEA_Model; using WIDESEA_Model.Models; using WIDESEA_Model.Models.System.Reponse; using WIDESEA_Model.Models.System.Request; using static System.Collections.Specialized.BitVector32; namespace WIDESEA_SystemService { public class Sys_JobService : ServiceBase, ISys_JobService { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly ICacheService _cacheService; private readonly ILabelMasterRepository _labelMasterRepository; private readonly IOutBoundOrderBYDRepository _outBoundOrderBYDRepository; private readonly IOutboundOrderDetailBYDRepository _outboundOrderDetailByDRepository; private readonly IOutboundOrderDetail_LabelsBYDRepository _outboundOrderDetailLabelsByDRepository; private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository; private readonly IOutboundOrderRepository _outboundOrderRepository; private readonly IInboundService _inboundService; public Sys_JobService(ISys_JobRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService,ILabelMasterRepository labelMasterRepository, IOutBoundOrderBYDRepository outBoundOrderBYDRepository, IOutboundOrderDetailBYDRepository outboundOrderDetailByDRepository, IOutboundOrderDetail_LabelsBYDRepository outboundOrderDetailLabelsByDRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _cacheService = cacheService; _labelMasterRepository = labelMasterRepository; _outBoundOrderBYDRepository = outBoundOrderBYDRepository; _outboundOrderDetailByDRepository = outboundOrderDetailByDRepository; _outboundOrderDetailLabelsByDRepository = outboundOrderDetailLabelsByDRepository; _outboundOrderRepository = outboundOrderRepository; _outboundOrderDetailRepository = outboundOrderDetailRepository; } /// /// 同步条码主数据 /// /// public WebResponseContent SyncLabMaster() { WebResponseContent content = new WebResponseContent(); try { LabelServiceReference.LabelWebServiceClient lableClient = new LabelServiceReference.LabelWebServiceClient(); getLabelMasterRequest lab = new getLabelMasterRequest(); lab.WERKS = AppSettings.Configuration["WERKS"]; lab.SYSNO = AppSettings.Configuration["SYSNO"]; lab.BATCH = ""; lab.LABEL_NO = ""; string inparam = "[" + JsonConvert.SerializeObject(lab) + "]"; //string response = lableClient.getLabelMaster(inparam); string response = "{\r\n \"msg\": \"传输成功!\",\r\n \"data\": [\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020914\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020913\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020912\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020911\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020910\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020909\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020908\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020907\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020906\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n },\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020905\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n }\r\n ],\r\n \"success\": true\r\n}"; if (response != null) { getLabelMasterReponse responsetest = JsonConvert.DeserializeObject(response); if (responsetest != null && responsetest.data.Count() > 0) { foreach (var item in responsetest.data) { //查询本地是否存在 Dt_LabelMaster labMaster = _labelMasterRepository.QueryFirst(x=>x.LABEL_NO == item.LABEL_NO); if (labMaster != null)//更新状态 { labMaster.LABEL_STATUS = item.LABEL_STATUS; _labelMasterRepository.UpdateData(labMaster); } else { _labelMasterRepository.AddData(item); } } content = WebResponseContent.Instance.OK("同步条码主数据成功"); } } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); } return content; } /// /// 根据条码获取条码入库主数据 /// /// public WebResponseContent GetLabMaster(string barcode) { WebResponseContent content = new WebResponseContent(); try { LabelServiceReference.LabelWebServiceClient lableClient = new LabelServiceReference.LabelWebServiceClient(); getLabelMasterRequest lab = new getLabelMasterRequest(); lab.WERKS = AppSettings.Configuration["WERKS"]; lab.SYSNO = AppSettings.Configuration["SYSNO"]; lab.BATCH = ""; lab.LABEL_NO = barcode; string inparam = "[" + JsonConvert.SerializeObject(lab) + "]"; //string response = lableClient.getLabelMaster(inparam); string response = "{\r\n \"msg\": \"传输成功!\",\r\n \"data\": [\r\n {\r\n \"WH_NUMBER\": \"GX25\",\r\n \"WERKS\": \"GX25\",\r\n \"PSTYP\": \"0\",\r\n \"PO_NO\": \"5907427563\",\r\n \"PRODUCT_DATE\": \"2024-12-16\",\r\n \"EFFECT_DATE\": \"2025-06-17\",\r\n \"LABEL_NO\": \"XAGX25001020914\",\r\n \"EDIT_DATE\": \"2024-12-16 15:11:27\",\r\n \"BATCH\": \"2412160004\",\r\n \"BSART\": \"QH00\",\r\n \"RECEIPT_NO\": \"XASHGX25001000923\",\r\n \"RECEIPT_ITEM_NO\": \"1\",\r\n \"MATNR\": \"12825222-00\",\r\n \"LABEL_LEVEL\": \"1\",\r\n \"MAKTX\": \"胶袋_1000×110×0.02mm_HDPE_短边开口_透明_防静电_无印刷\",\r\n \"LIKTX\": \"深圳市龙共实业有限公司\",\r\n \"UNIT\": \"PCS\",\r\n \"SOBKZ\": \"Z\",\r\n \"LABEL_STATUS\": \"01\",\r\n \"QC_PEOPLE\": \"\",\r\n \"BOX_QTY\": 10,\r\n \"INSPECTION_ITEM_NO\": \"1\",\r\n \"CREATE_DATE\": \"2024-12-16 15:10:16\",\r\n \"QC_DATE\": \"\",\r\n \"RECEIPT_DATE\": \"2024-12-16 15:11:27\",\r\n \"LIFNR\": \"106247\",\r\n \"PO_ITEM_NO\": \"00010\",\r\n \"INSPECTION_NO\": \"XASJGX25001000720\"\r\n }\r\n ],\r\n \"success\": true\r\n}"; if (response != null) { getLabelMasterReponse responsetest = JsonConvert.DeserializeObject(response); if (responsetest != null && responsetest.data.Count() > 0) { foreach (var item in responsetest.data) { //查询本地是否存在 Dt_LabelMaster labMaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == item.LABEL_NO); if (labMaster != null)//更新状态 { labMaster.LABEL_STATUS = item.LABEL_STATUS; _labelMasterRepository.UpdateData(labMaster); } else { _labelMasterRepository.AddData(item); } content = WebResponseContent.Instance.OK("获取条码主数据成功", item); } } else { content = WebResponseContent.Instance.Error("根据条码同步条码主数据失败"); } } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); } return content; } /// /// 原材料上架接口,入库回传 LABEL _STATUS 条码状态 02已收料(无需质检)03 待进仓(已质检),并且,QC RESULT CODE质检状态为“02” /// /// public WebResponseContent CallPutAway(PutAwayRequest putAway) { WebResponseContent content = new WebResponseContent(); try { LikuServiceReference.WmsStereoWhServiceClient likuClient = new LikuServiceReference.WmsStereoWhServiceClient(); string inparam = JsonConvert.SerializeObject(putAway); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPutAway", "请求", $"{inparam}"); string response = likuClient.putaway(inparam); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPutAway", "响应", $"{response}"); if (response != null) { PutAwayResponse res = JsonConvert.DeserializeObject(response); if (res != null && res.MSGTX == "S") { content = WebResponseContent.Instance.OK("上架回传成功!"); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPutAway", "响应", $"上架回传成功!"); } else { content = WebResponseContent.Instance.Error("上架回传失败!"); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPutAway", "响应", $"上架回传失败!"); } } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPutAway", "异常", $"{ex.Message}"); } return content; } /// /// 余料回库结果回传 /// /// public WebResponseContent CallPutAwayReturn(PutAwayReturnRequest putAwayReturn) { WebResponseContent content = new WebResponseContent(); try { LikuServiceReference.WmsStereoWhServiceClient likuClient = new LikuServiceReference.WmsStereoWhServiceClient(); string inparam = JsonConvert.SerializeObject(putAwayReturn); string response = likuClient.putAwayReturn(inparam); if (response != null) { PutAwayReturnResponse res = JsonConvert.DeserializeObject(response); if (res != null && res.MSGTX == "S") { content = WebResponseContent.Instance.OK("余料回库回传成功!"); } } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); } return content; } /// /// 比亚迪WMS出库单指令获取 /// /// public WebResponseContent SelectOutStoreOrder() { WebResponseContent content = new WebResponseContent(); try { StereoServiceReference.WhStereoWebServiceClient client = new StereoServiceReference.WhStereoWebServiceClient(); SelectOutStoreOrderRequest outStoreOrder = new SelectOutStoreOrderRequest(); outStoreOrder.WERKS = AppSettings.Configuration["WERKS"]; outStoreOrder.WH_NUMBER = AppSettings.Configuration["SYSNO"]; string inparam = JsonConvert.SerializeObject(outStoreOrder); //string response = client.selectOutStoreOrder(inparam); string response = "{\r\n \"MSGTY\": \"S\",\r\n \"DATA\": \"[{REQUIREMENT_NO=XAXQGX25012005354, WERKS=GX25, WH_NUMBER=null, SYSNOD=G30, BUSINESS_CODE=00, BUSINESS_NAME=47, LGORT=0030, STATION=null, MO_NO=null, SAP_OUT_NO=null, RECEIVE_LGORT=W001, OVERSTEP_REQ_FLAG=0, SPLIT=null, STATUS=01, CREATE_PERSON=66694:宋子超, CREATE_DATE=2024-12-18 11:36:17, ITEMS=[{REQUIREMENT_ITEM_NO=1, MATNR=12825222-00, BATCH=null, QTY=10.0, GEAR=null, PI_NO=null, LABELS=[]}]}, {REQUIREMENT_NO=XAXQGX25012005353, WERKS=GX25, WH_NUMBER=null, SYSNOD=G30, BUSINESS_CODE=00, BUSINESS_NAME=47, LGORT=0030, STATION=null, MO_NO=null, SAP_OUT_NO=null, RECEIVE_LGORT=W001, OVERSTEP_REQ_FLAG=0, SPLIT=null, STATUS=01, CREATE_PERSON=66694:宋子超, CREATE_DATE=2024-12-18 11:35:22, ITEMS=[{REQUIREMENT_ITEM_NO=1, MATNR=12825222-00, BATCH=null, QTY=10.0, GEAR=null, PI_NO=null, LABELS=[]}]}]\",\r\n \"MSGTX\": \"success\"\r\n}"; if (response != null) { SelectOutStoreOrderResponse res = JsonConvert.DeserializeObject(response); if (res != null && res.MSGTY == "S"&&!string.IsNullOrEmpty(res.DATA)) { string data = stringToJson(res.DATA); string newdata = data.Replace("},\"", "},").Replace("\" ", "\""); List outStoreList = JsonConvert.DeserializeObject>(newdata); foreach (var item in outStoreList) { Dt_OutBoundOrderBYD bydOrder = _outBoundOrderBYDRepository.QueryFirst(x => x.REQUIREMENT_NO == item.REQUIREMENT_NO); if (bydOrder != null)//更新 { bydOrder.REQUIREMENT_NO = item.REQUIREMENT_NO; bydOrder.WRKS = item.WERKS; bydOrder.WH_NUMBER = item.WH_NUMBER; bydOrder.SYSNOD = item.SYSNOD; bydOrder.BUSINESS_CODE = item.BUSINESS_CODE; bydOrder.BUSINESS_NAME = item.BUSINESS_NAME; bydOrder.LGORT = item.LGORT; bydOrder.STATION = item.STATION; bydOrder.MO_NO = item.MO_NO; bydOrder.SAP_OUT_NO = item.SAP_OUT_NO; bydOrder.RECEIVE_LGORT = item.RECEIVE_LGORT; bydOrder.OVERSTEP_REQ_FLAG = item.OVERSTEP_REQ_FLAG; bydOrder.SPLIT = item.SPLIT; bydOrder.STATUS = item.STATUS; bydOrder.CREATE_PERSON = item.CREATE_PERSON; bydOrder.CREATE_DATE = item.CREATE_DATE; _outBoundOrderBYDRepository.UpdateData(bydOrder); foreach (var detail in item.ITEMS) { Dt_OutboundOrderDetailBYD byddetail = _outboundOrderDetailByDRepository.QueryFirst(x => x.REQUIREMENT_NO == item.REQUIREMENT_NO && x.REQUIREMENT_ITEM_NO == detail.REQUIREMENT_ITEM_NO); if (byddetail != null) { byddetail.REQUIREMENT_NO = item.REQUIREMENT_NO; byddetail.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO; byddetail.MATNR = detail.MATNR; byddetail.BATCH = detail.BATCH; byddetail.BATCH = detail.BATCH; byddetail.QTY = detail.QTY; byddetail.GEAR = detail.GEAR; byddetail.PI_NO = detail.PI_NO; _outboundOrderDetailByDRepository.UpdateData(byddetail); } else { Dt_OutboundOrderDetailBYD newdetail = new Dt_OutboundOrderDetailBYD(); newdetail.REQUIREMENT_NO = item.REQUIREMENT_NO; newdetail.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO; newdetail.MATNR = detail.MATNR; newdetail.BATCH = detail.BATCH; newdetail.BATCH = detail.BATCH; newdetail.QTY = detail.QTY; newdetail.GEAR = detail.GEAR; newdetail.PI_NO = detail.PI_NO; _outboundOrderDetailByDRepository.AddData(newdetail); } } } else { Dt_OutBoundOrderBYD outBoundOrderBYD = new Dt_OutBoundOrderBYD(); outBoundOrderBYD.REQUIREMENT_NO = item.REQUIREMENT_NO; outBoundOrderBYD.WRKS = item.WERKS; outBoundOrderBYD.WH_NUMBER = item.WH_NUMBER; outBoundOrderBYD.SYSNOD = item.SYSNOD; outBoundOrderBYD.BUSINESS_CODE = item.BUSINESS_CODE; outBoundOrderBYD.BUSINESS_NAME = item.BUSINESS_NAME; outBoundOrderBYD.LGORT = item.LGORT; outBoundOrderBYD.STATION = item.STATION; outBoundOrderBYD.MO_NO = item.MO_NO; outBoundOrderBYD.SAP_OUT_NO = item.SAP_OUT_NO; outBoundOrderBYD.RECEIVE_LGORT = item.RECEIVE_LGORT; outBoundOrderBYD.OVERSTEP_REQ_FLAG = item.OVERSTEP_REQ_FLAG; outBoundOrderBYD.SPLIT = item.SPLIT; outBoundOrderBYD.STATUS = item.STATUS; outBoundOrderBYD.CREATE_PERSON = item.CREATE_PERSON; outBoundOrderBYD.CREATE_DATE = item.CREATE_DATE; _outBoundOrderBYDRepository.AddData(outBoundOrderBYD); foreach (var detail in item.ITEMS) { Dt_OutboundOrderDetailBYD outboundOrderDetailBYD = new Dt_OutboundOrderDetailBYD(); outboundOrderDetailBYD.REQUIREMENT_NO = outBoundOrderBYD.REQUIREMENT_NO; outboundOrderDetailBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO; outboundOrderDetailBYD.MATNR = detail.MATNR; outboundOrderDetailBYD.BATCH = detail.BATCH; outboundOrderDetailBYD.QTY = detail.QTY; outboundOrderDetailBYD.GEAR = detail.GEAR; outboundOrderDetailBYD.PI_NO = detail.PI_NO; _outboundOrderDetailByDRepository.AddData(outboundOrderDetailBYD); foreach (var label in detail.LABELS) { if (label != null) { Dt_OutboundOrderDetail_LabelsBYD outboundOrderDetail_LabelsBYD = new Dt_OutboundOrderDetail_LabelsBYD(); outboundOrderDetail_LabelsBYD.LABEL_NO = label.LABLEL_NO; outboundOrderDetail_LabelsBYD.CONTENT_LABEL_NO = label.CONTENT_LABLEL_NO; outboundOrderDetail_LabelsBYD.REQUIREMENT_NO = item.REQUIREMENT_NO; outboundOrderDetail_LabelsBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO; _outboundOrderDetailLabelsByDRepository.AddData(outboundOrderDetail_LabelsBYD); } } } } } //同步到WMS出库单中 foreach(var item in outStoreList) { if (item != null) { Dt_OutboundOrder outOrder =_outboundOrderRepository.QueryFirst(x=>x.OrderNo==item.REQUIREMENT_NO); if (outOrder != null) { outOrder.OrderNo = item.REQUIREMENT_NO; outOrder.UpperOrderNo = ""; outOrder.OrderType = (int)OutOrderTypeEnum.Issue; outOrder.OrderStatus = (int)OutboundStatusEnum.未开始; outOrder.CreateType = (int)CreateType.UpperSystemPush; outOrder.Creater = "System"; _outboundOrderRepository.UpdateData(outOrder); foreach (var orderdetail in item.ITEMS) { Dt_OutboundOrderDetail detail = _outboundOrderDetailRepository.QueryFirst(x => x.OrderId == outOrder.Id && x.Remark == orderdetail.REQUIREMENT_ITEM_NO); if (detail != null) { detail.OrderId = outOrder.Id; detail.MaterielCode = orderdetail.MATNR; detail.BatchNo = orderdetail.BATCH; detail.OrderQuantity = Convert.ToDecimal(orderdetail.QTY); detail.LockQuantity = 0; detail.OverOutQuantity = 0; detail.OrderDetailStatus = (int)OrderDetailStatusEnum.New; detail.Creater = "System"; detail.Remark = orderdetail.REQUIREMENT_ITEM_NO; _outboundOrderDetailRepository.UpdateData(detail); } else { Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail(); outboundOrderDetail.OrderId = outOrder.Id; outboundOrderDetail.MaterielCode = orderdetail.MATNR; outboundOrderDetail.BatchNo = orderdetail.BATCH; outboundOrderDetail.OrderQuantity = Convert.ToDecimal(orderdetail.QTY); outboundOrderDetail.LockQuantity = 0; outboundOrderDetail.OverOutQuantity = 0; outboundOrderDetail.OrderDetailStatus = (int)OrderDetailStatusEnum.New; outboundOrderDetail.Creater = "System"; outboundOrderDetail.Remark = orderdetail.REQUIREMENT_ITEM_NO; _outboundOrderDetailRepository.AddData(outboundOrderDetail); } } } else { Dt_OutboundOrder outboundOrder = new Dt_OutboundOrder(); outboundOrder.OrderNo = item.REQUIREMENT_NO; outboundOrder.UpperOrderNo = ""; outboundOrder.OrderType = (int)OutOrderTypeEnum.Issue; outboundOrder.OrderStatus = (int)OutboundStatusEnum.未开始; outboundOrder.CreateType = (int)CreateType.UpperSystemPush; outboundOrder.Creater = "System"; _outboundOrderRepository.AddData(outboundOrder); Dt_OutboundOrder outOrdertemp = _outboundOrderRepository.QueryFirst(x => x.OrderNo == item.REQUIREMENT_NO); foreach (var orderdetail in item.ITEMS) { Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail(); outboundOrderDetail.OrderId = outOrdertemp.Id; outboundOrderDetail.MaterielCode = orderdetail.MATNR; outboundOrderDetail.BatchNo = orderdetail.BATCH; outboundOrderDetail.OrderQuantity =Convert.ToDecimal(orderdetail.QTY); outboundOrderDetail.LockQuantity = 0; outboundOrderDetail.OverOutQuantity = 0; outboundOrderDetail.OrderDetailStatus = (int)OrderDetailStatusEnum.New; outboundOrderDetail.Creater="System"; outboundOrderDetail.Remark = orderdetail.REQUIREMENT_ITEM_NO; _outboundOrderDetailRepository.AddData(outboundOrderDetail); } } } } content = WebResponseContent.Instance.OK(); } } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); } return content; } /// /// 出库完成信息接口,出库回传 /// /// public WebResponseContent CallPickAndPost(PickAndPostRequest pickAndPost) { WebResponseContent content = new WebResponseContent(); try { StereoServiceReference.WhStereoWebServiceClient client = new StereoServiceReference.WhStereoWebServiceClient(); string inparam = JsonConvert.SerializeObject(pickAndPost); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPickAndPost", "请求", $"{inparam}"); string response = client.pickAndPost(inparam); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPickAndPost", "响应", $"{response}"); if (response != null) { PickAndPostResponse res = JsonConvert.DeserializeObject(response); if (res != null && res.MSGTX == "S") { content = WebResponseContent.Instance.OK("出库回传成功!"); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPickAndPost", "响应", $"出库回传成功!"); } } else { content = WebResponseContent.Instance.Error("出库回传失败!"); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPickAndPost", "响应", $"出库回传失败!"); } } catch (Exception ex) { content = WebResponseContent.Instance.Error(ex.Message); new LogFactory().GetLog("BYD_WMS接口").InfoFormat(true, "CallPickAndPost", "异常", $"{ex.Message}"); } return content; } /// /// 立库WMS库存信息接口,供上游系统调用 /// /// /// public InventoryQueryResponse InventoryQuery(InventoryQueryRequest inventoryQueryRequest) { InventoryQueryResponse inventoryQueryResponse = new InventoryQueryResponse(); try { //todo:WMS查询实时库存 } catch (Exception) { } return inventoryQueryResponse; } /// /// 立库WMS冻结/解冻信息接口,供上游系统调用 /// /// /// public freezeByCustomerResponse freezeByCustomer(freezeByCustomerRequest freezeRequest) { freezeByCustomerResponse freezeResponse = new freezeByCustomerResponse(); try { //todo:WMS查询冻结解冻信息 } catch (Exception) { } return freezeResponse; } public String stringToJson(String message) { String result = ""; //替换=为":" if (message.Contains("=")) { message = message.Replace("=", "\":\""); } //替换{为{" if (message.Contains("{")) { message = message.Replace("{", "{\""); } //替换}为"} if (message.Contains("}")) { message = message.Replace("}", "\"}"); } //替换[为[" if (message.Contains("[")) { message = message.Replace("[", "[\""); } //替换]为"] if (message.Contains("]")) { message = message.Replace("]", "\"]"); } //替换,为"," if (message.Contains(",")) { message = message.Replace(",", "\",\""); } //替换"[为[ if (message.Contains("\"[")) { message = message.Replace("\"[", "["); } //替换]"为] if (message.Contains("]\"")) { message = message.Replace("]\"", "]"); } //替换"{为{ if (message.Contains("\"{")) { message = message.Replace("\"{", "{"); } //替换}"为} if (message.Contains("}\"")) { message = message.Replace("}\"", "}"); } result = message; return result; } } }