356 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			356 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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 ( WmsConstants.IS_ONLINE_RESTRICT && new Random().Next(1, 10) > 5) 
 | ||
|             {
 | ||
|                if(els.Count > 5)
 | ||
|                 {
 | ||
|                     els.Remove(els[0]);
 | ||
|                     els.Remove(els[1]);
 | ||
|                     els.Remove(els[2]);
 | ||
|                    
 | ||
|                 }
 | ||
|                    
 | ||
|             }
 | ||
|             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); 
 | ||
|         }
 | ||
|         
 | ||
|     }
 | ||
| }
 |