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(); 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 { //DataTable queuedt = queueBLL.getQueuesbyState(); //if (queuedt == null || queuedt.Rows.Count <= 0) //{ 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(")", ")")); 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) { if (!string.IsNullOrEmpty(item["labelNo"].ToString())) { if (!string.IsNullOrEmpty(item["labelIP"].ToString())) { DataTable orderdt = bll.GetOrdersDT(item["labelIP"].ToString(), item["labelIP"].ToString()); if (orderdt != null && orderdt.Rows.Count > 0) { List list = new List(); LabelParamModel model = new LabelParamModel(); model.ControlIP = item["labelIP"].ToString(); model.Address = item["labelNo"].ToString(); model.Command = "REMOVE_JOB"; model.Uid = orderdt.Rows[0]["id"].ToString(); model.Type = "C"; list.Add(model); dal.SendALL(list); List jobList = JobCache.GetPlanJobList().FindAll(p => p.ID == orderdt.Rows[0]["id"].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 { msg.Status = "erro"; msg.Message = "数据异常:标签对应控制器IP未传值,请检查数据后重试!"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("数据异常:标签对应控制器IP未传值,请检查数据后重试!"); return resultxml; } } else { 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() + "),"; } } } 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.XmlSerialize(main); LogHelper.WriteLogInfo("数据异常:数据接收失败,请重试!"); } } else { msg.Status = "ok"; msg.Message = "熄灭成功"; main.msg = msg; resultxml = XmlHelper.ModelToXml(main); LogHelper.WriteLogInfo("熄灭成功"); return resultxml; } } } 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; //} //else //{ // msg.Status = "erro"; // msg.Message = "数据异常/当前存在拣药任务"; // main.msg = msg; // LogHelper.WriteLogInfo("数据异常/当前存在拣药任务"); // return resultxml = XmlHelper.ModelToXml(main); //} } catch (Exception ex) { msg.Status = "erro"; msg.Message = "数据异常:" + ex.Message + ""; main.msg = msg; LogHelper.WriteLogInfo("数据异常:" + ex.Message + ""); return resultxml = XmlHelper.ModelToXml(main); } } } } }