2023-07-18 11:18:52 +08:00
|
|
|
|
using Epost.BLL;
|
|
|
|
|
using Epost.Common;
|
2023-08-14 14:57:24 +08:00
|
|
|
|
using Epost.DAL;
|
|
|
|
|
using Epost.DAL.Cache;
|
2023-07-18 11:18:52 +08:00
|
|
|
|
using Epost.Model;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Security.Policy;
|
|
|
|
|
using System.Web;
|
2023-08-14 14:57:24 +08:00
|
|
|
|
using System.Web.Helpers;
|
|
|
|
|
using System.Web.Razor.Tokenizer.Symbols;
|
2023-07-18 11:18:52 +08:00
|
|
|
|
using System.Web.Services;
|
|
|
|
|
|
|
|
|
|
namespace Epost.DPS.WebService
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// WebService 的摘要说明
|
|
|
|
|
/// </summary>
|
|
|
|
|
[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();
|
2023-08-14 14:57:24 +08:00
|
|
|
|
CommandDAL dal = new CommandDAL();
|
2023-09-06 12:44:42 +08:00
|
|
|
|
CommandBLL combll = new CommandBLL();
|
|
|
|
|
|
|
|
|
|
AddressstorageBLL addbll = new AddressstorageBLL();
|
2023-08-30 17:23:23 +08:00
|
|
|
|
private object obj = new object();
|
2023-08-14 14:57:24 +08:00
|
|
|
|
|
|
|
|
|
JobModelCacheDAL JobCache = new JobModelCacheDAL();
|
2023-07-18 11:18:52 +08:00
|
|
|
|
|
|
|
|
|
[WebMethod]
|
|
|
|
|
public string ReceiveDataInfo_XML(string action, string messages)
|
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
lock (obj)
|
2023-07-18 11:18:52 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
LogHelper.WriteLogInfo("WebService请求报文:");
|
|
|
|
|
LogHelper.WriteLogInfo("action:" + action + "");
|
|
|
|
|
LogHelper.WriteLogInfo("messages:" + messages + "");
|
|
|
|
|
|
|
|
|
|
main main = new main();
|
|
|
|
|
msg msg = new msg();
|
|
|
|
|
var resultxml = string.Empty;
|
|
|
|
|
try
|
2023-07-18 11:18:52 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(messages))
|
2023-07-18 11:18:52 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
bool flag = true;
|
|
|
|
|
string mms = string.Empty;
|
|
|
|
|
LogHelper.WriteLogInfo("======开始处理数据======");
|
2023-09-06 12:44:42 +08:00
|
|
|
|
DataSet set = XmlHelper.GetDataSetStrXml(messages.Replace("&", "").Replace("#", "").Replace("△", "").Replace("☆", "").Replace("=", "").Replace("】", "").Replace("【", "").Replace(" ", "").Replace("\"", "").Replace(":", ":").Replace("(", "(").Replace(")", ")").Replace("×", "x").Replace("ω", "w"));
|
2023-08-30 17:23:23 +08:00
|
|
|
|
if (set != null && set.Tables.Count > 0 && set.Tables[0].Rows.Count > 0)
|
2023-07-26 13:09:49 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
var ReturnDt = set.Tables["pick"];
|
|
|
|
|
DataTable dtResult = ReturnDt.Clone();
|
|
|
|
|
|
|
|
|
|
foreach (DataRow item in ReturnDt.Rows)
|
2023-07-18 11:18:52 +08:00
|
|
|
|
{
|
2023-09-06 12:44:42 +08:00
|
|
|
|
#region 判断 亮灯/熄灭
|
|
|
|
|
//灭灯
|
|
|
|
|
if (item["TaskType"].ToString() == "Y")
|
2023-08-14 14:57:24 +08:00
|
|
|
|
{
|
2023-09-06 12:44:42 +08:00
|
|
|
|
List<LabelParamModel> list = new List<LabelParamModel>();
|
|
|
|
|
//熄灭指定订单任务
|
|
|
|
|
if (item["Current"].ToString() == "Y")
|
|
|
|
|
{
|
|
|
|
|
List<JobModel> 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);
|
2023-09-14 10:49:07 +08:00
|
|
|
|
itemlist.State = 3;
|
|
|
|
|
List<JobModel> downlist = new List<JobModel>();
|
|
|
|
|
|
|
|
|
|
downlist.Add(itemlist);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bll.UpdateOrderState_Car(downlist, itemlist, itemlist.Quantity, 0);
|
|
|
|
|
|
|
|
|
|
List<JobModel> ExjobList = JobCache.GetPlanJobList().FindAll(p => p.Block == itemlist.Block && p.Area == itemlist.Area&&p.State!=3);
|
2023-09-06 12:44:42 +08:00
|
|
|
|
if (!ExjobList.Any())
|
|
|
|
|
{
|
|
|
|
|
LogHelper.WriteLogInfo("熄灭指定订单任务-熄灭通道灯:" + itemlist.Block + "++++" + itemlist.Area + "");
|
|
|
|
|
combll.DISPLAY_LIGHT_BLOCK(itemlist.Block, itemlist.Area, "0");
|
|
|
|
|
|
2023-09-14 10:49:07 +08:00
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2023-09-06 12:44:42 +08:00
|
|
|
|
dal.SendALL(list);
|
2023-09-14 10:49:07 +08:00
|
|
|
|
bool b = bll.UpOrdersState(item["transderMid"].ToString());
|
2023-09-06 12:44:42 +08:00
|
|
|
|
|
|
|
|
|
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")
|
2023-08-14 14:57:24 +08:00
|
|
|
|
{
|
2023-09-06 12:44:42 +08:00
|
|
|
|
List<JobModel> jobList = JobCache.GetPlanJobList();
|
|
|
|
|
|
|
|
|
|
if (jobList != null && jobList.Count > 0)
|
2023-08-30 17:23:23 +08:00
|
|
|
|
{
|
2023-09-06 12:44:42 +08:00
|
|
|
|
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());
|
|
|
|
|
}
|
2023-08-30 17:23:23 +08:00
|
|
|
|
dal.SendALL(list);
|
2023-08-14 14:57:24 +08:00
|
|
|
|
|
2023-09-06 12:44:42 +08:00
|
|
|
|
bool b = bll.UpOrdersState("");
|
2023-09-14 10:49:07 +08:00
|
|
|
|
//修改队列状态
|
|
|
|
|
queueBLL.updateOrderQueueState();
|
|
|
|
|
JobCache.UpdateJobModelList(jobList, EcommendType.CompleteAll);
|
2023-07-18 11:18:52 +08:00
|
|
|
|
|
2023-08-30 17:23:23 +08:00
|
|
|
|
flag = false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
2023-09-06 12:44:42 +08:00
|
|
|
|
msg.Message = "标签熄灭失败:当前标签未亮灯!";
|
2023-08-30 17:23:23 +08:00
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
2023-09-06 12:44:42 +08:00
|
|
|
|
LogHelper.WriteLogInfo("标签熄灭失败:当前标签未亮灯!");
|
2023-08-30 17:23:23 +08:00
|
|
|
|
return resultxml;
|
|
|
|
|
}
|
2023-08-14 14:57:24 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
2023-09-06 12:44:42 +08:00
|
|
|
|
msg.Message = "数据异常:Current参数为空或参数不正确!";
|
2023-08-14 14:57:24 +08:00
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
2023-09-06 12:44:42 +08:00
|
|
|
|
LogHelper.WriteLogInfo("数据异常:Current参数为空或参数不正确!");
|
2023-08-14 14:57:24 +08:00
|
|
|
|
return resultxml;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-06 12:44:42 +08:00
|
|
|
|
else if (item["TaskType"].ToString() == "N")
|
2023-08-14 14:57:24 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
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() + "),";
|
|
|
|
|
}
|
2023-08-14 14:57:24 +08:00
|
|
|
|
}
|
2023-09-06 12:44:42 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
|
|
|
|
msg.Message = "数据异常:TaskType参数为空或参数不正确!";
|
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
|
|
|
|
LogHelper.WriteLogInfo("数据异常:TaskType参数为空或参数不正确!");
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
2023-07-26 13:09:49 +08:00
|
|
|
|
}
|
2023-08-30 17:23:23 +08:00
|
|
|
|
|
2023-09-06 12:44:42 +08:00
|
|
|
|
#region 添加
|
2023-08-30 17:23:23 +08:00
|
|
|
|
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 + "");
|
|
|
|
|
}
|
2023-07-26 13:09:49 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
if (flag)
|
2023-08-14 14:57:24 +08:00
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
Dictionary<string, string> diclist = new Dictionary<string, string>();
|
|
|
|
|
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");
|
2023-08-14 14:57:24 +08:00
|
|
|
|
|
2023-08-30 17:23:23 +08:00
|
|
|
|
bool b = bll.ImportOrderinfo(dtResult, diclist);
|
|
|
|
|
if (b)
|
|
|
|
|
{
|
|
|
|
|
msg.Status = "ok";
|
|
|
|
|
msg.Message = "接收成功";
|
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
|
|
|
|
LogHelper.WriteLogInfo("接收成功");
|
2023-08-14 14:57:24 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
msg.Status = "erro";
|
|
|
|
|
msg.Message = "数据异常:数据接收失败,请检查货位和标签对应关系是否正确,请重试!";
|
|
|
|
|
main.msg = msg;
|
2023-09-06 12:44:42 +08:00
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
2023-08-30 17:23:23 +08:00
|
|
|
|
LogHelper.WriteLogInfo("数据异常:数据接收失败,请重试!");
|
2023-08-14 14:57:24 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2023-08-30 17:23:23 +08:00
|
|
|
|
msg.Status = "ok";
|
|
|
|
|
msg.Message = "熄灭成功";
|
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
|
|
|
|
LogHelper.WriteLogInfo("熄灭成功");
|
|
|
|
|
return resultxml;
|
2023-08-14 14:57:24 +08:00
|
|
|
|
}
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
2023-09-06 12:44:42 +08:00
|
|
|
|
#endregion
|
2023-07-26 13:09:49 +08:00
|
|
|
|
}
|
2023-08-30 17:23:23 +08:00
|
|
|
|
else
|
2023-07-26 13:09:49 +08:00
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
2023-08-30 17:23:23 +08:00
|
|
|
|
msg.Message = "数据异常:解析XML失败,请检查XML格式后再进行推送!";
|
2023-07-26 13:09:49 +08:00
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
2023-08-30 17:23:23 +08:00
|
|
|
|
LogHelper.WriteLogInfo("数据异常:解析XML失败,请检查XML格式后再进行推送!");
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
2023-09-06 12:44:42 +08:00
|
|
|
|
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
2023-08-30 17:23:23 +08:00
|
|
|
|
msg.Message = "数据异常:未在XML内获取到数据,请检查后再进行推送!";
|
2023-07-18 11:18:52 +08:00
|
|
|
|
main.msg = msg;
|
|
|
|
|
resultxml = XmlHelper.ModelToXml(main);
|
2023-08-30 17:23:23 +08:00
|
|
|
|
LogHelper.WriteLogInfo("数据异常:未在XML内获取到数据,请检查后再进行推送!");
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
2023-08-30 17:23:23 +08:00
|
|
|
|
return resultxml;
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
2023-08-30 17:23:23 +08:00
|
|
|
|
catch (Exception ex)
|
2023-07-18 11:18:52 +08:00
|
|
|
|
{
|
|
|
|
|
msg.Status = "erro";
|
2023-08-30 17:23:23 +08:00
|
|
|
|
msg.Message = "数据异常:" + ex.Message + "";
|
2023-07-18 11:18:52 +08:00
|
|
|
|
main.msg = msg;
|
2023-08-30 17:23:23 +08:00
|
|
|
|
LogHelper.WriteLogInfo("数据异常:" + ex.Message + "");
|
|
|
|
|
return resultxml = XmlHelper.ModelToXml(main);
|
2023-07-18 11:18:52 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|