using iWareCc.Cache.Entity; using iWareCc.Conveyor.Entity; using iWareCc.HeartBeat.Entity; using iWareCc.Properties; using iWareCc.Srm.Entity; using iWareCc.Task.Service; using iWareCc.WCF.ThreeEntity; using iWareCommon.Common.Entity; using iWareCommon.Utils; using iWareDataCore.ORM; using iWareDataCore.TASK.Entity; using iWareDataCore.TASK.EnumType; using iWareDataCore.TASK.Service; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace iWareCc.WCF.ControlCenter { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“ControlCenterWCFService”。 public class ControlCenterWcfService : IControlCenterWcfService { /// /// 1获取堆垛机各个属性的值 /// /// 堆垛机名称 /// 异常错误信息 /// 堆垛机各个属性的值 public StackerInfoEntity GetStackInfo(string stackName, out string msg) { try { msg = ""; var stacker = CacheEntity.Stackers.FirstOrDefault(x => x.Equipment.EquipName == stackName); return new StackerInfoEntity(stacker); } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetStackInfo", msg); return null; } } /// /// 获取堆垛机 /// /// /// public List GetStackInfos(out string msg) { try { msg = ""; var stackerInfos = new List(); CacheEntity.Stackers.ForEach(x => stackerInfos.Add(new StackerInfoEntity(x))); return stackerInfos; } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetStackInfos", msg); return null; } } /// /// 2获取输送机各端口个属性的值 /// s /// 输送机名称 /// 异常错误信息 /// 输送机各端口个属性的值 public List GetConveyorInfo(string conveyorName, out string msg) { try { msg = ""; var gateInfos = new List(); var conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.Equipment.EquipName == conveyorName); conveyor.Gates.ForEach(x => gateInfos.Add(new GateInfoEntity(x))); return gateInfos; } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetConveyorInfo", msg); return new List(); } } /// /// 获取输送机信息列表 /// /// /// public List GetConveyorInfos(out string msg) { try { msg = ""; var conveyorInfos = new List(); CacheEntity.Conveyors.ForEach(x => conveyorInfos.Add(new ConveyorInfoEntity(x))); return conveyorInfos; } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetConveyorInfos", msg); return null; } } /// /// 2获取输送机各端口个属性的值 /// /// 输送机名称 /// 端口名称 /// 异常错误信息 /// 输送机各端口个属性的值 public GateInfoEntity GetGateInfo(string conveyorName, string gateName, out string msg) { try { msg = ""; var conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.Equipment.EquipName == conveyorName); var gate = conveyor.Gates.FirstOrDefault(x => x.Place.PlaceTypeName == gateName); return new GateInfoEntity(gate); } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetGateInfo", "msg={0},conveyorName={1},gateName={2}", ex.Message, conveyorName, gateName); return null; } } /// /// 验证输入物料是否在数据库中存在,并确认是下发的任务 /// /// /// /// public bool SendAndChackMaterial(string materialcode, out string msg) { try { var conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.Equipment.EquipName == "conveyor1"); var gate = conveyor.Gates.FirstOrDefault(x => x.Place.PlaceTypeName == "sc"); using (var dbmode = new DbModelCore()) { var material = dbmode.BASEMaterials.FirstOrDefault(x => x.code == materialcode); if (material == null) { msg = "您输入的物料不存在!"; return false; } else { //var task = dbmode.TASKPartTasks.FirstOrDefault(x => x.materialcode == materialcode&&x.isfinished==0); //if (task==null) //{ // msg = "您输入的物料在下发的任务中不存在!"; // return false; //} msg = ""; gate.RCheckMaterialCode = materialcode; return true; } }; } catch (Exception ex) { msg = ex.Message; LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetOccupied", ex.Message); return false; } } ///// ///// 2获取心跳各属性的值 ///// ///// 输送机各端口个属性的值 //public HeartBeatInfoEntity GetHeartBeatInfo(out string msg) //{ // try // { // msg = ""; // return new HeartBeatInfoEntity(CacheEntity.HeartBeat); // } // catch (Exception ex) // { // msg = ex.Message; // LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetHeartBeatInfo", ex.Message); // return null; // } //} /// /// 8获取自动模式 /// public bool GetIsAutoMode() { return CacheEntity.IsAutoMode; } /// /// 9修改自动模式 /// public void SetIsAutoMode(bool flag) { CacheEntity.IsAutoMode = flag; } /// /// 10获取自动处理任务 /// public bool GetIsAutoHandle() { return CacheEntity.IsAutoHandle; } /// /// 11修改自动处理任务 /// public void SetIsAutoHandle(bool flag) { CacheEntity.IsAutoHandle = flag; } /// /// 12获取自动执行任务 /// public bool GetIsAutoRun() { return CacheEntity.IsAutoRun; } /// /// 13修改自动执行任务 /// public void SetIsAutoRun(bool flag) { CacheEntity.IsAutoRun = flag; } /// /// 获取是否批次 /// public bool GetIsLots() { return CacheEntity.IsLots; } /// /// 修改是否批次 /// public void SetIsLots(bool flag) { CacheEntity.IsLots = flag; } /// /// 14更新运行模式配置缓存 /// public void UpdateDeviceRunningMode() { string msg; string stackerName = Enum.GetName(typeof(iWareDataCore.DEV.EnumType.EEquipmentCnName), iWareDataCore.DEV.EnumType.EEquipmentCnName.stacker1); var modes = DeviceRunningModeService.GetInstance().QueryByParam(new QueryParam { }, out msg); CacheEntity.DeviceRunningMode = modes.Count > 0 ? modes[0] : new DeviceRunningModeEntity { Mode = (int)EDeviceMode.双堆垛机模式, EquipmentName = stackerName }; } /// /// 15获取模式 /// public string GetMode() { return CacheEntity.DeviceRunningMode == null ? EDeviceMode.双堆垛机模式.ToString() : ((EDeviceMode)CacheEntity.DeviceRunningMode.Mode).ToString(); } /// /// 16获取运行的堆垛机 /// public string GetStacker() { string stackerName = Enum.GetName(typeof(iWareDataCore.DEV.EnumType.EEquipmentCnName), iWareDataCore.DEV.EnumType.EEquipmentCnName.stacker1); return CacheEntity.DeviceRunningMode == null ? "堆垛机1" : CacheEntity.DeviceRunningMode.EquipmentName == stackerName ? "堆垛机1" : "堆垛机2"; } /// /// 获取是否判断RFID /// public bool GetIsRfid() { return CacheEntity.IsRfid; } /// /// 修改是否判断RFID /// public void SetIsRfid(bool flag) { CacheEntity.IsRfid = flag; } /// /// 设置IP字典 /// /// 本机IP /// 配置的IP public void SetIpDict(string ip1, string ip2) { if (!CacheEntity.IpDict.ContainsKey(ip1)) { CacheEntity.IpDict.Add(ip1, ip2); } else { CacheEntity.IpDict[ip1] = ip2; } } /// /// 获取ip /// /// /// public string GetIp(string ip) { return CacheEntity.IpDict.ContainsKey(ip) ? CacheEntity.IpDict[ip] : ip; } /// /// 获取是否使虚拟模式 /// public bool GetIsVisualMode() { return CacheEntity.IsVisualMode; } /// /// 修改是否使虚拟模式 /// public void SetIsVisualMode(bool flag) { CacheEntity.IsVisualMode = flag; } #region spx对接外部接口 /// ///下发入库单请求 /// /// /// public List StockTransferRequestItemSend(List data) { ///将需要入库的型材批次信息保存到数据库 return new List(); } /// /// 下发出库单信息 /// /// /// public List PickListAdd(List data) { ///将需要出库的型材信息保存到数据库 return new List(); } /// /// 获取库存信息 /// /// /// public List StockItemGet(StockItemFilter data) { return new List(); } #endregion } }