一、项目背景

  工地一张图在线管控平台(也称“智慧工地”)是指综合运用移动应用、物联网计算和大数据等技术,围绕人员、机械、物料、环境等关键要素,建立信息智能采集、管理高效协同、数据科学分析、过程智慧预测的施工现场多立体化信息模型,打通从一线操作到过程监管的数据链条,形成“端+云+大数据”的业务体系,降低施工现场管理成本,逐步实现智慧的绿色和生态建造。智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术植入到建筑、机械、人员穿戴设施、场地进出关卡口等各类物体中,实现劳务实名制一卡通子系统、塔吊运行监控子系统、大体积混凝土无线测温子系统、变形监测子系统(包括高支模监测及深基坑监测)、环境监控子系统、生活区用电监控子系统、箱变状态在线监测子系统、安防监控子系统、精确定位子系统、VR质量安全模拟培训子系统,并接入一个监控中心———数字化工地管理平台进行统一管理,能够降低运营成本,节省人力投入,减少安全隐患,规范施工管理,有效缓解项目施工现场劳务、设备、材料、安全、环境等方面的管理难题。

    二、平台总计架构

  数字化工地综合管控平台体系结构设计,从根本上决定了系统所能提供的业务服务的规模和水平。本平台采用了在J2EE三层体系结构基础上,结合构建的面向业务的五层体系结构,分别为:前端展示层、API接口层(网关)、业务应用系统、服务中心、基础设施(数据存储、运行环境)如下图所示:

  第一层为前端展示层,即应用层。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面,其中包括B/S架构的Web客户端、移动客户端、以及外接的第三方系统。开发C/S架构可以采用多种语言,包括Java、C++、C#、Dephi等;开发B/S架构的语言,包括PHP、Asp.NET、JAVA等;移动客户端开发主流的是基于Andriod或IOS操作系统。通过对安全管理具体业务的归纳、抽象,生成的各种应用模块,通过这些模块的组织完成业务逻辑,将最后的逻辑运算结果在表现层进行可视化。

  第二层为API接口层,即网关。它是系统的统一入口,外部通过统一的API网关接入业务服务,同时处理一些非业务功能,如监控,负载均衡,流量控制,身份认证等。

  第三层为业务应用系统,即业务层。呈现给用户专业化、个性化的具体业务流程和工具,是智能化的最终体现,是业务智能的最终表现形式。具体采用的是将平台基于Spring-boot发布的restful服务或者是JavaEE+Tomcat发布的Servlet的通用服务构成具体业务的服务链,实现定制化。如:工地视频监控业务,需要构建视频子服务+视频浏览子服务+预警子服务的服务链。

  第四层为服务中心,是软件平台系统的核心。针对具体的问题对数据进行操作,采用高性能的应用服务器中间件、各种智能引擎和系统管理工具,为业务层提供基础服务、管理策略和方法工具。同时按照所提供的服务来管理、组织和调度设备和信息资源。在平台中包含了服务注册与服务管理以及构建服务链功能,对于具体的业务需求,实现主动的服务聚焦。如:门禁服务和人员服务,可针对门禁制定各种身份认证的策略。服务中心还提供数据访问服务,对原始数据(数据库或者文本文件等存放数据的形式)的操作层,为业务层或前端展示层提供数据服务。主要实现对数据的增删改查,实现从工地现场获得的多源数据与底层数据库的交互。

  第五层为基础设施层,包括数据存储和运行环境。为上面各层提供通用的技术能力,为应用层传递消息,为服务中心层提供持久化机制,为用户界面层绘制屏幕组件等等。Web应用系统中基础设施包含了数据持久化服务,中间件服务(数据库,Redis,HBASE等等)以及第三方服务等。


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title data-i18n="resources.title_dynamicPlot"></title>
<style type="text/css">body {margin: 0;overflow: hidden;background: #fff;width: 100%;height: 100%;position: absolute;top: 0;}#map {position: absolute;left: 250px;right: 0px;height: 100%;}#menuPlotting {position: absolute;top: 20%;z-index: 99999999999;border-radius: 4px;padding-top: 2px;left: 265px;color: #000000;background-color: #fff;}#menu {float: left;background: #ffffff;width: 250px;height: 100%;}</style>
</head>
<body>
<div id="menu">
<div class="easyui-panel" style="position:absolute;top:0px;bottom:0px;left:0px;right:0px;padding:5px; width: 100%;">
<div class="easyui-tabs" style="width: 100%;height: 100%">
<div id="plotPanel" data-i18n="[title]resources.text_drawPanel" style="overflow: hidden"></div>
<div id="stylePanel" data-i18n="[title]resources.text_attributePanel"></div>
</div>
</div>
</div>
<div id="map">
<div id="menuPlotting" class="sticklr" style="left: 1%;color:rgb(0,0,0);background-color: #fff;">
<li>
<a class="glyphicon plotting-glyphicon-draw-deactivate notArrow" data-i18n="[title]resources.text_cancelDraw" onclick="PlottingDrawCancel()"></a>
</li>
<li>
<a class="glyphicon plotting-glyphicon-draw-removeAll notArrow" data-i18n="[title]resources.text_input_value_clear"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_deleteMarker" onclick="deleteSymbol()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_clearLayers" onclick="PlottingClear()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-pencil notArrow" data-i18n="[title]resources.text_editor"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_copy" onclick="copySymbol()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_cut" onclick="cutSymbol()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
<li><input type="button" data-i18n="[value]resources.btn_paste" onclick="pasteSymbol()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-plus notArrow" data-i18n="[title]resources.text_addLayer" onclick="addPlottingLayer()"></a>
</li>
<li>
<a class="glyphicon plotting-lyphicon-save-simulationMap" data-i18n="[title]resources.text_situationMapOperation"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_saveSimulationMap" onclick="saveSimulationMap()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_loadSimulationMap" onclick="loadSimulationMap()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-edit notArrow" data-i18n="[title]resources.text_editMarker"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_editRectangle" onclick="editCircusRetangle()" style="width:85px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_editNode" onclick="editContorPoints()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_addNode" onclick="addControlPoints()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-lock notArrow" data-i18n="[title]resources.text_aboutMode"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_lockSwitch" onclick="setPlottingLayerIsLocked()" style="width:85px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_editSwitch" onclick="setPlottingLayerIsEdit()" style="width:85px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_selectSwitch" onclick="setPlottingLayerIsSelected()" style="width:85px;height: 25px ;margin:0 auto;"/> </li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-check notArrow" data-i18n="[title]resources.text_multiselect" onclick="multiSelectModel()"></a>
</li>
<li>
<a class="glyphicon glyphicon-align-justify notArrow" data-i18n="[title]resources.text_multiselectAlign"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_leftAlignment" onclick="setSymbolAlighLeft()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_rightAlignment" onclick="setSymbolAlighRight()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
<li><input type="button" data-i18n="[value]resources.btn_topAlignment" onclick="setSymbolAlighUp()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_bottomAlignment" onclick="setSymbolAlighDown()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_verticalCenter" onclick="setSymbolAlighVerticalcenter()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_horizontalCenter" onclick="setSymbolAlighHorizontalcenter()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-adjust notArrow" data-i18n="[title]resources.text_avoid"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_avoidEdit" onclick="drawAvoidRegion()" style="width:80px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_cancelAvoidEdit" onclick="doneAvoidEdit()" style="width:80px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_deleteAvoid" onclick="deleteAvoidEdit()" style="width:80px;height: 25px ;margin:0 auto;"/> </li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-gift notArrow" data-i18n="[title]resources.text_createGroup"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_group" onclick="createGroupObjects()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_flags" onclick="createDrawFlags()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_unbundling" onclick="testUnGroupObject()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-arrow-left notArrow" data-i18n="[title]resources.btn_undo" onclick="undo()"></a>
</li>
<li>
<a class="glyphicon glyphicon-arrow-right notArrow" data-i18n="[title]resources.btn_redo" onclick="redo()"></a>
</li>
<li>
<a class="glyphicon glyphicon-th-large notArrow" data-i18n="[title]resources.text_symbolEqualSize"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_symbolEqualWidth" onclick="setSymbolEqualWidth()" style="width:70px;height: 25px ;margin:0 auto;"> </input> </li>
<li><input type="button" data-i18n="[value]resources.btn_symbolEqualHeight" onclick="setSymbolEqualHeight()" style="width: 70px;height: 25px ;margin:0 auto;"> </input></li>
<li><input type="button" data-i18n="[value]resources.btn_symbolEqualWidthHeight" onclick="setSymbolEqualWidthHeight()" style="width:70px;height: 25px ;margin:0 auto;"> </input> </li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-th" data-i18n="[title]resources.text_symbolDistribution"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_symbolLevelDistribution" onclick="setSymbolLevelDistribution()" style="width:70px;height: 25px ;margin:0 auto;"> </input> </li>
<li><input type="button" data-i18n="[value]resources.btn_symbolVerticalDistribution" onclick="setSymbolVerticalDistribution()" style="width: 70px;height: 25px ;margin:0 auto;"> </input></li>
</ul>
</li>
</div>
</div>
<script type="text/javascript" include="bootstrap,responsive,sticklr" src="../js/include-web.js"></script>
<script type="text/javascript" exclude="iclient-classic" include="iclient8c-plot,bevInclude,PlottingPanel" src="../../dist/classic/include-classic.js"></script>
<script>var map, plottingLayer, layer;var plotPanel, stylePanel;var host = window.isLocal ? window.server : "https://iserver.supermap.io";var mapurl = host + "/iserver/services/map-china400/rest/maps/China_4326";var serverUrl = host + "/iserver/services/plot-jingyong/rest/plot/";var plotting;var sitDataLayers;var drawGraphicObjects = [];var plottingEdit;init();function init() {Bev.Theme.set("bev-base");map = new SuperMap.Map("map", {controls: [new SuperMap.Control.LayerSwitcher(),new SuperMap.Control.ScaleLine(),new SuperMap.Control.Zoom(),new SuperMap.Control.Navigation({dragPanOptions: {enableKinetic: true}})]});layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapurl, {transparent: true,cacheEnabled: true}, {maxResolution: "auto"});layer.events.on({"layerInitialized": addLayer});//总控类plotting = SuperMap.Plotting.getInstance(map, serverUrl);plotting.getSitDataManager().events.on({"openSmlFileCompleted": success});plottingLayer = new SuperMap.Layer.PlottingLayer("标绘图层", serverUrl);//空间分析服务地址:目前使用的是服务器默认空间分析地址,可更换成实际使用的空间分析服务地址//plottingLayer.spatialAnalystUrl = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";plottingLayer.style = {fillColor: "#66cccc",fillOpacity: 0.4,strokeColor: "#66cccc",strokeOpacity: 1,strokeWidth: 3,pointRadius: 6};//态势标绘编辑plottingEdit = new SuperMap.Control.PlottingEdit();//plottingEdits.push(plottingEdit);// 绘制标号;var drawGraphicObject = new SuperMap.Control.DrawFeature(plottingLayer, SuperMap.Handler.GraphicObject);drawGraphicObjects.push(drawGraphicObject);//添加态势标绘控件map.addControls([plottingEdit, drawGraphicObject]);}function addLayer() {map.addLayers([layer, plottingLayer]);map.setCenter(new SuperMap.LonLat(104, 35), 3);//创建标绘面板plotPanel = new SuperMap.Plotting.PlotPanel("plotPanel", serverUrl, map);plotPanel.events.on({"initializeCompleted": initializeCompleted});plotPanel.initializeAsync();//创建属性面板stylePanel = new SuperMap.Plotting.StylePanel("stylePanel");stylePanel.addEditLayer(plottingLayer);}function initializeCompleted(evt) {if (drawGraphicObjects.length > 0) {plotPanel.setDrawFeature(drawGraphicObjects[0]);}plotting.getSymbolLibManager().cacheSymbolLib(100);}//取消标绘与编辑function plottingAllDeactivate() {for (var i = 0; i < drawGraphicObjects.length; i++) {drawGraphicObjects[i].deactivate();}plottingEdit.deactivate();}//清空绘制function PlottingClear() {plottingAllDeactivate();for (var i = 0; i < map.layers.length; i++) {if (map.layers[i].CLASS_NAME === "SuperMap.Layer.PlottingLayer") {map.layers[i].removeAllFeatures();}}}//删除选中标号function deleteSymbol() {plottingEdit.deleteSelectFeature();}//取消标绘,激活标绘编辑控件function PlottingDrawCancel() {plottingAllDeactivate();plottingEdit.activate();}//复制function copySymbol() {plotting.getEditor().copy();}//剪切function cutSymbol() {plotting.getEditor().cut();}//粘贴function pasteSymbol() {plotting.getEditor().paste();}//添加图层function addPlottingLayer() {PlottingDrawCancel();var newPlottingLayer = new SuperMap.Layer.PlottingLayer(getNewPlottingLayerName(), serverUrl);newPlottingLayer.style = {fillColor: "#66cccc",fillOpacity: 0.4,strokeColor: "#66cccc",strokeOpacity: 1,strokeWidth: 3,pointRadius: 6};//newPlottingLayer.spatialAnalystUrl = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";var drawGraphicObject = new SuperMap.Control.DrawFeature(newPlottingLayer, SuperMap.Handler.GraphicObject);drawGraphicObjects.push(drawGraphicObject);//将新创建的图层添加到属性面板中stylePanel.addEditLayer(newPlottingLayer);//将标绘句柄赋给标绘面板plotPanel.setDrawFeature(drawGraphicObject);map.addControls([drawGraphicObject]);map.addLayers([newPlottingLayer]);}//保存态势图function saveSimulationMap() {plottingAllDeactivate();plotting.getSitDataManager().saveAsSmlFile("situationMap");}function loadSimulationMap() {{plotting.getSitDataManager().openSmlFileOnServer("situationMap");}}function success() {var sitDataLayers = plotting.getSitDataManager().getSitDataLayers();plottingLayer = sitDataLayers[0];drawGraphicObjects = [];for (var i = 0; i < sitDataLayers.length; i++) {drawGraphicObjects.push(sitDataLayers[i].drawGraphicObject);stylePanel.addEditLayer(sitDataLayers[i]);}plotPanel.setDrawFeature(drawGraphicObjects[0]);}function getNewPlottingLayerName() {var layerCount = map.layers.length;var layerName = "新建标绘图层";var bExist = true;while (bExist) {bExist = false;var tempLayerName = layerName + layerCount;for (var i = 0; i < map.layers.length; i++) {var layer = map.layers[i];if (null == layer) {continue;}if (tempLayerName === layer.name) {bExist = true;}}if (!bExist) {layerName = tempLayerName;}layerCount++;}return layerName;}function editCircusRetangle() {plottingEdit.setEditMode(SuperMap.Plot.EditMode.EDITCIRCUMRECTANGLE);}function editContorPoints() {plottingEdit.setEditMode(SuperMap.Plot.EditMode.EDITCONTROLPOINT);}function addControlPoints() {plottingEdit.setEditMode(SuperMap.Plot.EditMode.ADDCONTROLPOINT);}//切换多选模式function multiSelectModel() {plottingEdit.multiSelect();}//多选对齐--左对齐function setSymbolAlighLeft() {plottingEdit.align(SuperMap.Plot.AlignType.LEFT);}//多选对齐--右对齐function setSymbolAlighRight() {plottingEdit.align(SuperMap.Plot.AlignType.RIGHT);}//多选对齐--上对齐function setSymbolAlighUp() {plottingEdit.align(SuperMap.Plot.AlignType.UP);}//多选对齐--下对齐function setSymbolAlighDown() {plottingEdit.align(SuperMap.Plot.AlignType.DOWN);}//多选对齐--竖直居中对齐function setSymbolAlighVerticalcenter() {plottingEdit.align(SuperMap.Plot.AlignType.VERTICALCENTER);}//多选对齐--水平居中对齐function setSymbolAlighHorizontalcenter() {plottingEdit.align(SuperMap.Plot.AlignType.HORIZONTALCENTER);}//切换图层是否锁定function setPlottingLayerIsLocked() {if (plottingLayer.getLocked() === true) {plottingLayer.setLocked(false);} else {plottingLayer.setLocked(true);}}//切换图层是否可编辑模式function setPlottingLayerIsEdit() {if (plottingLayer.getEditable() === true) {plottingLayer.setEditable(false);} else {plottingLayer.setEditable(true);}}//切换图层是否可选择模式function setPlottingLayerIsSelected() {if (plottingLayer.getSelected() === true) {plottingLayer.setSelected(false);} else {plottingLayer.setSelected(true);}}//绘制避让区域function drawAvoidRegion() {plottingEdit.avoidEdit(true);}//退出避让编辑function doneAvoidEdit() {plottingEdit.avoidEdit(false);}//删除避让编辑function deleteAvoidEdit() {plottingEdit.removeAllAvoidRegion();}//创建组合对象function createGroupObjects() {var features = plottingEdit.features;if (features.length >= 2) {plottingLayer.createGroupObject(features);}}//创建多旗function createDrawFlags() {var features = plottingEdit.features;if (features.length >= 2) {plottingLayer.createFlags(features);}}//解绑组合对象function testUnGroupObject() {var features = plottingEdit.features;for (var i = features.length - 1; i >= 0; i--) {if (features[i].geometry instanceof SuperMap.Geometry.GroupObject) {plottingLayer.unGroupObject(features[i].geometry.uuid);}}}function undo(){plotting.getTransManager().undo();}function redo(){plotting.getTransManager().redo();}//等大//等宽function setSymbolEqualWidth(){plottingEdit.equalLarge(SuperMap.Plot.EqualLargeType.WIDTH);}//等高function setSymbolEqualHeight(){plottingEdit.equalLarge(SuperMap.Plot.EqualLargeType.HEIGHT);}//等宽高function setSymbolEqualWidthHeight(){plottingEdit.equalLarge(SuperMap.Plot.EqualLargeType.SAME);}//均匀分布//横向均匀分布function setSymbolLevelDistribution(){plottingEdit.uniformDistribution(SuperMap.Plot.UniformDistributionType.LEVEL);}//纵向均匀分布function setSymbolVerticalDistribution(){plottingEdit.uniformDistribution(SuperMap.Plot.UniformDistributionType.VERTICAL);}document.onmouseup = function (evt) {var evt = evt || window.event;if (evt.button === 2) {PlottingDrawCancel();return false;}evt.stopPropagation();}
</script>
</body>
</html>

智慧工地支撑平台工地一张图在线管控平台相关推荐

  1. 成都领君科技国土资源“一张图”综合监管平台技术方案

    为什么80%的码农都做不了架构师?>>>    第1章             概述 1.1                                             ...

  2. java在线教学平台_开源项目SpringBoot在线教育平台

    作者:java1234_小锋 本项目核心技术采用SpringBoot+mybatis; 前端是layui: 开发工具idea: 数据库mysql5.7: 模版引擎采用的是thymeleaf: 安全框架 ...

  3. 一张图架构示意图及简单分析

    做完一张图系统,画点架构示意图并简单分析下. 1.一张图架构示意图如下(以ARCGIS平台为例): 通过上图可以看出明显的四层:使用一张图的业务系统.一张图配置系统.第三方GIS支撑平台(本图中以AR ...

  4. [原创]ASP.NET MVC调用美图秀秀开放平台拼图实现

    项目中涉及到图片的美化和拼接的功能,于是用了美图秀秀开放平台的api 美图秀秀开放平台地址:http://open.web.meitu.com/ 具体步骤如下: 1.创建MeiTuUpload.asp ...

  5. 滴普技术荟:OpenKube重塑企业统一管控平台

    作者: 崔渡康 滴普科技 2048事业部 解决方案架构师 近10年企业数字化转型.上云咨询.架构设计 曾就职于HP.华为云 一.统一管控平台建设背景 传统工业企业的管控平台采用的是Vmware虚拟化架 ...

  6. 电力施工作业现场安全综合管控平台项目解决方案

    1. 项目背景 电力行业的发展和整个社会息息相关,在供电企业的安全生产中,经常会涉及多家施工单位.监理单位等,人员复杂,环境复杂,管理力度大,为了预防现场安全意外的发生,电力施工现场的安全监控十分必要 ...

  7. Python基于php+MySQL的英语四六级在线报名平台

    英语四六级基本上是每一个高校大学生都必考的一个考试项目.为了能够让在校大学生更加方便快捷地对英语四六级进行报名考试我开发了php英语四六级在线报名平台 php英语四六级在线报名平台采用Php:mysq ...

  8. 基于微信小程序的在线学习平台

    随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数 ...

  9. 以信息化建设为抓手,推出职业病危害因素在线监测平台,保障劳动者健康工作

    据悉,我国印发的<"健康中国2030"规划纲要>中提到要强化职业健康各级监督管理职责,推动落实主体责任,推进职业病危害源头治理,同时建立分级分类监管机制,开展重点行业领 ...

最新文章

  1. c++max函数怎么用_比函数还强大的Excel分列技巧,你知道怎么用吗
  2. 基于FPGA的bubble游戏开发
  3. php图片生成缩略图_PHP生成图片缩略图类示例
  4. 全国计算机等级考试题库二级C操作题100套(第68套)
  5. 今日腊八节,祝福送上!
  6. otdr全部曲线图带解说_副业推荐:电影解说号,4个快速见收益的技巧
  7. 苹果降价潮一波接一波 两款廉价iPad“箭在弦上”
  8. windows下安装whmcs会经常遇到两个问题
  9. python爬虫基础17-抓包工具使用
  10. C语言—— 符号函数
  11. 全民战“疫”,支付宝智能语音机器人到岗就位
  12. 数据挖掘--风电机组异常数据识别与清洗
  13. 查看mysql宕机原因_记录一次mysql宕机的解决办法
  14. docker 保存 环境持久化_Docker深入浅出系列 | 容器数据持久化
  15. 从会种田到“慧种田”,传感技术成“刚需”!
  16. b站直播html5黑屏,用bilibili直播姬的抓屏为什么是黑屏而不是界面呢
  17. Ubuntu18.04系统的安装及使用,不能开机,输入法不对等
  18. 一次ORA-03113错误解决
  19. 如何使用信号量处理问题
  20. macOS备份迁移系统偏好设置

热门文章

  1. 光纤测试学习记录(3)
  2. 降本升效-能耗监测物联网解决方案
  3. 【惯性导航姿态仪】 05 捷联式惯性导航系统技术简介
  4. Oracle中TRUNCATE、DELETE和DROP的区别?
  5. NS-Multimeter数字万用表程控软件
  6. 对Java新员工培训练习的评价:玩具
  7. NTU-Coursera机器学习:HomeWork 2 Q16-20
  8. Android中多国语言对应values文件夹命名
  9. Unity 中控(二)
  10. 红米note_维修_开机键