You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
578 lines
25 KiB
C#
578 lines
25 KiB
C#
using NetLibrary.Common.Configuration;
|
|
using NetLibrary.Log;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using static TradeManageNew.OuterService.ShageService;
|
|
|
|
namespace TradeManageNew.OuterService
|
|
{
|
|
/// <summary>
|
|
/// ShipGoodsService 的摘要说明
|
|
/// </summary>
|
|
public class ShipGoodsService : IHttpHandler
|
|
{
|
|
|
|
public void ProcessRequest(HttpContext context)
|
|
{
|
|
context.Response.ContentType = "text/plain";
|
|
string UserCode = context.Request.QueryString["UserCode"];
|
|
string Method = context.Request.QueryString["Method"];
|
|
string Ver = context.Request.QueryString["Ver"];
|
|
SyncDataModel md = new SyncDataModel();
|
|
md.Result = "";
|
|
string content2 = "";
|
|
|
|
try
|
|
{
|
|
StreamReader sr = new StreamReader(context.Request.InputStream);
|
|
string ResponseContent = sr.ReadToEnd();
|
|
ErrorFollow.TraceWrite("协议", "", ResponseContent);
|
|
if (string.IsNullOrEmpty(UserCode) == true || string.IsNullOrEmpty(Method) == true || string.IsNullOrEmpty(Ver) == true)
|
|
{
|
|
md.Code = "101";
|
|
md.Result = "缺少参数或者参数不正确,请确保有如下UserCode,Method,Ver参数";
|
|
content2 = JsonConvert.SerializeObject(md);
|
|
context.Response.Write(content2);
|
|
return;
|
|
}
|
|
if (Ver == "1.0")
|
|
{
|
|
if (string.IsNullOrEmpty(ResponseContent) == true)
|
|
{
|
|
md.Code = "104";
|
|
md.Result = "提交数据不能为空";
|
|
content2 = JsonConvert.SerializeObject(md);
|
|
context.Response.Write(content2);
|
|
return;
|
|
}
|
|
if (Method == "GetTrayInfos") //获取美国日期当天有效的托盘码
|
|
{
|
|
TrayData model = JsonConvert.DeserializeObject<TrayData>(ResponseContent);
|
|
if(model!=null)
|
|
{
|
|
var trayInfos = DataNew.GetTrayInfo(model.InDate, model.UserId, model.WareHouse, model.PrintState);
|
|
if (trayInfos!=null)
|
|
{
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(trayInfos);
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "No Valid Pallet Code,Please Add";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "AddTrayInfo")//添加托盘码
|
|
{
|
|
AddTrayData model = JsonConvert.DeserializeObject<AddTrayData>(ResponseContent);
|
|
if (model!=null)
|
|
{
|
|
for(var i = 0; i < model.Count; i++)
|
|
{
|
|
var mde = new TrayInfo()
|
|
{
|
|
InDate = DateTime.Now.AddHours(-12).Date,
|
|
WareHouse = model.WareHouse,
|
|
PrintState = 0,
|
|
TrayUserId = model.UserId,
|
|
};
|
|
DataNew.AddTrayInfo(mde);
|
|
}
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "UpdateTrayInfo") //更新托盘码为已打印状态
|
|
{
|
|
var model = JsonConvert.DeserializeObject<UpdateTrayData>(ResponseContent);
|
|
if (model!=null)
|
|
{
|
|
DataNew.UpdateTrayInfo(model.ID);
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "GetPickGoodsInfo")//获取用户需要拣货的商品
|
|
{
|
|
var pickData= JsonConvert.DeserializeObject<PickData>(ResponseContent);
|
|
if (pickData != null)
|
|
{
|
|
var pickGoods = new List<PickGoodsInfo>();
|
|
if (pickData.UserId == 165)
|
|
{
|
|
pickGoods = DataNew.GetPickGoodsInfo2(pickData.UserId, pickData.InDate);
|
|
}
|
|
else
|
|
{
|
|
pickGoods = DataNew.GetPickGoodsInfo(pickData.UserId, pickData.InDate);
|
|
}
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(pickGoods);
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "VerifyTrayCode") //验证托盘码是否有效
|
|
{
|
|
var model = JsonConvert.DeserializeObject<VerifyData>(ResponseContent);
|
|
|
|
//先判断此托盘码是否属于当前拣货工
|
|
var trayInfo = DataNew.GetTrayCodeInfo(model.TrayCode);
|
|
if (trayInfo == null || trayInfo.TrayUserId != model.UserId)
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "This pallet code does not belong to you";
|
|
md.Data = null;
|
|
}
|
|
else if (trayInfo.InDate.Date != model.InDate.Date)
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "The pallet code has expired, please add a new pallet code";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "100";
|
|
md.Result = "";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "SaveTrayGoods") //托盘拣货完成,保存托盘拣货数据
|
|
{
|
|
SaveTrayGoodsModel model = JsonConvert.DeserializeObject<SaveTrayGoodsModel>(ResponseContent);
|
|
if (model != null && model.TrayGoodsData!=null && model.TrayGoodsData.Count > 0)
|
|
{
|
|
//先判断此托盘码是否属于当前拣货工
|
|
var trayInfo = DataNew.GetTrayCodeInfo(model.TrayCode);
|
|
if(trayInfo==null || trayInfo.TrayUserId != model.UserId)
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "This pallet code does not belong to you";
|
|
md.Data = null;
|
|
}
|
|
else if (trayInfo.InDate.Date != model.InDate.Date)
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "The pallet code has expired, please add a new pallet code";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
var errorMsg = "";
|
|
//先检验托盘所有商品是否符合拣货商品
|
|
foreach (var tg in model.TrayGoodsData)
|
|
{
|
|
//根据sku和库位判断
|
|
var pgoods = DataNew.GetPickGoodsInfoById(tg.PickGoodsId);
|
|
if (pgoods != null)
|
|
{
|
|
//扫描数量大于发货数量
|
|
if (pgoods.ScanQty + tg.PickQty > pgoods.PickQty)
|
|
{
|
|
errorMsg = "SKU:" + tg.SKU + ",LocationCode:" + tg.LocationCode + ", Scanned quantity greater than shipped quantity";
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
errorMsg = "SKU:" + tg.SKU + ",LocationCode:" + tg.LocationCode + ", non-existent";
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(errorMsg))
|
|
{
|
|
md.Code = "400";
|
|
md.Result = errorMsg;
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
//检验通过之后,逐条保存扫描记录
|
|
foreach (var tg in model.TrayGoodsData)
|
|
{
|
|
var mde = new TrayPickGoodsInfo()
|
|
{
|
|
TrayCode = model.TrayCode,
|
|
SKU = tg.SKU,
|
|
WareHouse = tg.WareHouse,
|
|
LocationCode = tg.LocationCode,
|
|
PickQty = tg.PickQty,
|
|
PickUserId = model.UserId,
|
|
PickGoodsInfo_Id = tg.PickGoodsId,
|
|
NewSKU=tg.NewSKU,
|
|
PackGoodCode = tg.PackGoodCode,
|
|
PackGoodCode2=tg.PackGoodCode2,
|
|
};
|
|
DataNew.SaveTrayGoodsInfo(mde);
|
|
}
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "GetUserPickTrayList") //获取到拣货工当天已生成托盘
|
|
{
|
|
var model = JsonConvert.DeserializeObject<PickData>(ResponseContent);
|
|
if (model != null)
|
|
{
|
|
var trays = DataNew.GetUserPickTrayList(model.UserId, model.InDate);
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = (trays != null && trays.Count > 0) ? JsonConvert.SerializeObject(trays) : null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "GetTrayGoodsInfoList") //获取到托盘中的所有商品信息
|
|
{
|
|
var model = JsonConvert.DeserializeObject<GetData>(ResponseContent);
|
|
if (model!=null && !string.IsNullOrEmpty(model.TrayCode))
|
|
{
|
|
var goods = DataNew.GetTrayPickGoodsInfoList(model.TrayCode);
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = (goods != null && goods.Count > 0) ? JsonConvert.SerializeObject(goods) : null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "DeleteTrayGoodsInfo") //删除已生成的托盘内的商品
|
|
{
|
|
var model = JsonConvert.DeserializeObject<GetData>(ResponseContent);
|
|
if (model != null && !string.IsNullOrEmpty(model.IDs))
|
|
{
|
|
DataNew.DeleteTrayPickGoodsInfo(model.IDs);
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "GetPostReturnDetail") //扫描退货跟踪码获取退货详情
|
|
{
|
|
var model = JsonConvert.DeserializeObject<ScanData>(ResponseContent);
|
|
if (model != null && !string.IsNullOrEmpty(model.Code))
|
|
{
|
|
//解析判断扫描的退货单快递跟踪码
|
|
model.Code = model.Code.Replace("\u0002", "").Replace("\n", "");
|
|
string Code2 = model.Code;
|
|
|
|
if (model.Code.Length > 26 && model.Code.Substring(8, 2) == "92")
|
|
{
|
|
|
|
model.Code = model.Code.Substring(10);
|
|
}
|
|
else
|
|
if (model.Code.Length > 20 && model.Code.Substring(0, 2) == "92")
|
|
{
|
|
|
|
model.Code = model.Code.Substring(2);
|
|
}
|
|
else if (model.Code.Length > 20 && model.Code.Substring(0, 2) == "94")
|
|
{
|
|
|
|
model.Code = model.Code;
|
|
}
|
|
else if (model.Code.Length > 12)
|
|
{
|
|
|
|
model.Code = model.Code.Substring(model.Code.Length - 12);
|
|
}
|
|
|
|
var returnDTs = new List<DT_OrderReturn>();
|
|
returnDTs = DataNew.GetDT_OrderReturnDatas(model.Code, Code2);
|
|
if(returnDTs!=null && returnDTs.Count > 0)
|
|
{
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(returnDTs);
|
|
}
|
|
else
|
|
{
|
|
var rd = new DT_OrderReturn();
|
|
rd.tracking_id = model.Code;
|
|
returnDTs=new List<DT_OrderReturn>();
|
|
returnDTs.Add(rd);
|
|
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(returnDTs);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "SavePostReturnDetail") //保存扫描退货跟踪码退货详情信息
|
|
{
|
|
var model= JsonConvert.DeserializeObject<List<SavePostReturnModel>>(ResponseContent);
|
|
if (model!=null)
|
|
{
|
|
var skuQty = new List<string>();
|
|
var locations = new List<string>();
|
|
var returnIds = new List<string>();
|
|
|
|
foreach(var item in model)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.SKU))
|
|
{
|
|
skuQty.Add(item.ReturnQty.ToString() + "x" + item.SKU);
|
|
}
|
|
if (!string.IsNullOrEmpty(item.LocationCode))
|
|
{
|
|
locations.Add(item.LocationCode);
|
|
}
|
|
if (item.DT_OrderReturn_id.HasValue && item.DT_OrderReturn_id.Value!=0)
|
|
{
|
|
returnIds.Add(item.DT_OrderReturn_id.Value.ToString());
|
|
}
|
|
}
|
|
|
|
var rd = new OrderReturnBarcode();
|
|
rd.TrackingCode = model.First().TrackingCode;
|
|
rd.TrackingCode2 = model.First().TrackingCode2;
|
|
rd.SKUAndQty = skuQty != null ? string.Join(",", skuQty) : "";
|
|
rd.LocationCode = locations != null ? string.Join(",", locations) : "";
|
|
rd.DT_OrderReturn_id = returnIds != null ? string.Join(",", returnIds) : "";
|
|
rd.ScanUserId=model.First().ScanUserId;
|
|
var count= DataNew.SaveDT_OrderReturnDatas(rd);
|
|
if (count == 0)
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data already exists";
|
|
md.Data = null;
|
|
}
|
|
else
|
|
{
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if(Method== "GetOrderReturnBarcodeDetail")//获取退货条形码数据详情
|
|
{
|
|
var model = JsonConvert.DeserializeObject<ScanData>(ResponseContent);
|
|
if (model!=null && !string.IsNullOrEmpty(model.Code))
|
|
{
|
|
var data = DataNew.GetOrderReturnBarcodeDatas(model.Code);
|
|
if (data != null)
|
|
{
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(data);
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data not exist";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Data transmission error";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
else if (Method == "GetPdaVersion") //获取PDA当前版本号
|
|
{
|
|
var version= ConfigurationManager.AppSettings["PDAversion"];
|
|
if (!string.IsNullOrEmpty(version))
|
|
{
|
|
var data = new
|
|
{
|
|
code = version,
|
|
url = "https://www.kferp.net/attached/WMS1.0.0.apk"
|
|
};
|
|
md.Code = "100";
|
|
md.Result = "Success";
|
|
md.Data = JsonConvert.SerializeObject(data);
|
|
}
|
|
else
|
|
{
|
|
md.Code = "400";
|
|
md.Result = "Version code is null";
|
|
md.Data = null;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
md.Code = "104";
|
|
md.Result = ex.Message;
|
|
|
|
}
|
|
content2 = JsonConvert.SerializeObject(md);
|
|
ErrorFollow.TraceWrite("返回值", "", content2);
|
|
context.Response.Write(content2);
|
|
}
|
|
|
|
public bool IsReusable
|
|
{
|
|
get
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public class SaveTrayGoodsModel
|
|
{
|
|
public int UserId { get; set; }
|
|
public string TrayCode { get; set; }
|
|
public DateTime InDate { get; set; }
|
|
public List<TrayGoodsData> TrayGoodsData { get; set; }
|
|
}
|
|
public class TrayGoodsData
|
|
{
|
|
public int PickGoodsId { get; set; }
|
|
public string WareHouse { get; set; }
|
|
public string SKU { get; set; }
|
|
/// <summary>
|
|
/// 库位
|
|
/// </summary>
|
|
public string LocationCode { get; set; }
|
|
/// <summary>
|
|
/// 拣货数量
|
|
/// </summary>
|
|
public int PickQty { get; set; }
|
|
|
|
public string NewSKU { get; set; }
|
|
public string PackGoodCode { get; set; }
|
|
public string PackGoodCode2 { get; set; }
|
|
}
|
|
|
|
public class PickData
|
|
{
|
|
public int UserId { get; set; }
|
|
public DateTime InDate { get; set; }
|
|
}
|
|
|
|
public class TrayData
|
|
{
|
|
public int UserId { get; set; }
|
|
public string WareHouse { get; set; }
|
|
public int PrintState { get; set; }
|
|
|
|
public DateTime InDate { get; set; }
|
|
}
|
|
|
|
public class AddTrayData
|
|
{
|
|
public int UserId { get; set; }
|
|
/// <summary>
|
|
/// 添加数量
|
|
/// </summary>
|
|
public int Count { get; set; }
|
|
/// <summary>
|
|
/// 所属仓库
|
|
/// </summary>
|
|
public string WareHouse { get; set; }
|
|
}
|
|
public class UpdateTrayData
|
|
{
|
|
public int ID { get; set; }
|
|
}
|
|
|
|
public class GetData
|
|
{
|
|
public string TrayCode { get; set; }
|
|
public string IDs { get; set; }
|
|
}
|
|
public class VerifyData
|
|
{
|
|
public int UserId { get; set; }
|
|
public string TrayCode { get; set; }
|
|
public DateTime InDate { get; set; }
|
|
}
|
|
|
|
public class ScanData
|
|
{
|
|
public string Code { get; set; }
|
|
}
|
|
|
|
public class SavePostReturnModel
|
|
{
|
|
public string TrackingCode { get; set; }
|
|
public string TrackingCode2 { get; set; }
|
|
public string SKU { get; set; }
|
|
|
|
public int? ReturnQty { get; set; }
|
|
public string LocationCode { get; set; }
|
|
public int? DT_OrderReturn_id { get; set; }
|
|
public int? ScanUserId { get; set; }
|
|
}
|
|
}
|
|
} |