Files
T-DAS/Epost.TestToolsWeb/WebService/WebService.asmx.cs
2023-09-14 10:49:07 +08:00

349 lines
20 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <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();
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"));
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<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);
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);
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")
{
List<JobModel> jobList = JobCache.GetPlanJobList();
if (jobList != null && jobList.Count > 0)
{
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();
JobCache.UpdateJobModelList(jobList, EcommendType.CompleteAll);
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 = "数据异常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<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");
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);
}
}
}
}
}