2025-08-14 14:03:14 +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);
|
|
|
|
|
|
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
|
|
|
|
|
|
{
|
2025-09-15 10:15:35 +08:00
|
|
|
|
static log4net.ILog log = log4net.LogManager.GetLogger("light");
|
2025-08-14 14:03:14 +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;
|
|
|
|
|
|
|
|
|
|
|
|
/// <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)
|
|
|
|
|
|
{
|
2025-09-15 10:19:38 +08:00
|
|
|
|
log.Debug(string.Format("start turnOn light id {0}, which {1}, portno {2}", lightId, which, portNo));
|
2025-08-14 14:03:14 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-15 10:15:35 +08:00
|
|
|
|
public bool turnOnLightByScan(int deskId, string barcode, int empId)
|
2025-08-14 14:03:14 +08:00
|
|
|
|
{
|
2025-09-15 10:15:35 +08:00
|
|
|
|
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) {
|
2025-09-15 10:19:38 +08:00
|
|
|
|
log.Debug(string.Format(" !!!-----No light found for the barcode {0} ----!!!", barcode));
|
2025-09-15 10:15:35 +08:00
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (turnOnLight(el.lightId, el.which, el.port))
|
|
|
|
|
|
{
|
|
|
|
|
|
lseeds.logLight(el.id, empId);
|
2025-08-14 14:03:14 +08:00
|
|
|
|
|
2025-09-15 10:15:35 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
2025-08-14 14:03:14 +08:00
|
|
|
|
|
2025-09-15 10:15:35 +08:00
|
|
|
|
return false;
|
2025-08-14 14:03:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-09-15 10:15:35 +08:00
|
|
|
|
|
|
|
|
|
|
//----- 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);
|
|
|
|
|
|
}
|
2025-08-14 14:03:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|