Selaa lähdekoodia

试验类型统计

xiaoshushu 2 vuotta sitten
vanhempi
commit
7e5cab9632

+ 95 - 0
src/main/java/com/lsw/controller/BaseController.java

@@ -0,0 +1,95 @@
+package com.lsw.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.jfinal.core.Controller;
+import com.jfinal.json.FastJson;
+import com.jfinal.kit.Kv;
+import com.jfinal.kit.StrKit;
+import com.jfinal.plugin.activerecord.Record;
+
+import java.util.Iterator;
+import java.util.Map;
+
+public class BaseController extends Controller {
+
+    /**
+     * 这个主要用于get请求的传递参数
+     *
+     * @return
+     */
+    protected Kv getParam() {
+        Kv kv =Kv.create();
+        Map<String, String[]> paraMap = getRequest().getParameterMap();
+        Iterator var3 = paraMap.entrySet().iterator();
+        while (var3.hasNext()) {
+            Map.Entry<String, String[]> entry = (Map.Entry) var3.next();
+            String[] values = (String[]) entry.getValue();
+            String value = values != null && values.length > 0 ? values[0] : null;
+            kv.set(entry.getKey(), "".equals(value) ? null : value);
+        }
+        return kv;
+    }
+
+    /**
+     * 这个主要用于post请求的传递参数
+     *
+     * @return
+     */
+    protected Record getData() {
+        return new Record().setColumns(FastJson.getJson().parse(getRawData(), Map.class));
+    }
+
+    protected JSONArray getArray() {
+        return JSON.parseArray(getRawData());
+    }
+
+    /**
+     * 成功并携带数据
+     *
+     * @param data
+     */
+    public void renderSuccess(Object data) {
+        Record record = new Record();
+        record.set("code", 200);
+        record.set("data", data);
+        record.set("msg", "操作成功");
+        renderJson(record);
+    }
+
+    /**
+     * 成功并自定义提示消息
+     *
+     * @param string
+     */
+    public void renderSuccess(String string) {
+        Record record = new Record();
+        record.set("code", 200);
+        record.set("msg", string);
+        renderJson(record);
+    }
+
+    /**
+     * 成功
+     *
+     * @param
+     */
+    public void renderSuccess() {
+        Record record = new Record();
+        record.set("code", 200);
+        record.set("msg", "操作成功");
+        renderJson(record);
+    }
+
+    /**
+     * 失败信息
+     *
+     * @param string
+     */
+    public void renderError(String string) {
+        Record record = new Record();
+        record.set("code", 500);
+        record.set("msg", string);
+        renderJson(record);
+    }
+}

+ 19 - 15
src/main/java/com/lsw/controller/ReportController.java

@@ -1,17 +1,15 @@
 package com.lsw.controller;
 
-import com.jfinal.core.Controller;
 import com.jfinal.kit.JsonKit;
 import com.jfinal.kit.Kv;
 import com.jfinal.plugin.activerecord.Db;
 import com.jfinal.plugin.activerecord.Record;
 import com.lsw.utils.StringUtil;
