using Epost.BLL; using Epost.Common; using Epost.DAL; using Epost.DAL.Cache; using Epost.Model; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Security.Policy; using System.Web; using System.Web.Helpers; using System.Web.Razor.Tokenizer.Symbols; using System.Web.Services; namespace Epost.DPS.WebService { /// /// WebService 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { OrderBLL bll = new OrderBLL(); OrdersQueueBLL queueBLL = new OrdersQueueBLL(); CommandDAL dal = new CommandDAL(); CommandBLL combll = new CommandBLL(); AddressstorageBLL addbll = new AddressstorageBLL(); private object obj = new object(); JobModelCacheDAL JobCache = new JobModelCacheDAL(); [WebMethod] public string ReceiveDataInfo_XML(string action, string messages) { lock (obj) { LogHelper.WriteLogInfo("WebService请求报文:"); LogHelper.WriteLogInfo("action:" + action + ""); LogHelper.WriteLogInfo("messages:" + messages + ""); main main = new main(); msg msg = new msg(); var resultxml = string.Empty; try { if (!string.IsNullOrEmpty(messages)) { bool flag = true; string mms = string.Empty; LogHelper.WriteLogInfo("======开始处理数据======"); DataSet set = XmlHelper.GetDataSetStrXml(messages.Replace("&", "").Replace("#", "").Replace("△", "").Replace("☆", "").Replace("=", "").Replace("】", "").Replace("【", "").Replace(" ", "").Replace("\"", "").Replace(":", ":").Replace("(", "(").Replace(")", ")").Replace("×", "x").Replace("ω", "w").Replace("α", "a")); if (set != null && set.Tables.Count > 0 && set.Tables[0].Rows.Count > 0) { var ReturnDt = set.Tables["pick"]; DataTable dtResult = ReturnDt.Clone(); foreach (DataRow item in ReturnDt.Rows) { #region 判断 亮灯/熄灭 //灭灯 if (item["TaskType"].ToString() == "Y") { List list = new List(); //熄灭指定订单任务 if (item["Current"].ToString() == "Y") { List jobList = JobCache.GetPlanJobList().FindAll(p => p.OrderID == item["transderMid"].ToString()); LogHelper.WriteLogInfo("熄灭指定订单亮灯任务---订单号:" + item["transderMid"].ToString() + "---条数:" + jobList.Count + ""); if (jobList != null && jobList.Count > 0) { foreach (var itemlist in jobList) { LabelParamModel model = new LabelParamModel(); model.ControlIP = itemlist.ControlIP.ToString(); model.Address = itemlist.Address.ToString(); model.Command = "REMOVE_JOB"; model.Uid = itemlist.ID.ToString(); model.Type = "C"; list.Add(model); itemlist.State = 3; List downlist = new List(); downlist.Add(itemlist); bll.UpdateOrderState_Car(downlist, itemlist, itemlist.Quantity, 0); List ExjobList = JobCache.GetPlanJobList().FindAll(p => p.Block == itemlist.Block && p.Area == itemlist.Area && p.State != 3); if (!ExjobList.Any()) { LogHelper.WriteLogInfo("熄灭指定订单任务-熄灭通道灯:" + itemlist.Block + "++++" + itemlist.Area + ""); combll.DISPLAY_LIGHT_BLOCK(itemlist.Block, itemlist.Area, "0"); bool skuInish = bll.IsFinishWork(1, itemlist.Block, "", itemlist.Area, "", "", ""); if (skuInish) { LogHelper.WriteLogInfo("通道拣货完成--------------"); #region 修改任务队列状态 OrdersQueueModel qumodel = new OrdersQueueModel(); qumodel.State = 3; qumodel.Taskblock = itemlist.Block; qumodel.Taskarea = itemlist.Area; queueBLL.UpdateQueueTaskArea_Car(qumodel); #endregion bool WorkArea = bll.IsFinishWorkArea("", "", "99", "", "", ""); if (WorkArea) { LogHelper.WriteLogInfo("阴凉区完成--------------"); if (WorkArea) { combll.DISPLAY_LIGHT_BLOCK_Out("", itemlist.Area, "0"); } } } } } dal.SendALL(list); bool b = bll.UpOrdersState(item["transderMid"].ToString()); JobCache.UpdateJobModelList(jobList, EcommendType.Execute); flag = false; } else { msg.Status = "erro"; msg.Message = "标签熄灭失败:当前标签未亮灯!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("标签熄灭失败:当前标签未亮灯!"); return resultxml; } } //熄灭全部 else if (item["Current"].ToString() == "N") { DataTable dt = addbll.GetForcedendAddress(); foreach (DataRow additem in dt.Rows) { LabelParamModel model = new LabelParamModel(); model.ControlIP = additem["ControlIP"].ToString(); model.Address = "9999"; model.Command = "FORMAT_JOB_DATA"; model.Parameter = "50"; model.Timeout = "0.5"; list.Add(model); model = new LabelParamModel(); model.ControlIP = additem["ControlIP"].ToString(); model.Address = "9999"; model.Parameter = "11111000"; model.Command = "UNLOCK"; model.Timeout = "0.5"; list.Add(model); combll.LED_OFF_CLEAR(additem["ControlIP"].ToString()); } dal.SendALL(list); bool b = bll.UpOrdersState(""); //修改队列状态 queueBLL.updateOrderQueueState(); List jobList = JobCache.GetPlanJobList(); JobCache.UpdateJobModelList(jobList, EcommendType.CompleteAll); flag = false; } else { msg.Status = "erro"; msg.Message = "数据异常:Current参数为空或参数不正确!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:Current参数为空或参数不正确!"); return resultxml; } } else if (item["TaskType"].ToString() == "N") { DataTable dt = bll.GetDataIfRepeat(item["transderMid"].ToString(), item["transderDid"].ToString()); if (dt == null || dt.Rows.Count <= 0) { DataTable locdt = bll.GetlocationInfo(item["areaId"].ToString()); if (locdt != null && locdt.Rows.Count > 0) { DataRow dataRow = dtResult.NewRow(); dataRow["transderMid"] = item["transderMid"].ToString(); dataRow["transderDid"] = item["transderDid"].ToString(); dataRow["drugCode"] = item["drugCode"].ToString(); dataRow["drugCommName"] = item["drugCommName"].ToString(); dataRow["drugName"] = item["drugName"].ToString(); dataRow["drugSpec"] = item["drugSpec"].ToString(); dataRow["Unit"] = item["Unit"].ToString(); dataRow["manufactName"] = item["manufactName"].ToString(); dataRow["batchNo"] = item["batchNo"].ToString(); dataRow["expire"] = item["expire"].ToString(); dataRow["areaId"] = item["areaId"].ToString(); dataRow["pickQty"] = item["pickQty"].ToString(); dataRow["stock"] = item["stock"].ToString(); dataRow["drugStoreName"] = item["drugStoreName"].ToString(); dataRow["labelColor"] = item["labelColor"].ToString(); dataRow["lookListen"] = item["lookListen"].ToString(); dataRow["labelIP"] = item["labelIP"].ToString(); dataRow["labelNo"] = item["labelNo"].ToString(); dtResult.Rows.Add(dataRow); } else { LogHelper.WriteLogInfo("" + item["areaId"].ToString() + ",该货位不存在"); } } else { mms += "主键重复 (" + item["transderMid"].ToString() + "-" + item["transderDid"].ToString() + "),"; } } else { msg.Status = "erro"; msg.Message = "数据异常:TaskType参数为空或参数不正确!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:TaskType参数为空或参数不正确!"); } #endregion } #region 添加 if (!string.IsNullOrEmpty(mms)) { mms = mms.Substring(0, mms.Length - 1); msg.Status = "erro"; msg.Message = "数据异常:" + mms + ""; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:" + mms + ""); } else { if (flag) { Dictionary diclist = new Dictionary(); diclist.Add("transderMid", "orderid"); diclist.Add("transderDid", "transderDid"); diclist.Add("drugCode", "sku"); diclist.Add("drugCommName", "genericname"); diclist.Add("drugName", "goodsname"); diclist.Add("drugSpec", "Spec"); diclist.Add("Unit", "unit"); diclist.Add("manufactName", "manufactname"); diclist.Add("batchNo", "batchno"); diclist.Add("expire", "orderdate"); diclist.Add("areaId", "tolocation"); diclist.Add("pickQty", "quantity"); diclist.Add("stock", "stockquantity"); diclist.Add("drugStoreName", "shopname"); diclist.Add("labelColor", "labelcolor"); diclist.Add("lookListen", "looklisten"); diclist.Add("labelIP", "labelIP"); diclist.Add("labelNo", "labelno"); bool b = bll.ImportOrderinfo(dtResult, diclist); if (b) { msg.Status = "ok"; msg.Message = "接收成功"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("接收成功"); } else { msg.Status = "erro"; msg.Message = "数据异常:数据接收失败,请检查货位和标签对应关系是否正确,请重试!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:数据接收失败,请重试!"); } } else { msg.Status = "ok"; msg.Message = "熄灭成功"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("熄灭成功"); return resultxml; } } #endregion } else { msg.Status = "erro"; msg.Message = "数据异常:解析XML失败,请检查XML格式后再进行推送!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:解析XML失败,请检查XML格式后再进行推送!"); } } else { msg.Status = "erro"; msg.Message = "数据异常:未在XML内获取到数据,请检查后再进行推送!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:未在XML内获取到数据,请检查后再进行推送!"); } return resultxml; } catch (Exception ex) { msg.Status = "erro"; msg.Message = "数据异常:" + ex.Message + ""; main.msg = msg; LogHelper.WriteLogInfo("数据异常:" + ex.Message + ""); return resultxml = XmlHelper.ModelToXml(main); } } } } }