ldj/epick/wcf/ServiceLight.cs

345 lines
9.2 KiB
C#
Raw Permalink 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 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);
public delegate void clearOrder(int deskId );
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
{
static log4net.ILog log = log4net.LogManager.GetLogger("light");
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;
public clearOrder clOrder = null;
/// <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 "服务出错";
}
public FormatedResult lightDeskSeed( string seedsNo, string barcode, int userId, bool isValid)
{
List<ELabel> els = importSeeds.startNewDeskSeed( seedsNo, barcode, userId,5 ,isValid);
string msg = "没有找到亮灯数据";
if (els.Count > 0)
{
// int deskId = els[0].port;
//int color = els[0].color;
#if DEBUG
// portNo = 13;
#endif
if (lightUp != null)
{
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;
int cnt = 0;
foreach(ELabel eLabel in els)
{
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;
}
else
{
msg = "亮灯失败 " + msg;
}
}
}
else
{
if (clOrder != null)
{
clOrder(deskId);
}
}
log.Debug(msg);
return new FormatedResult(msg);
}
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);
}
}
}