ldj/epicksh/wcf/ServiceLight.cs

341 lines
8.7 KiB
C#
Raw Normal View History

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 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;
/// <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 string lightSeed(int deskId, string seedsNo, string barcode)
{
List<ELabel> els = importSeeds.getSeedLabels(deskId, seedsNo, barcode);
if (els.Count > 0)
{
int portNo = els[0].port;
int color = els[0].color;
#if DEBUG
// portNo = 13;
#endif
if (lightUp != null)
{
lightUp(els, color);
if (WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS.Count>0 &&
WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS[color])
{
seedsItem.lightSeeds(seedsNo, enumSeedsState.);
}
else
{
return "亮灯失败";
}
}
return "亮灯成功";
}
return "服务出错:没有找到亮灯数据";
}
public string uploadSeeds(List<SeedsItem> seeds)
{
foreach (SeedsItem si in seeds)
{
WmsOutSeeds dbObj = si.getDbObject();
/// dbObj.Add();
}
return "服务完成";
}
public bool turnOnLight(int lightId, byte which, int portNo)
{
log.Debug(string.Format("start turnOn light id {0}, which {1}, portno {2}", lightId, which, portNo));
List<ELight> els = new List<ELight>();
ELight el = new ELight();
el.port = portNo;
el.which = which;
el.lightId = lightId;
els.Add(el);
return turnOnLight(els, portNo);
}
bool turnOnLight(List<ELight> els, int portNo)
{
bool rt = true;
if (turnOnLts != null)
{
rt = turnOnLts(portNo, els);
}
return rt;
}
/*
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 bool 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);
return turnOffLight(els, portNo);
}
bool turnOffLight(List<ELight> els, int portNo)
{
bool rt = true;
if (turnOffLts != null)
{
rt = turnOffLts(portNo, els);
}
return rt;
}
public bool turnOffLightByScan(int deskId, string barcode)
{
ELight el = lseeds.getLight(deskId, barcode);
return turnOffLight(el.lightId, el.which, el.port);
}
public bool turnOnLightByScan(int deskId, string barcode, int empId)
{
ELight el = lseeds.getLight(deskId, barcode);
log.Debug(string.Format("start scan deskId {0}, barcode {1}, empId {2}", deskId, barcode, empId));
log.Debug(string.Format(" to turn on light Id {0}, which {1}, port {2}", el.lightId, el.which, el.port));
if (el.lightId == 0) {
log.Debug(string.Format(" !!!-----No light found for the barcode {0} ----!!!", barcode));
return false;
}
if (turnOnLight(el.lightId, el.which, el.port))
{
lseeds.logLight(el.id, empId);
return true;
}
return false;
}
public bool lightsOnByDeskId(int deskId)
{
List<ELight> els = lseeds.getLightsByDesk(deskId);
return turnOnLight(els, 0);
}
public bool lightsOffByDeskId(int deskId)
{
List<ELight> els = lseeds.getLightsByDesk(deskId);
return turnOffLight(els, 0);
}
//----- first seeds
public bool turnOnFirstSeedByScan(string barcode)
{
ELight el = lseeds.getSeedLight( barcode);
if (turnOnLight(el.lightId, el.which, el.port))
{
//lseeds.logLight(el.id, empId);
return true;
}
return false;
}
public bool turnOffFirstSeedByScan(string barcode)
{
ELight el = lseeds.getSeedLight( barcode);
return turnOffLight(el.lightId, el.which, el.port);
}
}
}