ldj/epick/wcf/ServiceLight.cs

345 lines
9.2 KiB
C#
Raw Permalink Normal View History

2023-05-23 16:13:17 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DeiNiu.wms.Data.Model;
using DeiNiu.Utils;
using DeiNiu.wms.Logical;
namespace DeiNiu.wms.win
{
// 注意: 使用“重构”菜单上的“重命名”命令可以同时更改代码和配置文件中的类名“ServiceLight”。
public delegate void addNewLabelsToPool(List<ELabel> labels);
public delegate void lightLable(List<ELabel> lables,int portNo);
public delegate void turnoffLable(int portNo);
2023-09-04 22:41:19 +08:00
public delegate void clearOrder(int deskId );
2023-05-23 16:13:17 +08:00
public delegate bool turnOnLights(int portNo, List<ELight> lights);
public delegate bool turnOffLights(int portNo, List<ELight> lights);
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ServiceLight : IServiceLight
{
2023-09-04 22:41:19 +08:00
static log4net.ILog log = log4net.LogManager.GetLogger("light");
2023-05-23 16:13:17 +08:00
public ELabel getLabel(string Id)
{
ELabel lb = new ELabel();
lb.labelId = int.Parse(Id);
lb.color = 1;
lb.address = 11;
return lb;
}
WmsOutSeeds _seedsItem;
WmsOutSeeds seedsItem
{
get
{
if (_seedsItem == null)
{
_seedsItem = new WmsOutSeeds();
}
return _seedsItem;
}
}
WmsImportSeeds _importSeeds;
WmsImportSeeds importSeeds
{
get
{
if (_importSeeds == null)
{
_importSeeds = new WmsImportSeeds();
}
return _importSeeds;
}
}
lWmsImportSeeds _lseeds;
lWmsImportSeeds lseeds
{
get
{
if (_lseeds == null)
{
_lseeds = new lWmsImportSeeds();
}
return _lseeds;
}
}
public addNewLabelsToPool newLabels = null;
public string lightLabels(List<ELabel> labels)
{
//labelPool.Concat(labels);
if (null != newLabels)
{
newLabels(labels);
return "succeed";
}
return "bad";
}
public string lightLabels2(String s)
{
return s;
}
public static List<ELabel> labelPool = new List<ELabel>();
public lightLable lightUp = null;
public string lightLabel(string Id)
{
List<ELabel> lbs = new List<ELabel>();
ELabel lb = new ELabel();
lb.labelId = int.Parse(Id);
lb.color = 1;
lb.address = 0;
lb.count = 11;
lb.port = 13;
lbs.Add(lb);
lb = new ELabel();
lb.labelId = 2;
lb.color = 2;
lb.address = 0;
lb.count = 12;
lb.port = 13;
lbs.Add(lb);
if (lightUp != null)
{
lightUp(lbs,13);
return "success";
}
return "服务出错";
}
public turnoffLable turnOff = null;
public turnOffLights turnOffLts = null;
public turnOnLights turnOnLts = null;
2023-09-04 22:41:19 +08:00
public clearOrder clOrder = null;
2023-05-23 16:13:17 +08:00
/// <summary>
/// 开始新的一组
/// </summary>
/// <param name="deskId"></param>
/// <param name="seedsNo"></param>
/// <returns></returns>
public string startSeeds(int deskId, string seedsNo)
{
if (turnOff != null)
{
turnOff(deskId);
}
if (seedsItem.startSeeds(deskId, seedsNo))
{
return "成功开始新播种";
}
return "服务出错";
}
2023-09-04 22:41:19 +08:00
public FormatedResult lightDeskSeed( string seedsNo, string barcode, int userId, bool isValid)
2023-05-23 16:13:17 +08:00
{
2023-09-04 22:41:19 +08:00
List<ELabel> els = importSeeds.startNewDeskSeed( seedsNo, barcode, userId,5 ,isValid);
string msg = "没有找到亮灯数据";
2023-05-23 16:13:17 +08:00
if (els.Count > 0)
{
2023-09-04 22:41:19 +08:00
// int deskId = els[0].port;
//int color = els[0].color;
2023-05-23 16:13:17 +08:00
#if DEBUG
2023-09-04 22:41:19 +08:00
// portNo = 13;
2023-05-23 16:13:17 +08:00
#endif
if (lightUp != null)
{
2023-09-04 22:41:19 +08:00
lightUp(els, userId);
msg = "已发送亮灯请求";
/*
if (pickConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS.ContainsKey(deskId) &&
pickConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS[deskId])
{
//seedsItem.lightSeeds(seedsNo, enumSeedsState.已亮灯);
// importSeeds.lightSeeds(seedsNo, enumSeedsState.已亮灯);
msg = "亮灯成功";
}
else
{
msg = "亮灯失败";
}*/
}
}
else
{
if (clOrder != null)
{
clOrder(0);
}
}
return new FormatedResult(msg);
}
public FormatedResult lightSeed(int deskId, string seedsNo, string barcode, int userId,bool isValid)
{
log.Debug(string.Format("start request.... deskId:{0} ,seedsNo:{1} ,barcode:{2}, userId: {3}, isValid:{4} ", deskId, seedsNo, barcode, userId, isValid));
List<ELabel> els = importSeeds.getSeedLabels(deskId, seedsNo, barcode,userId,isValid);
string msg = "没有找到亮灯数据";
if (els.Count > 0)
{
#if DEBUG
// portNo = 13;
#endif
if (lightUp != null)
{
lightUp(els, userId);
// msg= els[0].name;
2023-05-23 16:13:17 +08:00
2023-09-04 22:41:19 +08:00
int cnt = 0;
foreach(ELabel eLabel in els)
2023-05-23 16:13:17 +08:00
{
2023-09-04 22:41:19 +08:00
cnt += eLabel.count;
}
msg = "总数: " + cnt + " [" + els[0].name + "]";
if (pickConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS.ContainsKey(deskId) &&
pickConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS[deskId])
{
//seedsItem.lightSeeds(seedsNo, enumSeedsState.已亮灯);
// importSeeds.lightSeeds(seedsNo, enumSeedsState.已亮灯);
msg = "亮灯成功 " + msg;
2023-05-23 16:13:17 +08:00
}
else
{
2023-09-04 22:41:19 +08:00
msg = "亮灯失败 " + msg;
2023-05-23 16:13:17 +08:00
}
}
2023-09-04 22:41:19 +08:00
}
else
{
if (clOrder != null)
{
clOrder(deskId);
}
2023-05-23 16:13:17 +08:00
}
2023-09-04 22:41:19 +08:00
log.Debug(msg);
return new FormatedResult(msg);
2023-05-23 16:13:17 +08:00
}
public string uploadSeeds(List<SeedsItem> seeds)
{
foreach (SeedsItem si in seeds)
{
WmsOutSeeds dbObj = si.getDbObject();
/// dbObj.Add();
}
return "服务完成";
}
public string turnOnLight(int lightId, byte which, int portNo)
{
List<ELight> els = new List<ELight>();
ELight el = new ELight();
el.port = portNo;
el.which = which;
el.lightId = lightId;
els.Add(el);
bool rt = true;
if (turnOnLts != null)
{
rt = turnOnLts(portNo, els);
}
if (rt)
return "亮灯请求成功";
else
return "亮灯失败";
}
/*
public string turnOffLight(int lightId, int portNo)
{
List<ELight> els = new List<ELight>();
ELight el = new ELight();
el.port = portNo;
el.lightId = lightId;
els.Add(el);
if (turnOffLts != null)
{
turnOffLts(portNo, els);
}
return "灭灯成功";
}
*/
public string turnOffLight(int lightId, byte which, int portNo)
{
List<ELight> els = new List<ELight>();
ELight el = new ELight();
el.port = portNo;
el.which = which;
el.lightId = lightId;
els.Add(el);
bool rt = true;
if (turnOffLts != null)
{
rt = turnOffLts(portNo, els);
}
if (rt)
return "灭灯成功";
else
return "灭灯失败";
}
public string turnOnLightByScan(int deskId, string barcode)
{
ELight el= lseeds.getLight(deskId, barcode);
return turnOnLight(el.lightId, el.which, el.port);
}
}
}