using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using Tools;
using WebService.Model;
namespace Webservice
{
///
/// WMSWebService 的摘要说明
///
[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 WMSWebService : System.Web.Services.WebService
{
[WebMethod]
public string ConnectTest()
{
return "Connection is Ready.";
}
///
/// 调用WMS接口03
/// 喷涂合格入库
///
/// 条码号:A2048856739-P.190605.0008(二维码)
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void WMSSprayingForApp(string barcode)
{
string errorReason = "";
JsonModel model = new JsonModel();
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = errorReason;
model.DataList = null;
#region 参数判断
if (string.IsNullOrWhiteSpace(barcode))
{
model.ErrReason = "条码号不能为空";
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
string stcokNo = "";
string batchNo = "";
string partNo = "";
string colorName = string.Empty;
string productName = string.Empty;
string carType = string.Empty;
Function.GetCode(barcode, out stcokNo, out batchNo, out partNo);
if (string.IsNullOrWhiteSpace(stcokNo) && string.IsNullOrWhiteSpace(partNo))
{
model.ErrReason = "条码号无效,请检查条码是否破损缺失";
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
#endregion
//string res = Function.WMSSpraying("60000000562010090015", 1, "6000000056", "86511-BU020RBC", "210721");
string res = Function.WMSSpraying(barcode, 1, stcokNo, partNo, batchNo, ref colorName, ref productName, ref carType);
LogHelper.WriteSysLogBase("WMS接口:条码:" + barcode + ",MES返回结果:" + res, MethodBase.GetCurrentMethod().Name);
Context.Response.Write(res);
}
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string WMSSprayingForCSForTest(string barcode, int isOK)
{
string errorReason = string.Empty;
bool b = WMSSprayingForCS(barcode, isOK, out errorReason);
if (string.IsNullOrEmpty(errorReason))
return "true";
return errorReason;
}
///
/// 调用WMS接口03
/// 喷涂报废接口
///
/// 条码号:A2048856739-P.190605.0008(二维码)
/// 0-不合格;1-合格;9-返喷 8-其他
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public bool WMSSprayingForCS(string barcode, int isOK, out string errorReason)
{
LogHelper.WriteSysLogBase("【WMS报废调入MES接口】条码:" + barcode, MethodBase.GetCurrentMethod().Name);
//string errorReason = "";
//return true;
if (string.IsNullOrWhiteSpace(barcode))
{
//model.ErrReason = "条码号不能为空";
//Context.Response.Write(JSONTools.ScriptSerialize>(model));
errorReason = "条码号不能为空";
return false;
}
bool sendRst = true;
string stcokNo = "";
string batchNo = "";
string partNo = "";
string colorName = string.Empty;
string productName = string.Empty;
string carType = string.Empty;
try
{
errorReason = "";
sendRst = SendToWmsService(barcode, isOK, ref stcokNo, ref batchNo, ref partNo, ref colorName, ref productName, ref carType,ref errorReason);
if(sendRst == true)
{
return sendRst;
}
else
{
return false;
}
}
catch (Exception ex)
{
errorReason = ex.Message;
LogHelper.WriteSysLogBase("【WMS报废调入MES接口】条码:" + barcode + ",报错:" + errorReason, MethodBase.GetCurrentMethod().Name);
return false;
}
}
///
/// 喷涂下线
///
///
///
[WebMethod(EnableSession = true)]
public string PaintLineDown(string barCode)
{
bool sendRst = true;
string colorName = string.Empty;
string productName = string.Empty;
string carType = string.Empty;
string stcokNo = string.Empty;
string batchNo = string.Empty;
string partNo = string.Empty;
try
{
string errorReason = "";
sendRst = SendToWmsService(barCode, 1, ref stcokNo, ref batchNo, ref partNo, ref colorName, ref productName, ref carType, ref errorReason);
if (sendRst == true)
{
Function.SaveLineDownInfo(barCode, carType, colorName, productName);
if (Context.Session["LastBarCode"] != null)
{
if (ExsitBarCode(Context.Session["LastBarCode"].ToString()) == false)
{
Function.SaveLineDownInfo(Context.Session["LastBarCode"].ToString(), Context.Session["LastCarType"].ToString(), Context.Session["LastColorName"].ToString(), Context.Session["LastProductName"].ToString());
}
}
Context.Session["LastBarCode"] = barCode;
Context.Session["LastCarType"] = carType;
Context.Session["LastColorName"] = colorName;
Context.Session["LastProductName"] = productName;
return "操作成功!";
}
else
{
return errorReason;
}
}
catch (Exception ex)
{
return "下线服务异常,异常原因:"+ ex.Message;
}
}
///
/// 下悬挂链记录,是否存在该条码
///
///
///
private bool ExsitBarCode(string barCode)
{
return Function.ExsitBarCodeInDownRecord(barCode);
}
bool SendToWmsService(string barCode,int isPass, ref string stcokNo, ref string batchNo, ref string partNo, ref string colorName, ref string productName, ref string carType,ref string errorReason)
{
string errorMsg = string.Empty;
//return true;
#region 参数判断
if (string.IsNullOrWhiteSpace(barCode))
{
errorReason = "条码号不能为空";
return false;
}
Function.GetCode(barCode, out stcokNo, out batchNo, out partNo);
if (string.IsNullOrWhiteSpace(stcokNo) && string.IsNullOrWhiteSpace(partNo))
{
errorReason = "条码号无效,请检查条码是否破损缺失";
return false;
}
#endregion
string res = Function.WMSSpraying(barCode, isPass, stcokNo, partNo, batchNo, ref colorName, ref productName, ref carType);
JsonModel model = JSONTools.ScriptDeserialize>(res);
if (model.Result == "0")
{
errorReason = model.ErrReason;
throw new Exception(model.ErrReason);
}
return true;
}
///
/// 当WMS调拨入库时,即报废的产品再次入库,WMS传入条码,MES记录入库
///
///
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void AddStockInBarcode(string barcode)
{
string errorReason = "";
JsonModel model = new JsonModel();
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = errorReason;
model.DataList = null;
#region 参数判断
if (string.IsNullOrWhiteSpace(barcode))
{
model.ErrReason = "条码号不能为空";
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
#endregion
#region 保存入库记录
bool res = Function.AddStockInBarcode(barcode, out errorReason);
if (res == true)
{
model.Result = "1";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "成功";
model.DataList = null;
}
else
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "接收失败:" + errorReason;
model.DataList = null;
}
#endregion
LogHelper.WriteSysLogBase("【WMS报废再入库】入参:" + barcode + ",出参:" + JSONTools.ScriptSerialize>(model), MethodBase.GetCurrentMethod().Name);
Context.Response.Write(JSONTools.ScriptSerialize>(model));
}
///
/// 手持设备做质量判定
///
///
///
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void InsertInspect(string barcode, string InspectTimes)
{
string errorReason = "";
JsonModel model = new JsonModel();
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = errorReason;
model.DataList = null;
#region 参数判断
if (string.IsNullOrWhiteSpace(barcode))
{
model.ErrReason = "条码号不能为空";
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
if (string.IsNullOrWhiteSpace(InspectTimes))
{
model.ErrReason = "一次合格或抛光合格参数不能为空";
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
#endregion
#region 判断老外库里是否有该条码,有则返回颜色,没有则补打条码,直接入库
if (barcode.Contains("."))
{
barcode = Function.TransToBarCodeOne(barcode);
}
LogHelper.WriteSysLogBase("【手持设备质检判定】入参:barcode:" + barcode + ",InspectTimes:" + InspectTimes, MethodBase.GetCurrentMethod().Name);
bool exsitInLine = Function.ExistInLine(barcode);
if (!exsitInLine)
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "喷涂线上找不到该条码,请补打条码后扫码入库,或在工位上附加颜色并进行质量判定";
model.DataList = null;
LogHelper.WriteSysLogBase("【手持设备质检判定】入参:barcode:" + barcode + ",InspectTimes:" + InspectTimes + ",出参:" + JSONTools.ScriptSerialize>(model), MethodBase.GetCurrentMethod().Name);
Context.Response.Write(JSONTools.ScriptSerialize>(model));
return;
}
#endregion
#region 整理参数,保存质检结果
InspectModel InModel = new InspectModel();
InModel.ID = Guid.NewGuid().ToString();
InModel.barcode = barcode;
InModel.side = Function.GetSide(barcode); ;
InModel.position = "手持设备";
InModel.stationNo = "S20";
InModel.workClass = Function.GetWorkClass();
InModel.inspectResult = "合格";
InModel.productInfo = Function.GetProductInfo(barcode);
InModel.InspectTimes = InspectTimes;
InModel.productOption = "";
InModel.damnPosition = "";
InModel.defectID = "";
InModel.reason = "";
InModel.remark1 = "";
InModel.remark2 = "";
InModel.remark3 = "";
int res = Function.InsertInspect(InModel);
if (res > 0)
{
model.Result = "1";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "成功";
model.DataList = null;
}
else
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "失败";
model.DataList = null;
}
LogHelper.WriteSysLogBase("【手持设备质检判定】入参:barcode:" + barcode + ",InspectTimes:" + InspectTimes + ",出参:" + JSONTools.ScriptSerialize>(model), MethodBase.GetCurrentMethod().Name);
Context.Response.Write(JSONTools.ScriptSerialize>(model));
#endregion
}
///
/// WMS入库接口-一码到底
///
///
///
///
///
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public bool WMSInterfaceStockIn(string barcode, string partNo, string batchNo, int isOK, int LineId)
{
bool res = false;
res = Function.WMSInterfaceStockIn(barcode, partNo, batchNo, isOK, LineId);
return res;
}
}
}