ldj/epicksh/wcf/ServiceLight.cs

341 lines
8.7 KiB
C#
Raw 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 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);
}
}
}