using Hanhe.iWCS.Common;
using Hanhe.iWCS.MData;
using Hanhe.iWCS.Model;
using Hanhe.iWCS.Model.AMS;
using HH.AMS.BLL;
using HH.AMS.BLL.AdminUI.Basic;
using HH.AMS.BLL.AdminUI.Device;
using HH.AMS.BLL.AdminUI.Equipment;
using HH.AMS.BLL.AdminUI.Task;
using HH.AMS.Common;
using HH.AMS.Entitys.AdminUI.Basic;
using HH.AMS.Entitys.AdminUI.Device;
using HH.AMS.Entitys.AdminUI.Equipment;
using HH.AMS.Entitys.AdminUI.Task;
using HH.AMS.Entitys.Common;
using HH.AMS.WebApi.Models;
using MongoDB.Driver.Builders;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
namespace HH.AMS.WebApi.Controllers
{
[RoutePrefix("api/WCSApi")]
public class WCSApiController : ApiController
{
///
/// 扫码完成,工位完成,分档机下线请求接口
///
///
///
[Route("SaveWCSInfo")]
[HttpPost]
public HttpResponseMessage SaveWCSInfo([FromBody] WCSApiModels mode)//dynamic JsonData
{
Result_ result = new Result_();
ResultObject resultObject = new ResultObject() { success = false };
HttpResponseMessage resultMsg;
SqlExecuteResult result_ = new SqlExecuteResult();
string resultValue;
try
{
string parm = JsonConvert.SerializeObject(mode);
if (string.IsNullOrEmpty(mode.fdTaskNo) || string.IsNullOrEmpty(mode.stationPoint) || mode.infoType == 0)
{
CMMLog.Info("接收到包装线参数值错误=" + parm);
resultObject.success = false;
resultObject.errMsg = "参数值错误!";
resultObject.errCode = "3";
resultValue = JsonConvert.SerializeObject(resultObject);
resultMsg = new HttpResponseMessage { Content = new StringContent(resultValue, Encoding.GetEncoding("UTF-8"), "application/json") };
return resultMsg;
}
//var where_find = Query.And(Query.EQ("IsDelete", 0), Query.EQ("stationPoint", mode.stationPoint), Query.EQ("infoType", mode.infoType));----无用
var where_find = Query.And(Query.EQ("fdTaskNo", mode.fdTaskNo), Query.EQ("stationPoint", mode.stationPoint), Query.EQ("infoType", mode.infoType), Query.EQ("extInfo1", mode.extInfo1));
var Detailed = MongoDBSingleton.Instance.FindOne(where_find, typeof(TN_WCSApi_Detailed).Name);
if (Detailed == null)
{
#region 反序列化和实体赋值
// WCSApiModels BillEntity = JsonHelper.ParseFormJson(JsonData.Tostring());//反序列化
//TN_WCSApi_Detailed mode = new TN_WCSApi_Detailed();
//mode.workshop = BillEntity.workshop;
//mode.stationPoint = BillEntity.stationPoint;
//mode.infoType = BillEntity.infoType;
//mode.barCode = BillEntity.infoBody[0].barCode;
//mode.deviceCode = BillEntity.infoBody[0].deviceCode;
//mode.plateType = BillEntity.infoBody[0].plateType;
//mode.Gear = BillEntity.infoBody[0].Gear;
//mode.IsDelete = 0;
#endregion
TN_WCSApi_Detailed mode_detailed = new TN_WCSApi_Detailed();
mode_detailed.workshop = mode.workshop;
mode_detailed.infoType = mode.infoType;
mode_detailed.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
mode_detailed.stationPoint = mode.stationPoint;
mode_detailed.fdTaskNo = mode.fdTaskNo;
mode_detailed.barCode = mode.infoBody[0].barCode;
mode_detailed.deviceCode = mode.infoBody[0].deviceCode;
mode_detailed.length = mode.infoBody[0].length;
mode_detailed.width = mode.infoBody[0].width;
mode_detailed.height = mode.infoBody[0].height;
mode_detailed.packInQty = mode.infoBody[0].packInQty;
mode_detailed.moduleType = mode.infoBody[0].moduleType;
mode_detailed.power = mode.infoBody[0].power;
mode_detailed.currentLevel = mode.infoBody[0].currentLevel;
mode_detailed.level = mode.infoBody[0].level;
mode_detailed.staple = mode.infoBody[0].staple;
mode_detailed.packType = mode.infoBody[0].packType;
mode_detailed.moName = mode.infoBody[0].moName;
mode_detailed.poType = mode.infoBody[0].poType;
mode_detailed.color = mode.infoBody[0].color;
mode_detailed.customerName = mode.infoBody[0].customerName;
mode_detailed.extInfo1 = mode.extInfo1;
mode_detailed.extInfo2 = mode.extInfo2;
mode_detailed.extInfo3 = mode.extInfo3;
mode_detailed.extInfo4 = mode.extInfo4;
//mode.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
result_.Success = MongoDBSingleton.Instance.Insert(mode_detailed);
if (result_.Success)
{
resultObject.errCode = "0";
resultObject.errMsg = "";
CMMLog.Info("接收到包装线数据添加到数据库成功,参数为=" + parm);
}
else
{
resultObject.errCode = "1";
resultObject.errMsg = "包装线数据添加到数据库失败";
CMMLog.Info("接收到包装线数据添加到数据库失败,参数为=" + parm);
}
resultObject.success = result_.Success;
//result.errCode = r==true ? "" : "3" ;
}
else
{
//接收到重复数据,将重复数据IsDelete状态修改成0再次给WCS读取.不让数据库出现重复数据
//var JG=MongoDBSingleton.Instance.Update(where_find, Update.Set("IsDelete", 0), MongoDB.Driver.UpdateFlags.None);
//if (JG)
// CMMLog.Info("接收到包装线重复数据,IsDelete修改成0成功,参数为=" + parm);
//else
// CMMLog.Info("接收到包装线重复数据,IsDelete修改成0失败,参数为=" + parm);
resultObject.success = true;//与包装线开发人员约定,当数据添加重复时他们需要,返回True.
resultObject.errMsg = "接收数据已存在!";
resultObject.errCode = "3";
CMMLog.Info("接收到包装线数据,数据库已存在,参数为=" + parm);
}
}
catch (Exception ex)
{
resultObject.success = false;
resultObject.errMsg = ex.Message;
resultObject.errCode = "3";
CMMLog.Info("接收到PLC数据处理异常,异常提示=" + ex.Message);
}
//return JsonConvert.SerializeObject(result);
resultValue = JsonConvert.SerializeObject(resultObject);
resultMsg = new HttpResponseMessage { Content = new StringContent(resultValue, Encoding.GetEncoding("UTF-8"), "application/json") };
return resultMsg;
}
///
/// PLC反馈信息接口
///
///
///
[Route("SavePLCInfo")]
[HttpPost]
public HttpResponseMessage SavePLCInfo([FromBody] PLCApiModels mode)//dynamic JsonData
{
Result_ result = new Result_();
ResultObject resultObject = new ResultObject() { success = false };
HttpResponseMessage resultMsg;
SqlExecuteResult result_ = new SqlExecuteResult();
string resultValue;
try
{
string parm = JsonConvert.SerializeObject(mode);
if (string.IsNullOrEmpty(mode.equipNo) || string.IsNullOrEmpty(mode.positionNo) || string.IsNullOrEmpty(mode.trayState))
{
CMMLog.Info("接收到PLC参数值错误=" + parm);
resultObject.success = false;
resultObject.errMsg = "参数值错误!";
resultObject.errCode = "1";
resultValue = JsonConvert.SerializeObject(resultObject);
resultMsg = new HttpResponseMessage { Content = new StringContent(resultValue, Encoding.GetEncoding("UTF-8"), "application/json") };
return resultMsg;
}
//var where_find = Query.And(Query.EQ("fdTaskNo", mode.fdTaskNo), Query.EQ("stationPoint", mode.stationPoint), Query.EQ("infoType", mode.infoType));
//var Detailed = MongoDBSingleton.Instance.FindOne(where_find, typeof(TN_WCSApi_Detailed).Name);
//if (Detailed == null)
//{
TN_PLCApi_Detailed mode_detailed = new TN_PLCApi_Detailed();
mode_detailed.equipNo = mode.equipNo;
mode_detailed.positionNo = mode.positionNo;
mode_detailed.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
mode_detailed.trayState = mode.trayState;
string time = DateTime.Now.ToString("yyyyMMddhhmmss");
string PLCTaskNo = "plc" + time;
mode_detailed.extInfo1 = PLCTaskNo;//
mode_detailed.extInfo2 = mode.extInfo2;
mode_detailed.extInfo3 = mode.extInfo3;
mode_detailed.extInfo4 = mode.extInfo4;
//mode.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
result_.Success = MongoDBSingleton.Instance.Insert(mode_detailed);
if (result_.Success)
{
resultObject.errCode = "0";
resultObject.errMsg = "";
CMMLog.Info("接收到PLC数据添加到数据库成功,参数为=" + parm);
}
else
{
resultObject.errCode = "2";
resultObject.errMsg = result_.Exception.Message;
CMMLog.Info("接收到PLC数据添加到数据库失败,参数为=" + parm + ";异常提示=" + result_.Exception.Message);
}
resultObject.success = result_.Success;
//result.errCode = r==true ? "" : "3" ;
//}
//else
//{
// resultObject.errMsg = "接收已存在!";
// resultObject.errCode = "3";
//}
}
catch (Exception ex)
{
resultObject.errMsg = ex.Message;
resultObject.errCode = "2";
CMMLog.Info("接收到PLC数据处理异常,异常提示=" + ex.Message);
}
//return JsonConvert.SerializeObject(result);
resultValue = JsonConvert.SerializeObject(resultObject);
resultMsg = new HttpResponseMessage { Content = new StringContent(resultValue, Encoding.GetEncoding("UTF-8"), "application/json") };
return resultMsg;
}
#region 模拟输送线反馈信息
///
///模拟输送线反馈信息
///
///
///
public HttpResponseMessage AgvCallScheduler([FromBody] WCSApiModels_ mode)//dynamic JsonData
{
string parm = JsonConvert.SerializeObject(mode);
CMMLog.Info("接收到模拟输送线反馈信息=" + parm);
Result_ result = new Result_();
ResultObject resultObject = new ResultObject() { success = false };
HttpResponseMessage resultMsg;
SqlExecuteResult result_ = new SqlExecuteResult();
string resultValue;
try
{
resultObject.errCode = "0";
resultObject.errMsg = "";
resultObject.success = true;
}
catch (Exception ex)
{
resultObject.errMsg = ex.Message;
resultObject.errCode = "2";
CMMLog.Info("模拟输送线反馈信息,异常提示=" + ex.Message);
}
//return JsonConvert.SerializeObject(result);
resultValue = JsonConvert.SerializeObject(resultObject);
resultMsg = new HttpResponseMessage { Content = new StringContent(resultValue, Encoding.GetEncoding("UTF-8"), "application/json") };
return resultMsg;
}
public class WCSApiModels_
{
private string _workshop = "";
private string _requestPoint = "";
private int _requestType = 0;
private string _extInfo1 = "";
private string _extInfo2 = "";
private string _extInfo3 = "";
private string _extInfo4 = "";
private string _fdTaskNo = "";
private Detailed_Request _requestBody = new Detailed_Request();
private List _infoBody = new List();
///
/// JSon对象租
///
public List infoBody
{
get { return _infoBody; }
set { _infoBody = value; }
}
///
/// 预留----JSon对象租
///
public Detailed_Request requestBody
{
get { return _requestBody; }
set { _requestBody = value; }
}
///
/// 车间编码或仓库编码
///
public string workshop
{
get { return _workshop; }
set { _workshop = value; }
}
///
/// AGV的请求位置点
///
public string requestPoint
{
get { return _requestPoint; }
set { _requestPoint = value; }
}
///
///1012或2或1013(请求占用或到位或释放占用)
///
public int requestType
{
get { return _requestType; }
set { _requestType = value; }
}
///
/// 唯一任务号
///
public string fdTaskNo
{
get { return _fdTaskNo; }
set { _fdTaskNo = value; }
}
///
/// 扩展预留1
/// extInfo1
public string extInfo1 {
get;
set;
}
///
/// 扩展预留2
///
public string extInfo2
{
get { return _extInfo2; }
set { _extInfo2 = value; }
}
///
/// 扩展预留3
///
public string extInfo3
{
get { return _extInfo3; }
set { _extInfo3 = value; }
}
///
/// 扩展预留4
///
public string extInfo4
{
get { return _extInfo4; }
set { _extInfo4 = value; }
}
}
///
/// Json对象详细信息
///
public class Detailed1
{
private string _barCode = "";
///
/// 唯一条码
///
public string barCode
{
get { return _barCode; }
set { _barCode = value; }
}
private string _deviceCode = "";
///
/// 设备号
///
public string deviceCode
{
get { return _deviceCode; }
set { _deviceCode = value; }
}
private string _length = "";
///
/// 组件长度
///
public string length
{
get { return _length; }
set { _length = value; }
}
private string _width = "";
///
/// 组件宽度
///
public string width
{
get { return _width; }
set { _width = value; }
}
private string _height = "";
///
/// 组件高度
///
public string height
{
get { return _height; }
set { _height = value; }
}
private string _packInQty = "";
///
/// 包内数量
///
public string packInQty
{
get { return _packInQty; }
set { _packInQty = value; }
}
private string _moduleType = "";
///
/// 组件型号
///
public string moduleType
{
get { return _moduleType; }
set { _moduleType = value; }
}
private string _power ="";
///
/// 标称功率
///
public string power
{
get { return _power; }
set { _power = value; }
}
private string _currentLevel = "";
///
/// 电流档
///
public string currentLevel
{
get { return _currentLevel; }
set { _currentLevel = value; }
}
private string _level = "";
///
/// 组件等级
///
public string level
{
get { return _level; }
set { _level = value; }
}
private string _staple = "";
///
/// 托盘档位
///
public string staple
{
get { return _staple; }
set { _staple = value; }
}
private string _packType = "";
///
/// 包装类型
///
public string packType
{
get { return _packType; }
set { _packType = value; }
}
private string _moName = "";
///
/// 工单号
///
public string moName
{
get { return _moName; }
set { _moName = value; }
}
private string _poType = "";
///
/// 订单类型
///
public string poType
{
get { return _poType; }
set { _poType = value; }
}
private string _color = "";
///
/// 色系
///
public string color
{
get { return _color; }
set { _color = value; }
}
private string _customerName = "";
///
/// 客户名称
///
public string customerName
{
get { return _customerName; }
set { _customerName = value; }
}
}
///
/// 对象详细信息
///
public class Detailed_Request
{
private string _agvNo = "";
///
/// 文档没给注释
///
public string agvNo
{
get { return _agvNo; }
set { _agvNo = value; }
}
private string _trayType = "";
///
/// 空托或满托
///
public string trayType
{
get { return _trayType; }
set { _trayType = value; }
}
}
#endregion
}
}