-import com.lsw.utils.TimeUtil;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
-public class ReportController extends Controller {
+public class ReportController extends BaseController {
 
     public void index() {
         String op = getPara("op", "finish");
@@ -47,12 +45,7 @@ public class ReportController extends Controller {
     //实验完成率
     public void finish() {
         long start = System.currentTimeMillis();
-        Kv kv = Kv.create();
-        kv.set("DOMAINID", getPara("DOMAINID"));
-        kv.set("ID", getPara("ID"));
-        kv.set("begin", getPara("begin", TimeUtil.getDay("firstDay")));
-        kv.set("end", getPara("end", TimeUtil.getDay("lastDay")));
-        List<Record> list = Db.template("finish", kv).find();
+        List<Record> list = Db.template("finish", getParam()).find();
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
@@ -60,13 +53,24 @@ public class ReportController extends Controller {
     //各流程耗时
     public void process() {
         long start = System.currentTimeMillis();
-        Kv kv = Kv.create();
-        kv.set("DOMAINID", getPara("DOMAINID"));
-        kv.set("ID", getPara("ID"));
-        kv.set("begin", getPara("begin", TimeUtil.getDay("firstDay")));
-        kv.set("end", getPara("end", TimeUtil.getDay("lastDay")));
-        List<Record> list = Db.template("process", kv).find();
+        List<Record> list = Db.template("process", getParam()).find();
         long end = System.currentTimeMillis();
         renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
     }
+
+    //试验类型统计
+    public void type() {
+        long start = System.currentTimeMillis();
+        System.out.println(getParam());
+        List<Record> list = Db.template("type", getParam()).find();
+        long end = System.currentTimeMillis();
+        renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "s"));
+    }
+    //试验类型统计列表
+    public void type_list() {
+        long start = System.currentTimeMillis();
+        List<Record> list = Db.template("type_list", getParam()).find();
+        long end = System.currentTimeMillis();
+        renderJson(Kv.by("data", list).set("time", StringUtil.mul((end - start), (float) 0.001) + "秒"));
+    }
 }

+ 20 - 0
src/main/resources/report.sql

@@ -21,4 +21,24 @@
  where  t_department.ID=#para(ID)
  and e.PROCESSTIME between to_date(#para(begin),'yyyy-mm-dd hh24:mi:ss') and to_date(#para(end),'yyyy-mm-dd hh24:mi:ss')
  group by  FLOWNAME
+#end
+
+###试验类型统计
+#sql("type")
+ select  #para(DOMAINID) AS DOMAINID,nvl(item_experiment_type,'空')as item_experiment_type,count(*) as item_invalue from tlk_entrustment
+ left outer join t_user on t_user.ID=author
+ left outer join t_department on t_user.defaultdepartment=t_department.ID
+ where  t_department.ID in (select  ID from t_department start with ID=#para(ID) connect by prior ID=superior)
+ and created between to_date(#para(begin),'yyyy-mm-dd hh24:mi:ss') and to_date(#para(end),'yyyy-mm-dd hh24:mi:ss')
+ group by item_experiment_type
+#end
+
+###试验类型统计列表
+#sql("type_list")
+ select  t_user.name,t.ID,t.ITEM_WT_NUM,t.ITEM_TITLE,t.item_experiment_type from tlk_entrustment t
+ left outer join t_user on t_user.ID=author
+ left outer join t_department on t_user.defaultdepartment=t_department.ID
+ where  t_department.ID in (select  ID from t_department start with ID=#para(ID) connect by prior ID=superior)
+ and created between to_date(#para(begin),'yyyy-mm-dd hh24:mi:ss') and to_date(#para(end),'yyyy-mm-dd hh24:mi:ss')
+ and item_experiment_type=#para(type)
 #end

+ 9 - 7
src/main/webapp/WEB-INF/view/report/finish.html

@@ -15,7 +15,7 @@
     <el-form :inline="true" label-width="auto">
         <el-form-item label="实验部门" prop="state">
             <el-cascader
-                    v-model="value"
+                    v-model="param.value"
                     :options="options"
                     :props="props"
                     @change="handleChange"
@@ -25,7 +25,7 @@
         </el-form-item>
         <el-form-item label="时间范围">
             <el-date-picker
-                    v-model="created"
+                    v-model="param.created"
                     style="width: 240px"
                     value-format="yyyy-MM-dd"
                     type="daterange"
@@ -52,11 +52,13 @@
     let vm = new Vue({
         el: "#app",
         data: {
-            created: ['#(begin)', '#(end)'],
-            value: '',
             param: {
                 DOMAINID: '#(DOMAINID)',
-                ID: '#(ID)'
+                ID: '#(ID)',
+                value:['#(value)'],
+                begin:'#(begin)',
+                end:'#(end)',
+                created: ['#(begin)', '#(end)']
             },
             props: {
                 value: 'ID',
@@ -85,8 +87,8 @@
                 this.param.ID = value[value.length - 1]
             },
             search() {
-                this.param.begin = this.created[0];
-                this.param.end = this.created[1];
+                this.param.begin = this.param.created[0];
+                this.param.end = this.param.created[1];
                 this.getData();
             },
             getData() {

+ 1 - 1
src/main/webapp/WEB-INF/view/report/process.html

@@ -64,7 +64,7 @@
             param: {
                 DOMAINID: '#(DOMAINID)',
                 ID: '#(ID)',
-                value:['ZMMMGm5mnGCE4WvWFeI'],
+                value:['#(value)'],
                 begin:'#(begin)',
                 end:'#(end)',
                 created: ['#(begin)', '#(end)']

+ 45 - 22
src/main/webapp/WEB-INF/view/report/process_view.html → src/main/webapp/WEB-INF/view/report/type.html

@@ -2,11 +2,12 @@
 <html>
 <head>
     <meta charset="utf-8">
-    <title>流程耗时</title>
+    <title>试验类型统计</title>
     <link href="#(path)/static/js/element-ui.css" rel="stylesheet"/>
     <style>
         body {background-color: #f1f1f4;}
         .bar{height:570px;margin-top: 50px;}
+        .el-table thead{color: #515151!important;font-weight:bold;}
         [v-cloak] {display: none;}
     </style>
 </head>
@@ -15,7 +16,7 @@
     <el-form :inline="true" label-width="auto">
         <el-form-item label="实验部门" prop="state">
             <el-cascader
-                    v-model="value"
+                    v-model="param.value"
                     :options="options"
                     :props="props"
                     @change="handleChange"
@@ -25,7 +26,7 @@
         </el-form-item>
         <el-form-item label="时间范围">
             <el-date-picker
-                    v-model="created"
+                    v-model="param.created"
                     style="width: 240px"
                     value-format="yyyy-MM-dd"
                     type="daterange"
@@ -37,8 +38,20 @@
         <el-form-item>
             <el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button>
         </el-form-item>
+        <div style="float:right;">耗时: {{time}}</div>
     </el-form>
     <div id="echart" class="bar"></div>
+    <el-dialog  title="试验类型统计" width="80%" :visible.sync="dialogVisible" append-to-body>
+        <el-table :data="tableData" style="width: 100%;">
+            <el-table-column prop="ITEM_TITLE" label="名称"></el-table-column>
+            <el-table-column prop="ITEM_EXPERIMENT_TYPE" align="center" label="类型"></el-table-column>
+            <el-table-column label="操作"  width="250">
+                <template slot-scope="scope">
+                    <el-button size="mini" type="primary">支付</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+    </el-dialog>
 </div>
 </body>
 <script src="#(path)/static/js/jquery.min.js"></script>
@@ -52,11 +65,16 @@
     let vm = new Vue({
         el: "#app",
         data: {
-            created: ['#(begin)', '#(end)'],
-            value: '',
+            time:'',
+            dialogVisible:false,
+            tableData:[],
             param: {
                 DOMAINID: '#(DOMAINID)',
-                ID: '#(ID)'
+                ID: '#(ID)',
+                value:['#(value)'],
+                begin:'#(begin)',
+                end:'#(end)',
+                created: ['#(begin)', '#(end)']
             },
             props: {
                 value: 'ID',
@@ -69,16 +87,12 @@
             this.getData();
             myChart = echarts.init(document.getElementById('echart'));
             myChart.on('click', function (params) {
-                console.log("asd:"+params.name);
-                /*layer.open({
-                    type: 2,
-                    title: '',
-                    scrollbar: false, //屏蔽浏览器滚动条
-                    shade: 0.8,
-                    maxmin: false, // 开启最大化最小化按钮
-                    area: ['92%', '95%'],
-                    content: '#(url)' + '&state=' + params.data.name + "&DEPARTMENT_ID=" + vm.param.ID,
-                });*/
+                vm.dialogVisible=true;
+                vm.param.type=params.name;
+                sendAjax("#(path)/report/type_list", vm.param, res => {
+                    cancelLoding();
+                    vm.tableData=res.data;
+                })
             })
         },
         methods: {
@@ -86,32 +100,41 @@
                 this.param.ID = value[value.length - 1]
             },
             search() {
-                this.param.begin = this.created[0];
-                this.param.end = this.created[1];
+                this.param.begin = this.param.created[0];
+                this.param.end = this.param.created[1];
                 this.getData();
             },
             getData() {
-                sendAjax("#(path)/report/process", this.param, res => {
+                sendAjax("#(path)/report/type", this.param, res => {
                     cancelLoding();
+                    vm.tableData=res.data;
                     vm.initEcharts(res.data);
+                    vm.time=res.time;
                 })
             },
             initEcharts(data) {
                 let legend = [];
                 let series = [];
                 data.forEach(item => {
-                    legend.push(item.FLOWNAME);
-                    series.push(item.INTERVAL);
+                    legend.push(item.ITEM_EXPERIMENT_TYPE);
+                    series.push(item.ITEM_INVALUE);
                });
                let option = {
                    title: {
-                       text: '各流程耗时',
+                       text: '试验类型统计',
                     },
+                   tooltip: {
+                       trigger: 'axis',
+                       axisPointer: {
+                           type: 'shadow'
+                       }
+                   },
                     xAxis: {
                         type: 'category',
                         data:legend
                     },
                     yAxis: {
+                        name: '分钟',
                         type: 'value'
                     },
                     series: [

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
src/main/webapp/static/js/element-ui.js


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä