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 labels); public delegate void lightLable(List lables,int portNo); public delegate void turnoffLable(int portNo); public delegate bool turnOnLights(int portNo, List lights); public delegate bool turnOffLights(int portNo, List 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 labels) { //labelPool.Concat(labels); if (null != newLabels) { newLabels(labels); return "succeed"; } return "bad"; } public string lightLabels2(String s) { return s; } public static List labelPool = new List(); public lightLable lightUp = null; public string lightLabel(string Id) { List lbs = new List(); 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 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 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 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 els = new List(); ELight el = new ELight(); el.port = portNo; el.which = which; el.lightId = lightId; els.Add(el); return turnOnLight(els, portNo); } bool turnOnLight(List els, int portNo) { bool rt = true; if (turnOnLts != null) { rt = turnOnLts(portNo, els); } return rt; } /* public string turnOffLight(int lightId, int portNo) { List els = new List(); 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 els = new List(); ELight el = new ELight(); el.port = portNo; el.which = which; el.lightId = lightId; els.Add(el); return turnOffLight(els, portNo); } bool turnOffLight(List 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 els = lseeds.getLightsByDesk(deskId); return turnOnLight(els, 0); } public bool lightsOffByDeskId(int deskId) { List 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); } } }