private bool deleteProcLayout(int layoutID) { return(bllLayout.Delete(layoutID)); bool isDel = false; var procLayout = bllLayout.GetModel(layoutID); var procLayoutInfo = GetLayoutInfo(procLayout); try { var bllMachine = new MesWeb.BLL.T_Machine(); foreach (var machineItem in procLayoutInfo.SubSpotItems) { if (machineItem.LayoutTypeID == (int)LAYOUT_TPYE.MACHINE) { foreach (var sensorItem in GetLayoutInfo(machineItem.LayoutPictureID).SubSpotItems) { if (sensorItem.LayoutTypeID == (int?)LAYOUT_TPYE.SENSOR_MODULE) { isDel = deleteSensorOnly(sensorItem.LayoutPictureID); } } isDel = deleteMachineOnly(machineItem.LayoutPictureID); } isDel = deleteProcOnly(layoutID); } } catch (Exception e) { isDel = false; throw e; } return(isDel); }
public JsonResult AddMachineLayoutAction(VM_AddMachineAdmin machineAdmin) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var retData = new VM_Result_Data(); var machine = machineAdmin.Machine; var machineLayout = machineAdmin.MachineLayout; if (machine.MachineName != null) { try { var bllLayoutType = new MesWeb.BLL.T_LayoutType(); var layoutType = bllLayoutType.GetModelList("TableName = 'T_Machine'").FirstOrDefault(); if (layoutType.LayoutTtypeID > 0) { var bllMachine = new MesWeb.BLL.T_Machine(); var machindID = bllMachine.Add(machine); //若工序有几台图片,则共用 var sameProcMach = bllLayout.GetModelList("ParentLayoutPictureID = " + machineLayout.ParentLayoutPictureID); if (sameProcMach != null) { var containPicMach = (from m in sameProcMach where m.PicUrl != null select m).FirstOrDefault(); if (containPicMach != null) { machineLayout.PicUrl = containPicMach.PicUrl; machineLayout.PicHeight = containPicMach.PicHeight; machineLayout.PicWidth = containPicMach.PicWidth; } } machineLayout.LayoutTypeID = layoutType.LayoutTtypeID; machineLayout.TableRowID = machindID; bllLayout.Add(machineLayout); retData.Code = RESULT_CODE.OK; retData.Content = "添加机台成功!"; } else { log.Error("未找到布局关系 T_Machine "); } } catch (Exception e) { log.Fatal("数据库发生错误!", e); } } else { log.Warning("添加机台名称不能为空"); retData.Content = "添加机台名称不能为空"; } return(Json(retData)); }
/// <summary> /// 更新工序状态 /// </summary> private void updateProcState() { var procLayoutList = bllLayout.GetModelList("LayoutTypeID = " + (int)LAYOUT_TPYE.WORK_AREA); var bllMachine = new MesWeb.BLL.T_Machine(); foreach (var procLayout in procLayoutList) { var machLayoutList = bllLayout.GetModelList("ParentLayoutPictureID = " + procLayout.LayoutPictureID + " AND " + "LayoutTypeID = " + (int)LAYOUT_TPYE.MACHINE); procLayout.Message = ""; foreach (var machLayout in machLayoutList) { var machine = bllMachine.GetModel(machLayout.TableRowID.Value); procLayout.Message += machine.MachineName + ":" + mapStateMeaning(machLayout.State.Value) + "<br/>"; if (machine == null) { continue; } //procLayout.Message += machine.MachineName + ":" + machLayout.State; //有机台错误状态 if (machLayout.State == (int)LAYOUT_STATE.ERROR) { procLayout.State = (int)LAYOUT_STATE.ERROR; break; } //有机台离线状态 else if (machLayout.State == (int)LAYOUT_STATE.OFFLINE) { procLayout.State = (int)LAYOUT_STATE.OFFLINE; continue; } //有机台警告状态 else if (machLayout.State == (int)LAYOUT_STATE.WARNING && procLayout.State != (int)LAYOUT_STATE.OFFLINE) { procLayout.State = (int)LAYOUT_STATE.WARNING; continue; //正常状态 } else if (procLayout.State != (int)LAYOUT_STATE.WARNING) { procLayout.State = (int)LAYOUT_STATE.NORMAL; } } bllLayout.Update(procLayout); } }
/// <summary> /// 初始化模块状态缓存字典 /// </summary> private void initCurModuelStateDic() { var bllMachine = new MesWeb.BLL.T_Machine(); var machList = bllMachine.GetModelList(""); var bllSensor = new MesWeb.BLL.T_SensorModule(); var bllParam = new MesWeb.BLL.T_ParameterCode(); var bllSensor_Param = new MesWeb.BLL.T_SensorModule_T_ParameterCode(); //遍历所有机台 foreach (var machine in machList) { var machineId = machine.MachineID; //为每个机台的所有模块生成一个字典 var moduleDic = new ConcurrentDictionary <string, List <Param> >(); //添加机台 if (curModuleStateDic.TryAdd(machineId, moduleDic)) { var sensors = bllSensor.GetModelList("MachineID = " + machineId); //遍历模块 foreach (var sensor in sensors) { //初始化每个模块的参数列表 var paramList = new List <Param>(); //添加模块 if (moduleDic.TryAdd(sensor.SerialNum, paramList)) { var sensor_param = bllSensor_Param.GetModelList("SensorModuleID = " + sensor.SensorModuleID); //遍历模块对应的参数 foreach (var sp in sensor_param) { //获得参数 var param = bllParam.GetModel(sp.ParameterCodeID.Value); //添加参数 paramList.Add(new Param { ParamCodeID = param.ParameterCodeID.ToString(), ParamCode = param.ParameterCode.ToString(), ParamName = param.ParameterName }); } } } } } }
public JsonResult AddSensorAction(VM_AddSensorAdmin sensorAdmin) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var retData = new VM_Result_Data(); var sensorModule = sensorAdmin.SensorModule; var sensorLayout = sensorAdmin.SensorLayout; if (sensorModule.SerialNum != null && sensorAdmin.ParentLayoutPictureID != null && sensorAdmin.ParameterCodeIDs.Count > 0) { try { var bllMachine = new MesWeb.BLL.T_Machine(); var machineLayout = bllLayout.GetModel((int)sensorLayout.ParentLayoutPictureID); var bllSensor = new MesWeb.BLL.T_SensorModule(); var bllSensorParamCode = new MesWeb.BLL.T_SensorModule_T_ParameterCode(); sensorModule.MachineID = bllMachine.GetModel((int)machineLayout.TableRowID).MachineID; sensorLayout.LayoutTypeID = (int)LAYOUT_TPYE.SENSOR_MODULE; //add sensor sensorLayout.TableRowID = bllSensor.Add(sensorModule); //build sensor and parametercode relationship foreach (var param in sensorAdmin.ParameterCodeIDs) { bllSensorParamCode.Add(new MesWeb.Model.T_SensorModule_T_ParameterCode { SensorModuleID = sensorLayout.TableRowID, ParameterCodeID = int.Parse(param) }); } //add sensor layout bllLayout.Add(sensorLayout); retData.Code = RESULT_CODE.OK; retData.Content = "添加模块成功!"; } catch (Exception e) { log.Fatal("往数据库写入数据失败", e); } } else { log.Warning("字段校验失败"); retData.Content = "字段校验失败"; } return(Json(retData)); }
public ActionResult MachineLayout(int Id) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var bllMachine = new MesWeb.BLL.T_Machine(); var machine = bllMachine.GetModel(Id); try { if (machine != null) { var machineLayout = bllLayout.GetModelList("LayoutTypeID = " + (int)LAYOUT_TPYE.MACHINE + " AND " + " TableRowID = " + Id).FirstOrDefault(); if (machineLayout != null) { //取出轴号 string axisNumStr = (string)TempData[QualityTraceController.SERACH_ASIX]; TempData[QualityTraceController.SERACH_ASIX] = axisNumStr; //TODO 临时将备注替换为轴号 machineLayout.Remark = axisNumStr; var layoutInfo = new VM_LayoutPicture(machineLayout); if (!string.IsNullOrEmpty(machineLayout.PicUrl)) { layoutInfo = new VM_LayoutPicture(machineLayout); layoutInfo = GetLayoutInfo(machineLayout); } else { log.Error("机台信息为空"); VM_Error_Info info = new VM_Error_Info { Title = "施工错误", ErrorMessage = "机台信息为空,请联系管理人员", ReturnUrl = "/Admin/Home", ReturnName = "主页" }; return(RedirectToAction(ErrorManager.SystemError, ErrorManager.ErrorController, info)); } return(View(layoutInfo)); } } } catch (Exception e) { log.Error("车间未施工,请联系施工人员", e); } log.Error("车间未施工,请联系施工人员"); var errorInfo = new VM_Error_Info { Title = "施工错误", ErrorMessage = "车间未施工,请联系施工人员" }; return(RedirectToAction(ErrorManager.SystemError, ErrorManager.ErrorController, errorInfo)); }
public string InitAllSensors(int machineId, string connectionId) { // 保存连接信息 if (!AddClient(machineId, connectionId)) { return("connected server faild"); } string curAxisNum = ""; string curMeters = ""; try { initDicCache(machineId, out curAxisNum, out curMeters); } catch (Exception e) { Debug.Write(e.ToString()); } var bllMach = new MesWeb.BLL.T_Machine(); var machine = bllMach.GetModel(machineId); VM_MachineProperty pty = null; try { //缓存中数据存在,则从缓存中读取 if (curMachPtyDic.TryGetValue(machineId, out pty)) { } else { pty = new VM_MachineProperty(); pty.MachineName = machine.MachineName; pty.CurrentMeters = curMeters; pty.AxisNum = curAxisNum; pty.ODMax = decimal.MinValue; pty.ODMin = decimal.MaxValue; //添加到缓存中去 curMachPtyDic.TryAdd(machineId, pty); } } catch (Exception e) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); log.Error("获取机台属性失败", e); } return("axis: " + curAxisNum + " meters: " + curMeters); }
public JsonResult GetMachineStats() { var machStats = new VM_MachineStats(); var bllColData = new MesWeb.BLL.T_CollectedDataParameters(); var bllMachine = new MesWeb.BLL.T_Machine(); var speedDataList = bllColData.GetModelList("ParameterCodeID " + (int)MACHINE_PARAM_CODE.SCREW_SPEED); foreach (var machine in speedDataList) { if (int.Parse(machine.CollectedValue) > 0) { ++machStats.BootStats; } else { ++machStats.CloseStats; } } return(Json(machStats)); }
public JsonResult GetTraceDataAction(string axisNumStr) { var retData = new VM_Result_Data(); var vmJSMind = new VM_JSMind(); var bllCodeUsed = new MesWeb.BLL.T_CodeUsed(); var bllMachine = new MesWeb.BLL.T_Machine(); var bllMachineType = new MesWeb.BLL.T_MachineType(); VM_JSMind vmJsMind = new VM_JSMind(); retData.Appendix = genMindStruct(axisNumStr.Trim(), "root", ref vmJsMind, isRoot: true); if (vmJsMind.data.Count > 0) { retData.Code = RESULT_CODE.OK; retData.Content = "查询成功"; } else { retData.Content = "查询失败"; } return(Json(retData)); }
public ActionResult Machine() { var bllMachine = new MesWeb.BLL.T_Machine(); var machineList = bllMachine.GetModelList(""); var bllParam = new MesWeb.BLL.T_ParameterCode(); var bllSensor = new MesWeb.BLL.T_SensorModule(); var bllSensor_Param = new MesWeb.BLL.T_SensorModule_T_ParameterCode(); //机台参数树状结构 var vmJSTree = new List <VM_JSTree>(); //遍历机台 foreach (var machine in machineList) { var machineTreeId = "mach_" + machine.MachineID.ToString(); var machTree = new VM_JSTree { text = machine.MachineName, id = machineTreeId }; var sensorList = bllSensor.GetModelList("MachineID = " + machine.MachineID); machTree.children = new List <VM_JSTree>(); foreach (var sensor in sensorList) { var spList = bllSensor_Param.GetModelList("SensorModuleID = " + sensor.SensorModuleID); //遍历参数 foreach (var sp in spList) { var param = bllParam.GetModel(sp.ParameterCodeID.Value); machTree.children.Add( new VM_JSTree { text = param.ParameterName, id = machineTreeId + "_param_" + param.ParameterCodeID.ToString() }); } } vmJSTree.Add(machTree); } return(View(vmJSTree)); }
///////////////////// protected VM_MachineProperty GetMachineProperty(int Id) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var machLayout = bllLayout.GetModel(Id); var machPty = new VM_MachineProperty(); if (machLayout != null) { if (machLayout.LayoutTypeID == (int)LAYOUT_TPYE.MACHINE) { try { var bllMach = new MesWeb.BLL.T_Machine(); var bllCurData = new MesWeb.BLL.T_CurrentData(); var bllEmployee = new MesWeb.BLL.T_Employee(); var bllSpec = new MesWeb.BLL.T_Specification(); var bllColData = new MesWeb.BLL.T_CollectedDataParameters(); var mach = bllMach.GetModel((int)machLayout.TableRowID); if (mach == null) { return(null); } var curData = bllCurData.GetModelList("MachineID = " + mach.MachineID).FirstOrDefault(); if (curData == null) { return(null); } /// var emmployee = bllEmployee.GetModel((int)curData.EmployeeID_Main); var spec = bllSpec.GetModel((int)curData.SpecificationID); var curMeters = bllColData.GetModelList("MachineID = " + mach.MachineID + " AND ParameterCodeID = " + (int)SPEC_PARAM_CODE.METERS_COUNT_FACT).FirstOrDefault().CollectedValue; var materialRFID = bllColData.GetModelList("MachineID = " + mach.MachineID + " AND ParameterCodeID = " + (int)SPEC_PARAM_CODE.MATERIAL_RFID).FirstOrDefault().CollectedValue; var linearSpeed = bllColData.GetModelList("MachineID = " + mach.MachineID + " AND ParameterCodeID = " + (int)SPEC_PARAM_CODE.LINEAR_SPEED).FirstOrDefault().CollectedValue; machPty.MachineName = mach.MachineName; machPty.TaskNum = "4000"; machPty.AxisNum = curData.Axis_No; // machPty.ManuMan = emmployee.EmployeeName; machPty.ManuMan = "张三"; machPty.SpecNum = spec.SpecificationName; machPty.ODMax = spec.ODMax; machPty.ODMin = spec.ODMin; machPty.SpecColor = spec.SpecificationColor; machPty.UnitPrice = spec.SpecificationPrice; machPty.MaterialRFID = materialRFID; machPty.CurrentMeters = curMeters; machPty.BatchNum = "Na"; machPty.ContUnit = "Na"; machPty.JobNum = "Na"; machPty.EstTime = ((40000 - double.Parse(curMeters)) / double.Parse(linearSpeed) / 60).ToString("0.00") + "分钟"; machPty.ReachedNum = (double.Parse(curMeters) * 100 / 4000 + "%").ToString(); } catch (Exception e) { log.Error("数据库操作失败", e); return(null); } } else { log.Error("该标志不属于机台"); return(null); } } else { log.Error("查找机台失败!"); return(null); } return(machPty); }
public VM_JSMind genMindStruct(string axisNumStr, string id, ref VM_JSMind mind, string parentId = "", bool isRoot = false) { if (string.IsNullOrEmpty(axisNumStr) || !HisMain.IsAxisNum(axisNumStr)) { return(null); } var bllMachine = new MesWeb.BLL.T_Machine(); var bllMachineType = new MesWeb.BLL.T_MachineType(); var bllEmployee = new MesWeb.BLL.T_Employee(); var bllMaterial = new MesWeb.BLL.T_MaterialOutput(); HisMain axisNum = new HisMain(); if (axisNumStr.StartsWith("ZD")) { axisNum.Year = axisNumStr.Substring(2, 4); axisNum.Month = axisNumStr.Substring(6, 2); axisNum.MachineTypeID = "5"; } else if (axisNumStr.StartsWith("CP")) { axisNum = new HisMain(axisNumStr); } var hisTabName = "HISMAIN" + axisNum.Year + axisNum.Month + axisNum.MachineTypeID.Trim(); var bllHisMain = new MesWeb.BLL.T_HisMain(hisTabName); var hisMain = bllHisMain.GetModelList("Axis_No like '%" + axisNumStr + "%'").FirstOrDefault(); if (hisMain == null) { return(null); } var machineType = bllMachineType.GetModel(int.Parse(axisNum.MachineTypeID)); MesWeb.Model.T_MaterialOutput material = null; if (hisMain != null) { material = bllMaterial.GetModelList("MaterialRFID = '" + hisMain.MaterialRFID + "'").FirstOrDefault(); } if (material != null) { hisMain.SpecColor = material.Color; hisMain.SpecName = material.MaterialType; hisMain.Supplier = material.SupplyCompany; hisMain.BatchNo = material.BatchNo; } var employeeCode = hisMain.EmployeeID_Main; var employee = bllEmployee.GetModelList("EmployeeCode = '" + employeeCode + "'").FirstOrDefault(); if (employee != null) { hisMain.EmployeeID_Main = employee.EmployeeName; } var machine = bllMachine.GetModel(hisMain.MachineID.Value); var node = new JSMind_Data(); node.topic = machineType.MachineType + machine.MachineName; node.id = id; node.parentid = parentId; node.isroot = isRoot; node.data = hisMain; mind.data.Add(node); if (hisMain != null) { var startAxisNums = ("" + hisMain.Start_Axis_No).Split(','); foreach (var stNum in startAxisNums) { genMindStruct(stNum, stNum, ref mind, id); } } return(mind); }
public JsonResult GetProcDetail(VM_ProcDetail procDetail) { var retData = new VM_Result_Data(); if (procDetail == null) { procDetail = new VM_ProcDetail(); } //procDetail.CertProduct = "<a href='javascript:void(0)' onclick='showCertProduct()'>成品证书</a> <a href='javascript:void(0)' onclick='showCertPlastic()'>塑料证书</a>"; var procDetailList = new List <VM_ProcDetail>(); var bllMachine = new MesWeb.BLL.T_Machine(); var bllEmp = new MesWeb.BLL.T_Employee(); var bllSpec = new MesWeb.BLL.T_Specification(); var bllAxis = new MesWeb.BLL.T_Axis(); try { if (!string.IsNullOrEmpty(procDetail.BatchNo)) { var searchCond = new List <string>(); searchCond.Add(procDetail.BatchNo); try { var gumId = MaterialController.SearchReportId(searchCond, MaterialController.gumReportType); procDetail.CertPlastic = "<a href='javascript: void(0)' onclick='showReportPlastic(this)' id='" + gumId + "'>胶料表</a>"; } catch { } } try { //找到历史数据表 HisData hisData = new HisData(procDetail.Axis_No); //查询OD的最值 var hisDs = DbHelperSQL.Query("SELECT MAX(CollectedValue) AS Max,MIN(CollectedValue) AS Min" + " FROM " + hisData.TableName + " WHERE(ParameterCodeID = " + (int)SPEC_PARAM_CODE.OUTTER_OD + ") AND(Axis_No = '" + hisData.AxisNumStr + "')" + " GROUP BY Axis_No"); var hisRow = hisDs.Tables[0].Rows[0]; var odMax = hisRow["max"].ToString(); var odMin = hisRow["min"].ToString(); procDetail.ODMax = odMax; procDetail.ODMin = odMin; var axis = new HisMain(procDetail.Axis_No); procDetail.GeneratorTime = axis.Year + "-" + axis.Month + "-" + axis.Day; } catch { } //获取回溯信息 var axisInfo = bllAxis.GetModelList("Axis_No = '" + procDetail.Axis_No + "'").FirstOrDefault(); if (axisInfo != null) { procDetail.Comment = axisInfo.comment; } //机台 var machine = bllMachine.GetModel((int)procDetail.MachineID); if (machine != null) { //只有挤绝缘和挤护套有数据 if (machine.MachineTypeID == 2 || machine.MachineTypeID == 5) { var machineName = machine.MachineName ?? ""; var axisColor = procDetail.SpecColor ?? ""; var printCode = procDetail.Printcode ?? ""; procDetail.MachineName = "<a href='javascript: void(0)' machineType='" + machine.MachineTypeID + "' employee='" + procDetail.EmployeeName + "' printCode='" + printCode + "' axisColor='" + axisColor + "' machineName='" + machineName + "' axisNum='" + procDetail.Axis_No + "' onclick='viewHisMachine(this)' machineId='" + machine.MachineID + "'>" + machine.MachineName + "</a>"; } else { procDetail.MachineName = machine.MachineName; } } retData.Code = RESULT_CODE.OK; TempData[SERACH_ASIX] = procDetail.Axis_No; } catch (Exception e) { retData.Content = "查询失败,请联系管理员"; retData.Code = RESULT_CODE.OK; retData.Appendix = procDetail; } procDetailList.Add(procDetail); retData.Appendix = procDetailList; return(Json(retData)); }
public JsonResult GetAxisDetailAction(string axisNumStr) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var retData = new VM_Result_Data(); var procDetailList = new List <VM_ProcDetail>(); var hisData = new VM_ProcDetail(); axisNumStr = axisNumStr.Trim(); HisMain axisNum = new HisMain(axisNumStr); var tabName = axisNum.GetHisDataTableName(); if (string.IsNullOrEmpty(tabName)) { retData.Content = "轴号有误"; return(Json(retData)); } try { var bllHisData = new MesWeb.BLL.T_HisMain(tabName); var findData = bllHisData.GetModelList("Axis_No = '" + axisNumStr + "'").FirstOrDefault(); hisData = new VM_ProcDetail { Axis_No = findData.Axis_No, CurrentDataID = findData.CurrentDataID, SpecificationID = findData.SpecificationID, MachineID = findData.MachineID, MachineTypeID = findData.MachineTypeID, EmployeeID_Main = findData.EmployeeID_Main, EmployeeID_Assistant = findData.EmployeeID_Assistant, Start_Axis_No = findData.Start_Axis_No, Printcode = findData.Printcode }; var specID = hisData.SpecificationID; var bllMachine = new MesWeb.BLL.T_Machine(); var bllEmp = new MesWeb.BLL.T_Employee(); var bllSpec = new MesWeb.BLL.T_Specification(); var bllCodeUsed = new MesWeb.BLL.T_CodeUsed(); var bllLayout = new MesWeb.BLL.T_LayoutPicture(); var spec = bllSpec.GetModel((int)specID); hisData.SpecName = spec.SpecificationName; hisData.ODMax = spec.ODMax.ToString(); hisData.ODMin = spec.ODMin.ToString(); hisData.SpecColor = spec.SpecificationColor; hisData.RolledYield = "100%"; hisData.GeneratorTime = bllCodeUsed.GetModelList("Axis_No = '" + hisData.Axis_No + "'").FirstOrDefault().GeneratorTime.Value.ToShortDateString(); var machine = bllMachine.GetModel((int)hisData.MachineID); var machineLayout = bllLayout.GetModelList("LayoutTypeID = " + 1).Find(s => { return(s.TableRowID == machine.MachineID); }); // hisData.EmployeeName = bllEmp.GetModel((int)hisData.EmployeeID_Main).EmployeeName; hisData.EmployeeName = hisData.EmployeeID_Main; var tableName = axisNum.Year + axisNum.Month + ((int)(machine.MachineTypeID)).ToString("00"); hisData.MachineName = "<a href='/HistoryQuery/HistoryMachine/" + tableName + "," + axisNumStr + "'>" + machine.MachineName + "</a>"; retData.Code = RESULT_CODE.OK; } catch (Exception e) { log.Error("查询轴号信息失败", e); retData.Content = "查询失败,请联系管理员"; } procDetailList.Add(hisData); retData.Appendix = procDetailList; return(Json(retData)); }
/// <summary> /// 初始化字典缓存 /// </summary> /// <param name="machineId"></param> /// <param name="axisNum"></param> /// <param name="meters"></param> private void initDicCache(int machineId, out string axisNum, out string meters) { var bllMachine = new MesWeb.BLL.T_Machine(); var machine = bllMachine.GetModel(machineId); //历史采集数据表 var hisDatablaName = HisData.GetHisDataTableName(DateTime.Now, machine.MachineTypeID.Value); var bllHisData = new MesWeb.BLL.T_HisData(hisDatablaName); //历史轴号表 var hisMainTableName = HisMain.GetHisMainTableName(DateTime.Now, machine.MachineTypeID.Value); var bllHisMain = new MesWeb.BLL.T_HisMain(hisMainTableName); //缓存中没有该机台的轴号 if (!curAxisNumDic.TryGetValue(machineId, out axisNum)) { //从当月历史数据更新缓存 var hisMain = bllHisMain.GetModelList("MachineID = " + machineId).FirstOrDefault(); //当月数据存在,则更新缓存 if (hisMain != null) { axisNum = hisMain.Axis_No; curAxisNumDic.AddOrUpdate(machineId, hisMain.Axis_No, (key, oldValue) => { return(hisMain.Axis_No); }); } else { //当月数据不存在,则从上月数据查找 TODO } } //缓存中没有当前米数值 if (!curMetersDic.TryGetValue(machineId, out meters)) { //从当月历史数据更新缓存 //var data = bllHisData.GetModelList("ParameterCodeID = " + (int)SPEC_PARAM_CODE.METERS_COUNT + " group by CollectedTime desc").FirstOrDefault(); var ds1 = DbHelperSQL.Query("select top 1 * from " + bllHisData.TabName + " where ParameterCodeID = " + (int)SPEC_PARAM_CODE.METERS_COUNT + " AND machineID = " + machineId + " order by CollectedTime desc"); //找到数据库最后一条数据 var recentData = bllHisData.DataTableToList(ds1.Tables[0]).FirstOrDefault(); //当月数据存在,则更新缓存 if (recentData != null) { //获取数据的轴号 var axisNo = recentData.Axis_No; //找到该轴号的米数的最大值 var ds2 = DbHelperSQL. Query("SELECT MAX(CollectedValue) AS CollectedValue, CollectedTime, MachineID, ParameterCodeID, Axis_No" + " FROM " + bllHisData.TabName + " WHERE (ParameterCodeID = " + (int)SPEC_PARAM_CODE.METERS_COUNT + ") AND (Axis_No = '" + axisNo + "')" + " GROUP BY MachineID,Axis_No,CollectedTime,ParameterCodeID"); var row = ds2.Tables[0].Rows[0]; var maxMeter = row["CollectedValue"].ToString(); meters = maxMeter; //更新缓存 curMetersDic.AddOrUpdate(machineId, maxMeter, (key, oldValue) => { return(maxMeter); }); } else { //当月数据不存在,则从上月数据查找 } } }