using Admin.NET.Application; using Admin.NET.Core; using Admin.NET.Core.TaskModule.Enum; using iWareCommon; using iWareCommon.Utils; using iWareSql.MyDbContext; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using System.Xml; namespace iWareCC { /// /// PO收货 处理的线程 /// public class PoDeliveryHandler { public static void Handler() { var errMsg = ""; while (true) { try { SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "循环开始..."; if (SystemValue.isAllowRuning_PoDeliveryHandler && SystemValue.isStartedModel) { errMsg = "";//重置 try { Do(ref errMsg); if (!string.IsNullOrEmpty(errMsg)) { SystemWarningMsg._lbl_Alert_PoDeliveryHandler = errMsg; } } catch (Exception ex) { Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, "PO接收线程=>" + errMsg + ",异常:" + ex.Message, ex); SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "PO接收线程=>" + errMsg + ",异常:" + ex.Message; } } } catch (Exception ex) { SystemWarningMsg._lbl_Alert_PoDeliveryHandler = "出现异常:" + ex.Message; Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, "PoDeliveryHandler 出现异常:" + ex.Message, ex); } Thread.Sleep(2 * 1000);//休眠2秒 } } /// /// /// /// /// /// /// private static void Do(ref string errMsg) { var PoOrderInfo = new DiyAddWmsOrderPurchaseInput(); PoOrderInfo.BusinessType = 1001; PoOrderInfo.SupplierCode = "GYS05"; var newWmsOrderPurchaseDetailsInput = new WmsOrderPurchaseDetailsInput(); var WmsOrderPurchaseDetailsInputList = new List(); newWmsOrderPurchaseDetailsInput.MaterialCode = "T0987"; newWmsOrderPurchaseDetailsInput.MaterialName = "T0987"; newWmsOrderPurchaseDetailsInput.Id = 571952729907269; newWmsOrderPurchaseDetailsInput.Quantity = 2; newWmsOrderPurchaseDetailsInput.ErpCode = "ERPT0987"; newWmsOrderPurchaseDetailsInput.Unit = "G"; newWmsOrderPurchaseDetailsInput.PoLineNumber = "1"; WmsOrderPurchaseDetailsInputList.Add(newWmsOrderPurchaseDetailsInput); PoOrderInfo.purchaseOrderDetails = WmsOrderPurchaseDetailsInputList; var inputStr = JsonConvert.SerializeObject(PoOrderInfo); // var respone =await //using (MyDbContext mycontext = new MyDbContext()) //{ // var query_PrintStatuEnum = (int)PrintStatuEnum.未打印; // var list = mycontext.wms_record_sncode_print.Where(x => (x.IsDelete == false) && x.PrintStatus == query_PrintStatuEnum) // .OrderBy(x => x.Id).ToList(); // wms_config_print printConfig = null; // string _PrinterName = ""; // if (list.Count > 0) // { // } // else // { // errMsg = $"没有可打印的内容!"; // return; // } // foreach (var item in list) // { // PrintClassifyEnum printClassifyEnum = default(PrintClassifyEnum); // var isRight = GetPrintClassifyEnum(item, mycontext, ref errMsg, ref printClassifyEnum); // if (!isRight) // { // return; // } // printConfig = mycontext.wms_config_print.Where(x => x.PrintClassify == (int)printClassifyEnum).FirstOrDefault(); // if (printConfig == null) // { // errMsg = $"没有找到{printClassifyEnum.ToString()}的打印配置!"; // return; // } // //设置打印机,注意:这里只获取第一个,以后可能要改! // _PrinterName = printConfig.PrinterList.Split(',')[0]; // //根据配置名字查询 打印机名字 // var printConfigData = mycontext.SysDictData.Where(x => x.Name == _PrinterName).FirstOrDefault(); // if (printConfigData == null) // { // errMsg = $"没有找到{_PrinterName.ToString()}的打印机名字!"; // return; // } // _PrinterName = printConfigData.Value; // Dictionary data = new Dictionary(); // if (printClassifyEnum == PrintClassifyEnum.看板卡) // { // data.Add("cardNo", item.KanBanCardNo ?? ""); // data.Add("ToAreaName", item.ToAreaName ?? ""); // data.Add("bar", item.SNCode); // data.Add("material", item.MaterialCode ?? "" + "/" + item.MaterialName ?? ""); // data.Add("supplier", item.SupplierName ?? ""); // data.Add("unit", item.MaterialUnit ?? ""); // data.Add("qty", item.Quantity); // data.Add("date", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // } // else // { // data.Add("bar", item.SNCode); // data.Add("material", item.MaterialCode ?? "" + "/" + item.MaterialName ?? ""); // data.Add("supplier", item.SupplierName ?? ""); // data.Add("unit", item.MaterialUnit ?? ""); // data.Add("qty", item.Quantity); // data.Add("date", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // } // //调用打印接口 // bool isSuccess = false; // using (PrintBaseService.PrintWcfServiceClient client = new PrintBaseService.PrintWcfServiceClient()) // { // //isSuccess = client.Print3(data, 1, @"D:\打印程序\跟踪码打印模板\跟踪码打印模板_一维码.btw", "ZDesigner ZD888-203dpi ZPL", out errMsg); // //isSuccess = client.Print3(data, 1, @"D:\打印程序\跟踪码打印模板\跟踪码打印模板_二维码.btw", "ZDesigner ZD888-203dpi ZPL", out errMsg); // isSuccess = client.Print3(data, item.PrintSheetNum, printConfig.PrintTemplateAddr, _PrinterName, out errMsg); // } // if (isSuccess) // { // item.PrintStatus = 1;//打印状态(0:未打印 1:已打印) // item.PrintNum = (item.PrintNum) + 1; // mycontext.SaveChanges(); // } // else // { // errMsg = $"打印错误,跟踪码{item.SNCode},打印机名称{_PrinterName},错误信息:(打印服务返回)" + errMsg; // Log4NetHelper.WriteErrorLog(LogType.PoDeliveryHandler, errMsg, null); // return; // } // Thread.Sleep(2000); // } //} } //private static bool GetPrintClassifyEnum(wms_record_sncode_print item, MyDbContext mycontext, ref string errMsg, ref PrintClassifyEnum printClassifyEnum) //{ // if (item.PrintType == (int)PrintTypeEnum.看板卡) // { // printClassifyEnum = PrintClassifyEnum.看板卡; // } // else // { // wms_config_sncode_rule rule = null; // var ruleList = mycontext.wms_config_sncode_rule.Where(x => (x.RuleName == "ASN一维码" || x.RuleName == "ASN二维码") && x.IsDisabled == false).ToList(); // if (ruleList != null && ruleList.Count > 1) // { // errMsg = "条码生成规则配置中,ASN一维码和ASN二维码只能启用其中一个!"; // return false; // } // if (ruleList == null || ruleList.Count == 0) // { // errMsg = "条码生成规则配置中,ASN一维码和ASN二维码两个都没有配置启用!"; // return false; // } // rule = ruleList.First(); // printClassifyEnum = default(PrintClassifyEnum); // if (rule.RuleName == "ASN一维码") // { // printClassifyEnum = PrintClassifyEnum.一维跟踪码; // } // else // { // printClassifyEnum = PrintClassifyEnum.二维跟踪码; // } // } // return true; //} public class DiyAddWmsOrderPurchaseInput : WmsOrderPurchaseBaseInput { public string Dock { get; set; } = "101"; public string ErpOrderNo { get; set; } public virtual string ProjectNo { get; set; } public List purchaseOrderDetails { get; set; } } /// /// 采购订单基础输入参数 /// public class WmsOrderPurchaseBaseInput { /// /// 采购单号 /// public virtual string PurchaseNo { get; set; } /// /// 订单类型 /// public virtual OrderTypeEnum OrderType { get; set; } /// /// 订单类型名称 /// public virtual string OrderTypeName { get; set; } /// /// 业务类型 /// public virtual int BusinessType { get; set; } /// /// 业务类型名称 /// public virtual string BusinessTypeName { get; set; } /// /// 单据来源 /// public virtual string OrderSocure { get; set; } /// /// 订单状态 /// public virtual OrderStatusEnum PoStatus { get; set; } /// /// 订单状态名称 /// public virtual string PoStatusName { get; set; } /// /// 需求数量 /// public virtual decimal? Quantity { get; set; } /// /// 已收货数量 /// public virtual decimal? GoodsQuantity { get; set; } /// /// 供应商编号 /// public virtual string SupplierCode { get; set; } /// /// 供应商名称 /// public virtual string SupplierName { get; set; } /// /// 收货道口 /// public virtual string Dock { get; set; } /// /// ERP单号 /// public virtual string ErpOrderNo { get; set; } /// /// 项目ID /// public virtual long? ProjectId { get; set; } /// /// 项目号 /// public virtual string ProjectNo { get; set; } /// /// 项目名称 /// public virtual string ProjectName { get; set; } /// /// 备注 /// public virtual string Remark { get; set; } /// /// ERP创建人 /// public virtual string Erp_CreatedUserName { get; set; } /// /// ERP修改人 /// public virtual string Erp_UpdatedUserName { get; set; } /// /// 工厂ID /// public virtual long FactoryId { get; set; } /// /// 工厂名称 /// public virtual string FactoryName { get; set; } /// /// 工厂编号 /// public virtual string FactoryCode { get; set; } /// /// 创建时间 /// public virtual DateTime? CreateTime { get; set; } /// /// 修改时间 /// public virtual DateTime? UpdateTime { get; set; } /// /// 创建人Id /// public virtual long? CreateUserId { get; set; } /// /// 创建人 /// public virtual string CreateUserName { get; set; } /// /// 修改人Id /// public virtual long? UpdateUserId { get; set; } /// /// 修改人 /// public virtual string UpdateUserName { get; set; } /// /// 软删除 /// public virtual bool IsDelete { get; set; } } /// /// 采购订单明细分页查询输入参数 /// public class WmsOrderPurchaseDetailsInput : BasePageInput { /// /// 关键字查询 /// public string SearchKey { get; set; } /// /// PO单ID /// public long? PoId { get; set; } public long? Id { get; set; } /// /// PO单号 /// public string PoNo { get; set; } /// /// 行号 /// public string PoLineNumber { get; set; } /// /// ERP单号 /// public string ErpOrderNo { get; set; } /// /// ERP库存地 /// public string ErpCode { get; set; } /// /// 物料编号 /// public string MaterialCode { get; set; } /// /// 物料名称 /// public string MaterialName { get; set; } /// /// 数量 /// public decimal? Quantity { get; set; } /// /// 已收数量 /// public decimal? GoodsQuantity { get; set; } /// /// 状态 /// public OrderStatusEnum? PoDetailStatus { get; set; } /// /// 状态名称 /// public string PoDetailStatusName { get; set; } /// /// 供应商编号 /// public string SupplierCode { get; set; } /// /// 供应商名称 /// public string SupplierName { get; set; } /// /// 计划开始时间范围 /// public List PlannedStartTimeRange { get; set; } /// /// 计划开始时间 /// public DateTime? PlannedStartTime { get; set; } public string ProjectNo { get; set; } /// /// 计划结束时间 /// public DateTime? PlannedEndTime { get; set; } /// /// 计划结束时间范围 /// public List PlannedEndTimeRange { get; set; } public string Unit { get; set; } public string SupplierBatch { get; set; } /// /// asn单- 过滤“新建”“处理中”的PO单 /// public bool? FilterOrderStauts { get; set; } } /// /// 全局分页查询输入参数 /// public class BasePageInput { /// /// 当前页码 /// public virtual int Page { get; set; } = 1; /// /// 页码容量 /// //[Range(0, 100, ErrorMessage = "页码容量超过最大限制")] public virtual int PageSize { get; set; } = 20; /// /// 排序字段 /// public virtual string Field { get; set; } /// /// 排序方向 /// public virtual string Order { get; set; } /// /// 降序排序 /// public virtual string DescStr { get; set; } = "descending"; } /// /// wcs推送Po单输入参数 /// public class WCSPutPoOrderInput { public string AddPoOrderData { get; set; } } } }